طرق التكميم لتسريع استدلال نماذج اللغة الكبيرة بمقدار 100 ضعف

طرق التكميم لتسريع استدلال نماذج اللغة الكبيرة بمقدار 100 ضعف

تستكشف هذه المقالة بشكل أساسي الاتجاهات القابلة للتطبيق لتسريع استدلال التكميم بناءً على أحدث الأوراق البحثية حول أجهزة GPU السائدة وخوارزميات التكميم. على خلفية مخططات التكميم الحالية، دعنا نتعمق في الموضوع. مقدمة موجزة عن التكميم تكميم النموذج هو تقنية ضغط للنموذج تهدف إلى تقليل حجم النموذج عن طريق ضبط عرض البت للأوزان والتنشيطات. يساعد هذا التخفيض في خفض الأعباء الحسابية، وإدخال/إخراج ذاكرة GPU، والإشغال، مما يقلل في النهاية من زمن الاستجابة ويعزز الإنتاجية. يوضح الرسم البياني التالي كيف يعمل التكميم على تسريع التعلم العميق:

  • الخطوة 1: يتم تحميل تخزين الأوزان والتنشيطات من الذاكرة إلى وحدات الحساب MatMul. يؤثر عرض البت للأوزان والتنشيطات بشكل كبير على زمن نقل البيانات.
  • الخطوة 2: تقوم وحدات الحساب MatMul بإجراء ضرب المصفوفات، حيث يؤثر عرض البت والتنسيق أيضًا على زمن الاستجابة.
  • الخطوة 3: عادةً ما تحتوي المراكمات على عرض بت أعلى للجمع عالي الدقة. بعد الجمع، قد تخضع القيم في المراكمات لإعادة التكميم (يحدد عرض بت الإخراج عدد البتات المنقولة والمخزنة مرة أخرى في الذاكرة لخطوة المعالجة التالية).

نظرة عامة تخطيطية على مسرع التعلم العميق بناءً على مخططات التكميم المختلفة، هناك طريقتان رئيسيتان: التدريب الواعي بالتكميم (QAT) والتكميم بعد التدريب (PTQ).

  • QAT (التدريب الواعي بالتكميم)، المعروف أيضًا باسم التكميم عبر الإنترنت، يتطلب جهدًا حسابيًا إضافيًا أثناء التدريب. فهو يجمع بين التكميم والانتشار العكسي لضبط أوزان النموذج، مما يضمن أن النموذج المكمم يحافظ على الدقة.
  • PTQ (التكميم بعد التدريب)، المعروف أيضًا باسم التكميم دون اتصال، يتضمن تكميم نموذج مُدرّب مسبقًا باستخدام الحد الأدنى من البيانات الإضافية أو بدونها. تتضمن هذه العملية معايرة، قد تتضمن قياس أوزان النموذج. هناك نوعان من طرق PTQ:
  • التكميم الديناميكي اللاحق (PDQ) لا يعتمد على مجموعات بيانات المعايرة. بدلاً من ذلك، يقوم بتحويل كل طبقة مباشرة باستخدام صيغ التكميم. يستخدم QLoRA (التكيف منخفض الرتبة الواعي بالتكميم) هذه الطريقة.
  • التكميم اللاحق بالمعايرة (PCQ) يتطلب مجموعات بيانات تمثيلية لضبط أوزان التكميم بناءً على إدخال وإخراج كل طبقة في النموذج. يتبنى GPTQ (تحويل المولد التوليدي السابق للتدريب للتكميم) هذا النهج.

دعم الأجهزة

سلسلة NVIDIA حافظت بطاقات سلسلة NV، بسبب نظام CUDA البيئي، باستمرار على موقع ريادي في دعم الدقة وأنواع البيانات المختلفة.

سلسلة AMD أظهرت بطاقات سلسلة MI300 من AMD مؤشرات أداء تفوق H100 في بعض الاختبارات، مما يجعلها خيارًا واعدًا تاليًا. كما أنها تدعم أنواع FP8.

