خطوات الاستخدام
الخطوة 1: فهم مفهوم التسخين الخطي (Linear Warmup). في تدريب نماذج التعلم العميق، يُستخدم التسخين الخطي لزيادة معدل التعلم تدريجيًا من قيمة صغيرة إلى القيمة المستهدفة خلال عدد معين من الخطوات الأولى من التدريب. هذا يساعد على استقرار التدريب في البداية ومنع التذبذبات الكبيرة في الخسارة. لحساب عدد خطوات التسخين، تحتاج إلى معرفة إجمالي خطوات التدريب (totalSteps) ونسبة التسخين (warmupRatio) التي تمثل الكسر من إجمالي الخطوات المخصصة للتسخين.
الخطوة 2: إدخال القيم المطلوبة. أدخل إجمالي عدد خطوات التدريب (totalSteps)، وهو العدد الكلي للتحديثات التي سيجريها المحسن أثناء التدريب. على سبيل المثال، إذا كنت تخطط لتدريب النموذج لمدة 100 حقبة (epoch) مع 1000 خطوة لكل حقبة، فإن totalSteps = 100,000. ثم أدخل نسبة التسخين (warmupRatio)، وهي قيمة بين 0 و 1، مثل 0.1 (أي 10% من الخطوات ستكون للتسخين).
الخطوة 3: حساب عدد خطوات التسخين. الصيغة بسيطة للغاية: warmupSteps = totalSteps × warmupRatio. ستقوم الآلة الحاسبة بضرب هاتين القيمتين لإعطائك عدد صحيح (غالبًا ما يتم تقريبه لأقرب عدد صحيح). على سبيل المثال، إذا totalSteps = 100,000 و warmupRatio = 0.1، فإن warmupSteps = 10,000 خطوة. هذا يعني أنه خلال أول 10,000 خطوة، سيزداد معدل التعلم خطيًا من قيمته الأولية (غالبًا 0) إلى القيمة المستهدفة، ثم يظل ثابتًا أو ينخفض وفقًا لجدول آخر بعد ذلك.
الخطوة 4: تطبيقات النتيجة. استخدم الناتج لتحديد جدول معدل التعلم في أطر العمل مثل PyTorch أو TensorFlow. على سبيل المثال، في PyTorch يمكنك استخدام torch.optim.lr_scheduler.LinearLR أو torch.optim.lr_scheduler.CosineAnnealingWarmRestarts مع معلمة warmup_steps. تأكد من أن الناتج عدد صحيح، وإذا لم يكن كذلك، فكر في التقريب لأقرب عدد صحيح أو استخدام floor/ceil حسب متطلبات النموذج.
أمثلة محلولة
تطبيقات عملية على خطوات التسخين الخطي بخطوات الحل كاملة.
الحل
نقوم بالحساب: warmupSteps = 200,000 × 0.05 = 10,000 خطوة. هذا يعني أن أول 10,000 خطوة سيتم فيها زيادة معدل التعلم تدريجيًا. في التدريب الفعلي، يُستخدم التسخين غالبًا في نماذج المحولات (Transformers) مثل BERT أو GPT لتحقيق استقرار أفضل. على سبيل المثال، عند تدريب نموذج لغوي كبير، تكون التدرجات الأولية كبيرة وقد تؤدي إلى قفزات كبيرة في الأوزان؛ لذا فإن البدء بمعدل تعلم صغير جدًا (مثلاً 0) وزيادته خطيًا يسمح للنموذج بالاستقرار تدريجيًا. في هذا المثال، بعد 10,000 خطوة يصل معدل التعلم إلى قيمته القصوى (مثلاً 1e-4). إذا تم تقليل warmupRatio إلى 0.01، لكانت الخطوات 2,000 فقط، مما قد يسبب عدم استقرار إذا كان النموذج كبيرًا. أما إذا زاد إلى 0.2، فسيكون 40,000 خطوة تسخين، مما قد يطيل وقت التدريب دون فائدة كبيرة. من المهم تجربة نسب مختلفة حسب حجم النموذج ومجموعة البيانات.
الحل
لـ 5,000 خطوة ونسبة 0.1: warmupSteps = 5,000 × 0.1 = 500 خطوة. هذا يعني أن 10% فقط من التدريب سيكون في مرحلة التسخين، وهو مناسب للنماذج الصغيرة التي تتقارب بسرعة. إذا استخدمنا نسبة 0.3، فسيكون 1,500 خطوة تسخين، أي 30% من التدريب. بالنسبة لنموذج صغير، قد يكون هذا مفرطًا، لأن التسخين الطويل يمنع النموذج من الوصول إلى معدل التعلم الأمثل لفترة أطول، مما يبطئ التقارب. عمليًا، في النماذج الصغيرة مع مجموعات بيانات صغيرة، غالبًا ما تكون نسب التسخين أقل من 0.1. قد يؤدي التسخين الطويل إلى تدريب غير فعال حيث يظل معدل التعلم منخفضًا جدًا لمعظم الخطوات. لذلك، يُنصح باختبار نسب مثل 0.05 إلى 0.1 للنماذج الصغيرة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة خطوات التسخين الخطي.
مثال 1: 200,000 × 0.05 = 10,000 خطوة تسخين
- إجمالي الخطوات
- 200,000
- نسبة التسخين (0-1)
- 0.05
مقارنة مثال 1: نسبة 0.01 → 2,000 خطوة
- إجمالي الخطوات
- 200,000
- نسبة التسخين (0-1)
- 0.01
مقارنة مثال 1: نسبة 0.2 → 40,000 خطوة
- إجمالي الخطوات
- 200,000
- نسبة التسخين (0-1)
- 0.2
مثال 2: 5,000 × 0.1 = 500 خطوة
- إجمالي الخطوات
- 5,000
- نسبة التسخين (0-1)
- 0.1
مثال 2 بنسبة 0.3: 1,500 خطوة و30% من التدريب
- إجمالي الخطوات
- 5,000
- نسبة التسخين (0-1)
- 0.3
حالة غير صحيحة: 333.3 → ceiling 334 وfloor 333
- إجمالي الخطوات
- 3,333
- نسبة التسخين (0-1)
- 0.1
نسبة صفر: بلا تسخين وكل الـ100 خطوة كاملة
- إجمالي الخطوات
- 100
- نسبة التسخين (0-1)
- 0