مشكلتان في طرفي التدريب
مشكلة الخطوات المبكرة: الأوزان الجديدة لا تستطيع تحمّل خطوات كبيرة
عند الخطوة 0، تبدأ كل الأوزان كأرقام عشوائية صغيرة مأخوذة من توزيع قريب من الصفر. تبقى التفعيلات قريبة من الصفر. تحمل التدرجات معلومات ضئيلة جداً عن الحل النهائي. إذا طبقنا معدل التعلم الذروي على هذه التدرجات، يقفز النموذج بعيداً عن نقطة التهيئة في اتجاهات لا تحمل بنية مفيدة.
ارتكبت ANDREA-120M v1 هذا الخطأ. بدون إحماء. استخدمت الخطوة 1 lr = 0.0003 على أوزان تم تهيئتها حديثاً. النتيجة: استقر النموذج في حوض معلمات سيء خلال بضع مئات من الخطوات. بدت أرقام الخسارة معقولة؛ لكن العينات أنتجت حلقات تكرارية بحلول الخطوة 80K ولم تتعافَ أبداً.
مشكلة الخطوات المتأخرة: الخطوات الكبيرة لا تصقل الحل
بحلول الخطوة 100K، يكون النموذج قد تعلم البنية الخشنة. تحمل التدرجات الآن إشارة دقيقة: أي وزن للتوكن يحتاج إلى تعديل طفيف، وأي رأس انتباه يحتاج إلى إعادة توازن بسيط. تطبيق معدل تعلم أقصى في هذه المرحلة يتجاوز كل تعديل دقيق، مما يؤدي إلى التذبذب حول النقطة المثلى دون الاستقرار.
مشكلتان في طرفين متعاكسين من التدريب. جدول واحد، منطقتان: صعود تدريجي، وهبوط سلس.
الإحماء الخطي: أول 2000 خطوة
الصيغة
يستخدم ANDREA-120M v2 الإحماء الخطي على مدى 2000 خطوة:
lr(t) = lr_scheduled(t) * min(1, (t + 1) / warmup_steps)
حيث t هو رقم الخطوة (مفهرس من 0)، warmup_steps = 2000، وlr_scheduled(t) هو ما يحدده جدول جيب التمام متجاهلاً مرحلة الإحماء.
قراءة المعادلة:
- عند t = 0: lr = lr_scheduled(0) min(1, 1/2000) = lr_scheduled(0) 0.0005. خطوة أولى صغيرة جداً.
- عند t = 1000: lr = lr_scheduled(1000) min(1, 1001/2000) = lr_scheduled(1000) 0.5. نصف القوة.
- عند t = 2000: lr = lr_scheduled(2000) min(1, 2001/2000) = lr_scheduled(2000) 1.0. القوة الكاملة.
- عند t > 2000: يحافظ المشبك على المضاعف عند 1، ولم يعد الإحماء يؤثر على أي شيء، ويتولى التضاؤل الجيبي وحده.
يمنح المنحدر الخطي من الصفر النموذج 2000 خطوة لتشكيل تمثيلات خشنة قبل أن يرى AdamW وتقليم التدرج تحديثات بقوة كاملة. بحلول الخطوة 2000، تكون الأوزان قد انحرفت بما يكفي بحيث لم يعد lr الذروة يدفعها إلى حوض سيء.
حساب معدل التعلم أثناء الإحماء
التضاؤل الجيبي بعد الإحماء
المنحنى
بعد انتهاء مرحلة الإحماء عند الخطوة 2000، يتبع معدل التعلم منحنى جيبي من القيمة القصوى إلى الصفر خلال الخطوات المتبقية:
lr(t) = lr_min + (lr_peak - lr_min) 0.5 (1 + cos(pi * progress))
حيث progress = (t - warmup_steps) / (total_steps - warmup_steps). عند progress = 0 (بعد الـ warmup مباشرة)، cos(0) = 1، وlr = peak. عند progress = 1 (الخطوة الأخيرة)، cos(pi) = -1، وlr = lr_min (عادةً 0 أو قيمة صغيرة جداً).
لماذا الـ Cosine وليس Linear أو Exponential؟
يبدأ انحدار Cosine ببطء (المنحنى شبه مسطح قرب القيمة القصوى)، ثم يتسارع في المنتصف، ثم يتباطأ مرة أخرى قرب الصفر. ثلاث فوائد:
1. استقرار قرب القيمة القصوى. الخطوات الأولى بعد الـ warmup لا تزال تحصل على قيمة lr شبه كاملة، مما يسمح للنموذج باستخدام فترة طويلة من معدل التعلم العالي لبناء التمثيلات.
2. انتقال سلس عبر المنتصف. لا توجد قفزات مفاجئة يجب على AdamW التعامل معها.
3. هضبة قرب الصفر. الخطوات النهائية تحصل على lr صغير جداً للتلميع الدقيق، مشابه للتلدين المحاكى.
يتم تدريب ANDREA-120M لإجمالي 200K خطوة؛ 198K منها تقع في منطقة الاضمحلال الكوسيني بعد فترة الإحماء البالغة 2000 خطوة.
إعادة التشغيل الدافئة لـ ANDREA-12M عند الخطوة 25K
الهضبة
تم تدريب ANDREA-12M لـ 60K خطوة باستخدام الاضمحلال الكوسيني من ذروة lr = 0.0004. حوالي الخطوة 22K، استقر الفقد عند EMA ~2.4. كان الاضمحلال الكوسيني قد خفض lr إلى ~0.00015. استمر الـ bandit في تقديم بيانات متنوعة؛ توقف النموذج عن التحسن.
التشخيص: لقد انخفض lr كثيرًا لدرجة أن النموذج لم يعد قادرًا على الخروج من الحوض الحالي. كانت بيانات Hermes على وشك الدخول إلى المنهج (الخطوة 25K)، مما سيجلب 590K محادثة جديدة. كان النموذج بحاجة إلى طاقة لاستيعاب صدمة البيانات هذه.
إعادة التشغيل
عند الخطوة 25K، نفّذ الجدول إعادة تشغيل دافئة: رفع lr من 0.00015 (القيمة المتضائلة) إلى 0.0004 (الذروة الأصلية)، ثم استئناف الاضمحلال الكوسيني على الخطوات المتبقية.
أطلق Loshchilov & Hutter (2017) على هذه التقنية اسم "SGDR" (الانحدار التدرجي العشوائي مع إعادة التشغيل الدافئ). الفكرة: قيمة lr عالية تضيف طاقة حركية كافية للخروج من الحوض المحلي واستكشاف الأحواض المجاورة؛ ثم يعيد الاضمحلال الكوسيني التلدين إلى حوض أفضل.
النتيجة. انخفضت قيمة Loss EMA من 2.40 إلى 2.10 خلال الـ10K خطوة التالية بعد إعادة التشغيل. تم شحن النموذج عند الخطوة 43.6K بقيمة SMMA loss بلغت 2.0، مما يدل على بنية متماسكة للأسئلة والأجوبة.
اختارت ANDREA-120M v2 عدم استخدام إعادة التشغيل الدافئ: مع توفر 200K خطوة وعدد أكبر بكثير من المعاملات، أنتج الاضمحلال الرتيب السلس تقاربًا أكثر استقرارًا. تعمل إعادة التشغيل بشكل أفضل عندما يكون التدريب قصيرًا ويتزامن الاستقرار مع تغيّر معروف في البيانات.
تشخيص فشل v1
خيارات الجدولة في التطبيق العملي
الأنشطة المجاورة
ثلاثة إخوة مرتبطون بجدول معدل التعلم:
- النشاط 10: AdamW. يمنح التسخين وقتًا لتصحيح التحيز في AdamW ليستقر. بدون التسخين، يؤدي التضخيم بمقدار 10 أضعاف في الخطوة 1 إلى تضخيم أي ضوضاء تحملها التدرجات؛ أما مع التسخين، فيصل المضاعف إلى الإشارة الحقيقية.
- النشاط 12: قص التدرج. يحد قص التدرج من معيار L2 للتدرج عند 1.0 قبل AdamW. يخفف التسخين lr؛ ويخفف القص g. معًا يحافظان على سلامة الخطوات المبكرة حتى في المناهج المعرضة للصدمات.
- النشاط 22: حفظ نقاط التحقق. يتطلب إعادة التشغيل الدافئ تحميل حالة المُحسِّن (m، v، عداد الخطوات) من نقطة تحقق، ثم تعديل الجدول أثناء التشغيل. يوضح إعادة تشغيل ANDREA-12M عند الخطوة 25K هذا الأمر؛ وقد استغرق الأمر محاولتين لضبط منطق تحميل الحالة بشكل صحيح.
يشكل الجدول الزمني والمُحسِّن والقص مثلث الاستقرار. إسقاط أحد الرؤوس يؤدي إلى تكرار ANDREA لانهياره في الإصدار الأول.