بالإضافة إلى بطاقات سلسلة NVIDIA و AMD، تقدم البطاقات المنتجة محليًا دعمًا جيدًا لأنواع البيانات مثل FP16 و INT8 (تفتقر حاليًا نسبيًا لدعم FP8 وتنسيقات البيانات الأخرى). لن ندرجها جميعًا هنا.

التحديات في تكميم LLM

لنبدأ بمقارنة بسيطة. قمنا بإجراء تكميم INT أساسي على كل من نموذجي ResNet18 و OPT-13B. وجدنا أن أداء ResNet18 لم يتأثر تقريبًا، بينما عانى OPT-13B من خسائر كبيرة.

لماذا تظهر الشبكات العصبية، وكلها تتبع التوزيعات الغاوسية، مثل هذه الاختلافات؟ يُعزى ذلك أساسًا إلى القيم الشاذة أو الحالات الشاذة في LLM.

كتلة محول واحدة، تتكون من وحدة الانتباه الذاتي والوحدة الخطية. الاتصال باللون الأحمر هو الاتصال المشكل في المحولات الذي يحتوي على قيم شاذة. كما هو موضح بعلامات حمراء في بنية المحول أعلاه، تحدث مشكلة التكميم في المحولات في جزء محدد جدًا من الشبكة. في بعض الوحدات كاملة التوصيل، خاصة في الطبقات القليلة الأخيرة من الشبكة، توجد قيم شاذة كبيرة في مجموع معايير الطبقة. مجرد إزالة هذه القيم الشاذة من شأنه أن يقلل بشكل كبير من دقة الشبكة لأنها تخدم غرضًا محددًا. تجبر هذه القيم الشاذة آلية الانتباه في الطبقة التالية على التركيز على بعض الرموز غير ذات المعنى في النص، مثل فواصل الجمل والنقاط أو الفواصل، مما يتسبب في عدم تحديث هذه الرموز المحدثة بشكل كبير. وفقًا للورقة LLM.int8()، تم الكشف عن وجود قيم شاذة في التنشيطات، حيث تكون قيمها المطلقة أكبر بكثير. علاوة على ذلك، يتم توزيع هذه القيم الشاذة في عدد قليل من الميزات، يشار إليها بالميزات الناشئة. من المعروف أن القيم الشاذة لها تأثير كبير على أداء النموذج، والتخلص المباشر منها ليس حلاً عمليًا. وجود القيم الشاذة يجعل نطاق fp16 كبيرًا جدًا. لذلك، عند تمثيلها باستخدام int8، يحتاج كل رقم إلى تمثيل نطاق واسع من fp16، مما يؤدي إلى أخطاء طبيعية. عالجت شبكات CNN التقليدية هذه المشكلة أيضًا من خلال اقتراح طرق المعايرة. على وجه التحديد، يتم تحليل قيم fp16 إحصائيًا، ثم يتم استخدام خوارزميات مثل تباعد KL لتجاهل القيم الكبيرة، وبالتالي تقليل النطاق الذي يحتاجه int8 لتمثيل fp16، مما يحسن الدقة. يتم تحديد كمية التخلص المحددة من خلال تكرار خوارزمية KL بشكل متكرر للعثور على النطاق الأمثل. لحسن الحظ، هذه القيم الشاذة محددة جدًا. تظهر فقط في كتل انتباه معينة، وداخل هذه الكتل، تظهر فقط في طبقة واحدة، وداخل هذه الطبقات، تظهر فقط في عدد قليل من قنوات الإخراج. تحدث هذه القيم الشاذة حتى في نفس القناة لكل نقطة بيانات ([1,3]). بناءً على الاستنتاجات أعلاه، يقترح LLM.int8()[1] خوارزمية دقة مختلطة.

