تراكم التدرج المحلي يسرع عملية التدريب بمقدار 1.7x
غالبًا ما تصطدم سرعة التدريب بحائط مسدود بسبب وقت الخمول في خطوط المعالجة (pipelines). يُطلق على وقت الخمول هذا اسم "الفقاعة" (bubble).
تعالج طريقة جديدة تسمى PACI هذه المشكلة، حيث تعمل على إزالة هذه الفقاعات وتسرع التدريب بمقدار 1.69x.
تستخدم معظم الفرق استراتيجية تسمى 1F1B-flush. تحافظ هذه الطريقة على اتساق الأوزان (weights) ولكنها تخلق فجوات فارغة ينتظر فيها النظام وصول البيانات. وتؤدي أوقات الانتظار هذه إلى إبطاء كل شيء.
تحاول طرق غير متزامنة (asynchronous) أخرى إصلاح ذلك، حيث تستخدم حيلًا معقدة مثل تخزين الأوزان (weight stashing) أو النسخ المكررة. تستهلك هذه الحيل الكثير من الذاكرة وغالبًا ما تجعل التدريب غير مستقر.
تسلك PACI مسارًا مختلفًا، حيث تستخدم تراكم التدرج المحلي (local gradient accumulation). يحافظ هذا على انشغال خط المعالجة دون الحاجة إلى مزامنة شاملة (global synchronization).
إليك سبب أهمية PACI:
- تضاهي استقرار الطرق القياسية.
- تستخدم نفس القدر من الذاكرة.
- تصل إلى سرعة التكوينات الأسرع ولكن الأكثر استهلاكًا للموارد.
- تقلل الوقت اللازم للوصول إلى الدقة بمقدار 1.69x.
في الاختبارات التي أجريت على GPT-2 Medium، وصلت PACI إلى الدقة المستهدفة بشكل أسرع بكثير. وهذا يوضح أنه يمكنك المقايضة بين كميات صغيرة من انحراف الأوزان (weight drift) ومكاسب هائلة في الكفاءة.
بالنسبة للفرق الهندسية، يعني هذا انخفاضًا بنسبة 40% في تكاليف الأجهزة. ستحصل على نتائج أسرع دون الحاجة لشراء المزيد من وحدات معالجة الرسومات (GPUs) أو إضافة المزيد من الذاكرة.
اختبر الباحثون ذلك على خط معالجة مكون من 8 مراحل باستخدام نماذج بأسلوب GPT. قد تحتاج إلى ضبط نافذة التراكم (accumulation window) إذا قمت بتغيير عمق خط المعالجة أو حجم الدفعة (batch size).
يمكنك اختبار ذلك بنفسك؛ حيث يوفر المؤلفون غلافًا للتراكم المحلي (local-accumulation wrapper) في مستودعهم (repository). استبدل مزامن الـ flush الحالي به لملاحظة زيادة السرعة.
Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk
Optional learning community: https://t.me/GyaanSetuAi