صقل GPT-J باستخدام مقدّر Amazon SageMaker Hugging Face والمكتبة المتوازية النموذجية | خدمات أمازون ويب

صقل GPT-J باستخدام مقدّر Amazon SageMaker Hugging Face والمكتبة المتوازية النموذجية | خدمات أمازون ويب

GPT-J هو نموذج مفتوح المصدر مكون من 6 مليارات معلمة صادر عن Eleuther AI. تم تدريب النموذج على كومة ويمكنه أداء مهام مختلفة في معالجة اللغة. يمكن أن يدعم مجموعة متنوعة من حالات الاستخدام ، بما في ذلك تصنيف النص ، وتصنيف الرمز المميز ، وإنشاء النص ، والسؤال والإجابة ، واستخراج الكيانات ، والتلخيص ، وتحليل المشاعر ، وغيرها الكثير. GPT-J هو نموذج محول تم تدريبه باستخدام Ben Wang's محول شبكة JAX.

في هذا المنشور ، نقدم دليلًا وأفضل الممارسات حول تدريب نماذج اللغة الكبيرة (LLMs) باستخدام الأمازون SageMaker مكتبة موازية نموذجية موزعة لتقليل وقت التدريب وتكلفته. سوف تتعلم كيفية تدريب نموذج GPT-J المكون من 6 مليارات معلمة على SageMaker بسهولة. أخيرًا ، نشارك الميزات الرئيسية لتوازي النماذج الموزعة من SageMaker والتي تساعد في تسريع وقت التدريب.

الشبكات العصبية المحولات

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

معانقة الوجه على SageMaker

Hugging Face هي شركة تقوم بتطوير بعض المكتبات مفتوحة المصدر الأكثر شيوعًا والتي توفر أحدث تقنيات البرمجة اللغوية العصبية القائمة على معماريات المحولات. الوجه المعانق محولات, الرموز المميزةو قواعد البيانات توفر المكتبات واجهات برمجة تطبيقات وأدوات للتنزيل والتنبؤ باستخدام نماذج مدربة مسبقًا بلغات متعددة. يمكّنك SageMaker من تدريب الاستدلال وضبطه وتشغيله باستخدام نماذج Hugging Face مباشرة منه معانقة الوجه النموذجي المحور يستخدم ال تعانق الوجه مقدر في ال سيج ميكر SDK. يجعل التكامل من السهل تخصيص نماذج Hugging Face في حالات الاستخدام الخاصة بالمجال. وراء الكواليس ، تستخدم SageMaker SDK حاويات التعلم العميق (DLC) من AWS ، وهي عبارة عن مجموعة من صور Docker سابقة الإنشاء للتدريب وتقديم النماذج التي تقدمها SageMaker. تم تطوير DLCs من خلال تعاون بين AWS و Hugging Face. يوفر التكامل أيضًا التكامل بين تعانق وجه محولات SDK و قامت SageMaker بتوزيع مكتبات تدريبية ، تمكنك من توسيع نطاق وظائف التدريب الخاصة بك على مجموعة من وحدات معالجة الرسومات.

نظرة عامة على مكتبة SageMaker الموزعة المتوازية

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

  • إنها تحد من حجم النموذج الذي يمكن تدريبه لأن مساحة ذاكرة النموذج تتناسب مع عدد المعلمات
  • إنها تقلل من استخدام وحدة معالجة الرسومات وكفاءة التدريب عن طريق الحد من حجم الدفعة لكل وحدة معالجة رسومات أثناء التدريب

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

نظرًا لأن النماذج الكبيرة مثل GPT-J ، التي تحتوي على مليارات من المعلمات ، لها بصمة ذاكرة GPU تتجاوز شريحة واحدة ، يصبح من الضروري تقسيمها عبر وحدات معالجة رسومات متعددة. تتيح مكتبة نموذج SageMaker المتوازي (SMP) التقسيم التلقائي للنماذج عبر وحدات معالجة رسومات متعددة. باستخدام نموذج التوازي من SageMaker ، يدير SageMaker مهمة إنشاء ملفات تعريف أولية نيابة عنك لتحليل متطلبات الحساب والذاكرة للنموذج. تُستخدم هذه المعلومات بعد ذلك لتحديد كيفية تقسيم النموذج عبر وحدات معالجة الرسومات ، من أجل تعظيم الهدف ، مثل زيادة السرعة أو تقليل أثر الذاكرة.

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

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

