انضم إلى Hugging Cast القادم في 6 يونيو لطرح الأسئلة على مؤلفي المنشورات، وشاهد عرضًا توضيحيًا مباشرًا لنشر Llama 3 على MI300X على Azure، بالإضافة إلى عرض توضيحي إضافي لنشر النماذج محليًا على Ryzen AI PC!

سجل على https://streamyard.com/watch/iMZUvJnmz8BV

مقدمة

في Hugging Face، نريد أن نجعل من السهل إنشاء الذكاء الاصطناعي باستخدام نماذج مفتوحة ومصدر مفتوح، أيًا كان إطار العمل والسحابة والمكدس الذي تريد استخدامه. أحد المكونات الرئيسية هو القدرة على نشر نماذج الذكاء الاصطناعي على مجموعة متنوعة من الأجهزة. من خلال تعاوننا مع AMD، منذ حوالي عام الآن، نستثمر في العديد من المسرعات المختلفة مثل وحدات معالجة الرسوميات AMD Instinct™ وRadeon™ ووحدات المعالجة المركزية EPYC™ وRyzen™ وRyzen AI NPUs مما يساعد على ضمان وجود جهاز دائمًا لتشغيل أكبر مجتمع للذكاء الاصطناعي في أسطول AMD. يسعدنا اليوم أن نعلن أن Hugging Face وAMD كانا يعملان بجد معًا لتمكين أحدث جيل من خوادم AMD GPU، وهي AMD Instinct MI300، من الحصول على تكامل مواطن من الدرجة الأولى في منصة Hugging Face الشاملة. بدءًا من النماذج الأولية في بيئتك المحلية وحتى تشغيل النماذج في الإنتاج على أجهزة Azure ND Mi300x V5 VM، لن تحتاج إلى إجراء أي تغيير في التعليمات البرمجية باستخدام المحولات[1]واستدلال إنشاء النص والمكتبات الأخرى، أو عند استخدام منتجات وحلول Hugging Face – نريد أن نجعل من السهل جدًا استخدام AMD MI300 على Hugging Face والحصول على أفضل أداء. دعونا الغوص في!

المصدر المفتوح وتمكين الإنتاج

الحفاظ على دعم وحدات معالجة الرسوميات AMD Instinct في المحولات واستدلال إنشاء النص

مع حدوث الكثير من الأشياء الآن في مجال الذكاء الاصطناعي، كان من الضروري للغاية التأكد من اختبار مجموعة MI300 ومراقبتها بشكل صحيح على المدى الطويل. لتحقيق ذلك، كنا نعمل بشكل وثيق مع فريق البنية التحتية هنا في Hugging Face للتأكد من أن لدينا وحدات بناء قوية متاحة لمن يحتاج إلى تمكين التكامل والنشر المستمر (CI/CD) وأن نكون قادرين على القيام بذلك دون ألم ودون التأثير على الآخرين الموجودين بالفعل.

لتمكين مثل هذه الأشياء، عملنا مع فرق AMD وMicrosoft Azure للاستفادة من Azure ND MI300x V5 الذي تم طرحه مؤخرًا باعتباره العنصر الأساسي الذي يستهدف MI300. في غضون ساعتين، تمكن فريق البنية التحتية لدينا من نشر كل شيء وإعداده وتشغيله لكي نضع أيدينا على MI300!

لقد انتقلنا أيضًا بعيدًا عن البنية التحتية القديمة لدينا إلى مجموعة Kubernetes مُدارة مع الاهتمام بجدولة جميع مسارات عمل Github التي يرغب المتعاونون في Hugging Face في تشغيلها على كبسولات خاصة بالأجهزة. يسمح لنا هذا الترحيل الآن بتشغيل نفس خط أنابيب CI/CD على مجموعة متنوعة من منصات الأجهزة المستخرجة بعيدًا عن المطور. لقد تمكنا من تشغيل CI/CD وتشغيله في غضون يومين دون بذل الكثير من الجهد على جهاز Azure MI300X VM.

ونتيجة لذلك، يتم الآن اختبار المحولات واستدلال توليد النص بشكل منتظم على كل من الجيل السابق من وحدات معالجة الرسوميات AMD Instinct، وهي MI250 وأيضًا على أحدث MI300. من الناحية العملية، هناك عشرات الآلاف من اختبارات الوحدات التي تتحقق بانتظام من حالة هذه المستودعات مما يضمن صحة وقوة التكامل على المدى الطويل.