رسم تخطيطي لـ LLM.int8() وفقًا للرسم البياني أعلاه، يمثل X تنشيطات كل طبقة، مع عدد صفوف يساوي طول التسلسل وعدد أعمدة يساوي الحجم المخفي. تمثل الأشرطة الصفراء في الرسم البياني القيم الشاذة، موضحة بشكل واضح نمط توزيعها (الاستنتاج الثاني). معنى التكميم على مستوى المتجه هو أنه بالنسبة للأعمدة التي ليست قيمًا شاذة، يتم تكميمها بشكل متماثل باستخدام int8. نظرًا لأننا نتعامل مع الأعمدة، في ضرب المصفوفات، يجب استخراج الأوزان المقابلة W من الصفوف المقابلة لعمليات int8. بالنسبة للأعمدة الصفراء الشاذة، يتم استخدام كل من الصفوف والأعمدة لعمليات fp16. أخيرًا، يتم جمع نتائج الجزأين معًا، وهو ما يعادل ضرب المصفوفات مباشرة. من خلال طريقة التكميم المختلط لـ LLM.int8()، تكون الدقة تقريبًا مماثلة لـ fp32، ولا يتم لصق بيانات النتيجة التجريبية هنا.

FP8 و INT8

لماذا نذكر FP8 و INT8 على وجه التحديد؟ يرجع ذلك أساسًا إلى أحدث بنى GPU، مثل بنية hopper ونوى الموتر، التي تدعم الحساب بدقة FP8. لذلك، من الجدير استكشاف تكميم FP8.

نواة الموتر (Hopper)(a) تخصيص بت واحد إما للنطاق أو الدقة(b) دعم لأنواع متعددة من المراكم والإخراج. يختلف Int8 عن fp8 في أنه يفتقر إلى أس وسيط ولا يشمل إلا الجزء العشري. هيكل تمثيل البيانات هذا، كما هو موضح في الرسم البياني أدناه، أكثر ملاءمة للتعبير عن توزيع موحد.

وفقًا لـ [4]، إذا كان التوزيع يظهر قيمًا شاذة بارزة جدًا، فإن تنسيق FP8-E4/FP8-E5 سيكون أكثر دقة. ومع ذلك، إذا كان التوزيع جيدًا ويشبه شكلًا غاوسيًا أكثر، فمن المتوقع أن يكون أداء INT8 أو FP8-E2/FP8-E3 أفضل.