التوازي الموتر

طبقات فردية ، أوnn.Modules، مقسمة عبر الأجهزة باستخدام التوازي الموتر بحيث يمكن تشغيلها بشكل متزامن. أبسط مثال على كيفية تقسيم المكتبة لنموذج بأربع طبقات لتحقيق توازي موتر ثنائي الاتجاه ("tensor_parallel_degree": 2) في الشكل التالي. يتم تقسيم طبقات كل نسخة طبق الأصل (مقسمة إلى نصفين) وتوزيعها بين وحدتي معالجة رسومات. تبلغ درجة توازي البيانات ثمانية في هذا المثال لأن التكوين المتوازي للنموذج يتضمن بالإضافة إلى ذلك "pipeline_parallel_degree": 1 و "ddp": True. تدير المكتبة الاتصال بين النسخ المتماثلة للنموذج الموزع الموتر.

التوازي الموتر

تكمن فائدة هذه الميزة في أنه يمكنك اختيار أي طبقات أو أي مجموعة فرعية من الطبقات تريد تطبيق موتر متوازي عليها. للتعمق في توازي الموتر وميزات أخرى لحفظ الذاكرة لـ PyTorch ، وللتعرف على كيفية إعداد مجموعة من خطوط الأنابيب والتوازي الموتر ، راجع الميزات الموسعة لمكتبة SageMaker Model Parallel لـ PyTorch.

توازي البيانات المجزأة من SageMaker

موازاة البيانات المُقسمة هي تقنية تدريب موزعة موفرة للذاكرة تعمل على تقسيم حالة التدريب للنموذج (معلمات النموذج ، والتدرجات ، وحالات المُحسِّن) عبر وحدات معالجة الرسومات في مجموعة موازية للبيانات.

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

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

يقوم SageMaker بتنفيذ توازي البيانات المجزأة من خلال تطبيق MiCS. لمزيد من المعلومات، راجع التحجيم شبه الخطي لتدريب النموذج العملاق على AWS.

الرجوع إلى توازي البيانات المُقسمة لمزيد من التفاصيل حول كيفية تطبيق توازي البيانات المجزأة على وظائف التدريب الخاصة بك.

استخدم المكتبة المتوازية لنموذج SageMaker

تأتي مكتبة نموذج SageMaker المتوازية مع SageMaker Python SDK. تحتاج إلى تثبيت SageMaker Python SDK لاستخدام المكتبة ، وقد تم تثبيتها بالفعل على نواة دفتر SageMaker. لجعل سكربت تدريب PyTorch الخاص بك يستخدم إمكانيات مكتبة SMP ، تحتاج إلى إجراء التغييرات التالية:

  1. سترات عن طريق استيراد ملف smp المكتبة باستخدام smp.init()مكالمة.
  2. بمجرد التهيئة ، يمكنك التفاف النموذج الخاص بك بامتداد smp.DistributedModel غلاف واستخدام DistributedModel بدلا من نموذج المستخدم.
  3. لحالة المُحسِّن الخاصة بك ، استخدم ملف smp.DistributedOptimizer التفاف حول مُحسِّن النموذج الخاص بك ، مما يتيح smp لحفظ وتحميل حالة المحسن. يمكن استخلاص منطق التمرير الأمامي والخلفي كوظيفة منفصلة وإضافة a smp.step مصمم للوظيفة. بشكل أساسي ، يجب تشغيل التمرير الأمامي والانتشار الخلفي داخل الوظيفة باستخدام الامتداد smp.step وضع المصمم فوقه. هذا يسمح smp لتقسيم إدخال الموتر إلى الوظيفة إلى عدد من الميكروبات المحددة أثناء بدء مهمة التدريب.
  4. بعد ذلك ، يمكننا نقل موتر الإدخال إلى وحدة معالجة الرسومات المستخدمة في العملية الحالية باستخدام torch.cuda.set_device API متبوعًا بملحق .to() استدعاء API.
  5. أخيرًا ، من أجل التكاثر العكسي ، نستبدل torch.Tensor.backward و torch.autograd.backward.