تحسين الأداء لأحمال عمل الذكاء الاصطناعي للإنتاج

استنتاج الأداء

كما ذكرنا في المقدمة، نحن نعمل على تمكين وحدات معالجة الرسوميات AMD Instinct MI300 الجديدة من تشغيل أحمال عمل الاستدلال بكفاءة من خلال حل الاستدلال مفتوح المصدر الخاص بنا، ويمكن رؤية استدلال إنشاء النص (TGI) TGI على أنها ثلاثة مكونات مختلفة: – طبقة نقل، معظمها HTTP، تعرض طلبات واجهة برمجة التطبيقات (API) وتستقبلها – طبقة جدولة، مع التأكد من إمكانية تجميع هذه الطلبات معًا (أي الدفع المستمر) لزيادة الكثافة الحسابية على الأجهزة دون التأثير تجربة المستخدم – طبقة نمذجة، تهتم بتشغيل الحسابات الفعلية على الجهاز، وتستفيد من الإجراءات الروتينية المحسنة للغاية المشاركة في النموذج

هنا، بمساعدة مهندسي AMD، ركزنا على هذا المكون الأخير، وهو النمذجة، لإعداد عبء العمل وتشغيله وتحسينه بشكل فعال لخدمة النماذج مثل عائلة Meta Llama. على وجه الخصوص، ركزنا على: – Flash Attention v2 – Paged Attention – تقنيات ضغط GPTQ/AWQ – تكامل PyTorch مع ROCm TunableOp – تكامل النوى المدمجة المحسنة

معظم هذه الأساليب كانت موجودة منذ بعض الوقت، مثل FlashAttention v2، وPagedAttention، وطرق الضغط GPTQ/AWQ (خاصة إجراءاتها/نواتها المحسنة). لن نقوم بتفصيل العناصر الثلاثة المذكورة أعلاه وندعوك للانتقال إلى صفحة التنفيذ الأصلية لمعرفة المزيد عنها.

ومع ذلك، مع وجود نظام أساسي جديد تمامًا للأجهزة، وإصدارات SDK الجديدة، كان من المهم التحقق بعناية من صحة كل جزء وملف تعريفه وتحسينه للتأكد من حصول المستخدم على كل القوة من هذا النظام الأساسي الجديد.

أخيرًا وليس آخرًا، كجزء من إصدار TGI هذا، نقوم بدمج AMD TunableOp الذي تم إصداره مؤخرًا، وهو جزء من PyTorch 2.3. يوفر TunableOp آلية متعددة الاستخدامات تبحث عن الطريقة الأكثر فعالية، فيما يتعلق بالأشكال ونوع البيانات، لتنفيذ عملية ضرب المصفوفات العامة (أي GEMMs). تم دمج TunableOp في PyTorch ولا يزال قيد التطوير النشط، ولكنه، كما سترى أدناه، يجعل من الممكن تحسين أداء عمليات GEMMs دون التأثير بشكل كبير على تجربة المستخدم. على وجه التحديد، حصلنا على تسريع بنسبة 8-10% في زمن الوصول باستخدام TunableOp لتسلسلات الإدخال الصغيرة، المقابلة لمرحلة فك التشفير لإنشاء نماذج الانحدار الذاتي.

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

باستخدام TunableOp، نقوم بتمكين موالف روتين GEMM من تخصيص بعض الوقت للبحث عن الإعداد الأمثل فيما يتعلق بالمعلمات التي قدمها المستخدم إلى TGI مثل طول التسلسل، والحد الأقصى لحجم الدفعة، وما إلى ذلك. عند انتهاء مرحلة الإحماء، نقوم بتعطيل الموالف والاستفادة من الإجراءات المحسنة لبقية عمر الخادم.

كما ذكرنا سابقًا، قمنا بتشغيل جميع معاييرنا باستخدام Azure ND MI300x V5، الذي تم تقديمه مؤخرًا في Microsoft BUILD، والذي يدمج ثماني وحدات معالجة رسوميات AMD Instinct على اللوحة، مقابل الجيل السابق MI250 على Meta Llama 3 70B، والنشر، نلاحظ تسريعًا بمقدار 2x-3x في وقت استجابة الرمز المميز الأول (يسمى أيضًا التعبئة المسبقة)، وتسريع 2x في زمن الوصول في مرحلة فك التشفير التلقائي التالية.