هنا نرسم، لعدة توزيعات، ‘بتات الدقة’: RMSE المعكوس والمعياري كما هو موضح في الشكل أعلاه، بالنسبة لتوزيع موحد، يكون أداء INT8 هو الأفضل. بالنسبة للتوزيع الطبيعي، FP8-E2 هو الأمثل، يليه INT8 عن كثب. العديد من التوزيعات في الشبكات العصبية هي غاوسية، مما يشير إلى أن نتيجة التوزيع هي مقياس أداء وثيق الصلة. فقط عند حدوث قيم شاذة، يبدأ تنسيق يحتوي على المزيد من بتات الأس في إعطاء نتائج أفضل. المكمم الأمثل يعتمد على مكمم Lloyd-Max ويمكن الحصول عليه لهذه التوزيعات. بالنسبة لشبكات مثل ResNet18 و MobileNetV2 وما إلى ذلك، حيث تكون الطبقات في الغالب غاوسية الشكل، يكون الأداء أفضل مع تنسيقات مثل FP8-E2 و INT، بينما يكون أداء تنسيقات مثل FP8-E4 و FP8-E5 أسوأ بكثير. نجد أيضًا أن نماذج المحولات مثل ViT و BERT تؤدي بشكل أفضل على FP8-E4، وذلك على وجه التحديد لأن بعض الطبقات في المحول تحتوي على قيم شاذة كبيرة جدًا. على وجه التحديد، تحتوي بعض الطبقات على العديد من القيم الشاذة في التنشيطات قبل تطبيع الطبقة. نظرًا لأن هذه القيم الشاذة تؤثر بشكل كبير على الأداء، مما يؤدي إلى أخطاء صفرية أثناء الاقتطاع، فإن تنسيق FP8-E4 يؤدي أفضل أداء، بينما يكون أداء تنسيقات FP8-E2/INT8 أسوأ بكثير. لذا، هل يتمتع FP8 بميزة مطلقة على INT8 في مجال LLM؟ قد يكون الاستنتاج عكس ذلك تمامًا، وذلك للأسباب التالية بشكل أساسي:

  • وفقًا لمبادئ التراكم ذي النقطة الثابتة والنقطة العائمة في تصميم الدوائر، تكون وحدات FP8 MAC أقل كفاءة بنسبة 50٪ إلى 180٪ من وحدات INT8. إذا كان عبء العمل محدودًا بالحساب، فإن هذا يبطئ سرعة معالجة الرقاقات المخصصة.
  • بالنسبة لمعظم الشبكات، يكون أداء FP8 أسوأ من INT8، حتى بالنسبة للهياكل مثل المحولات التي تحتوي على عدد كبير من القيم الشاذة، والتي يمكن معالجتها من خلال الدقة المختلطة أو طرق التدريب الواعي بالتكميم. بشكل عام، في سياق التكميم الخالص، لا يمكن لتنسيقات النقطة العائمة مثل FP8-E4 و FP8-E5 أن تحل محل INT8 من حيث الأداء والدقة في استدلال التعلم العميق. إذن، أين تكمن ميزة وموقع تنسيق FP8؟ أولاً، دعنا نلخص مزايا تنسيق FP8:
  • نوى FP8 Tensor أسرع من نوى Tensor 16 بت.
  • يقلل من حركة الذاكرة.
  • إذا تم تدريب النموذج بالفعل باستخدام FP8، يكون النشر أكثر ملاءمة.
  • يتمتع FP8 بنطاق ديناميكي أوسع.
  • يمكن تصميم دائرة التحويل من FP8 إلى FP16/FP32/BF16 بشكل أبسط وأكثر مباشرة، دون الحمل الإضافي للضرب والجمع المطلوب للتحويل من INT8/UINT8 إلى FP. بناءً على هذه المزايا، من الواضح أن FP8 في الواقع أكثر ملاءمة للتدريب. بالإشارة إلى [5]، دون تعديل أي معلمات مفرطة مثل معدل التعلم وتسوس الوزن، في كل من مهام ما قبل التدريب والمهام النهائية، تكون أداء النماذج المدربة باستخدام FP8 مشابهة لأداء النماذج المدربة باستخدام التدريب عالي الدقة BF16. يجدر بالذكر أنه أثناء تدريب نموذج GPT-175B، مقارنة بطريقة TE، يمكن لإطار FP8 المختلط الدقة المقترح حديثًا على منصة GPU H100 تقليل وقت التدريب بنسبة 17٪ واستخدام الذاكرة بنسبة 21٪.

أداء صفر-shot في المهام النهائية. تم تدريب النماذج إما باستخدام مخطط الدقة المختلطة القياسي BF16 أو مخطط الدقة المنخفضة FP8 المقترح تكميم النماذج باستخدام تنسيق FP8 للاستدلال يمكن أن يتجنب الحاجة إلى عمليات QAT أو PTQ (لتجنب تقليل الدقة)، مع الاستفادة أيضًا من كفاءة التحويل الأعلى من FP8 إلى FP16 والتنسيقات الأخرى، وبالتالي تحسين أداء الاستدلال بشكل كبير. فيما يتعلق بأفضل فعالية من حيث التكلفة للتكميم: على غرار مشروع exllamav2، الذي يدعم التكميم 2 و 3 و 4 و 5 و 6 و 8 بت بناءً على خوارزمية GPTQ، ولكن بالنسبة لـ LLMs، ما هو الطول والتنسيق الذي يقدم أفضل فعالية من حيث التكلفة في التكميم؟ بالإشارة إلى [6]، تم إجراء تجارب واسعة على بنى LLM مختلفة لتحديد تأثير تخصيصات البت المختلفة على أداء النموذج:

قوانين التحجيم على مستوى البت لمتوسط أداء صفر-shot عبر أربع مجموعات بيانات لنماذج OPT من 125M إلى 176B معلمة. يزداد أداء صفر-shot بثبات لبتات النموذج الثابتة مع تقليل دقة التكميم من 16 إلى 4 بت. عند 3 بت، تنعكس هذه العلاقة، مما يجعل دقة 4 بت هي الأمثل.

  • بالنسبة لأداء صفر-shot معين، توفر دقة 4 بت أفضل تحجيم لجميع سلاسل وأحجام النماذج تقريبًا (دقة 4 بت لا تؤدي إلى انخفاضات كبيرة في الأداء لأداء النموذج). الاستثناء الوحيد هو BLOOM-176B، حيث يكون أداء 3 بت أفضل قليلاً، ولكن ليس بشكل ملحوظ.
  • دقة 4 بت هي حاليًا الدقة الأكثر فعالية من حيث كل بت، مع الإشارة أيضًا إلى أنه يمكن تحسين أداء دقة 3 بت. لذلك، فإن البحث في الدقة المنخفضة البت أقل من 4 بت هو اتجاه جدير بالاهتمام.
  • يكشف البحث في التكميم على مستوى البت أن أنواع البيانات وحجم الكتلة هما العاملان الرئيسيان المؤثران على فعالية التكميم على مستوى البت. بناءً على ما سبق، يمكننا أن نستنتج أن تكميم الدقة 4 بت هو حاليًا الحل الأكثر فعالية من حيث التكلفة. ومع ذلك، بين بيانات 4 بت، أي نوع بيانات يعطي نتائج تكميم أفضل؟ بالإشارة إلى [7]، تقترح طريقة LLM-FP4 تكميم FP4 لنماذج اللغة الكبيرة (LLMs) بطريقة ما بعد التدريب، وتكميم الأوزان والتنشيطات إلى قيم نقطة عائمة 4 بت. تعتمد حلول PTQ الحالية بشكل أساسي على الأعداد الصحيحة وتواجه صعوبات مع عرض بت أقل من 8 بت. مقارنة بتكميم الأعداد الصحيحة، فإن تكميم النقطة العائمة (FP) أكثر مرونة، ويتعامل بشكل أفضل مع التوزيعات طويلة الذيل أو على شكل جرس، وأصبح الخيار الافتراضي للعديد من منصات الأجهزة. مرجع المشروع: https://github.com/nbasyl/LLM-FP4 تتمثل إحدى خصائص تكميم FP في أن أداءه يعتمد إلى حد كبير على اختيار بتات الأس ونطاق الاقتطاع. تقوم LLM-FP4 ببناء خط أساس FP-PTQ قوي من خلال البحث عن معلمات التكميم المثلى. بالإضافة إلى ذلك، هناك تباينات أعلى بين القنوات وتباينات أقل داخل القنوات في توزيع التنشيط، مما يزيد من صعوبة تكميم التنشيط. لمعالجة هذه المشكلة، تقترح LLM-FP4 تكميم التنشيط لكل قناة وتوضح أنه يمكن إعادة تمثيل عوامل القياس الإضافية هذه في تحيزات الأس للأوزان، مما يؤدي إلى تكاليف ضئيلة. تقوم LLM-FP4 بتكميم الأوزان والتنشيطات في LLaMA-13B إلى 4 بتات فقط لأول مرة، محققة متوسط درجة 63.1 في مهام التفكير صفر-shot المنطقية، وهو أقل بمقدار 5.8 فقط من العينة الكاملة ويتفوق بشكل كبير على النموذج الأحدث السابق بنسبة 12.7 نقطة مئوية. يمكن العثور على البيانات المحددة في الشكل التالي:

أداء صفر-shot في مهام التفكير المنطقي باستخدام نماذج LLaMA. نشير إلى E/W/A على أنها عرض بت لتضمين الكلمات ووزن النموذج والتنشيطات على التوالي من الشكل أعلاه، يمكن استخلاص الاستنتاجات الرئيسية التالية:

  • عندما لا يتم تكميم التنشيطات ويتم تكميم تضمينات الكلمات والأوزان إلى 4 بتات، يكون لـ LLM-FP4 (نوع FP) ميزة طفيفة على خوارزميات مثل GPTQ (نوع INT).
  • عندما يتم تكميم التنشيطات إلى 8 بت ويتم تكميم تضمينات الكلمات والأوزان إما إلى 4 أو 8 بتات، يكون أداء LLM-FP4 (نوع FP) مشابهًا للخوارزميات الأخرى (نوع INT)، دون اختلاف كبير في الأداء.
  • عندما يتم تكميم التنشيطات إلى 4 بتات، يُظهر LLM-FP4 (نوع FP) تحسنًا ملحوظًا مقارنة بالخوارزميات الأخرى (نوع INT). في الختام، إذا لم يتم تكميم التنشيطات إلى 4 بتات، فلا توجد حاليًا ميزة كبيرة لـ FP4 على INT4.