انظر الكود التالي:

@smp.step
def train_step(model, data, target): output = model(data) loss = F.nll_loss(output, target, reduction="mean") model.backward(Loss) return output, loss with smp.tensor_parallelism(): model = AutoModelForCausalLM.from_config(model_config) model = smp.DistributedModel (model)
optimizer = smp. DistributedOptimizer(optimizer)

عروض توازي موتر للمكتبة المتوازية لنموذج SageMaker دعم خارج الصندوق لنماذج Hugging Face Transformer التالية:

  • GPT-2, بيرتو RoBERTa (متوفر في مكتبة SMP الإصدار 1.7.0 والإصدارات الأحدث)
  • جي بي تي-ي (متوفر في مكتبة SMP الإصدار 1.8.0 والإصدارات الأحدث)
  • GPT-Neo (متوفر في مكتبة SMP الإصدار 1.10.0 والإصدارات الأحدث)

أفضل الممارسات لضبط الأداء مع مكتبة SMP

عند تدريب الطرز الكبيرة ، ضع في اعتبارك الخطوات التالية حتى يتناسب طرازك مع ذاكرة وحدة معالجة الرسومات بحجم دفعة معقول:

  • يوصى باستخدام مثيلات ذات ذاكرة GPU أعلى واتصال ذو نطاق ترددي عالٍ للأداء ، مثل مثيلات p4d و p4de.
  • تجزئة حالة المحسن يمكن تمكينه في معظم الحالات ، وسيكون مفيدًا عندما يكون لديك أكثر من نسخة واحدة من النموذج (تم تمكين توازي البيانات). يمكنك تشغيل تجزئة حالة المحسن عن طريق الضبط "shard_optimizer_state": True في ال modelparallel ترتيب.
  • استعمل تفعيل نقاط التفتيش، وهي تقنية لتقليل استخدام الذاكرة عن طريق مسح عمليات تنشيط طبقات معينة وإعادة حسابها أثناء المرور للخلف للوحدات المحددة في النموذج.
  • استعمل تفعيل التفريغ، وهي ميزة إضافية يمكنها تقليل استخدام الذاكرة بشكل أكبر. لاستخدام إلغاء التنشيط ، اضبط "offload_activations": True في ال modelparallel إعدادات. يُستخدم عند تشغيل نقاط فحص التنشيط وتوازي خطوط الأنابيب ويكون عدد الميكروبات أكبر من واحد.
  • تفعيل التوازي الموتر وتزيد من درجات التوازي حيث تكون الدرجة هي قوة 2. عادةً لأسباب تتعلق بالأداء ، يتم تقييد التوازي الموتر داخل العقدة.

لقد أجرينا العديد من التجارب لتحسين التدريب وضبط GPT-J على SageMaker باستخدام مكتبة SMP. لقد تمكنا من تقليل وقت تدريب GPT-J لفترة زمنية على SageMaker من 58 دقيقة إلى أقل من 10 دقائق - وقت تدريب أسرع بست مرات لكل فترة. استغرق الأمر التهيئة والنموذج وتنزيل مجموعة البيانات من خدمة تخزين أمازون البسيطة (Amazon S3) أقل من دقيقة ، والتتبع والتقسيم التلقائي باستخدام وحدة معالجة الرسومات (GPU) كجهاز تتبع أقل من دقيقة واحدة ، وتدريب فترة 1 دقائق باستخدام موازاة الموتر على مثيل واحد ml.p8d.4xlarge ، ودقة FP24 ، و SageMaker Hugging Face مقدر.

لتقليل وقت التدريب كأفضل ممارسة ، عند تدريب GPT-J على SageMaker ، نوصي بما يلي:

  • قم بتخزين النموذج الخاص بك مسبق الصنع على Amazon S3
  • استخدم دقة FP16
  • استخدم GPU كجهاز تتبع
  • استخدم التقسيم التلقائي ، تفعيل نقاط التفتيشو تجزئة حالة المحسن:
    • auto_partition: True
    • shard_optimizer_state: True
  • استخدم موتر التوازي
  • استخدم مثيل تدريب SageMaker مع وحدات معالجة رسومات متعددة مثل ml.p3.16xlarge أو ml.p3dn.24xlarge أو ml.g5.48xlarge أو ml.p4d.24xlarge أو ml.p4de.24xlarge.

