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

  1. Нет риска overflow (диапазон как у FP32)
  2. Не нужен loss scaling
  3. 2× меньше памяти, чем FP32
  4. Tensor Cores обеспечивают ~3× ускорение vs FP32 на Ampere/Hopper
  5. Хорошо совместим с AdamW и другими оптимизаторами

Связанные термины

  • FP16 — альтернатива с меньшим диапазоном
  • FP8 — следующее поколение для H100
  • mixed precision — техника, использующая BF16
  • Tensor Core — аппаратная акселерация BF16

Готовы запустить GPU-задачу?

Запустить GPU-сервер