بعض مشاريع التكميم الجديرة بالملاحظة تشمل

GPTQ-for-LLaMa

  • توفر النماذج المكممة باستخدام GPTQ مزايا سرعة كبيرة. ببساطة، يقوم GPTQ بتكميم كل معلمة داخل كتلة على حدة، وبعد تكميم كل معلمة، يتم إجراء تعديلات على المعلمات الأخرى داخل الكتلة للتعويض عن فقدان الدقة الناتج عن التكميم.

  • يتطلب تكميم GPTQ مجموعة بيانات معايرة لإجراء التكميم بعد التدريب على النموذج للحصول على أوزان مكممة. ينشأ مفهوم GPTQ من خوارزمية OBD التي اقترحها Yann LeCun في عام 1990، والتي تم تحسينها باستمرار بطرق مثل OBS و OBC (OBQ)، و GPTQ هي نسخة مسرعة من طريقة OBQ.

  • يوفر مستودع GPTQ-for-LLaMa حلاً لتكميم GPTQ مخصصًا لـ LLaMa. يوصى به لنشر نماذج LLaMa على وحدات GPU.

  • رابط المشروع: GPTQ-for-LLaMa ExLlama

  • يأتي ExLlama في إصدارين، ExLlama و ExLlamaV2، وهو بمثابة مكتبة استدلال لتشغيل LLM المحلي على وحدات GPU الاستهلاكية الحديثة.

  • يدعم ExLlamaV2 نماذج GPTQ رباعية البت المشابهة لـ V1 ولكنه يقدم أيضًا تنسيق “EXL2” الجديد. يعتمد EXL2 على نفس طرق التحسين مثل GPTQ، ويدعم التكميم 2 و 3 و 4 و 5 و 6 و 8 بت، مما يسمح بمزج مستويات التكميم داخل النموذج لتحقيق أي متوسط معدل بت بين 2 إلى 8 بت لكل وزن.

  • يمكن لـ ExLlamaV2 تطبيق مستويات تكميم متعددة على كل طبقة خطية، مما ينتج شيئًا مشابهًا للتكميم المتناثر، حيث يتم تكميم الأوزان الأكثر أهمية (الأعمدة) بعدد أكبر من البتات. تمكن تقنيات إعادة التعيين نفسها التي تسمح لـ ExLlama بالعمل بكفاءة مع النماذج المتسلسلة من تمكين هذا التنسيق المختلط مع عدم وجود تأثير تقريبًا على الأداء.

  • بشكل عام، يقدم ExLlama سرعة استدلال أسرع قليلاً مقارنة بأساليب التكميم الأخرى.

  • رابط المشروع: ExLlama GGML

  • GGML هي مكتبة C تركز على التعلم الآلي، أنشأها Georgi Gerganov، ومن هنا جاء الاختصار “GG”. لا توفر المكتبة العناصر الأساسية للتعلم الآلي مثل الموترات فحسب، بل توفر أيضًا تنسيقًا ثنائيًا فريدًا لتوزيع LLM.

  • GGML مكتوب بلغة C، ويدعم التكميم الصحيح (4 بت، 5 بت، 8 بت)، و float 16 بت.

  • يتعاون GGML بسلاسة مع مكتبة llama.cpp، مما يضمن للممارسين القدرة على تسخير قوة LLM بشكل فعال. الهدف الرئيسي لمكتبة llama.cpp هو السماح باستخدام نماذج LLaMA المكممة بـ INT4 على MacBook.

  • رابط المشروع: GGML Transformer Engine Transformer Engine (TE) هي مكتبة مصممة لتسريع نماذج المحولات على وحدات NVIDIA GPU، بما في ذلك استخدام دقة النقطة العائمة 8 بت (FP8) على وحدات Hopper GPU، مما يوفر أداءً أفضل مع استخدام ذاكرة أقل في كل من التدريب والاستدلال. تقدم TE مجموعة من اللبنات الأساسية عالية التحسين لهياكل المحولات الشائعة، إلى جانب واجهة برمجة تطبيقات لفئة الدقة المختلطة التلقائية التي تتكامل بسلاسة مع الكود الخاص بالإطار. بالإضافة إلى ذلك، تتضمن TE واجهة برمجة تطبيقات C ++ مستقلة عن الإطار لدعم FP8 في المحولات، والتي يمكن دمجها مع مكتبات التعلم العميق الأخرى. تشمل الميزات الرئيسية ما يلي:

  • وحدات سهلة الاستخدام لبناء طبقات المحولات التي تدعم FP8.

  • التحسين لنماذج المحولات، بما في ذلك دمج النواة.

  • دعم FP8 على NVIDIA Hopper و NVIDIA Ada GPUs.

  • التحسين لجميع الدقات (FP16، BF16) على بنية NVIDIA Ampere GPU والإصدارات الأحدث. رابط المشروع: Transformer Engine لاختبار الانتباه، يمكنك استيراد te.LayerNormLinear وقياس متوسط الوقت لحساب الانتباه. هيكل نموذج المرحلةنوع البياناتRTX 4090RTX 3090الانتباه الأساسيالانتباه الأساسي PyTorch الأصليFP1692 مللي ثانية183 مللي ثانيةالانتباه الأساسي + TEاستبدال Linear و LayerNorm txFP1696 مللي ثانيةغير مدعومالانتباه الأساسي + تحسين LayerNorm من TETe.LayerNormLinearFP1696 مللي ثانيةغير مدعومTE الكاملخوارزمية الانتباه الكامل من TEFP1674 مللي ثانيةغير مدعومTE الكامل + FP8استبدال الانتشار الأمامي FP8FP842 مللي ثانيةغير مدعوم خلاصة الاختبارات: في حالة Transformer Engine، هناك تحسن بنسبة 20٪ تقريبًا بالنسبة لخوارزمية الانتباه الأساسية عند استخدام fp16. بالإضافة إلى ذلك، هناك تحسن كبير بنسبة 54.5٪ عند استخدام fp8، مما يشير إلى أنه من الجدير استثمار الوقت في تحسين أداء الاستدلال. Bitsandbytes: Bitsandbytes هي غلاف خفيف الوزن لوظائف CUDA المخصصة، تم تحسينها خصيصًا للعمليات 8 بت، وضرب المصفوفات (LLM.int8())، ووظائف التكميم، وتدعم بشكل أساسي خوارزمية تكميم LLM.int8(). تدعم مكتبة bitsandbytes طرق تكميم مثل الكميات، والخطي، والتكميم الديناميكي. إنها واحدة من أبسط الطرق المتاحة ولا تتطلب بيانات معايرة التكميم أو عمليات معايرة. يمكن استخدامها بسهولة مع أي نموذج يحتوي على وحدات torch.nn.Linear. يشير التحليل الحالي إلى أن NF4 (نوع البيانات NormalFloat) و FP4 هما تقنيتا تكميم 4 بت متساويتان في الفعالية، وتظهران سمات متشابهة مثل سرعة الاستدلال واستهلاك الذاكرة وجودة المحتوى الذي يتم إنشاؤه. نوع البيانات NormalFloat هو شكل محسّن من تقنية التكميم، ويمثل التمثيل الأمثل للأوزان في توزيع طبيعي من حيث نظرية المعلومات. يستخدم بشكل أساسي بواسطة طريقة QLoRA لضبط النماذج بدقة 4 بت. فيما يلي بعض البيانات من QLoRA:

متوسط الحيرة (perplexity) لـ Pile Common Crawl لأنواع بيانات مختلفة لنماذج OPT و BLOOM و LLaMA و Pythia من 125M إلى 13B. AIMET AIMET هي مكتبة مقدمة من Qualcomm لتقنيات التكميم والضغط المتقدمة للنماذج العصبية. تهدف إلى تحسين سرعة الاستدلال مع تقليل المتطلبات الحسابية والذاكرة، بأقل تأثير على الدقة. على سبيل المثال، يمكن للنماذج التي تعمل على Qualcomm Hexagon DSP تحقيق سرعات أسرع بمقدار 5 إلى 15 مرة مقارنة بـ Qualcomm Kyro CPU. تعتبر AIMET بمثابة انعكاس لتنفيذ التكميم على الأجهزة غير NVIDIA. عادةً، تمثل قدرات التكميم الأساسية التي يوفرها بائعو الأجهزة، ولا يوجد حاليًا مشروع واحد يقدم قدرات تكميم عالمية لمنصات الأجهزة المختلفة.

في الختام

يعد التكميم 4 بت حاليًا مخطط التكميم الأكثر فعالية من حيث التكلفة. ومع ذلك، يختلف التحسين بناءً على مستوى تكميم تضمينات الكلمات والأوزان والتنشيطات. في معظم السيناريوهات، باستثناء التنشيطات المكممة إلى 4 بتات، يوفر التكميم الصحيح (Int) فعالية أفضل من حيث التكلفة، بما في ذلك سيناريوهات عدم التكميم. وبالتالي، فإن التكميم منخفض البت، مع التركيز بشكل خاص على التنشيطات من خلال التكميم بعد التدريب (PTQ)، هو اتجاه واعد لتسريع التكميم. INT8 هو مخطط التكميم الأكثر استخدامًا حاليًا. مقارنة بـ INT8، لا يمكن لـ FP8 استبداله بالكامل في سيناريوهات التكميم ولكنه مناسب لتدريب النموذج، مما يوفر حلاً لمشكلات أداء الاستدلال دون الحاجة إلى التكميم. يعد دمج التقنيات المتعلقة بـ FP8 مع نوى الموتر للأجهزة لتعظيم سرعة الاستدلال اتجاهًا جديدًا يستحق الاستكشاف. تهيمن المشاريع القائمة على خوارزمية GPTQ على مشهد نماذج اللغة الكبيرة (LLM). ومع ذلك، فإن أنواع البيانات الجديدة (مثل FP4 و NF4)، والدقة المنخفضة للبت، والتكميم الديناميكي توفر فرصًا للابتكار والبحث. إلى جانب وحدات NVIDIA GPU، تقدم وحدات GPU و CPUs الجديدة (مثل AMD ووحدات GPU المحلية و Qualcomm) فرصًا جديدة. يعد تكييف خوارزميات التكميم مع منصات الأجهزة المختلفة بسرعة وزيادة أداء الأجهزة إلى أقصى حد اتجاهًا جديدًا للاستكشاف.

