تقدم هذه الورقة FlashAttention-V، وهي تنفيذ لـ FlashAttention بنظام الكتل (blocked) مُحسَّن للبنيات المتجهة القابلة للتوسع، والتي تسرع استدلال نماذج المحولات (transformer inference) على وحدات المعالجة المركزية (CPUs) بشكل كبير عبر الاستفادة من التوازي بين الرؤوس (inter-head parallelism) والوصول الفعال للذاكرة، محققةً تسريعات تصل إلى 42 ضعفاً في مرحلة الـ prefill و11 ضعفاً في مرحلة الـ decode، مع تسليط الضوء أيضاً على الاختناقات الهيكلية في تنسيقات التكميم (quantization formats) الحالية للتنفيذ طويل المتجهات.
تعتمد أنظمة الذكاء الاصطناዊ الحديثة، من برامج الدردشة الآلية التي تصيغ رسائل البريد الإلكتروني إلى المساعدات البرمجية التي تعالج أخطاء البرمجيات، على نوع محدد من برامج الكمبيوتر يسمى "المحول" (transformer). تُبنى هذه البرامج لفهم اللغة من خلال النظر في كيفية ارتباط الكلمات ببعضها البعض في الجملة. وللقيام بذلك، تستخدم آلية تسمى "الانتباه" (attention)، والتي تعمل مثل كشاف الضوء، مما يسمح للنظام بالتركيز على الأجزاء الأكثر صلة من النص مع تجاهل الباقي. وبينما يتم تشغيل هذه الأنظمة غالبًا في مراكز بيانات ضخمة مزودة ببطاقات رسوميات قوية، هناك حاجة متزايدة لتشغيلها على أجهزة أصغر وأكثر شيوعًا مثل أجهزة الكمبيوتر المحمولة، والأجهزة اللوحية، وحتى الرقائق المتخصصة الموجودة في إنترنت الأشياء. وتستخدم هذه الأجهزة الأصغر غالبًا نوعًا مختلفًا من المعالجات المصممة للتعامل مع العديد من الحسابات في وقت واحد عن طريق معالجة البيانات في خطوط طويلة، تُعرف باسم "بنيات المتجهات" (vector architectures). ومع ذلك، فقد ظهر عائق رئيسي: آلية الانتباه نهمة للغاية للذاكرة، حيث تتطلب من المعالج جلب وتخزين كميات كبيرة من البيانات باستمرار، مما يؤدي إلى إبطاء كل شيء.
لقد عالج الباحثون في جامعة تشالمرز للتكنولوجيا وجامعة غلاسكو هذه المشكلة من خلال إعادة تصميم كيفية عمل آلية الانتباه على معالجات المتجهات هذه. فقد ابتكروا طريقة جديدة تسمى "FlashAttention-V"، وهي تغير الطريقة التي ينظم بها الكمبيوتر عمله ليتناسب مع الشكل الفريد لهذه المعالجات. وبدلاً من محاولة إجبار المعالج على التعامل مع قطعة صغيرة واحدة من البيانات في كل مرة، تقوم الطريقة الجديدة بتجميع حسابات متعددة مستقلة في خط بيانات واحد عريض. تخيل خط تجميع في مصنع حيث يتعامل العمال عادةً مع عنصر واحد في كل مرة؛ تتيح هذه الطلة الجديدة لهم التقاط صينية كاملة من العناصر ومعالجتها جميعًا في دفعة واحدة، مما يقلل بشكل كبير من الوقت المستغرق في المشي ذهابًا وإيابًا إلى رفوف التخزين. ومن خلال إعادة ترتيب ترتيب العمليات وتعبئة البيانات بشكل أكثر إحكامًا، وجد الباحثون أن بإمكانهم جعل هذه الأجهزة الأصغر تعمل بشكل أسرع بكثير، خاصة عند التعامل مع دفعات قصيرة من النصوص أو عندما يقوم الجهاز بتوليد كلمات جديدة واحدة تلو الأخرى.
اختبر الفريق نهجه الجديد على عدة نماذج لغوية مختلفة، بما في ذلك TinyLlama وLlama 3.2 وQwen2.5، باستخدام كل من الأجهزة الحقيقية والمحاكاة الحاسوبية التفصيلية. وعلى لوحة تطوير فيزيائية تسمى Banana Pi BPI-F3، والتي تستخدم معالج RISC-V، أثبتت الطريقة الجديدة تحسنًا هائلاً. فعندما كان الجهاز يستعد لقراءة مدخل قصير، كانت الطريقة الجديدة أسرع بما بين اثني عشر وأربعة عشر مرة من النسخة القياسية غير المحسنة. وعندما كان الجهاز يولد نصًا كلمة بكلمة، كان أسرع بأربعة إلى خمس مرات. كما أجرى الباحثون عمليات محاكاة مكثفة لمعرفة كيف سيكون أداء الطريقة إذا تم بناء المعالجات بخطوط بيانات أعرض، قادرة على التعامل مع كتل أكبر بكثير من المعلومات في وقت واحد. وأظهرت هذه المحاكاة أنه كلما زاد عرض خطوط البيانات، استمرت مكاسب السرعة في الارتفاع، لتصل إلى أربعين ضعفًا أسرع من النسخة الأساسية في أفضل السيناريوهات الخاصة بتجهيز المدخلات.
ومع ذلك، كشفت الدراسة أيضًا عن حد متميز لمدى السرعة التي يمكن أن تصل إليها هذه الأجهزة. فقد اكتشف الباحثون أنه بينما تستفيد جزء "الانتباه" من البرنامج بشكل كبير من خطوط البيانات الأعرض هذه، فإن أجزاء أخرى من النظام، وتحديدًا الطبقات التي تحول الأرقام إلى تنبؤات، لا تستفيد من ذلك. تستخدم هذه الطبقات طريقة محددة لتخزين الأرقام تسمى "التكميم" (quantization)، والتي تضغط البيانات لتوفير المساحة. وتخلق الطريقة التي تُعبأ بها هذه البيانات حاليًا عدم توافق هيكلي مع خطوط البيانات العريضة، مما يجبر المعالج على القيام بعمل إضافي غير فعال لفصل الأرقام وإعادة دمجها. وأظهرت عمليات المحاكاة أنه بالنسبة لهذه الطبقات المحددة، فإن الوقت الذي تم توفيره بمعالجة المزيد من البيانات في وقت واحد قد استُنفد تمامًا بسبب الوقت المستغرق في إعادة ترتيبها. وهذا يعني أنه بينما يمكن جعل آلية الانتباه سريعة للغاية، فإن السرعة الإجمالية للنظام مقيدة حاليًا بهذه المكونات الأخرى، مما يشير إلى أن التحسينات المستقبلية ستتطلب تغييرًا في كيفية تخزين هذه الأرقام، وليس فقط كيفية معالجتها.
تقدم النتائج مسارًا واضحًا للمضي قدمًا لجعل الذكاء الاصطناዊ أكثر سهولة في الوصول إليه على الأجهزة اليومية. لقد نجحت الطريقة الجديدة، FlashAttention-V، في جسر الفجوة بين تصميم نماذج اللغة الحديثة وقدرات معالجات المتجهات القابلة للتوسع. وهي تثبت أنه بمجرد إعادة ترتيب كيفية تفكير الكمبيوتر في مهامه وتعبئة البيانات بشكل أكثر كفاءة، يمكن تحقيق مكاسب كبيرة في الأداء دون الحاجة إلى أجهزة جديدة. وتؤكد الأبحاث أنه بالنسبة للمهام القصيرة وتوليد النصوص في الوقت الفعلي، يمكن لهذه المعالجات المحسنة أن تكون فعالة للغاية. ومع ذلك، فإنها تعمل أيضًا كتحذير من أن الطرق الحالية لضغط البيانات لهذه الأجهزة قد وصلت إلى طريق مسدود، وأن إطلاق العنان للإمكانات الكاملة للمعالجات المستقبلية الأكثر عرضًا سيعتمد على حل لغز كيفية تخزين ونقل هذه الأرقام المضغوطة بشكل أكثر ذكاءً.
أصبح الاستنتاج (Inference) لنماذج المحولات (Transformer models) على وحدات المعالجة المركزية (CPUs) أمراً بالغ الأهمية، لا سيما لنماذج اللغات الصغيرة (SLMs) المنشورة على أجهزة الحافة (Edge devices). وبينما تقدم هياكل المتجهات مثل توسعة RISC-V المتجهة (RVV) وتوسعة ARM المتجهة القابلة للتوسع (SVE) منصات تنفيذ واعدة، تظل وحدة الانتباه (Attention module) هي العائق الأساسي بسبب متطلبات عرض نطاق الذاكرة العالية.
تعاني التنفيذات الحالية لـ FlashAttention على وحدات المعالجة المركزية المتجهة (مثل الموجودة في llama.cpp) من محدودية أساسية في القابلية للتوسع: فهي تربط طول المتجه (VL) ببعد الرأس (D)، والذي يكون عادةً 64 أو 128. ونتيجة لذلك، عندما تدعم الأجهزة أطوال متجهات أكبر بكثير من D (على سبيل المثال، 512 بت، 2048 بت، أو 8192 بت)، لا تستطيع هذه التنفيذات استغلال كامل عرض SIMD. فهي تتشبع عند VL≤D، مما يترك سجلات المتجهات العريضة غير مستغلة ويفشل في استغلال إمكانات الهياكل ذات المتجهات الطويلة. علاوة على ذلك، تسبب تنسيقات التكميم القياسية (تحديداً Q8_0) عدم توافق هيكلي مع التنفيذ طويل المتجهات في طبقات الإسقاط الخطي (Linear projection) وطبقات التغذية الأمامية (Feed-forward layers)، مما يخلق اختناقات إضافية.
المنهجية
يقترح المؤلفون FlashAttention-V، وهو خوارزمية FlashAttention معاد تصميمها خصيصاً لهياكل المتجهات القابلة للتوسع. الابتكار الجوهري يكمن في استغلال التوازي عبر رؤوس الانتباه بدلاً من مجرد التوازي داخل رأس واحد.
التحولات الخوارزمية الرئيسية
التعبئة بين الرؤوس (Inter-Head Packing): عندما يكون VL>D، تقوم FlashAttention-V برسم خرائط لعدة رؤوس انتباه داخل سجل متجه واحد. ومن خلال إعادة ترتيب الحلقات (Loops) وتطبيق بسط الحلقات (Loop unrolling)، تقوم الخوارزمية بتعبئة عناصر Q و K و V من رؤوس متعددة في سجلات متجهة متجاورة. يسمح هذا للنظام باستخدام أطوال متجهات تتجاوز بعد الرأس.
إعادة ترتيب الحلقات وبسطها: تعيد الخوارزمية ترتيب الحلقات لتحسين المحلية المكانية (Spatial locality) وتمكين الوصول إلى الذاكرة بخطوة واحدة (Unit-stride memory access). كما تطبق بسط الحلقات عبر رؤوس الانتباه لزيادة التوازي على مستوى التعليمات (ILP) وتعظيم إشغال سجلات المتجهات.
الوعي بـ GQA/MHA: يدعم التصميم بشكل أصيل انتباه المجموعة (Grouped-Query Attention - GQA) وانتباه تعدد الرؤوس (Multi-Query Attention - MQA). بالنسبة لرؤوس المفتاح-القيمة (Key-value) المشتركة، تقوم الخوارزمية بتحميل البيانات مرة واحدة وتكرارها عبر سجل المتجه، مما يتجنب عمليات الوصول المتكررة للذاحة.
التنفيذ المجزأ (Blocked Execution): يستخدم التنفيذ استراتيجيات حجب مدركة للذاكرة المخبئية (مستوحاة من FlashAttention-2) لإبقاء البيانات الوسيطة في السجلات وتقليل حركة المرور في الذاكرة.
الإعداد التجريبي
التنفيذ: تم دمج الخوارزمية في إطار عمل ggml داخل llama.cpp باستخدام تعليمات RISC-V و ARM SVE.
النماذج التي تم تقييمها: TinyLlama، Llama 3.2، Qwen2.5 (نماذج GQA)، و Pythia-410M (نموذج MHA).
الأجهزة/المحاكاة:
أجهزة حقيقية: Banana Pi BPI-F3 (بمعمارية RVV 256-بت).
المحاكاة: تم تكوين gem5 مع RISC-V بمعمارية RiscvMinorCPU التي تعمل بنظام In-order، وتم توسيع المحاكي لنمذجة زمن انتقال المتجهات الواقعي بما يتناسب مع طول المتجه وعدد المسارات (Lanes)، بناءً على معمارية Vitruvius+، مع التدرج من 512 بت إلى 8192 بت ومتجهات من 8 إلى 64 مساراً.
المقارنات المرجعية (Baselines): FlashAttention غير المتجه ( ggml-scalar) و FlashAttention المتجه الحالي (ggml-vec).
المساهمات الرئيسية
خوارزمية FlashAttention-V: نهج مبتكر يتيح الاستخدام الفعال لأطوال المتجهات التي تتجاوز بعد الرأس (VL>D) من خلال استغلال التوازي بين الرؤوس. تحقق الخوارزمية تسريعاً يتراوح بين 22× و 42× مقارنة بـ FlashAttention القياسية (Scalar) في مرحلة التعبئة (Prefill)، و 8× إلى 11× في مرحلة فك الترميز (Decode) عند أطوال متجهات 512 بت (محاكاة gem5).
تحليل القابلية للتوسع: تقدم الورقة تحليلاً كمياً لتوسع FlashAttention-V حتى أطوال متجهات تصل إلى 8192 بت. وتوضح أن التسريع النظري يزدد مع عرض المتجه، إلا أن الأداء الواقعي محكوم بزمن انتقال الوحدات الوظيفية للمتجهات. وجد المؤلفون أن التكوينات التي تحتوي على 64 مسار متجه ومتجهات بطول 4096 بت تحقق التوسع الأمثل (زيادة 2×–2.5× في مرحلة التعبئة)، بينما تتضاءل المكاسب بعد هذه النقطة بسبب أعباء زمن الانتقال.
تحديد اختناقات التكميم: شخص المؤلفون عدم توافق هيكلي بين تكميم Q8_0 والتنفيذ طويل المتجهات في طبقات الإسقاط الخطي والتغذية الأمامية. وأثبتوا أن التخطيط المتداخل للأوزان والمقاييس في Q8_0 يفرض عمليات تعبئة صريحة وعمليات اختزال مقنعة (Masked reduction)، والتي تستهلك ما يصل إلى 60% من دورات التنفيذ عند طول متجه 2048 بت. هذا العبء يبطل الفوائد الحسابية للمتجهات الأطول، وهي نتيجة متسقة عبر كل من RVV و ARM SVE.
النتائج
الأجهزة الحقيقية (Banana Pi BPI-F3): حققت FlashAttention-V تسريعاً قدره 12×–14× مقارنة بـ FlashAttention القياسية. وكانت أكثر فعالية في السياقات القصيرة (N≤128)، وهي الشائعة في استنتاج أجهزة الحافة.
مرحلة التعبئة (المحاكاة):
عند طول متجه 512 بت، تراوحت التسريعات بين 22× (TinyLlama) و 42× (Qwen2.5) مقارنة بالنماذج القياسية.
التوسع إلى 8192 بت وفر مكاسب إضافية (تصل إلى ~3×) للنماذج ذات أبعاد الرأس الصغيرة التي يمكنها تعبئة المزيد من الرؤوس في السجل الواحد.
تحت ظروف زمن الانتقال الواقعي (64 مساراً)، حافظ تكوين 4096 بت على تسريع قدره 2×–2.5× مقارنة بأساس 512 بت، بينما شهدت تكوينات 8192 بت عوائد متناقصة بسبب أعباء زمن الانتقال.
مرحلة فك الترميز (Decode): حققت FlashAttention-V تسريعاً قدره 8×–11× عند طول متجه 512 بت. ومع ذلك، نظراً لطبيعة الرمز الواحد في عملية فك الترميز، أظهر الأداء حساسية أقل تجاه عرض المتجه وعدد المسارات بعد 512 بت، حيث لم يكن حجم العمل لكل تكرار كافياً لاستيعاب أعباء التعبئة/التفريغ.
الطبقات المكممة: كشفت الاختبارات الدقيقة أن أعباء التعبئة وعمليات الاختزال المقنعة في طبقات Q8_0 الخطية تهيمن على وقت التنفيذ عند أطوال المتجهات الطويلة، مما يمنع التوزيع الحسابي للمهام.
الأهمية والادعاءات
تدعي الورقة أنها تسد الفجوة بين FlashAttention وهياكل المتجهات القابلة للتوسع من خلال تمكين التنفيذ الفعال لأطوال متجهات تتجاوز بكثير بعد الرأس. ويؤكد المؤلفون أن تحسيناتهم (إعادة ترتيب الحلقات، التعبئة بين الرؤوس، والبسط) هي مبادئ قابلة للنقل يمكنها تسريع استنتاج المحولات بشكل كبير على أجهزة الحافة.
بشكل حاسم، تسلط الورقة الضوء على محدودية أساسية في استراتيجيات التكميم الحالية للتنفيذ طويل المتجهات. وتجادل بأن بينما نجحت FlashAttention-V في توسيع آلية الانتباه، فإن التخطيط الهيكلي لطبقات الخطية المكممة بـ Q8_0 يشكل عائقاً أمام توسع مماثل في شبكات التغذية الأمامية. ويخلص المؤلفون إلى أن العمل المستقبلي يجب أن يستكشف تنسيقات تكميم أو تخطيطات ذاكرة بديلة للقضاء على أعباء التعبيد الصريحة، حيث أن المكاسب الحسابية الحالية للمتجهات الطويلة يتم تعويضها حالياً بتكاليف نقل البيانات في النماذج المكممة.
تقدم الدراسة رؤى عملية لمصممي الأجهزة ومهندسي البرمجيات، مشيرة إلى أن تكوينات 64 مساراً و4096 بت توفر "النقطة المثلى" (Sweet spot) للتوسع قبل أن تهيمن أعباء زمن الانتقال، وأن تحسين نوى الانتباه (Attention kernels) وحده لا يكفي لتحقيق مكاسب في الأداء النهائي دون معالجة الاختناقات الناتجة عن التكميم.