تقنيات تدريب الشبكات العصبية الكبيرة على ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.

تقنيات تدريب الشبكات العصبية الكبيرة

تقنيات تدريب الشبكات العصبية الكبيرة

تعد الشبكات العصبية الكبيرة في صميم العديد من التطورات الحديثة في الذكاء الاصطناعي ، ولكن تدريبها يمثل تحديًا هندسيًا وبحثيًا صعبًا يتطلب تنظيم مجموعة من وحدات معالجة الرسومات لإجراء عملية حسابية متزامنة واحدة. مع نمو أحجام المجموعات والنماذج ، طور ممارسو التعلم الآلي مجموعة متزايدة من التقنيات لموازاة تدريب النموذج على العديد من وحدات معالجة الرسومات. للوهلة الأولى ، قد يبدو فهم تقنيات التوازي هذه أمرًا شاقًا ، ولكن مع وجود عدد قليل من الافتراضات حول بنية الحساب ، تصبح هذه التقنيات أكثر وضوحًا - في هذه المرحلة ، فأنت تتنقل فقط حول البتات غير الشفافة من A إلى B مثل الشبكة تبديل المكوكات حول الحزم.

توازي البيانات

تقنيات تدريب الشبكات العصبية الكبيرة

موازية خطوط الأنابيب

تقنيات تدريب الشبكات العصبية الكبيرة

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

تقنيات تدريب الشبكات العصبية الكبيرة

التوازي الخبير

تقنيات تدريب الشبكات العصبية الكبيرة

توازي البيانات

تقنيات تدريب الشبكات العصبية الكبيرة

موازية خطوط الأنابيب

تقنيات تدريب الشبكات العصبية الكبيرة

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

تقنيات تدريب الشبكات العصبية الكبيرة

التوازي الخبير

تقنيات تدريب الشبكات العصبية الكبيرة

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

لا توازي

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

تقسم تقنيات التوازي المختلفة هذه العملية التدريبية عبر أبعاد مختلفة ، بما في ذلك:

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

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

توازي البيانات

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

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

موازية خطوط الأنابيب

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

من السهل تقسيم نموذج كبير إلى أجزاء متتالية من الطبقات. ومع ذلك ، هناك تبعية متسلسلة بين مدخلات ومخرجات الطبقات ، لذلك يمكن أن يؤدي التنفيذ الساذج إلى قدر كبير من وقت الخمول أثناء انتظار العامل لمخرجات من الجهاز السابق لاستخدامها كمدخلات. تُعرف أجزاء وقت الانتظار هذه باسم "الفقاعات" ، مما يؤدي إلى إضاعة العمليات الحسابية التي يمكن أن تقوم بها الآلات العاطلة.

تقنيات تدريب الشبكات العصبية الكبيرة إلى الأمام
تقنيات تدريب الشبكات العصبية الكبيرة الى الوراء
تقنيات تدريب الشبكات العصبية الكبيرة تحديث التدرج
تقنيات تدريب الشبكات العصبية الكبيرة الخمول
تقنيات تدريب الشبكات العصبية الكبيرة

رسم توضيحي لإعداد متوازي لخط أنابيب حيث يتم تقسيم النموذج عموديًا إلى 4 أقسام حسب الطبقة. يستضيف العامل 1 معلمات النموذج للطبقة الأولى من الشبكة (الأقرب إلى الإدخال) ، بينما يستضيف العامل 4 الطبقة 4 (الأقرب إلى الإخراج). تمثل "F" و "B" و "U" عمليات الأمام والخلف والتحديث ، على التوالي. تشير الرموز الفرعية إلى العامل الذي يتم تشغيل العملية عليه. تتم معالجة البيانات من قبل عامل واحد في كل مرة بسبب التبعية المتسلسلة ، مما يؤدي إلى "فقاعات" كبيرة من وقت الخمول.

