BFloat16 (BF16)
Познакомься с BFloat16 (BF16) для глубокого обучения. Узнай, как этот 16-битный формат повышает скорость и эффективность обучения в моделях вроде Ultralytics YOLO26.
BFloat16, или Brain Floating Point, — это 16-битный формат представления чисел в компьютере, специально оптимизированный для приложений машинного обучения. Изначально разработанный командой Google Brain, он представляет собой специализированный подход к эффективной обработке огромных массивов весов моделей и градиентов. В отличие от стандартного 32-битного формата с плавающей запятой (FP32), математические свойства BFloat16 предусматривают 8 бит для экспоненты и 7 бит для дробной части (мантиссы). Эта уникальная структура обеспечивает точно такой же динамический диапазон, как у FP32, но с меньшей точностью, фактически вдвое сокращая требования к памяти сложных архитектур глубокого обучения без числовой нестабильности, часто характерной для старых 16-битных форматов.
BFloat16 и Float16 (FP16): ключевые различия#
При сравнении форматов с пониженной точностью различие между BF16 и стандартным FP16, основанным на стандарте IEEE для арифметики с плавающей запятой, имеет критическое значение для инженеров в области AI.
FP16 использует 5 бит для экспоненты и 10 бит для мантиссы. Такая структура обеспечивает FP16 более высокую числовую точность, но значительно более узкий динамический диапазон. Поэтому рабочие процессы обучения с FP16 часто требуют сложных методов масштабирования функции потерь, чтобы предотвратить потерю значимости градиента — ситуацию, при которой крошечные обновления градиента превращаются в нули. 8-битная экспонента BFloat16 решает эту проблему, соответствуя динамическому диапазону FP32. Это означает, что разработчики могут без дополнительных настроек интегрировать BF16 в нейронные сети, не меняя гиперпараметры и не масштабируя функцию потерь, что делает этот формат предпочтительным для стабилизации обучения масштабных больших языковых моделей (LLMs). Подробные числовые спецификации можно найти на странице BFloat16 в Википедии.
Преимущества для обучения моделей глубокого обучения#
Недавние исследования применения BFloat16 для обучения моделей глубокого обучения показывают, как этот формат значительно ускоряет общий процесс обучения. Сокращая пропускную способность памяти, необходимую для загрузки и хранения тензоров, BFloat16 позволяет специалистам вдвое увеличить размеры пакетов или масштабировать базовые модели с миллиардами параметров на существующем оборудовании. Интересно, что небольшое снижение точности мантиссы во время обучения действует как мягкий метод регуляризации, который иногда улучшает способность модели обобщать данные, не встречавшиеся ранее. Сейчас этот формат лежит в основе современных режимов смешанной точности.
Совместимость оборудования и выполнение#
Чтобы в полной мере использовать преимущества BFloat16 в скорости, требуется специальная аппаратная поддержка. Этот формат обеспечивает высокую производительность на облачных TPU и аппаратно ускоряется на современных GPU NVIDIA, начиная с архитектуры NVIDIA Ampere (например, в RTX 30-й серии, A100 и профессиональных рабочих станциях с такими картами, как RTX A6000), вплоть до более новых поколений NVIDIA Hopper и Blackwell.
Используя фреймворки с автоматическим управлением смешанной точностью PyTorch (AMP), разработчики могут применять torch.autocast для автоматической маршрутизации поддерживаемых математических операций через специализированные Tensor Cores BF16. Это максимально повышает пропускную способность и одновременно минимизирует задержку инференса.
Практические применения AI#
BFloat16 быстро становится отраслевым стандартом во множестве областей:
- Генеративный AI и LLMs: исследовательские организации, обучающие новейшие генеративные модели OpenAI или Claude от Anthropic, используют BFloat16 для обучения передовых нейронных сетей. Кроме того, они применяют BF16 для KV-кэширования во время инференса. Этот формат необходим для предотвращения исчерпания памяти в средах облачных вычислений при обработке миллионов одновременных запросов к чатам.
- Компьютерное зрение в высоком разрешении: при обработке видеопотоков 4K или крупных спутниковых изображений ограничения VRAM становятся особенно жесткими. Используя передовые архитектуры, такие как Ultralytics YOLO26, с BFloat16, автоматизированные системы безопасности или производства могут выполнять быстрое обнаружение объектов на аппаратно-ограниченных системах периферийного AI, например на устройствах NVIDIA Jetson, сохраняя при этом строгие требования к точности.
Реализация BFloat16 с Ultralytics#
Пакет ultralytics на базе PyTorch делает выполнение моделей в BFloat16 исключительно простым. Ниже приведен краткий пример загрузки модели и выполнения инференса внутри блока контекста автоприведения 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 автоматически управляет форматами точности в сложных облачных конвейерах обучения, обеспечивая максимально возможную скорость и точность без необходимости управлять низкоуровневым кодом для оборудования.









