رؤى المستقبل

ديون: مُحسِّن مايكروسوفت القابل للتطوير والفعال من حيث الاتصالات للتعلم الآلي الموزع

AI
رؤى الذكاء والمستقبل
· · 3 دقائق قراءة
ديون: مُحسِّن مايكروسوفت القابل للتطوير والفعال من حيث الاتصالات للتعلم الآلي الموزع

يهدف Dion، وهو مُحسِّن تم تطويره بواسطة Microsoft، إلى معالجة الاختناقات في الاتصال الموجودة في تدريب التعلم الآلي الموزع، خاصةً عند استخدام تحديثات متعامدة. بناءً على الأساس الذي وضعه Muon، يقدم Dion طريقة أكثر قابلية للتطوير لتقويم المصفوفات الوزنية عبر أجهزة متعددة، مما يتيح تقاربًا أسرع للنماذج في سيناريوهات التدريب واسعة النطاق. ستتعمق منشور المدونة هذا في الميزات الرئيسية وتفاصيل التنفيذ وإرشادات الاستخدام الخاصة بمُحسِّن Dion، بناءً على الوثائق الرسمية من مستودع Microsoft GitHub.

الميزات الرئيسية لـ Dion

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

  • تحديثات التقويم القابلة للتطوير: يوفر Dion تقاربًا أسرع للنماذج عن طريق حساب تحديثات الوزن التقويمية.
  • كفاءة الاتصال: يقلل من النفقات العامة للاتصال من خلال العمل مباشرة على المصفوفات المقسمة، وتجنب الحاجة إلى إعادة بناء المصفوفات الكاملة.
  • ضغط منخفض الرتبة: يتضمن Dion معلمة فرعية ذات رتبة، مما يتيح حساب وتقليل الاتصالات من خلال تقريب منخفض الرتبة. آلية التغذية المرتدة للخطأ تخفف من فقدان المعلومات.
  • دعم التوازي: يدعم Dion جهازًا واحدًا وPyTorch DDP وPyTorch FSDP2 parallelization. والجدير بالذكر أنه مصمم للعمل مع FSDP2 + TP بينما لا يدعم Muon هذا المزيج مباشرةً.
  • معالجة الدفعات والتداخل: يعالج المُحسِّن المعلمات على شكل دفعات ويتداخل بينها لتداخل الحساب مع الاتصال، مما يحسن الأداء.

التنفيذ والاستخدام

يتوفر المُحسِّن Dion كحزمة pip، مما يبسط تكاملها في المشاريع الحالية:

pip install git+https://github.com/microsoft/dion.git

يتطلب استخدام Dion تجميعًا دقيقًا للمعلمات، حيث إنه مصمم خصيصًا للأوزان المصفوفة ثنائية الأبعاد. تحتاج المعلمات الأخرى (التحيزات والتضمينات والتطبيع) إلى محسِّنات منفصلة مثل Lion أو AdamW. فيما يلي بعض الاعتبارات الرئيسية لتجميع المعلمات:

  • أوزان المصفوفة: بشكل أساسي لطبقات nn.Linear. يجب استخدام Dion أو Muon، والاستفادة من تغيير حجم معدل التعلم التلقائي المعتمد على الشكل.
  • متجهات التحيز وطبقات التطبيع: استخدم Lion أو AdamW.
  • طبقات التضمين: تعامل معها كمجموعة من المتجهات أحادية الأبعاد واستخدم Lion أو AdamW (سيتم تشغيل Dion بدون خطأ، ولكنه سيعمل بشكل سيئ).
  • طبقات إلغاء التضمين (LM Head): تعامل معها على أنها متجهات أحادية الأبعاد وقم بتطبيق معدل تعلم أصغر (مهم للأداء؛ استخدم Lion أو AdamW). التعريف اليدوي ضروري.
  • طبقات الالتواء: دعم تجريبي في Muon باستخدام flatten=True. Dion لا يدعم هذه.

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

