BF16 Component-Product Emulation of FP32 and FP64 GEMM on Intel AMX
تقدم هذه الورقة خوارزمية موجهة نحو وحدة المعالجة المركزية (CPU) تستفيد من نواتج مصفوفات Intel AMX BF16 لمحاكاة عمليات ضرب المصفوفات (GEMM) عالية الدقة من نوع FP32 وFP64، محققةً إنتاجية تنافسية ودقة قابلة للضبط عبر تفكيك المعاملات إلى مكونات متعددة منخفضة الدقة وتجميعها في دقة أعلى.
تُبنى الحواسيب الحديثة مع انقسام متزايد في آلاتها الداخلية. فمن ناحية، توجد محركات قوية مصممة خصيصًا للذكاء الاصطناائي، وهي تتفوق في إجراء مليارات العمليات الحسابية البسيطة بسرعة هائلة. تعمل هذه المحركات بشكل أفضل مع الأرقام القصيرة والبسيطة، مضحيةً بجزء ضئيل من التفاصيل مقابل سرعة هائلة. ومن ناحية أخرى، لا يزال عالم الاكتشاف العلمي — مثل محاكاة أنماط الطقس، أو نمذجة كيفية ترابط الذرات، أو التنبؤ بتدفق السوائل — يعتمد على أرقام طويلة ودقيقة. تحتاج هذه الحسابات العلمية إلى كل ذرة من التفاصيل لتبقى مستقرة ودقيقة، لكن أجزاء الحاسوب القياسية التي تتعامل معها غالبًا ما تكون أبطأ وأقل كفاءة من محركات الذكاء الاصطناعي الجديدة. وهذا يخلق معضلة: العلماء يحتاجون إلى سرعة الأجهزة الجديدة، لكنهم لا يستطيعون تحمل فقدان الدقة التي يتطلبها عملهم.
استكشف باحثون في شركة "ماجينفرا" (Magizable Co., Ltd.) في الصين طريقة لسد هذه الفجوة باستخدام نوع محدد من الرقائق الحاسوبية يسمى "إنتل AMX". كان هدفهم هو معرفة ما إذا كان يمكن خداع محركات الذكاء الاصطناعي السريعة ومنخفضة الدقة للقيام بالرياضيات البطيئة وعالية الدقة المطلوبة للعلوم. وبدلاً من مطالبة الرقاقة بالقيام بالرياضيات الصعبة مباشرة، قاموا بتفكيك المشكلة إلى قطع أصغر وأبسط. تخيل محاولة قياس مسافة طويلة جدًا باستخدام مسطرة تحتوي فقط على علامات لكل بوصة كاملة؛ يمكنك قياس البوصات الكاملة، ثم قياس الكسر المتبقي، ثم قياس الجزء الضئيل المتبقي، ثم جمعها جميعًا للحصول على إجمالي دقيق. طبق الباحثون هذا المنطق نفسه على الأرقام؛ حيث أخذوا رقمًا واحدًا معقدًا وقسموه إلى عدة أجزاء أبسط يمكن لمحرك الذكاء الاصطناعي السريع التعامل معها بسهولة. ثم قاموا بإجراء العديد من الحسابات السريعة على هذه الأجزاء وجمع النتائج بعناية لإعادة بناء الإجابة النهائية عالية الدقة.
اختبر الفريق هذا النهج على مستويين مختلفين من الدقة. أولاً، تناولوا حسابات الدقة الأحادية (single-precision)، وهي المعيار للعديد من التطبيقات العلمية. ووجدوا أنه من خلال تقسيم كل رقم إلى ثلاثة أجزاء وإجراء ست عمليات حسابية محددة، يمكنهم تحقيق نتائج دقيقة تمامًا مثل أفضل البرمجيات الحالية، ولكن بسرعة أكبر بكثير. في الرقائق الحاسوبية التي اختبروها، كانت هذه الطريقة أسرع بمعدل يتراوح بين 1.14 و2.56 مرة من الطريقة القياسية للقيام بالرياضيات. وكان التسارع ملحوظًا بشكل أكبر مع مجموعات البيانات الأكبر، حيث يصبح العبء الإضافي الناتج عن تقسيم وإعادة تجميع الأرقام أقل أهمية مقارنة بالسرعة الهائلة للحسابات.
وعندما انتقلوا إلى حسابات الدقة المزدوجة (double-precision)، وهي أكثر دقة وتُستخدم لأكثر المحاكاة العلمية تطلبًا، زاد التحدي. هنا، كان على الباحثين تقسيم كل رقم إلى ستة أجزاء. ولأن الحسابات يجب إعادة تجميعها بعناية فائقة، أصبحت العملية أكثر تعقيدًا. اختبروا نسخًا مختلفة من هذه الطريقة، مع الاحتفاظ بما يتراوح بين ست إلى واحد وعشرين قطعة من قطع الحساب الصغيرة. واكتشفوا مقايضة واضحة: الاحتفاظ بمزيد من القطع يجعل الإجابة أكثر دقة، ولكنه يبطئ العملية أيضًا. فباستخدام ست قطع فقط، كانت الطريقة سريعة بما يكفي للتفوق على البرامج القياسية للمشكلات الكبيرة جدًا، حيث كانت أسرع بمعدل يصل إلى 1.7 مرة. ومع ذلك، مع إضافة المزيد من القطع لتحسين الدقة، فإن العمل الإضافي المطلوب لإدارتها استهلك ميزة السرعة. وفي النهاية، جعلت محاولة الاحتفاظ بواحد وعشرين قطعة الطريقة أبطأ من النهج القياسي، رغم أنها كانت أكثر دقة.
كما سلطت الدراسة الضوء على أن هذه التقنية ليست حلاً عالميًا لكل حالة. فهي تعمل بشكل أفضل عندما تظل الأرقام التي يتم حسابها ضمن نطاق محدد، تمامًا كما أن المسطرة ذات الطول المحدود لا يمكنها قياس مسافة شاسعة جدًا أو ضئيلة جدًا دون تعديلات خاصة. وأشار الباحثون إلى أن طريقتهم لا تعمل مع كل أنواع الأرقام، لا سيما الأرقام الكبيرة جدًا أو الصغيرة جدًا، وهي لا تضمن تطابقًا تامًا (بت مقابل بت) مع البرمجيات الحالية. بدلاً من ذلك، هي تقدم أداة جديدة للعلماء الذين يحتاجون إلى سرعة عالية ودقة عالية، بشرط أن تقع بياناتهم ضمن حدود هذه الطريقة. ومن خلال إظهار إمكانية استخدام الأجهزة منخفضة الدقة لحل مشكلات عالية الدقة، تشير هذه الدراسة إلى مستقبل يمكن فيه استخدام المحركات المتخصصة المبنية للذكاء الاصطناعي لتسريع المهام الشاقة للاكتشاف العلمي.
تدمج المعالجات الحديثة بشكل متزايد محركات مصفوفات ذات إنتاجية عالية (مثل Intel Advanced Matrix Extensions، أو AMX) مُحسّنة لأعباء عمل الذكاء الاصطناعي منخفضة الدقة (مثل BF16 وFP8). ومع ذلك، لا تزال العديد من تطبيقات الحوسبة العلمية في مجالات مثل ديناميكا الموائع الحسابية وكيمياء الكم تعتمد على عمليات ضرب المصفوفات العامة (GEMM) بدقة FP32 وFP64 لضمان الاستقرار العددي وقابلية التكرار. وهذا يخلق عدم توافق في الأجهزة: فالمحركات منخفضة الدقة عالية الأداء غير قابلة للاستخدام مباشرة في المهام العلمية عالية الدقة.
السؤال المركزي الذي تعالجه هذه الورقة هو ما إذا كان يمكن إعادة توظيف إنتاجية المصفوفات منخفضة الدقة المصممة للذكاء الاصطناعي خوارزميًا لتسريع عمليات (GEMM) العلمية عالية الدقة على المعالجات. ويكمن التحدي في محاكاة حسابات FP32 وFP64 باستخدام مكونات BF16 دون تكبد تكاليف باهظة ناتجة عن التفكيك، ونقل البيانات، وإعادة البناء، مع الحفاظ على دقة عددية تضاهي المكتبات القياسية مثل Intel oneMKL.
2. المنهجية
تقترح الورقة إطار عمل للمحاكاة القائمة على "مكون-ناتج" يقوم بتفكيك المعاملات عالية الدقة إلى عدة مصفوفات BF16، وحساب نواتج مختارة منخفضة الدقة باستخدام AMX، ثم إعادة بناء النتيجة بالتنسيق المستهدف.
2.1 تنسيقات الفاصلة العائمة والنطاقات
BF16: يحتفظ بنطاق أس (exponent) مكون من 8 بت لـ FP32 ولكنه يقلل دقة المعامل (significand) إلى 8 بت.
محاكاة FP32: تعمل على مدخلات FP32 قياسية.
محاكاة FP64: تعمل على نطاق مقيد (FB64) حيث تقع قيم FP64 ضمن نطاق أس BF16 الطبيعي. هذا التقييد يتجنب الحاجة إلى عوامل قياس (scaling factors) لكل لوحة، مما يحافظ على الهامش المتاح للأداء.
2.2 استراتيجيات التفكيك
مسار AMX-FP32: يستخدم تفكيك بقايا ثلاثي المكونات لـ BF16. يتم تقسيم كل معامل FP32 إلى ثلاث شرائح BF16 (A0,A1,A2) باستخدام تقريب البواقي المباشر. يتبع هذا نهج "Henry-style"، الذي يستغل نطاق الأس المشترك لضمان الطرح الدقيق للبواقي في FP32.
مسار AMX-FP64: يستخدم تفكيك Ozaki مبسط وثابت ذي ست شرائح. يتم تقسيم كل معامل FP64 إلى ست شرائح BF16. وبخلاف مخططات Ozaki الكاملة التي تستخدم قياسًا ديناميكيًا، تقوم هذه الطريقة بتخزين الأجزات المستخرجة مباشرة كمصفوفات BF16 (بافتراض بقائها طبيعية)، مما يلغي الحاجة إلى بيانات وصفية للقياس (scale metadata) أو أوزان إعادة البناء.
2.3 جدولة النواتج وإعادة البناء
إعادة بناء FP32: تقوم الطريقة بتقييم ستة نواتج مكونات مختارة (أول ثلاثة أقطار في مصفوفة التفاعل للمكونات). ومن الأهمية بمكان أن هذه النواتج تُجمع مباشرة في بلاطات (tiles) AMX من نوع FP32. يطبق التنفيذ جدول إعادة استخدام المعاملات (على سبيل المثال، A1B1→A1B0→…) الذي يبقي بلاطات التجميع (accumulator tiles) مستقرة في مكانها، مما يقلل من حركة تحميل/تخزين البلاطات.
إعادة بناء FP64: تقوم الطريقة بتقييم عدد متغير من النواتج (6، 10، 15، أو 21). وخلافًا لمسار FP32، يتم حساب كل ناتج BF16 مختار في FP32، ثم يُخزن في الذاكرة، ويُوسع إلى FP64، ويُجمع في مجمع كتلي من نوع FP64. هذا يمنع أخطاء التجميع في FP32 من تلويث النتيجة عالية الدقة، ولكنه يتسبب في عبء كبير بسبب عمليات التخزين المتكررة وتحويل التنسيقات.
2.4 تفاصيل التنفيذ
يستخدم التنفيذ هيكل GEMM مجزأ بكتل مخرجات حجم 256×256 وكتل دقيقة (micro-tiles) بحجم 32×32. ويعتمد على مخازن مكونات معدة مسبقًا ومتصلة بالكتل لتحسين أنماط الوصول إلى الذاكرة. يتم تخزين معاملات A بتنسيق صفي (row-major) قياسي، بينما يتم حزم معاملات B مسبقًا بتنسيق VNNI المطلوب لتعليمات الضرب النقطي لـ AMX BF16.
3. المساهمات الرئيسية
الجسر الخوارزمي: يوضح طريقة عملية لمحاكاة GEMM بدقة FP32 وFP64 باستخدام تعليمات Intel AMX BF16، مما يربض الفجوة بين الأجهزة المحسنة للذكاء الاصطناعي ومتطلبات الحوسبة العلمية.
محاكاة FP32 بدقة تضاهي FP32: يظهر أن جدول ستة نواتج لـ BF16 مع تجميع FP32 يمكن أن يحقق دقة تضاهي oneMKL SGEMM (مقاسة بالخطأ النسبي المعياري وخطأ المكونات المقيوم بـ GEMM)، دون ادعاء التطابق البتّي (bitwise identity).
محاكاة FP64 محكومة: تقدم مقايضة قابلة للضبط بين الدقة والأداء لمحاكاة FP64 من خلال تغيير عدد نواتج المكونات المستبقاة (6 إلى 21) ضمن تفكيك ست شرائح ثابت.
تحسين حركة البيانات: يطور استراتيجيات جدولة محددة (إعادة استخدام المعاملات لـ FP32) وتنسيقات بيانات (حزم VNNI، مخازن معدة مسبقًا) للتخفيف من عبء التفكيك وإعادة البناء على محركات المصفوفات في المعالج.
4. النتائج التجريبية
أُجريت التجارب على خادم Intel Xeon Platinum 8462Y+ ثنائي المقبس، مع مقارنة نوى (kernels) المقترحة بـ Intel oneMKL SGEMM وDGEMM.
أداء FP32: تتفوق نسخة AMX-FP32 على oneMKL SGEMM عبر جميع أحجام المصفوفات المربعة المختبرة (N=256 إلى N=32768). تتراوح نسب التسريع من 1.14× إلى 2.56×، مع ملاحظة أعلى المكاسب عند أحجام المصفوفات الكبيرة حيث يتم تعويض عبء التفكيك بفضل ميزة إنتاجية BF16.
أداء FP64: النتائج أكثر تقييدًا.
تحقق AMX-FP64-6 (6 نواتج) تسريعات تصل إلى 1.72× فوق oneMKL DGEMM للمصفوفات الكبيرة (N≥16384).
تحقق AMX-FP64-10 مكاسب هامشية فقط للمصفوفات الأكبر حجمًا.
لا تتفوق AMX-FP64-15 وAMX-FP64-21 على DGEMM في التكوينات المختبرة، حيث تستهلك تكاليف تخزين وتحويل وتجميع النواتج الإضافية هامش الأداء المتاح.
الدقة:
تحقق AMX-FP32 أخطاء في نطاق 10−7، وهو ما يتوافق مع دقة مستوى FP32.
تظهر متغيرات AMX-FP64 خطأً متناقصًا مع زيادة عدد النواتج، حيث تقترب نسخة الـ 21 ناتجًا من دقة مستوى DGEMM، ولكن بتكلفة أداء تلغي ميزة التسريع.
5. الأهمية والادعاءات
تضع الورقة هذا العمل كـ دراسة خوارزمية أولية وليس كبديل كامل للمكتبات الأصلية عالية الدقة. وتكمن أهميته في إثبات أن:
محركات المصفوفات منخفضة الدقة في المعالجات يمكن استخدامها بفعالية للحوسبة العلمية عالية الدقة من خلال التفكيك الخوارزمي الدقيق وتحسين حركة البيانات.
هناك سقف أداء واضح للمحاكاة: فبينما تعد محاكاة FP32 فعالة للغاية بسبب كفاءة تجميع FP32، فإن محاكاة FP64 محدودة بالأعباء الناتجة عن توسيع وتجميع النتائج خارج سجلات AMX tile.
توفر الطريقة مقايضة قابلة للضبط لـ FP64، مما يسمح للتطبيقات باختيار عدد النواتج الذي يوازن بين متطلبات الدقة الخاصة بها واحتياجات الأداء.
يشير المؤلفون صراحةً إلى القيود: النموذج الأولي الحالي يدعم فقط المصفوفات المربعة، ويتطلب مدخلات ضمن نطاق أس BF16 (بالنسبة لـ FP64)، ولا يتعامل مع حالات تجاوز السعة (overflow/underflow) أو القيم الاستثنائية. وقد تم تحديد العمل المستقبلي في توسيع الإطار ليشمل المصفوفات المستطيلة، ونطاقات مدخلات أوسع عبر التفكيك المقيّس (scaled decomposition)، والتكيف مع محركات معالجة أخرى (مثل Arm SME).