يمكننا إعادة استخدام الأفكار من توازي البيانات لتقليل تكلفة الفقاعة من خلال جعل كل عامل يعالج مجموعة فرعية من عناصر البيانات فقط في وقت واحد ، مما يسمح لنا بالتداخل بذكاء مع الحساب الجديد مع وقت الانتظار. الفكرة الأساسية هي تقسيم دفعة واحدة إلى عدة رقع دقيقة ؛ يجب أن يكون كل ميكروباتش أسرع نسبيًا في المعالجة ويبدأ كل عامل في العمل على الميكروباتش التالي بمجرد توفره ، وبالتالي الإسراع في تنفيذ خط الأنابيب. مع وجود عدد كافٍ من الميكروبات ، يمكن استخدام العمال في معظم الأوقات بأقل فقاعة في بداية الخطوة ونهايتها. يتم حساب متوسط ​​التدرجات عبر microbatches ، وتحدث تحديثات المعلمات بمجرد اكتمال كل microbatches.

يُعرف عدد العمال الذين تم تقسيم النموذج عليهم عمق خط الأنابيب.

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

تقنيات تدريب الشبكات العصبية الكبيرة إلى الأمام
تقنيات تدريب الشبكات العصبية الكبيرة الى الوراء
تقنيات تدريب الشبكات العصبية الكبيرة تحديث
تقنيات تدريب الشبكات العصبية الكبيرة الخمول
GPipe

تقنيات تدريب الشبكات العصبية الكبيرة

حلم صعب

تقنيات تدريب الشبكات العصبية الكبيرة

مقارنة بين مخططات خطوط الأنابيب GPipe و PipeDream ، باستخدام 4 ميكروباتش لكل دفعة. تتوافق الدفعات الدقيقة من 1 إلى 8 مع دفعتين متتاليتين من البيانات. في الصورة ، يشير "(رقم)" إلى microbatch الذي يتم تنفيذ العملية عليه ويميز الرمز السفلي معرف العامل. لاحظ أن PipeDream يحصل على كفاءة أكبر من خلال إجراء بعض العمليات الحسابية باستخدام معلمات قديمة.

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

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

ومن الأمثلة على ذلك ميجاترون- إل إم، الذي يوازي مضاعفات المصفوفة داخل طبقات الانتباه الذاتي للمحول وطبقات MLP. PTD-P يستخدم الموتر والبيانات والتوازي مع خطوط الأنابيب ؛ يعيّن جدول خطوط الأنابيب الخاص به طبقات متعددة غير متتالية لكل جهاز ، مما يقلل من حمل الفقاعات على حساب المزيد من اتصالات الشبكة.

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

خليط من الخبراء (MoE)

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

تقنيات تدريب الشبكات العصبية الكبيرة

رسم توضيحي لطبقة خليط الخبراء (MoE). فقط 2 من n يتم اختيار الخبراء من خلال شبكة البوابات. (الصورة مقتبسة من: شازير وآخرون ، 2017)

جشارد يقيس محول MoE حتى 600 مليار معلمة مع مخطط حيث يتم تقسيم طبقات MoE فقط عبر أجهزة TPU متعددة ويتم تكرار الطبقات الأخرى بالكامل. محول التبديل يقيس حجم النموذج إلى تريليونات من المعلمات مع تباين أعلى عن طريق توجيه إدخال واحد إلى خبير واحد.

تصاميم أخرى لحفظ الذاكرة

هناك العديد من الاستراتيجيات الحسابية الأخرى لجعل تدريب الشبكات العصبية الكبيرة بشكل متزايد أكثر قابلية للتتبع. فمثلا:

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

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

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

  • محسنات كفاءة الذاكرة تم اقتراحها لتقليل أثر الذاكرة لحالة التشغيل التي يحتفظ بها المُحسِّن، مثل ادافاكتور.

  • ضغط يمكن أيضًا استخدامها لتخزين النتائج الوسيطة في الشبكة. فمثلا، جوهر يضغط التنشيطات التي تم حفظها للممر الخلفي ؛ DALL · E يضغط التدرجات اللونية قبل مزامنتها.


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


شكر وتقدير
شكرًا لنيكولاس تيزاك، وسام التمان، ودانييل جاكل، وإيليا سوتسكيفر، وستيفن أدلر على تعليقاتهم على المسودات. شكرًا لجوستين جاي وانج وبيانكا مارتن وستيف داولينج على الاتصالات والتصميم.

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

اكثر من OpenAI