HyperAI

سلاح PyTorch القاتل: تحسين EDL في مجموعات GPU باستخدام AdaptDL

منذ 4 أعوام
العلوم الشعبية
معلومة
Yang Bai
特色图像

EDL تعني Elastic Deep Learning، وهي عبارة عن إطار عمل لتدريب الشبكات العصبية العميقة يمكنه تعديل درجة التوازي بشكل ديناميكي.إنه يدعم إدارة مجموعة متعددة المستأجرين، ويمكنه موازنة وقت انتظار تدريب النموذج وإكماله، ويمكنه تحسين استخدام الموارد.

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

إذا أخذنا نموذج BERT كمثال، فإن عملية التدريب على وحدة معالجة الرسوميات غالبًا ما تتجاوز 2000 ساعة، بينما يستغرق تدريب نماذج ResNet وVGG 100 ساعة على الأقل.

وفقًا لتكاليف الحوسبة السحابية الحالية، قد تصل تكلفة تدريب النموذج إلى آلاف أو حتى عشرات الآلاف من اليوانات.من أجل التحكم في تكلفة تدريب النموذج،ظهرت مجموعات مشاركة موارد الحوسبة. ما نقدمه اليوم هو AdaptDL الذي طوره فريق Petuum CASL، والذي يعمل على تحسين EDL بشكل كبير في مجموعات GPU.

تحديات المجموعات المشتركة

مع مجموعات مشتركة،يمكن لمستخدمين متعددين إرسال مهام التدريب النموذجية بشكل فردي.

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

ومع ذلك، فإن المجموعات المشتركة تعاني أيضًا من بعض المشاكل الخاصة بها.

  تتضمن التحديات النموذجية التي تواجهها المجموعات المشتركة ما يلي:

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

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

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

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

يقوم AdaptDL بتبسيط وتسريع تدريب النموذج على الأجهزة المحلية والمجموعات المشتركة

AdaptDL يحل مشاكل المجموعات المشتركة

لمعالجة العيوب المرتبطة بالحوسبة المجمعة للمؤسسات والمجموعات المشتركة، أنشأ فريق Petuum CASL AdaptDL.لتبسيط وتسريع التدريب الموزع على المجموعات المشتركة.

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

ويعالج المشاكل المذكورة أعلاه في المجموعات المشتركة وله المزايا التالية:

1. تحسين استخدام مجموعات وحدة معالجة الرسومات المشتركة:يمكن لـ AdaptDL تحليل جميع مهام تدريب النموذج ومعرفة كيفية أداء المهام المختلفة ضمن تكوينات موارد وحدة معالجة الرسومات المختلفة. باستخدام المعرفة المكتسبة، يمكن لجدول AdaptDL تكوين موارد وحدة معالجة الرسومات لمهام التدريب المختلفة بشكل عادل وفعال. مع زيادة عدد مهام التدريب وفهم خصائص أداء المهام المختلفة بشكل أفضل، سيتعلم AdaptDL كيفية إعادة تكوين وحدة معالجة الرسومات (GPU) بمرونة.

2. تقليل تكلفة تدريب نموذج السحابة:يمكن لـ AdaptDL توفير عدد معتدل من مثيلات وحدة معالجة الرسومات في السحابة لتجنب التكاليف غير الضرورية. يمكن لـ AdaptDL أيضًا توسيع المجموعة تلقائيًا عند استخدام أحجام دفعات أكبر أثناء التدريب.

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

تستغرق النماذج التي تستخدم AdaptDL وقتًا أقل للتدريب في المتوسط مقارنةً بـ Optimus و Tiresias

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

تظهر الممارسة في Petuum أنه بمساعدة نماذج تدريب المجموعة المشتركة AdaptDL،في المتوسط، كانت أوقات الإكمال أسرع بمقدار 2-3 مرات وكانت التكاليف أقل بمقدار 3 مرات عند استخدام Spot Instances في AWS.

يبدأ

يمكن استخدام AdaptDL في وضعين.

1. جدولة المجموعة:يسمح بتشغيل مهام متعددة على مجموعة Kubernetes. باستخدام مكتبة AdaptDL Python، يمكن دمج مجدول AdaptDL في كود PyTorch لتحديد العدد الأمثل لوحدات معالجة الرسومات وحجم دفعة التدريب تلقائيًا.

2. التدريب المستقل:قم بتدريب النماذج باستخدام حجم الدفعة المتكيف ومعدل التعلم على أي مجموعة أو جهاز محلي متعدد وحدات معالجة الرسومات. يمكن لـ AdaptDL أن يحدد تلقائيًا متى يجب استخدام حجم دفعة أكبر لتسريع تدريب النموذج.

  التدريب باستخدام مكتبة AdaptDL Python:

تعمل مكتبة Adaptdl Python على تبسيط كود تدريب PyTorch.جعل حجم الدفعة ومعدل التعلم متكيفين.لا توجد إعدادات إضافية مطلوبة.

