Training
BF16
Brain Float 16 — 16-битный формат с диапазоном FP32 и 7-битной мантиссой, стандарт для LLM-обучения.
Что такое BF16
BF16 (Brain Float 16) — 16-битный формат с плавающей точкой, разработанный Google Brain. Занимает 2 байта, как FP16, но имеет иное распределение бит:
| Формат | Знак | Экспонента | Мантисса | Диапазон | Точность |
|---|---|---|---|---|---|
| FP32 | 1 | 8 бит | 23 бита | ±3.4×10³⁸ | ~7 знаков |
| BF16 | 1 | 8 бит | 7 бит | ±3.4×10³⁸ | ~2–3 знака |
| FP16 | 1 | 5 бит | 10 бит | ±65504 | ~3 знака |
Ключевое: BF16 имеет ту же экспоненту, что FP32 — одинаковый диапазон чисел. Это означает, что обучение на BF16 не требует loss scaling и менее чувствительно к взрывным градиентам.
Поддержка в GPU
BF16 Tensor Cores доступны начиная с архитектуры Ampere (A100, RTX 30xx). На V100/T4 BF16 не акселерируется — используйте FP16.
# Проверить поддержку BF16
import torch
print(torch.cuda.is_bf16_supported()) # True на A100+
# Обучение в BF16
model = model.to(torch.bfloat16) # или через TrainingArguments(bf16=True)
Почему BF16 — стандарт для LLM
- Нет риска overflow (диапазон как у FP32)
- Не нужен loss scaling
- 2× меньше памяти, чем FP32
- Tensor Cores обеспечивают ~3× ускорение vs FP32 на Ampere/Hopper
- Хорошо совместим с AdamW и другими оптимизаторами
Связанные термины
- FP16 — альтернатива с меньшим диапазоном
- FP8 — следующее поколение для H100
- mixed precision — техника, использующая BF16
- Tensor Core — аппаратная акселерация BF16
Готовы запустить GPU-задачу?
Запустить GPU-сервер