HyperAI

تكامل TorchX وAx: بحث أكثر كفاءة في الهندسة المعمارية العصبية متعددة الأهداف

منذ 2 أعوام
معلومة
Jiaxin Sun
特色图像

الهدف من NAS هو اكتشاف أفضل بنية للشبكة العصبية. يوفر دمج Torch وAx المساعدة لاستكشاف متعدد الأهداف للهندسة العصبية. في هذه المقالة، سنوضح استخدام NAS متعدد الأهداف Bayesian لتشغيل بحث آلي بالكامل عن الهندسة المعمارية العصبية.

تحسين متعدد الأهداف في Ax (التحسين متعدد الأهداف) يمكنه استكشاف البحث في الهندسة المعمارية العصبية بشكل فعال البحث في الهندسة المعمارية العصبية التنازل عن ميزة ممن أجل الحصول على أخرى ، مثل التوازن بين أداء النموذج وحجم النموذج أو زمن الوصول.

لقد تم تطبيق هذا النهج بنجاح من قبل شركة Meta في العديد من المنتجات مثل الذكاء الاصطناعي على الجهاز.

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

مقدمة عن الفأس

تستمر الشبكات العصبية في النمو من حيث الحجم والتعقيد.غالبًا ما يكون تطوير الهندسة المعمارية الحديثة عملية شاقة وتستغرق وقتًا طويلاً وتتطلب خبرة في المجال وجهودًا هندسية مكثفة.

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

على الرغم من أن كفاءة العينة منخفضة،لكن الطرق الساذجة مثل البحث العشوائي والبحث الشبكي لا تزال تحظى بشعبية كبيرة لتحسين المعلمات الفائقة وNAS. وجدت دراسة أجريت في NeurIPS 2019 و ICLR 2020 أن 80% من أوراق NeurIPS و 88% من أوراق ICLR استخدمت الضبط اليدوي أو البحث العشوائي أو البحث الشبكي لضبط معلمات نموذج التعلم الآلي.

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

Ax هي أداة عامة لتحسين الصندوق الأسود تسمح للمستخدمين باستخدام خوارزميات متطورة مثل التحسين البايزي بطريقة فعالة للعينة أثناء استكشاف مساحات البحث الكبيرة.

تستخدم Meta برنامج Ax في مجالات مختلفة.تشمل المجالات ضبط المعلمات الفائقة، وNAS، وتحديد إعدادات المنتج المثلى من خلال اختبار A/B على نطاق واسع، وتحسين البنية التحتية، وتصميم أجهزة AR/VR المتطورة.

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

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

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

يستكشف Meta هذه المقايضة بنجاح باستخدام NAS Bayesian متعدد الأهداف في Ax.ويتم استخدام هذه الطريقة بالفعل بشكل روتيني لتحسين نماذج التعلم الآلي على أجهزة الواقع المعزز والافتراضي.

بالإضافة إلى تطبيقات NAS، قامت Meta أيضًا بتطوير MORBO، وهي طريقة لتحسين الأنظمة البصرية الواقع المعزز متعددة الأهداف عالية الأبعاد.

NAS متعدد الأهداف Bayesian في Ax:

https://research.facebook.com/blog/2021/07/optimizing-model-accuracy-and-latency-using-bayesian-multi-objective-neural-architecture-search/

استخدام Ax لتنفيذ Nas متعدد الأهداف تلقائيًا بالكامل

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

  •   يمكن تخصيص التوازي والتسامح مع الأخطاء والعديد من الإعدادات الأخرى.
  •   مجموعة كبيرة من خوارزميات التحسين الحديثة.
  •   احفظ التجارب الجارية (SQL DB أو json) واستعادة التجارب من التخزين.
  •   يمكن توسيعه بسهولة إلى واجهات خلفية جديدة لتشغيل تقييمات تجريبية عن بعد.

فيما يلي رسم توضيحي من البرنامج التعليمي الخاص بـ Ax Scheduler والذي يلخص كيفية تفاعل Sceduler مع أي نظام خارجي يستخدم لتشغيل تقييمات التجارب.

برنامج تعليمي لجدولة الفأس:

https://ax.dev/tutorials/scheduler.html

لتشغيل NAS التلقائي باستخدام Scheduler، هناك حاجة إلى التحضيرات التالية:

  •   تعريف العداء.المسؤول عن إرسال نموذج بهندسة محددة ليتم تدريبه على المنصة التي نختارها. (على سبيل المثال، قد يكون Kubernetes مجرد صورة Docker محلية). سيستخدم البرنامج التعليمي التالي TorchX للتعامل مع نشر مهمة التدريب.
  •   تعريف المقياس.المسؤول عن الحصول على مقاييس موضوعية (مثل الدقة وحجم النموذج والزمن الكامن) من مهام التدريب. سيستخدم البرنامج التعليمي التالي Tensorboard لتسجيل البيانات، حتى تتمكن من استخدام مقاييس Tensorboard المضمنة مع Ax.

درس تعليمي

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

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

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

يستخدم هذا البرنامج التعليمي مكتبات PyTorch التالية:

  •  PyTorch Lightnig (لتحديد النموذج وحلقة التدريب)

https://github.com/Lightning-AI/lightning

  •  TorchX (لتشغيل وظائف التدريب عن بُعد/بشكل غير متزامن)

https://github.com/pytorch/torchx

  •  BoTorch (مكتبة التحسين البايزية التي تدعم خوارزمية Ax)

https://github.com/pytorch/botorch

للحصول على مثال كامل قابل للتنفيذ، راجع:

https://pytorch.org/tutorials/intermediate/ax_multiobjective_nas_tutorial.html

نتيجة

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

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

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

التصور

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

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

وفي الأشكال أدناه، يمكننا أن نرى أن النموذج يناسب بشكل جيد للغاية - التوقعات قريبة من النتائج الفعلية.وتغطي فترات الثقة المتوقعة 95% النتائج الفعلية بشكل جيد.

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

ملخص الفأس

  •   برنامج تعليمي يوضح كيفية تشغيل بحث معماري عصبي متعدد الأهداف آلي بالكامل باستخدام Ax.
  •   استخدم مجدول Ax لتشغيل عمليات التحسين تلقائيًا بطريقة غير متزامنة تمامًا (يمكن القيام بذلك محليًا) أو عن طريق نشر التجارب عن بُعد في مجموعة (فقط قم بتغيير تكوين مجدول TorchX).
  •  تساعد خوارزميات التحسين البايزية متعددة الأهداف المتطورة المقدمة في Ax في استكشاف التوازن بين دقة التحقق وحجم النموذج بشكل فعال.

الميزات المتقدمة

يتمتع Ax ببعض الميزات المتقدمة الأخرى التي لم تتم مناقشتها في البرنامج التعليمي أعلاه. يتضمن ما يلي:

التوقف المبكر 

عند تقييم تكوين مرشح جديد، غالبًا ما تكون منحنيات التعلم الجزئية متاحة أثناء تشغيل مهمة تدريب NN.

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

https://ax.dev/versions/latest/tutorials/early_stopping/early_stopping.html

مساحة بحث عالية الأبعاد

يستخدم البرنامج التعليمي التحسين البايزي مع عملية غاوسية قياسية للحفاظ على وقت التشغيل منخفضًا.

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

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

ابحث عن Hyperai01، لاحظ " باي تورشانضم إلى مجموعة التبادل الفني PyTorch للتعرف على أحدث التطورات وأفضل الممارسات في PyTorch!