python3 –m pip install adaptdl

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

يوفر AdaptDL واجهة بيانات موزعة موازية تشبه واجهة PyTorch الأصلية، مما يجعل من السهل تعديل كود التدريب الموزع الحالي.

الخطوة الأولى:

يستخدم adaptdl.torch.AdaptiveDataLoader  بديل torch.utils.data.DataLoader .

يمكن لـ AdaptiveDataLoader تحديد حجم الدفعة الأمثل تلقائيًا أثناء التدريب، استنادًا إلى معدل إنتاج البرنامج والكفاءة الإحصائية. عند تنفيذ نقطة تفتيش، يمكن أيضًا حفظ الحالة، بحيث يمكن استئناف التدريب من حيث توقف بعد إعادة التشغيل.

محمل القطار.حجم الدفعة التلقائي (1024)  صنع AdaptDL  يمكنك تحديد حجم الدفعة الأكثر فعالية للتدريب تلقائيًا،الحد الأقصى لحجم الدفعة العالمية في جميع عمليات التدريب هو 1024.

التالي:

يستخدم adaptdl.torch.AdaptiveDataParallel  نموذج الحزمة.

adaptdl.torch.AdaptiveDataParallel  أثناء عملية التدريب، يتم حساب مقياس الضوضاء المتدرجة، والذي يمكن استخدامه لحساب الكفاءة الإحصائية. عندما يتغير حجم الدفعة،AdaptiveDataParallel  سيتم تعديل معدل التعلم تلقائيًا وفقًا للقاعدة.

افتراضيا،AdaptiveDataParallel   الخوارزمية المستخدمة هي AdaScale والتي تعمل بشكل جيد في مجموعة متنوعة من المهام.

أثناء نقطة التفتيش،AdaptiveDataParallel  يمكن حفظ معلمات النموذج وحالة المحسِّن وحالة جدول LR تلقائيًا، ويمكن استعادة هذه الإعدادات بنقرة واحدة بعد إعادة تشغيل التدريب.

باستخدام التغييرات المذكورة أعلاه، يمكن للمستخدمين تشغيل كود التدريب على أجهزتهم المحلية أو في مجموعة موزعة. يختار AdaptDL حجم الدفعة ومعدل التعلم المناسبين للتدريب الموزع بشكل أسرع وينفذ تلقائيًا تراكمًا متدرجًا للتغلب على مشكلات الشبكة.مقارنة تدريب YOLOv3 على الآلات ذات الحجم الدفعي التكيفي واليدوي. يتمتع التكيف بميزة كبيرة فيما يتعلق بالتدريب ومقارنة حجم الدفعة.

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

  إدارة المجموعة باستخدام جدول AdaptDL:

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

بفضل المرونة، عندما يكون معدل الخمول في المجموعة مرتفعًا، سيتم توسيع مهمة التدريب لاستخدام وحدات معالجة رسومية إضافية؛ عندما يكون معدل استخدام المجموعة مرتفعًا، فسيتم تقليصه لاستخدام موارد وحدة معالجة الرسوميات الأقل بدلاً من إيقاف مهمة التدريب مؤقتًا.

يوفر جدول AdaptDL أيضًا وظائف أخرى،مثل تنظيم مجموعات لتجنب التنازع على الشبكة بين المهام المختلفة والحفاظ على العدالة بين مهام التدريب المتنافسة.

بفضل التنسيق بين المجدول وكل مهمة تدريب، يمكن لـ AdaptDL الحفاظ على استخدام المجموعة المشتركة بكفاءة.

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

يمكن تثبيت جدول AdaptDL على أي مثيل Kubernetes باستخدام Helm بنقرة واحدة. الأمر هو كما يلي:

helm install adaptdl adaptdl-sched \
-— repo https://github.com/petuum/adaptdl/raw/helm-repo \
-— namespace adaptdl — create-namespace \
-— set docker-registry.enabled=true

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

مثال على تتبع مجموعة AdaptDL

يُظهر الرسم البياني الشريطي الملون عدد حالات الحوسبة المخصصة لمهام مختلفة. يمكن لـ AdaptDL تحسين عدد حالات الحوسبة التي تحصل عليها كل مهمة بشكل ديناميكي.

مع AdaptDL، تعمل مهام تدريب PyTorch بشكل أسرع بمقدار 2-3 مرات على المجموعات المشتركة. بالإضافة إلى ذلك، يدعم جدول AdaptDL أيضًا مثيلات AWS spot، مما يقلل التكاليف بمقدار 3 مرات.

أخيرًا، يمكنك أيضًا استخدام AdaptDL وNNI لتسريع أحمال عمل ضبط المعلمات الفائقة (AdaptDL + NNI Post).

عنوان المشروع:

https://github.com/petuum/adaptdl

تمت ترجمة هذه المقالة من مدونة PyTorch Medium.