نتائج زمن استجابة TGI لـ Meta Llama 3 70B، مقارنة AMD Instinct MI300X على Azure VM مع الجيل السابق AMD Instinct MI250

أداء الضبط النموذجي

يمكن أيضًا استخدام مكتبات Hugging Face لضبط النماذج. نحن نستخدم مكتبات Transformers وPEFT لضبط Llama 3 70B باستخدام محولات ذات رتبة منخفضة (LoRA. للتعامل مع التوازي عبر العديد من الأجهزة، نستخدم DeepSpeed ​​Zero3 من خلال مكتبة Accelerate.

في Llama 3 70B، يتكون عبء العمل لدينا من دفعات مكونة من 448 رمزًا، بحجم دفعة 2. باستخدام محولات ذات رتبة منخفضة، يتم تجميد المعلمات الأصلية للنموذج البالغة 70,570,090,496، ونقوم بدلاً من ذلك بتدريب مجموعة فرعية إضافية مكونة من 16,384,000 معلمة بفضل المحولات ذات الرتبة المنخفضة.

من خلال مقارنتنا مع Llama 3 70B، نحن قادرون على التدريب بشكل أسرع مرتين تقريبًا على جهاز Azure VM المدعوم بواسطة MI300X، مقارنة بخادم HPC يستخدم الجيل السابق من AMD Instinct MI250.

ضبط PEFT على mi300 مقابل mi250

علاوة على ذلك، نظرًا لأن MI300X يستفيد من ذاكرته HBM3 بسعة 192 جيجابايت (مقارنة بـ 128 جيجابايت لـ MI250)، فقد تمكنا من تحميل Meta Llama 3 70B وضبطه بشكل كامل على جهاز واحد، في حين أن وحدة معالجة الرسومات MI250 لن تكون قادرة على احتواء الطراز ~ 140 جيجابايت بالكامل على جهاز واحد، في float16 أو bfloat16.
نظرًا لأنه من المهم دائمًا أن تكون قادرًا على تكرار المعيار وتحديه، فإننا نصدر مستودع Github المصاحب الذي يحتوي على جميع العناصر وكود المصدر الذي استخدمناه لجمع الأداء المعروض في هذه المدونة.

ما هي الخطوة التالية؟

لدينا الكثير من الميزات المثيرة في المستقبل لوحدات معالجة الرسومات AMD Instinct MI300 الجديدة. إحدى المجالات الرئيسية التي سنستثمر فيها الكثير من الجهود في الأسابيع المقبلة هي العوامة الصغيرة (أي تعويم 8 وأقل). تتمتع تخطيطات البيانات هذه بمزايا متأصلة تتمثل في ضغط المعلومات بطريقة غير موحدة مما يخفف من بعض المشكلات التي تواجه الأعداد الصحيحة.

في سيناريوهات مثل الاستدلال على LLM، قد يقسم هذا على اثنين حجم ذاكرة التخزين المؤقت ذات القيمة الرئيسية المستخدمة عادةً في LLM. لاحقًا، من خلال الجمع بين ذاكرة التخزين المؤقت لقيمة المفتاح المخزنة على float8 ومضاعفات مصفوفة float8/float8، فإنه سيجلب فوائد أداء إضافية إلى جانب تقليل آثار الذاكرة.

خاتمة

كما ترون، تقدم AMD MI300 تعزيزًا كبيرًا للأداء في حالات استخدام الذكاء الاصطناعي التي تغطي حالات الاستخدام الشاملة بدءًا من التدريب وحتى الاستدلال. نحن، في Hugging Face، متحمسون للغاية لرؤية ما سيتمكن المجتمع والمؤسسات من تحقيقه باستخدام هذه الأجهزة وعمليات التكامل الجديدة. نحن متحمسون لسماع رأيك ومساعدتك في حالات الاستخدام الخاصة بك.

تأكد من التوقف عند مستودعات Github الأمثل لـ AMD واستدلال إنشاء النص للحصول على أحدث تحسين للأداء تجاه وحدات معالجة الرسومات AMD!

شاركها.
اترك تعليقاً