BFloat16 (BF16)
استكشف BFloat16 (BF16) للتعلم العميق. تعرّف على كيفية تعزيز هذا التنسيق ذي الـ 16 بت لسرعة التدريب والكفاءة في نماذج مثل Ultralytics YOLO26.
BFloat16، أو Brain Floating Point، هو تنسيق أرقام حاسوبي مكون من 16 بت تم تحسينه بشكل مكثف لتطبيقات تعلم الآلة. تم تطويره في الأصل بواسطة فريق Google Brain، وهو يمثل نهجاً متخصصاً للتعامل بكفاءة مع مصفوفات ضخمة من أوزان النماذج والتدرجات. على عكس الفاصلة العائمة القياسية ذات 32 بت (FP32)، تخصص الخصائص الرياضية لـ BFloat16 8 بت للأس و7 بت للكسر (المانتيسة). يوفر هذا الهيكل الفريد نفس النطاق الديناميكي تماماً مثل FP32 ولكن بدقة منخفضة، مما يقلل بشكل فعال متطلبات الذاكرة لهياكل التعلم العميق المعقدة دون المعاناة من عدم الاستقرار العددي الذي يظهر غالباً في تنسيقات 16 بت القديمة.
Link to this sectionBFloat16 مقابل Float16 (FP16): الاختلافات الرئيسية#
عند مقارنة تنسيقات الدقة النصفية، يعد التمييز بين BF16 وFP16 القياسي (بناءً على معيار IEEE للحساب بالفاصلة العائمة) أمراً بالغ الأهمية لمهندسي الذكاء الاصطناعي.
يستخدم FP16 5 بت للأس و10 بت للمانتيسة. يمنح هذا الهيكل FP16 دقة عددية أكبر ولكن نطاقاً ديناميكياً أضيق بكثير. ونتيجة لذلك، تتطلب سير عمل تدريب FP16 غالباً تقنيات تحجيم الخسارة المعقدة لمنع تلاشي التدرج - وهو سيناريو تصبح فيه تحديثات التدرج الصغيرة أصفاراً. يحل الأس المكون من 8 بت في BFloat16 هذه المشكلة من خلال مطابقة النطاق الديناميكي لـ FP32. وهذا يعني أنه يمكن للمطورين دمج BF16 بسلاسة في الشبكات العصبية دون تعديل المعاملات الفائقة أو تحجيم الخسارة، مما يجعله التنسيق المفضل لتحقيق استقرار تدريب نماذج اللغة الكبيرة (LLMs) الضخمة. يمكن استكشاف المواصفات العددية التفصيلية بشكل أكبر في صفحة BFloat16 على Wikipedia.
Link to this sectionمزايا تدريب التعلم العميق#
تسلط الدراسات الحديثة حول BFloat16 لتدريب التعلم العميق الضوء على كيفية تسريعها بشكل كبير لعملية التدريب الشاملة. من خلال تقليل عرض نطاق الذاكرة المطلوب لجلب وتخزين الموترات، يسمح BFloat16 للممارسين بمضاعفة أحجام الدفعات أو التوسع لتصل إلى نماذج أساسية ذات مليارات المعلمات على الأجهزة الحالية. ومن المثير للاهتمام أن الانخفاض الطفيف في دقة المانتيسة يعمل كتقنية تنظيم خفيفة أثناء التدريب، والتي يمكن أن تحسن أحياناً قدرة النموذج على التعميم على بيانات غير مرئية. إنه حالياً العمود الفقري لأنظمة الدقة المختلطة الحديثة.
Link to this sectionتوافق الأجهزة والتنفيذ#
للاستفادة الكاملة من مزايا سرعة BFloat16، يلزم وجود دعم مخصص للأجهزة. إنه يحقق أداءً عالياً على Cloud TPUs ويتم تسريعه محلياً على وحدات معالجة الرسومات NVIDIA الحديثة بدءاً من معمارية NVIDIA Ampere (مثل RTX 30-series وA100 وبطاقات محطات العمل الاحترافية مثل RTX A6000) وصولاً إلى أجيال NVIDIA Hopper وBlackwell الأحدث.
باستخدام أطر عمل مع PyTorch Automatic Mixed Precision (AMP)، يمكن للمطورين استخدام torch.autocast لتوجيه العمليات الرياضية المدعومة تلقائياً عبر نوى Tensor المخصصة لـ BF16. وهذا يعظم الإنتاجية مع تقليل زمن انتقال الاستدلال.
Link to this sectionتطبيقات الذكاء الاصطناعي في العالم الحقيقي#
أصبح BFloat16 سريعاً معياراً صناعياً عبر العديد من المجالات:
- الذكاء الاصطناعي التوليدي وLLMs: تقوم المنظمات البحثية التي تدرب أحدث النماذج التوليدية من OpenAI أو Claude من Anthropic بتدريب شبكات متطورة باستخدام BFloat16. علاوة على ذلك، يستخدمون BF16 للتخزين المؤقت لـ KV أثناء الاستدلال. يعد هذا التنسيق حيوياً لمنع استنفاد الذاكرة في بيئات الحوسبة السحابية عند خدمة ملايين طلبات الدردشة المتزامنة.
- رؤية الكمبيوتر عالية الدقة: عند معالجة دفقات فيديو 4K أو صور أقمار صناعية كبيرة، تكون حدود VRAM ضيقة. من خلال نشر بنيات متقدمة مثل Ultralytics YOLO26 باستخدام BFloat16، يمكن لأنظمة الأمان أو التصنيع الآلية تحقيق اكتشاف كائنات عالي السرعة على إعدادات Edge AI المقيدة بالأجهزة، مثل أجهزة NVIDIA Jetson، مع الحفاظ على متطلبات دقة صارمة.
Link to this sectionتنفيذ BFloat16 مع Ultralytics#
تجعل حزمة ultralytics، المدعومة بواسطة PyTorch، تشغيل النماذج في BFloat16 أمراً سهلاً للغاية. فيما يلي مثال موجز يوضح كيفية تحميل نموذج وإجراء الاستدلال داخل كتلة سياق autocast لـ BF16.
import torch
from ultralytics import YOLO
# Initialize the latest Ultralytics YOLO26 nano model
model = YOLO("yolo26n.pt")
# Verify that the active GPU architecture supports BFloat16
if torch.cuda.is_available() and torch.cuda.is_bf16_supported():
# Use PyTorch autocast to run inference purely in BFloat16
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
results = model.predict("https://ultralytics.com/images/bus.jpg")
print("Inference completed successfully using BFloat16 precision.")بالنسبة للفرق التي تتطلع إلى توسيع نطاق هذه التحسينات دون عناء، تدير منصة Ultralytics تلقائياً تنسيقات الدقة عبر خطوط أنابيب التدريب السحابية المعقدة، مما يضمن حصول المستخدمين على أفضل سرعة ودقة ممكنة دون إدارة تعليمات برمجية منخفضة المستوى للأجهزة.