يعد التكوين المناسب لشبكة الجهاز أمرًا بالغ الأهمية لتشغيل Dion بكفاءة في البيئات الموزعة. يستخدم Dion كائنات DeviceMesh لفهم مخطط التوازي الخاص بالنموذج.

  • شبكة الجهاز لـ Dion: تدعم ما يصل إلى بعدين للشبكة المقسمة (outer_shard_mesh وinner_shard_mesh) وأي عدد من أبعاد الشبكة المنسوخة الموازية للبيانات. تستفيد شبكة التقسيم الداخلية من التوازي الموتر داخل العقدة. يمكن حذف الشبكات غير المستخدمة.
  • شبكة الجهاز لـ Muon: تستخدم شبكة جهاز أحادية الأبعاد إما لتقسيم المعلمات (إلغاء التقسيم بكفاءة عبر الكل إلى الكل) أو توزيع العمل (تجميع النتائج بالكامل). تقسيم ثنائي الأبعاد غير مدعوم - استخدم Dion.
  • مجموعة عمليات DDP: يتم دعم DDP أيضًا، باستخدام مجموعة عمليات PyTorch. إذا لم يتم إعطاء أي مجموعة عمليات، فسيقوم Dion بتنفيذ نفس العمل بشكل متكرر عبر جميع وحدات معالجة الرسومات.

مزامنة التدرج الموازي للبيانات المضغوطة

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

  • replicate_mesh_grad_sync=True: يقلل Dion من حالات الضغط منخفض الرتبة، مما يؤدي إلى زخم منفصل (يحتاج إلى مزامنة صريحة قبل التدقيق).
  • replicate_mesh_grad_sync=False: يتوقع Dion أن يكون قد تمت مزامنة التدرجات بالفعل.

عند الاستخدام مع HSDP (التقسيم الهجين الموازي للبيانات)، مرر فقط الشبكة الفرعية المقسمة إلى fully_shard() إذا كان Dion يدير مزامنة التدرج.

التدقيق

قبل حفظ نقطة التدقيق، يجب استدعاء optimizer.synchronize_for_checkpoint() لمزامنة حالات المُحسِّن بسبب الزخم المنفصل لـ Dion، مما يضمن الاتساق. تتطلب أنواع DTensor حفظ نقاط التدقيق باستخدام torch.distributed.checkpoint.

أفضل الممارسات والميزات التجريبية

  • جزء رتبة Dion: المعلمة الفائقة الأكثر أهمية، والتحكم في ضغط الرتبة المنخفضة. قم بتجربة للعثور على القيمة المثلى لحجم النموذج الخاص بك.
  • Lion مقابل AdamW: Lion يؤدي بشكل عام أداءً أفضل للمعلمات القياسية عند دمجه مع Dion/Muon.
  • تقسيم ثنائي الأبعاد: عند استخدام FSDP وTP، قسّم على طول أبعاد مصفوفة مختلفة.
  • تغيير حجم معدل التعلم: يقوم Dion بتغيير حجم معدل التعلم تلقائيًا. يدعم Muon أيضًا عامل القياس Moonshot AI.
  • الميزات التجريبية: الدقة المختلطة و Dion الأسرع من خلال خوارزمية Cholesky QR (CQR).

خاتمة

يقدم Dion نهجًا واعدًا لتوسيع نطاق تدريب التعلم الآلي الموزع من خلال توفير مُحسِّن فعال من حيث الاتصال يستفيد من التحديثات التقويمية وضغط الرتبة المنخفضة. إن فهم متطلباته المحددة لتجميع المعلمات وتكوين شبكة الجهاز وإجراءات التدقيق أمر بالغ الأهمية لاستخدام Dion بفعالية وتحقيق الأداء الأمثل في مهام سير العمل التدريبية الموزعة.


المصدر: Microsoft

مقالات ذات صلة

التعليقات

البريد لن يُنشر - يُستخدم للصورة الرمزية فقط

جاري تحميل التعليقات...