BFloat16 (BF16)
استكشف BFloat16 (BF16) للتعلّم العميق. تعرّف إلى كيفية تعزيز هذا التنسيق ذي 16 بت لسرعة التدريب وكفاءته في نماذج مثل Ultralytics YOLO26.
BFloat16، أو الفاصلة العائمة الدماغية، هو تنسيق أعداد حاسوبية بحجم 16 بت، مُحسَّن بدرجة كبيرة لتطبيقات التعلّم الآلي. طوّره في الأصل فريق Google Brain، وهو يمثّل نهجًا متخصصًا للتعامل بكفاءة مع المصفوفات الضخمة من أوزان النماذج والتدرجات. وعلى خلاف تنسيق الفاصلة العائمة القياسي بحجم 32 بت (FP32)، توزّع الخصائص الرياضية لـ BFloat16 8 بتات للأسّ و7 بتات للكسر (المانتيسا). ويوفّر هذا الهيكل الفريد تمامًا نفس النطاق الديناميكي الذي يوفّره FP32، ولكن بدقة أقل، ما يقلّل إلى النصف تقريبًا متطلبات الذاكرة الخاصة ببنى التعلّم العميق المعقدة، من دون المعاناة من عدم الاستقرار العددي الذي يظهر غالبًا في التنسيقات الأقدم ذات 16 بت.
BFloat16 مقابل Float16 (FP16): الفروقات الرئيسية#
عند مقارنة تنسيقات الدقة النصفية، يكون التمييز بين BF16 وFP16 القياسي (المستند إلى معيار IEEE للحساب بالفاصلة العائمة) أمرًا بالغ الأهمية لمهندسي الذكاء الاصطناعي.
يستخدم FP16 مقدار 5 بتات للأسّ و10 بتات للمانتيسا. ويمنح هذا الهيكل FP16 دقة عددية أكبر، ولكن بنطاق ديناميكي أضيق بكثير. وبالتالي، تتطلب مسارات عمل التدريب باستخدام FP16 غالبًا تقنيات معقدة لتحجيم الخسارة لمنع تلاشي التدرجات إلى الأسفل—وهي حالة تصبح فيها تحديثات التدرج الصغيرة جدًا أصفارًا. ويحلّ الأسّ ذو 8 بتات في BFloat16 هذه المشكلة من خلال مطابقة النطاق الديناميكي لـ FP32. وهذا يعني أن المطورين يستطيعون دمج BF16 بسلاسة في الشبكات العصبية من دون ضبط المعلمات الفائقة أو تحجيم الخسارة، ما يجعله التنسيق المفضّل لتحقيق استقرار تدريب النماذج اللغوية الكبيرة (LLMs) الضخمة. ويمكن استكشاف المواصفات العددية التفصيلية بمزيد من التوسع في صفحة BFloat16 على ويكيبيديا.
مزايا تدريب التعلّم العميق#
تُبرز الدراسات الحديثة حول BFloat16 لتدريب التعلّم العميق كيف يسرّع هذا التنسيق عملية التدريب بأكملها بدرجة كبيرة. ومن خلال تقليل عرض النطاق الترددي للذاكرة اللازم لجلب الموترات وتخزينها، يتيح BFloat16 للممارسين مضاعفة أحجام الدُفعات أو توسيع نطاق التشغيل إلى النماذج الأساسية التي تحتوي على مليارات المعلمات باستخدام العتاد الحالي. ومن المثير للاهتمام أن الانخفاض الطفيف في دقة المانتيسا يعمل مثل تقنية تنظيم خفيفة أثناء التدريب، ما قد يحسّن أحيانًا قدرة النموذج على التعميم على البيانات غير المرئية. ويُعدّ حاليًا العمود الفقري لأنظمة الدقة المختلطة الحديثة.
توافق العتاد والتنفيذ#
للاستفادة الكاملة من مزايا سرعة BFloat16، يلزم توفر دعم عتادي مخصص. إذ يحقق أداءً عاليًا على Cloud TPUs، وتتسارع عملياته أصليًا على وحدات GPU الحديثة من NVIDIA بدءًا من بنية NVIDIA Ampere (مثل سلسلة RTX 30-series وA100 وبطاقات محطات العمل الاحترافية مثل RTX A6000)، وصولًا إلى أجيال NVIDIA Hopper وBlackwell الأحدث.
باستخدام أطر العمل التي تتضمن PyTorch للدقة المختلطة التلقائية (AMP)، يستطيع المطورون استخدام torch.autocast لتوجيه العمليات الرياضية المدعومة تلقائيًا عبر أنوية Tensor المتخصصة الخاصة بـ BF16. وهذا يزيد معدل الإنتاجية إلى أقصى حد مع تقليل زمن استجابة الاستدلال.
تطبيقات الذكاء الاصطناعي في العالم الحقيقي#
أصبح BFloat16 سريعًا معيارًا صناعيًا في العديد من المجالات:
- الذكاء الاصطناعي التوليدي وLLMs: تدرّب المؤسسات البحثية التي تعمل على أحدث النماذج التوليدية من OpenAI أو Claude من Anthropic شبكات متقدمة باستخدام BFloat16. كما تستخدم BF16 لتخزين KV المؤقت أثناء الاستدلال. ويُعدّ هذا التنسيق بالغ الأهمية لمنع نفاد الذاكرة في بيئات الحوسبة السحابية عند تقديم الخدمة لملايين طلبات الدردشة المتزامنة.
- الرؤية الحاسوبية عالية الدقة: عند معالجة تدفقات فيديو بدقة 4K أو صور أقمار صناعية كبيرة، تكون حدود VRAM ضيقة. ومن خلال نشر بنيات متقدمة مثل Ultralytics YOLO26 باستخدام BFloat16، تستطيع أنظمة الأمان أو التصنيع المؤتمتة تحقيق اكتشاف الأجسام عالي السرعة على إعدادات الذكاء الاصطناعي الطرفي المقيّدة بالعتاد، مثل أجهزة NVIDIA Jetson، مع الحفاظ على متطلبات الدقة الصارمة.
تطبيق 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 تنسيقات الدقة تلقائيًا عبر مسارات تدريب سحابية معقدة، ما يضمن حصول المستخدمين على أفضل سرعة ودقة ممكنتين من دون إدارة تعليمات برمجية منخفضة المستوى خاصة بالعتاد.









