قطار نموذج PyTorch

توضح هذه المقالة كيفية استخدام مكون نموذج Train PyTorch في مصمم التعلم الآلي Azure لتدريب نماذج PyTorch مثل DenseNet. يتم التدريب بعد تحديد نموذج وتعيين معلماته، ويتطلب بيانات مصنفة.

حاليا ، يدعم مكون Train PyTorch Model كلا من العقدة المفردة والتدريب الموزع.

كيفية استخدام نموذج قطار PyTorch

  1. أضف مكون DenseNet أو ResNet إلى مسودة خط الأنابيب في المصمم.

  2. أضف مكون نموذج Train PyTorch إلى خط الأنابيب. يمكنك العثور على هذا المكون ضمن فئة التدريب النموذجي . قم بتوسيع قطار ثم قم بسحب مكون نموذج Train PyTorch إلى خط الأنابيب الخاص بك.

    ملاحظة

    يتم تشغيل مكون Train PyTorch Model بشكل أفضل على حساب نوع GPU لمجموعة بيانات كبيرة ، وإلا فسوف يفشل خط الأنابيب الخاص بك. يمكنك تحديد حساب لمكون معين في الجزء الأيسر من المكون عن طريق تعيين استخدام هدف حساب آخر.

  3. على الإدخال الأيسر ، قم بإرفاق نموذج غير مدرب. قم بإرفاق مجموعة بيانات التدريب ومجموعة بيانات التحقق من الصحة بالإدخال الأوسط والأيمن لنموذج Train PyTorch.

    بالنسبة للنموذج غير المدرب ، يجب أن يكون نموذج PyTorch مثل DenseNet. خلاف ذلك ، سيتم طرح "InvalidModelDirectoryError".

    بالنسبة لمجموعة البيانات، يجب أن تكون مجموعة بيانات التدريب دليل صور مسمى. ارجع إلى تحويل إلى دليل الصور لمعرفة كيفية الحصول على دليل صور مصنف. إذا لم يتم تصنيفه ، طرح NotLabeledDatasetError.

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

  4. بالنسبة إلى Epochs، حدد عدد الحقب التي ترغب في تدريبها. سيتم تكرار مجموعة البيانات بأكملها في كل عصر ، افتراضيا 5.

  5. بالنسبة لحجم الدفعة، حدد عدد المثيلات التي سيتم تدريبها دفعة واحدة، بشكل افتراضي 16.

  6. بالنسبة لرقم خطوة الإحماء ، حدد عدد الحقب التي ترغب في تسخين التدريب ، في حالة كان معدل التعلم الأولي كبيرا جدا بحيث لا يمكن البدء في التقارب ، افتراضيا 0.

  7. بالنسبة Learning معدل، حدد قيمة لمعدل التعلم، والقيمة الافتراضية هي 0.001. يتحكم معدل Learning في حجم الخطوة المستخدمة في المحسن مثل sgd في كل مرة يتم فيها اختبار النموذج وتصحيحه.

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

    ملاحظة

    إذا أصبح فقدان القطار غير صحيح أثناء التدريب ، والذي قد يكون ناجما عن معدل تعلم كبير جدا ، فقد يساعد انخفاض معدل التعلم. في التدريب الموزع ، للحفاظ على استقرار التدرج ، يتم حساب lr * torch.distributed.get_world_size() معدل التعلم الفعلي لأن حجم الدفعة من مجموعة العملية هو حجم العالم أضعاف حجم العملية الواحدة. يتم تطبيق اضمحلال معدل التعلم متعدد الحدود ويمكن أن يساعد في التوصل إلى نموذج أفضل أداء.

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

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

  10. بالنسبة إلى تردد الطباعة، حدد تردد طباعة سجل التدريب عبر التكرارات في كل عصر، بشكل افتراضي 10.

  11. إرسال المسار. إذا كانت مجموعة البيانات الخاصة بك ذات حجم أكبر، فسيستغرق الأمر بعض الوقت ويوصى باستخدام حوسبة GPU.

التدريب الموزع

في التدريب الموزع ، يتم تقسيم عبء العمل لتدريب نموذج ومشاركته بين معالجات مصغرة متعددة ، تسمى عقد العامل. تعمل عقد العمال هذه بالتوازي مع تسريع التدريب النموذجي. حاليا دعم المصمم توزيع التدريب لمكون نموذج Train PyTorch .

وقت التدريب

يتيح التدريب الموزع التدريب على مجموعة بيانات كبيرة مثل ImageNet (1000 فصل دراسي ، 1.2 مليون صورة) في عدة ساعات فقط بواسطة Train PyTorch Model. يوضح الجدول التالي وقت التدريب والأداء أثناء التدريب 50 حقبة من Resnet50 على ImageNet من الصفر استنادا إلى أجهزة مختلفة.

