شهدت السنوات القليلة الماضية تطورًا سريعًا في مجال التعلم العميق. على الرغم من تحسن الأجهزة ، كما هو الحال مع أحدث جيل من المسرعات من NVIDIA و Amazon ، لا يزال ممارسو التعلم الآلي المتقدم (ML) يواجهون بانتظام مشكلات في نشر نماذج التعلم العميق الكبيرة الخاصة بهم لتطبيقات مثل معالجة اللغة الطبيعية (NLP).
في منشور سابق ، ناقشنا القدرات والإعدادات القابلة للتكوين in نشر نموذج Amazon SageMaker التي يمكن أن تجعل الاستدلال باستخدام هذه النماذج الكبيرة أسهل. اليوم نعلن عن ملف الأمازون SageMaker حاوية التعلم العميق (DLC) التي يمكنك استخدامها لبدء الاستدلال بنموذج كبير في غضون دقائق. هذه DLC حزم بعض المكتبات مفتوحة المصدر الأكثر شيوعًا للاستدلال المتوازي للنموذج ، مثل DeepSpeed و Hugging Face Accelerate.
في هذا المنشور ، نستخدم DLC لاستدلال نموذج كبير جديد من SageMaker لنشر اثنين من أكثر نماذج البرمجة اللغوية العصبية الكبيرة شيوعًا: BigScience's بلوم-176ب وميتا أوبت-30ب من مستودع Hugging Face. على وجه الخصوص ، نستخدم تقنيات خدمة مكتبة جافا العميقة (DJL) والتوازي الموتر من DeepSpeed لتحقيق زمن انتقال 0.1 ثانية لكل رمز مميز في حالة استخدام إنشاء النص.
يمكنك العثور على نماذجنا الكاملة من دفاتر الملاحظات في موقعنا مستودع جيثب.
تقنيات الاستدلال بالنموذج الكبير
لقد انفجرت نماذج اللغة مؤخرًا من حيث الحجم والشعبية. مع سهولة الوصول من حدائق الحيوان النموذجية مثل Hugging Face وتحسين الدقة والأداء في مهام البرمجة اللغوية العصبية مثل التصنيف وإنشاء النص ، يتزايد وصول الممارسين إلى هذه النماذج الكبيرة. ومع ذلك ، غالبًا ما تكون النماذج الكبيرة أكبر من أن تتناسب مع ذاكرة مسرّع واحد. على سبيل المثال ، يمكن أن يتطلب طراز BLOOM-176B أكثر من 350 غيغابايت من ذاكرة التسريع ، والتي تتجاوز بكثير سعة مسرعات الأجهزة المتوفرة اليوم. هذا يستلزم استخدام تقنيات موازية للنموذج من مكتبات مثل DeepSpeed و Hugging Face Accelerate لتوزيع نموذج عبر عدة مسرعات للاستدلال. في هذا المنشور ، نستخدم ملف حاوية استدلال نموذج كبير من SageMaker لإنشاء ومقارنة أداء زمن الانتقال والإنتاجية باستخدام هاتين المكتبتين مفتوحتين المصدر.
يستخدم DeepSpeed و Accelerate تقنيات مختلفة لتحسين نماذج اللغة الكبيرة للاستدلال. الاختلاف الرئيسي هو DeepSpeed استخدام حبات محسنة. يمكن لهذه النوى تحسين زمن انتقال الاستدلال بشكل كبير عن طريق تقليل الاختناقات في الرسم البياني الحسابي للنموذج. يمكن أن يكون من الصعب تطوير النوى المُحسَّنة وعادة ما تكون خاصة ببنية نموذجية معينة ؛ يدعم DeepSpeed النماذج الكبيرة الشائعة مثل OPT و BLOOM مع هذه النواة المحسّنة. في المقابل ، لا تتضمن مكتبة تسريع Hugging Face's حبات محسنة في وقت كتابة هذا التقرير. كما نناقش في قسم النتائج لدينا ، فإن هذا الاختلاف مسؤول عن الكثير من ميزة الأداء التي يتمتع بها DeepSpeed على Accelerate.
الاختلاف الثاني بين DeepSpeed و Accelerate هو نوع توازي النموذج. يستخدم Accelerate موازاة خطوط الأنابيب لتقسيم نموذج بين الطبقات المخفية للنموذج ، بينما يستخدم DeepSpeed موازاة الموتر لتقسيم الطبقات نفسها. موازاة خطوط الأنابيب هي نهج مرن يدعم المزيد من أنواع النماذج ويمكن أن يحسن الإنتاجية عند استخدام أحجام دُفعات أكبر. يتطلب التوازي الموتر مزيدًا من الاتصال بين وحدات معالجة الرسومات لأن طبقات النموذج يمكن أن تنتشر عبر أجهزة متعددة ، ولكن يمكنها تحسين زمن انتقال الاستدلال من خلال إشراك العديد من وحدات معالجة الرسومات في وقت واحد. يمكنك معرفة المزيد عن تقنيات التوازي في مقدمة في نموذج التوازي و نموذج التوازي.
حل نظرة عامة
لاستضافة نماذج لغة كبيرة بشكل فعال ، نحتاج إلى ميزات ودعم في المجالات الرئيسية التالية:
- حلول البناء والاختبار - نظرًا للطبيعة التكرارية لتطوير تعلم الآلة ، نحتاج إلى القدرة على البناء والتكرار السريع واختبار الطريقة التي ستتصرف بها نقطة نهاية الاستدلال عند استضافة هذه النماذج ، بما في ذلك القدرة على الفشل بسرعة. يمكن عادةً استضافة هذه النماذج فقط في مثيلات أكبر مثل p4dn أو g5 ، وبالنظر إلى حجم النماذج ، يمكن أن يستغرق الأمر بعض الوقت لتدوير مثيل الاستدلال وتشغيل أي اختبار تكرار. عادةً ما يكون للاختبار المحلي قيودًا لأنك تحتاج إلى مثيل مماثل في الحجم للاختبار ، وليس من السهل الحصول على هذه النماذج.
- النشر والتشغيل على نطاق واسع - يجب تحميل ملفات النموذج على مثيلات الاستدلال ، مما يمثل تحديًا في حد ذاته نظرًا للحجم. يستغرق إنشاء Tar / Un-Tar كمثال لـ Bloom-176B حوالي ساعة واحدة في الإنشاء وساعة أخرى للتحميل. نحتاج إلى آلية بديلة للسماح بالوصول السهل إلى ملفات النموذج.
- تحميل النموذج كمفرد - بالنسبة لعملية متعددة العمال ، نحتاج إلى التأكد من تحميل النموذج مرة واحدة فقط حتى لا نواجه ظروف السباق وننفق المزيد من الموارد غير الضرورية. في هذا المنشور ، نعرض طريقة للتحميل مباشرة من خدمة تخزين أمازون البسيطة (أمازون S3). ومع ذلك ، لا يعمل هذا إلا إذا استخدمنا الإعدادات الافتراضية لـ DJL. علاوة على ذلك ، يجب أن يكون أي قياس لنقاط النهاية قادرًا على الدوران في غضون بضع دقائق ، مما يتطلب إعادة النظر في كيفية تحميل النماذج وتوزيعها.
- أطر التقاسم - تحتاج هذه النماذج عادةً إلى أن تكون ، عادةً بواسطة آلية موازية موتر أو عن طريق تجزئة خطوط الأنابيب كتقنيات تجزئة نموذجية ، ولدينا مفاهيم متقدمة مثل تقسيم ZeRO المبني فوق تقسيم الموتر. لمزيد من المعلومات حول تقنيات التجزئة ، راجع نموذج التوازي. لتحقيق ذلك ، يمكننا الحصول على مجموعات مختلفة واستخدام أطر عمل من NIVIDIA و DeepSpeed وغيرها. هذا يحتاج إلى القدرة على اختبار BYOC أو استخدام حاويات 1P وتكرار الحلول وإجراء اختبارات قياس الأداء. قد ترغب أيضًا في اختبار خيارات الاستضافة المتنوعة مثل غير المتزامن وخادم وغيرها.
- اختيار الأجهزة - يتم تحديد اختيارك في الأجهزة من خلال جميع النقاط المذكورة أعلاه وأنماط حركة المرور الإضافية واحتياجات حالة الاستخدام وأحجام الطراز.
في هذا المنشور ، نستخدم نوى DeepSpeed المُحسّنة وتقنيات التوازي الموتر لاستضافة BLOOM-176B و OPT-30B على SageMaker. نقوم أيضًا بمقارنة النتائج من Accelerate لإظهار فوائد الأداء للنواة المحسّنة والتوازي الموتر. لمزيد من المعلومات حول DeepSpeed و Accelerate ، يرجى الرجوع إلى استدلال DeepSpeed: تمكين الاستدلال الفعال لنماذج المحولات على نطاق غير مسبوق و استدلال BLOOM سريع بشكل لا يصدق مع DeepSpeed و Accelerate.
نستخدم DJLServing كنموذج تقديم الحل في هذا المثال. DJLServing هو حل تقديم نموذج عالمي عالي الأداء مدعوم من مكتبة جافا العميقة (DJL) التي تعد لغة برمجة حيادية. لمعرفة المزيد حول DJL و DJLServing ، ارجع إلى انشر نماذج كبيرة على Amazon SageMaker باستخدام الاستدلال المتوازي لنموذج DJLServing و DeepSpeed.
تجدر الإشارة إلى أن النواة المحسّنة يمكن أن تؤدي إلى تغييرات دقيقة ورسم بياني حسابي معدل ، مما قد يؤدي نظريًا إلى تغيير سلوك النموذج. على الرغم من أن هذا قد يغير أحيانًا نتيجة الاستدلال ، إلا أننا لا نتوقع أن تؤثر هذه الاختلافات ماديًا على مقاييس التقييم الأساسية للنموذج. ومع ذلك ، يُنصح الممارسون بتأكيد أن مخرجات النموذج كما هو متوقع عند استخدام هذه النواة.
توضح الخطوات التالية كيفية نشر نموذج BLOOM-176B في SageMaker باستخدام DJLServing وحاوية استنتاج نموذج كبير من SageMaker. المثال الكامل متاح أيضًا في موقعنا مستودع جيثب.
استخدام صورة DJLServing SageMaker DLC
استخدم الكود التالي لاستخدام صورة DJLServing SageMaker DLC بعد استبدال المنطقة بمنطقتك المحددة التي تقوم بتشغيل الكمبيوتر الدفتري فيها:
قم بإنشاء ملف النموذج الخاص بنا
أولاً ، نقوم بإنشاء ملف يسمى serving.properties
يحتوي على سطر واحد فقط من التعليمات البرمجية. هذا يخبر خادم نموذج DJL لاستخدام محرك DeepSpeed. يحتوي الملف على الكود التالي:
serving.properties
هو ملف معرف بواسطة DJLServing يستخدم لتكوين التكوين لكل نموذج.
بعد ذلك ، نقوم بإنشاء ملف model.py
ملف ، والذي يحدد الكود المطلوب لتحميل النموذج ثم تقديمه. في الكود الخاص بنا ، نقرأ في TENSOR_PARALLEL_DEGREE
متغير البيئة (القيمة الافتراضية هي 1). هذا يحدد عدد الأجهزة التي يتم توزيع الوحدات المتوازية عليها. لاحظ أن DeepSpeed يوفر بعض تعريفات الأقسام المضمنة ، بما في ذلك تعريف لنماذج BLOOM. نستخدمها بالتحديد replace_method
و relpace_with_kernel_inject
. إذا كان لديك نموذج مخصص وتحتاج إلى DeepSpeed للتقسيم بشكل فعال ، فأنت بحاجة إلى التغيير relpace_with_kernel_inject
إلى false
و أضف injection_policy
لجعل قسم وقت التشغيل يعمل. لمزيد من المعلومات ، يرجى الرجوع إلى التهيئة للاستدلال. على سبيل المثال ، استخدمنا نموذج BLOOM المقسم مسبقًا على DeepSpeed.
ثانياً ، في model.py
ملف ، نقوم أيضًا بتحميل النموذج من Amazon S3 بعد أن يتم تدوير نقطة النهاية. يتم تحميل النموذج في ملف /tmp
على الحاوية لأن SageMaker يرسم ملف /tmp
إلى متجر أمازون مطاط بلوك وحدة تخزين (Amazon EBS) التي يتم تركيبها عندما نحدد معلمة إنشاء نقطة النهاية VolumeSizeInGB
. بالنسبة لحالات مثل p4dn ، التي تم إنشاؤها مسبقًا مع مثيل وحدة التخزين ، يمكننا الاستمرار في الاستفادة من ملف /tmp
على الحاوية. انظر الكود التالي:
تدير DJLServing تثبيت وقت التشغيل على أي حزم نقطية محددة في requirement.txt
. سيحتوي هذا الملف على:
لقد أنشأنا دليلاً يسمى code
و model.py
, serving.properties
و requirements.txt
تم إنشاء الملفات بالفعل في هذا الدليل. لعرض الملفات ، يمكنك تشغيل الكود التالي من المحطة:
يوضح الشكل التالي هيكل model.tar.gz
.
أخيرًا ، نقوم بإنشاء ملف النموذج وتحميله إلى Amazon S3:
قم بتنزيل وتخزين النموذج من Hugging Face (اختياري)
لقد قدمنا الخطوات الواردة في هذا القسم في حالة رغبتك في تنزيل النموذج على Amazon S3 واستخدامه من هناك. يتم توفير الخطوات في ملف Jupyter على GitHub. تُظهر لقطة الشاشة التالية لقطة للخطوات.
قم بإنشاء نموذج SageMaker
نقوم الآن بإنشاء ملف نموذج SageMaker. نحن نستخدم ال سجل الأمازون المرنة للحاويات (Amazon ECR) تم توفيرها بواسطة الأداة النموذجية من الخطوة السابقة لإنشاء نموذج SageMaker. في إعداد النموذج ، نقوم بتكوين TENSOR_PARALLEL_DEGREE=8
، مما يعني أن النموذج مقسم على 8 وحدات معالجة رسومات. انظر الكود التالي:
بعد تشغيل الخلية السابقة في ملف Jupyter ، سترى إخراجًا مشابهًا لما يلي:
قم بإنشاء نقطة نهاية SageMaker
يمكنك استخدام أي حالات مع وحدات معالجة رسومات متعددة للاختبار. في هذا العرض التوضيحي ، نستخدم مثيل p4d.24xlarge. في الكود التالي ، لاحظ كيف قمنا بتعيين ملف ModelDataDownloadTimeoutInSeconds
, ContainerStartupHealthCheckTimeoutInSeconds
و VolumeSizeInGB
معلمات لاستيعاب حجم النموذج الكبير. ال VolumeSizeInGB
المعلمة قابلة للتطبيق على مثيلات GPU التي تدعم مرفق وحدة تخزين EBS.
أخيرًا ، قمنا بإنشاء نقطة نهاية SageMaker:
تراها مطبوعة في الكود التالي:
قد يستغرق بدء نقطة النهاية بعض الوقت. يمكنك المحاولة عدة مرات إذا واجهت InsufficientInstanceCapacity
خطأ ، أو يمكنك رفع طلب إلى AWS لزيادة الحد في حسابك.
ضبط الأداء
إذا كنت تنوي استخدام هذا المنشور والمفكرة المصاحبة مع طراز مختلف ، فقد ترغب في استكشاف بعض المعلمات القابلة للضبط التي تقدمها SageMaker و DeepSpeed و DJL. يمكن أن يكون للتجربة المتكررة مع هذه المعلمات تأثير مادي على زمن الانتقال والإنتاجية والتكلفة للنموذج الكبير المستضاف. لمعرفة المزيد حول معلمات الضبط مثل عدد العمال ودرجة توتير التوازي وحجم قائمة انتظار الوظائف وغيرها ، يرجى الرجوع إلى تكوينات خدمة DJL و انشر نماذج كبيرة على Amazon SageMaker باستخدام الاستدلال المتوازي لنموذج DJLServing و DeepSpeed.
النتائج
في هذا المنشور ، استخدمنا DeepSpeed لاستضافة BLOOM-176B و OPT-30B على مثيلات SageMaker ML. يلخص الجدول التالي نتائج أدائنا ، بما في ذلك مقارنة مع Hugging Face's Accelerate. يعكس وقت الاستجابة عدد المللي ثانية الذي يستغرقه إنتاج سلسلة مكونة من 256 رمزًا أربع مرات (batch_size=4
) من النموذج. تعكس الإنتاجية عدد الرموز المميزة التي يتم إنتاجها في الثانية لكل اختبار. من أجل Hugging Face Accelerate ، استخدمنا التحميل الافتراضي للمكتبة مع تعيين ذاكرة GPU. بالنسبة لـ DeepSpeed ، استخدمنا آلية تحميل نقاط التفتيش الأسرع.
الموديل | المكتبة | دقة النموذج | حجم الدفعة | درجة موازية | حتة | وقت التحميل (S) |
الكمون (4 × 256 إخراج رمزي) | . | ||
. | . | . | . | . | . | . | P50 (الآنسة) |
P90 (الآنسة) |
P99 (الآنسة) |
الإنتاجية (الرموز / ثانية) |
بلوم-176ب | السرعة العميقة | INT8 | 4 | 8 | p4d.24xlarge | 74.9 | 27,564 | 27,580 | 32,179 | 37.1 |
بلوم-176ب | تسريع | INT8 | 4 | 8 | p4d.24xlarge | 669.4 | 92,694 | 92,735 | 103,292 | 11.0 |
أوبت-30ب | السرعة العميقة | FP16 | 4 | 4 | g5.24xlarge | 239.4 | 11,299 | 11,302 | 11,576 | 90.6 |
أوبت-30ب | تسريع | FP16 | 4 | 4 | g5.24xlarge | 533.8 | 63,734 | 63,737 | 67,605 | 16.1 |
من منظور زمن الوصول ، فإن DeepSpeed أسرع بنحو 3.4 مرة لـ BLOOM-176B و 5.6 مرة لـ OPT-30B من Accelerate. نواة DeepSpeed المحسّنة مسؤولة عن الكثير من هذا الاختلاف في زمن الوصول. بالنظر إلى هذه النتائج ، نوصي باستخدام DeepSpeed over Accelerate إذا كان النموذج الذي تختاره مدعومًا.
تجدر الإشارة أيضًا إلى أن أوقات تحميل النموذج باستخدام DeepSpeed كانت أقصر بكثير ، مما يجعله خيارًا أفضل إذا كنت تتوقع الحاجة إلى زيادة عدد نقاط النهاية بسرعة. قد تكون تقنية موازاة خطوط الأنابيب الأكثر مرونة في Accelerate خيارًا أفضل إذا كان لديك نماذج أو نماذج دقيقة لا تدعمها DeepSpeed.
توضح هذه النتائج أيضًا الاختلاف في زمن الوصول والإنتاجية لأحجام النماذج المختلفة. في اختباراتنا ، يولد OPT-30B عددًا يبلغ 2.4 ضعف عدد الرموز لكل وحدة زمنية مقارنة بـ BLOOM-176B على نوع مثيل أرخص بثلاث مرات. على أساس السعر لكل وحدة إنتاجية ، يكون OPT-30B على مثيل g5.24xl أفضل بـ 8.9 مرات من BLOOM-176B على مثيل p4d.24xl. إذا كانت لديك قيود صارمة على زمن الوصول أو الإنتاجية أو التكلفة ، ففكر في استخدام أصغر نموذج ممكن والذي سيظل يحقق المتطلبات الوظيفية.
تنظيف
كجزء من أفضل الممارسات ، يوصى دائمًا بحذف المثيلات الخاملة. يوضح لك الكود أدناه كيفية حذف الحالات.
اختياريًا ، احذف نقطة فحص النموذج من S3
وفي الختام
في هذا المنشور ، أوضحنا كيفية استخدام حاويات الاستدلال النموذجية الكبيرة من SageMaker لاستضافة نموذجين كبيرين للغة ، BLOOM-176B و OPT-30B. استخدمنا تقنيات نموذج DeepSpeed المتوازية مع وحدات معالجة رسومات متعددة على مثيل SageMaker ML واحد.
لمزيد من التفاصيل حول Amazon SageMaker وإمكانيات الاستدلال بالنموذج الكبير ، يرجى الرجوع إلى يدعم Amazon SageMaker الآن نشر النماذج الكبيرة من خلال حجم وحدة التخزين القابلة للتكوين وحصص المهلة و الاستدلال في الوقت الحقيقي.
عن المؤلفين
سيمون زامارين هو مهندس حلول AI / ML الذي ينصب تركيزه الرئيسي على مساعدة العملاء على استخراج القيمة من أصول البيانات الخاصة بهم. في أوقات فراغه ، يستمتع Simon بقضاء الوقت مع العائلة ، وقراءة الخيال العلمي ، والعمل على العديد من مشاريع DIY المنزلية.
روبيندر جريوال هو مهندس حلول متخصص في الذكاء الإصطناعي / ML مع AWS. يركز حاليًا على خدمة النماذج و MLOps على SageMaker. قبل توليه هذا المنصب ، عمل كمهندس لتعلم الآلة ونماذج البناء والاستضافة. خارج العمل يستمتع بلعب التنس وركوب الدراجات على المسارات الجبلية.
فرانك ليو هو مهندس برمجيات في AWS Deep Learning. يركز على بناء أدوات التعلم العميق المبتكرة لمهندسي البرمجيات والعلماء. في أوقات فراغه ، يستمتع بالتنزه مع الأصدقاء والعائلة.
آلان تان هو مدير أول للمنتجات مع جهود SageMaker الرائدة في الاستدلال على النماذج الكبيرة. إنه متحمس لتطبيق التعلم الآلي في مجال التحليلات. خارج العمل ، يستمتع بالخارج.
ضوال باتل هو مهندس رئيسي لتعلم الآلة في AWS. لقد عمل مع مؤسسات تتراوح من المؤسسات الكبيرة إلى الشركات الناشئة متوسطة الحجم في المشكلات المتعلقة بالحوسبة الموزعة والذكاء الاصطناعي. يركز على التعلم العميق بما في ذلك مجالات البرمجة اللغوية العصبية ورؤية الكمبيوتر. إنه يساعد العملاء على تحقيق استدلال نموذج عالي الأداء على SageMaker.
تشينغ لان هو مهندس تطوير برمجيات في AWS. لقد كان يعمل على العديد من المنتجات الصعبة في Amazon ، بما في ذلك حلول استدلال ML عالية الأداء ونظام تسجيل عالي الأداء. أطلق فريق Qing بنجاح أول نموذج مليار معلمة في إعلانات أمازون بزمن انتقال منخفض للغاية مطلوب. تتمتع Qing بمعرفة متعمقة حول تحسين البنية التحتية وتسريع التعلم العميق.
تشينغوي لي هو متخصص في التعلم الآلي في Amazon Web Services. حصل على الدكتوراه. في بحوث العمليات بعد أن كسر حساب منحة مستشاره البحثي وفشل في تسليم جائزة نوبل التي وعد بها. يقوم حاليًا بمساعدة العملاء في مجال الخدمات المالية وصناعة التأمين في بناء حلول التعلم الآلي على AWS. في أوقات فراغه يحب القراءة والتعليم.
روبرت فان دوسين هو مدير أول للمنتجات في Amazon SageMaker. يقود عملية تحسين نموذج التعلم العميق للتطبيقات مثل الاستدلال بالنموذج الكبير.
سيدهارث فينكاتيسان هو مهندس برمجيات في AWS Deep Learning. يركز حاليًا على بناء حلول لاستدلال النماذج الكبيرة. قبل انضمامه إلى AWS ، عمل في مؤسسة بقالة أمازون في إنشاء ميزات دفع جديدة للعملاء في جميع أنحاء العالم. خارج العمل ، يستمتع بالتزلج والهواء الطلق ومشاهدة الألعاب الرياضية.
- متقدم (300،XNUMX)
- AI
- ai الفن
- مولد الفن ai
- الروبوت ai
- الأمازون SageMaker
- الذكاء الاصطناعي
- شهادة الذكاء الاصطناعي
- الذكاء الاصطناعي في البنوك
- روبوت ذكاء اصطناعي
- روبوتات الذكاء الاصطناعي
- برنامج ذكاء اصطناعي
- التعلم الآلي من AWS
- سلسلة كتلة
- مؤتمر blockchain ai
- عملة عبقرية
- الذكاء الاصطناعي للمحادثة
- مؤتمر التشفير ai
- دال
- التعلم العميق
- google ai
- آلة التعلم
- أفلاطون
- أفلاطون ع
- الذكاء افلاطون البيانات
- لعبة أفلاطون
- أفلاطون داتا
- بلاتوغمينغ
- مقياس ai
- بناء الجملة
- زفيرنت