نصف دقة
اكتشف كيف تعمل الدقة النصفية (FP16) على تسريع الذكاء الاصطناعي من خلال الحوسبة الأسرع، وتقليل استخدام الذاكرة، ونشر النماذج بكفاءة.
نصف الدقة، والمعروف أيضًا باسم FP16، هو تنسيق رقم عائم يستخدم 16 بت من الذاكرة لتمثيل رقم، على عكس التنسيقات الأكثر شيوعًا أحادية الدقة 32 بت (FP32) أو التنسيقات مزدوجة الدقة 64 بت (FP64). في سياق التعلُّم العميق، يقلل استخدام نصف الدقة بشكل كبير من بصمة الذاكرة والمتطلبات الحسابية للنموذج. تأتي هذه المفاضلة على حساب انخفاض النطاق العددي والدقة. ومع ذلك، جعلت التقنيات الحديثة، لا سيما التدريب متعدد الدقة، من FP16 حجر الزاوية في التعلم الآلي الفعال (ML) من خلال تمكين التدريب والاستدلال بشكل أسرع مع الحد الأدنى من التأثير على دقة النموذج.
كيفية عمل الدقة النصفية
يؤدي التحويل من FP32 إلى FP16 إلى تقليل الذاكرة المطلوبة لتخزين أوزان النموذج وعمليات التنشيط إلى النصف. يسمح ذلك بنماذج أكبر، أو أحجام دفعات أكبر، أو التدريب على وحدات معالجة الرسومات بذاكرة أقل. علاوةً على ذلك، صُممت وحدات معالجة الرسومات الحديثة، مثل تلك المزودة بوحدات NVIDIA Tensor Cores، خصيصًا لإجراء عمليات مصفوفة 16 بت بسرعات أعلى بكثير من عمليات 32 بت.
يتمثل التحدي الأساسي في FP16 في نطاقه العددي المحدود، والذي يمكن أن يؤدي إلى مشاكل مثل تلاشي التدرجات أثناء التدريب. ولمواجهة ذلك، يتم تنفيذ نصف الدقة دائمًا تقريبًا باستخدام نهج مختلط الدقة. تتضمن هذه الاستراتيجية إجراء معظم العمليات الحسابية في FP16 من أجل السرعة، ولكن باستخدام FP32 بشكل استراتيجي للعمليات الحرجة، مثل تحديثات الوزن وحسابات دالة خسارة معينة، للحفاظ على الاستقرار العددي. تقدم أطر التعلم العميق مثل PyTorch و TensorFlow دعمًا مدمجًا للتدريب التلقائي متعدد الدقة.
التطبيقات والأمثلة
يتم استخدام الدقة النصفية بشكل أساسي من خلال تقنيات الدقة المختلطة على نطاق واسع:
- تسريع تدريب النماذج: يمكن تسريع تدريب نماذج التعلم العميق الكبيرة، مثل تلك الخاصة بتصنيف الصور أو معالجة اللغات الطبيعية (NLP)، بشكل كبير باستخدام الدقة المختلطة، مما يقلل من وقت التدريب وتكاليفه. وغالباً ما تستخدم منصات مثل Ultralytics HUB هذه التحسينات أثناء جلسات التدريب السحابية.
- تحسين الاستدلال على اكتشاف الكائنات: يمكن تصدير النماذج مثل Ultralytics YOLO11 إلى تنسيقات مثل ONNX أو TensorRT بدقة FP16 لاستدلال أسرع في الوقت الحقيقي. وهذا أمرٌ بالغ الأهمية للتطبيقات التي تحتاج إلى إنتاجية عالية، مثل نظام الأمان الذي يحلل موجزات فيديو متعددة أو مراقبة الجودة على خط إنتاج عالي السرعة.
- النشر على الأجهزة محدودة الموارد: إن البصمة المنخفضة للذاكرة والتكلفة الحسابية لنماذج FP16 تجعلها مناسبة للنشر على منصات الذكاء الاصطناعي المتطورة مثل NVIDIA Jetson أو الأجهزة المحمولة التي تستخدم أطر عمل مثل TensorFlow Lite أو Core ML من Apple.
- تدريب نماذج اللغات الكبيرة (LLMs): يستلزم الحجم الهائل لنماذج مثل GPT-3 ونماذج الأساس الأخرى استخدام تنسيقات 16 بت لتناسب النماذج في الذاكرة وإكمال التدريب ضمن أطر زمنية معقولة.
نصف الدقة مقابل التنسيقات الأخرى
- Bfloat16 (BF16): صيغة بديلة مكونة من 16 بت تم تطويرها من قِبل Google، تخصص Bfloat16 عددًا أكبر من البتات للأس وعددًا أقل للوسيلة مقارنةً ب FP16. هذا يمنحها نفس النطاق الديناميكي الذي تمنحه FP32، مما يجعلها أكثر مرونة في التدفق السفلي والفيضان، ولكن على حساب دقة أقل. يتم استخدامه بكثافة في وحدات معالجة TPU من Google. يمكنك قراءة المزيد عنها على مدونة Google Cloud AI Blog.
- تكميم النموذج: في حين أن كلاهما من تقنيات تحسين النموذج، فإن التكميم الكمي للن موذج عادةً ما يحول أوزان الفاصلة العائمة (FP32 أو FP16) إلى تنسيقات صحيحة ذات بتات أقل، وهي في الغالب أعداد صحيحة 8 بت (INT8). يمكن أن يوفر هذا تسريعًا أكبر، خاصةً على وحدات المعالجة المركزية وبعض المسرّعات، ولكن غالبًا ما يتطلب عملية معايرة أكثر دقة، مثل التدريب الواعي بالتقدير الكمي (QAT)، لتجنب حدوث انخفاض كبير في أداء النموذج.
- أحادية الدقة (FP32): هذا هو التنسيق الافتراضي في معظم أطر التعلم العميق. يوفر دقة عالية ونطاقًا ديناميكيًا واسعًا، مما يجعله قويًا للتدريب. ومع ذلك، فهي أبطأ وأكثر استهلاكًا للذاكرة من تنسيق نصف الدقة، مما يجعلها أقل مثالية لنشر النماذج الكبيرة أو للتطبيقات التي تتطلب أقصى سرعة. تعتبر المفاضلة بين هذه التنسيقات من الاعتبارات الرئيسية، كما هو موضح في مقارنات النماذج المختلفة.