تدريب نموذج GPT-J وضبطه على SageMaker مع مكتبة SMP

يتوفر نموذج تعليمات برمجية عملية خطوة بخطوة على ملف أمثلة على Amazon SageMaker المستودع العام. انتقل إلى ملف مجلد تدريب / توزيع_ تدريب / pytorch / model_parallel / gpt-j. اختر gpt-j المجلد وافتح ملف train_gptj_smp_tensor_parallel_notebook.jpynb دفتر Jupyter لتوازي موتر مثال و train_gptj_smp_notebook.ipynb على سبيل المثال موازاة خطوط الأنابيب. يمكنك العثور على التعليمات البرمجية التفصيلية في موقعنا الذكاء الاصطناعي التوليدي في ورشة عمل Amazon SageMaker.

يرشدك دفتر الملاحظات هذا إلى كيفية استخدام ميزات التوازي الموتر التي توفرها مكتبة التوازي لنموذج SageMaker. سوف تتعلم كيفية تشغيل تدريب FP16 لنموذج GPT-J مع توازي موتر وتوازي خطوط الأنابيب على مجموعة بيانات GLUE sst2.

نبذة عامة

توفر المكتبة الموازية لنموذج SageMaker العديد من الوظائف. يمكنك تقليل التكلفة وتسريع تدريب ماجستير إدارة الأعمال على SageMaker. يمكنك أيضًا معرفة وتشغيل نماذج رموز لـ BERT و GPT-2 و GPT-J على ملف أمثلة على Amazon SageMaker المستودع العام. لمعرفة المزيد حول أفضل ممارسات AWS لتدريب LLMS باستخدام مكتبة SMP ، يرجى الرجوع إلى الموارد التالية:

لمعرفة كيف حقق أحد عملائنا استنتاج GPT-J بزمن انتقال منخفض على SageMaker ، يرجى الرجوع إلى كيف يحقق Mantium استنتاج GPT-J بزمن انتقال منخفض باستخدام DeepSpeed ​​على Amazon SageMaker.

إذا كنت تتطلع إلى تسريع وقت وصول LLMs إلى السوق وتقليل التكاليف ، يمكن لـ SageMaker مساعدتك. دعنا نعرف ما تبنيه!


حول المؤلف

زمناكو اورحمانزمناكو أورحمان ، دكتوراه، مدير ممارسة ، ML SME ، وعضو في مجتمع المجال التقني للتعلم الآلي (TFC) في مركز الكفاءات العالمية ، Amazon Web Services. يساعد العملاء على الاستفادة من قوة السحابة لاستخراج القيمة من بياناتهم من خلال تحليلات البيانات والتعلم الآلي.

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

أناستاسيا باتشني تسيتيريدوأناستاسيا باتشني تسيتيريدو هو مهندس حلول في AWS. تعيش Anastasia في أمستردام وتدعم شركات البرمجيات عبر منطقة Benelux في رحلتهم السحابية. قبل انضمامها إلى AWS ، درست الهندسة الكهربائية وهندسة الكمبيوتر وتخصصت في رؤية الكمبيوتر. أكثر ما تستمتع به في الوقت الحاضر هو العمل مع نماذج لغة كبيرة جدًا.

ضوال باتلضوال باتل هو مهندس رئيسي لتعلم الآلة في AWS. لقد عمل مع مؤسسات تتراوح من الشركات الكبيرة إلى الشركات الناشئة متوسطة الحجم في المشكلات المتعلقة بالحوسبة الموزعة والذكاء الاصطناعي. يركز على التعلم العميق ، بما في ذلك مجالات البرمجة اللغوية العصبية ورؤية الكمبيوتر. إنه يساعد العملاء على تحقيق استدلال نموذج عالي الأداء على SageMaker.

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

راهول هويلغولراهول هويلغول مهندس تطوير برمجيات أول في التعلم العميق الموزع في Amazon Web Services.

الطابع الزمني:

اكثر من التعلم الآلي من AWS