باختصار
الـ Mixed Precision Training هو أسلوب تدريب بيستخدم أرقام بدقة أقل (16-bit) مع أرقام بدقة عالية (32-bit) في نفس الوقت. الهدف إنه يسرّع التدريب ويوفّر ذاكرة من غير ما يأثر بشكل ملحوظ على جودة النتائج.
بالتفصيل
تخيل إنك رسام وعندك نوعين من الفُرش: فرشة رفيعة جداً للتفاصيل الدقيقة وفرشة عريضة للمساحات الكبيرة. لو استخدمت الفرشة الرفيعة في كل حاجة، اللوحة هتطلع مظبوطة بس هتاخد وقت طويل أوي. الذكاء إنك تستخدم الفرشة العريضة للمساحات الكبيرة والرفيعة للتفاصيل المهمة بس. الـ Mixed Precision Training بيعمل نفس الحاجة مع الأرقام.
الكمبيوتر بيخزّن الأرقام بطرق مختلفة. الطريقة التقليدية هي FP32 (32-bit) — دقيقة جداً بس بتاخد مساحة في الذاكرة وبطيئة في الحسابات. الطريقة الأسرع هي FP16 (16-bit) — أقل دقة بس أسرع بكتير وبتاخد نص المساحة.
في الـ Mixed Precision Training، بتستخدم الاتنين مع بعض:
- العمليات الحسابية الأساسية (ضرب المصفوفات) بتتعمل بـ FP16 — عشان السرعة
- الأوزان الرئيسية (Master Weights) بتتخزن بـ FP32 — عشان الدقة
- حساب الـ Loss بيتعمل بـ FP32 عشان نتجنب مشاكل الأرقام الصغيرة
وبيستخدم تقنية اسمها Loss Scaling — بتكبّر قيمة الـ Loss قبل ما تحسب التدرجات عشان الأرقام الصغيرة ما تضيعش في الـ FP16، وبعدين بتصغّرها تاني بعد الحساب.
النتيجة إن التدريب بيكون أسرع بحوالي 1.5 لـ 3 مرات وبيستهلك ذاكرة أقل بكتير، وده بيخليك تقدر تدرب نماذج أكبر أو تستخدم Batch Size أكبر على نفس الـ GPU. الكروت الحديثة زي NVIDIA A100 وH100 عندها وحدات متخصصة (Tensor Cores) بتسرّع عمليات الـ FP16 بشكل كبير.
مثال عملي
لو بتدرّب نموذج BERT بالطريقة العادية (FP32) على GPU واحدة، التدريب بياخد 5 أيام وBatch Size أقصى 8. لما تشغّل Mixed Precision Training، نفس التدريب بياخد يومين بس وتقدر تستخدم Batch Size = 16 أو أكتر، والنتيجة النهائية بتكون تقريباً نفسها.
مصطلحات مرتبطة
- التكميم (Quantization)
- تجميع التدرجات (Gradient Accumulation)
- حجم الدفعة (Batch Size)
- المُحسّن (Optimizer)
قرمصيص للأخبار أخبار الذكاء الاصطناعي بالعربي