الأجهزة وقت التدريب إنتاجية التدريب أعلى 1 دقة التحقق من الصحة أعلى 5 دقة التحقق من الصحة
16 وحدة معالجة رسومات V100 6:22دقيقة ~ 3200 صور / ثانية 68.83% 88.84%
8 وحدات معالجة رسومات V100 12:21دقيقة ~ 1670 صور / ثانية 68.84% 88.74%

انقر على علامة التبويب "المقاييس" المكونة هذه وشاهد الرسوم البيانية لمقاييس التدريب ، مثل "تدريب الصور في الثانية" و "أعلى دقة 1".

Screenshot showing training metrics

كيفية تمكين التدريب الموزع

لتمكين التدريب الموزع لمكون Train PyTorch Model ، يمكنك تعيين إعدادات Run في الجزء الأيسر من المكون. يتم دعم مجموعة AML Compute فقط للتدريب الموزع.

ملاحظة

مطلوب وحدات معالجة رسومات متعددة لتنشيط التدريب الموزع لأن مكون NCCL Backend Train PyTorch Model يستخدم احتياجات cuda.

  1. حدد المكون وافتح اللوحة اليمنى. قم بتوسيع قسم تشغيل الإعدادات .

    Screenshot showing how to set distributed training in runsetting

  2. تأكد من تحديد حساب AML لهدف الحوسبة.

  3. في قسم تخطيط الموارد ، تحتاج إلى تعيين القيم التالية:

    • عدد العقد : عدد العقد في هدف الحساب المستخدم للتدريب. يجب أن يكون أقل من أو يساويالحد الأقصى لعدد العقد مجموعة الحوسبة الخاصة بك. بشكل افتراضي هو 1 ، مما يعني وظيفة عقدة واحدة.

    • عدد العمليات لكل عقدة: عدد العمليات التي يتم تشغيلها لكل عقدة. يجب أن يكون أقل من أو يساويوحدة المعالجة الخاصة بالحوسبة الخاصة بك. بشكل افتراضي هو 1 ، مما يعني وظيفة عملية واحدة.

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

    Screenshot showing how to check compute cluster

يمكنك معرفة المزيد حول التدريب الموزع في Azure التعلم الآلي هنا.

استكشاف الأخطاء وإصلاحها للتدريب الموزع

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

Screenshot showing driver log

إذا فشل المكون الذي تم تمكين التدريب الموزع بدون أي 70_driver سجلات، فيمكنك التحقق من وجود 70_mpi_log تفاصيل الخطأ.

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

Screenshot showing mpi log

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

النتائج

بعد اكتمال تشغيل خط الأنابيب، لاستخدام النموذج للتسجيل، قم بتوصيل نموذج Train PyTorch بنموذجصورة النتيجة، للتنبؤ بقيم أمثلة الإدخال الجديدة.

ملاحظات فنية

المدخلات المتوقعة

الاسم النوع الوصف
نموذج غير مدرب غير مدربةModelDirectory نموذج غير مدرب ، يتطلب PyTorch
مجموعة بيانات التدريب دليل الصور مجموعة بيانات التدريب
مجموعة بيانات التحقق من الصحة دليل الصور مجموعة بيانات التحقق من الصحة للتقييم في كل حقبة

معلمات المكونات

الاسم النطاق النوع افتراضي الوصف
العهود >0 عدد صحيح 5 تحديد العمود الذي يحتوي على عمود التسمية أو النتيجة
حَجم الدُفعة >0 عدد صحيح ⁧⁩16⁧⁩ كم عدد الحالات التي يجب التدريب عليها دفعة واحدة
رقم خطوة الإحماء >=0 عدد صحيح 0 كم عدد الحقب الزمنية للإحماء التدريب
معدل التعلم >= مزدوج. ابسيلون قيمة Float 0.1 معدل التعلم الأولي لمحسن التدرج العشوائي.
بذور عشوائية أي عدد صحيح 1 بذرة مولد الأرقام العشوائية المستخدمة من قبل النموذج.
صبر >0 عدد صحيح 3 كم عدد الحقب الزمنية التي يجب التوقف المبكر عن التدريب
تردد الطباعة >0 عدد صحيح 10 التدريب على تكرار طباعة السجل عبر التكرارات في كل حقبة

المخرجات

الاسم النوع الوصف
نموذج مدرب النموذجالدليل نموذج مدرب

الخطوات التالية

راجع مجموعة المكونات المتوفرة ل Azure التعلم الآلي.