الأوراق المرجعية

[1]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale [2]Outliers Dimensions that Disrupt Transformers Are Driven by Frequency [3]Smoothquant: Accurate and efficient post-training quantization for large language models [4]FP8 versus INT8 for efficient deep learning inference [5]FP8-LM: Training FP8 Large Language Models [6]The case for 4-bit precision: k-bit Inference Scaling Laws [7]LLM-FP4: 4-Bit Floating-Point Quantized Transformers [8]GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers [9]Understanding the Impact of Post-Training Quantization on Large Language Models [10]QLoRA: Efficient Finetuning of Quantized LLMs

novita.ai يقدم واجهة برمجة تطبيقات Stable Diffusion ومئات من واجهات برمجة التطبيقات السريعة والأرخص لتوليد الصور بالذكاء الاصطناعي لعشرة آلاف نموذج. 🎯 أسرع توليد في 2 ثانية فقط، الدفع حسب الاستخدام، بحد أدنى 0.0015 دولار لكل صورة قياسية، يمكنك إضافة نماذجك الخاصة وتجنب صيانة GPU. مجاني لمشاركة الامتدادات مفتوحة المصدر.

قراءة موصى بها

  1. دليل شامل لواجهة برمجة تطبيقات Stable Diffusion
  2. ChatGLM3: نماذج اللغة الكبيرة مفتوحة المصدر للدردشة