الأوزان النشطة بدلًا من المصفوفة الكاملة: فك ترميز نموذج نبضي باستخدام INT8 على وحدة المعالجة المركزية (CPU)

27 سبتمبر 202624 الآراء

تصف المقالة تنفيذًا بلغة C++ لنموذج لغوي يستخدم بوابة نبضية ثنائية: تُعالَج الإسقاطات المتناثرة بدقة INT8، ولا تأخذ العمليات الحسابية في الحسبان سوى الأوزان النشطة. في اختبار أحادي الخيط، حققت نسخة INT8 المبكرة 23,31 رمزًا/ثانية مقابل 9,82 لنسخة FP32، وخفّضت الذاكرة المخصصة للأوزان من 3355,2 إلى 1087,4 MiB؛ أما تحويل الإسقاطات الكثيفة إلى INT4 فقلّل معدل نقل البيانات أثناء فك الترميز.

الأوزان النشطة بدلًا من المصفوفة الكاملة: فك ترميز نموذج نبضي باستخدام INT8 على وحدة المعالجة المركزية (CPU)

كيف تغيّر النبضات معالجة الأوزان

في المقالة «تنفيذ INT8 المراعي للنبضات لنماذج اللغة النبضية على وحدات CPU عادية» يصف Ting Liu فك ترميز نموذج لغوي نبضي على وحدة CPU.

  • تتيح التنشيطات النبضية الثنائية قراءة أعمدة الأوزان النشطة فقط.
  • تُستبدل عمليات الضرب بجمع الأوزان.

المعنى العملي لهذا النهج هو عدم معالجة الأعمدة التي لم تُفعّل. ويعتمد المكسب على تخلخل التنشيطات، وليس على تنسيق الأوزان وحده.

كيف يعمل مسار INT8

اختُبر تنفيذ C++ على نموذج لغوي موجَّه بالنبضات، يضم 874M معلمة. ويستخدم أوضاعًا مختلفة للإسقاطات المتناثرة والكثيفة.

  • تُخزَّن أوزان INT8 في الإسقاطات المتناثرة بتنسيق column-major.
  • يُنفَّذ التراكم باستخدام الأعداد الصحيحة، ويُطبَّق مقياس مرة واحدة لكل قناة إخراج.
  • تحتفظ الإسقاطات الكثيفة بإمكانية الوصول row-major وبالتنشيطات FP32.

هذا مخطط مختلط، وليس تحويلًا لكل عمليات النموذج إلى INT8. ومعيار الاختيار هو الاستعداد للإبقاء على FP32 في الإسقاطات الكثيفة مقابل الاستفادة من مسار INT8 المتناثر.

ما مقاييس السرعة والتخزين المذكورة

قورنت نقطة تحقق مبكرة باستخدام خيط واحد. وفي هذا الاختبار، حقق INT8 معدل نقل أعلى لفك الترميز، مع حجم تخزين أصغر للأوزان.

نقطة تحقق مبكرة، خيط واحدسرعة فك الترميزتخزين الأوزان
FP329.82 tokens/s3355.2 MiB
INT823.31 tokens/s1087.4 MiB

وتُعرض نتائج منفصلة لنقطة التحقق النهائية على AMD Ryzen 7 5800X. وتختلف الظروف عن مقارنة نقطة التحقق المبكرة.

وضع INT8 لنقطة التحقق النهائيةالمقياس
فك الترميز، خيط واحد22.63 tokens/s
فك الترميز، أربعة خيوط47.90 tokens/s
تهيئة مسبقة لتسلسل من 512 رمزًا، ثمانية خيوط94.68 tokens/s

لا يمكن جمع هذه المقاييس مباشرةً في جدول مقارنة واحد، لأنها تخص نقاط تحقق وأوضاعًا مختلفة. ولتقييم معدل النقل، يهم كل من إصدار نقطة التحقق وعدد الخيوط.

ما الذي يغيّره خيار INT4

يقلّص خيار INT4 للإسقاطات الكثيفة حجم التخزين بنسبة إضافية قدرها 17.4%. وفي المقابل، ينخفض معدل نقل فك الترميز بنسبة 46.6%.

في النسخة المصححة من المقالة، سُحبت النتائج غير الصالحة الخاصة بـ INT4 الخالص. لذا، تتعلق المفاضلة المذكورة باستخدام INT4 في الإسقاطات الكثيفة، لا بنموذج كامل يستخدم INT4.

معيار الاختيار هو إعطاء الأولوية للتخزين على سرعة فك الترميز. ولا يمكن استخدام نتائج INT4 الخالص دليلًا على الأداء.

ما المعروف عن استهلاك الطاقة

في دراسة منفصلة لرأس الإخراج على ARM، سُجّلت مؤشرات طاقة أعلى لتكوينين من إعدادات التحقق من المرشحين ضمن نافذة فك ترميز مقتطعة.

كما تضيف النسخة المصححة من المقالة تحققًا عدديًا ودراسة لاستهلاك الطاقة باستخدام قياس القدرة من مقبس الحائط على ARM. ولا تكفي بيانات اختبارات سرعة وحدة CPU للاستنتاج بوجود توفير في الطاقة.

الأسئلة المتكررة

المواد ذات الصلة

جميع المواد
الأوزان النشطة بدلًا من المصفوفة الكاملة: فك ترميز نموذج نبضي باستخدام INT8 على وحدة المعالجة المركزية (CPU)