Обучение в fp16 или bf16 при накоплении в fp32: двукратная экономия памяти и заметное ускорение.
Ключевые тезисы
- fp16 требует масштабирования потерь, чтобы малые градиенты не обнулялись; bf16 — нет.
- Мастер-копия весов и накопление градиентов остаются в fp32.
- На современных ускорителях bf16 — практический дефолт для обучения больших моделей.
Подробный разбор
2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.
1fp16 против bf16
Разный компромисс между точностью и диапазоном.
| fp16 | bf16 | fp32 | |
|---|---|---|---|
| Бит на мантиссу | 10 | 7 | 23 |
| Диапазон экспоненты | узкий | как у fp32 | полный |
| Нужен loss scaling | да | нет | нет |
| Где используется | старые GPU | современное обучение | эталон |
bf16 жертвует точностью мантиссы ради диапазона — и это оказалось правильным выбором для обучения: переполнение опаснее, чем округление.
2Как включить
И на что смотреть.
scaler = torch.amp.GradScaler()
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
loss = model(batch)
scaler.scale(loss).backward()
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
scaler.step(optimizer); scaler.update()- Экономия памяти около 40–50%, ускорение 1.5–3× на современных ускорителях.
- Появление NaN обычно означает переполнение в fp16 — переходите на bf16.
- Нормализации и softmax внутри autocast считаются в fp32 автоматически.
Связанные темы
Стабильность обучения нейросетей
Normalization Layers85%
Слои нормализации · Глубокое обучениеBatchNorm, LayerNorm, RMSNorm: стабилизация распределения активаций, без которой глубокие сети почти не обучаются.
Gradient Clipping85%
Обрезка градиента · Оптимизация обученияОграничение нормы градиента перед шагом оптимизатора — простейшая защита от расходимости обучения.
Backpropagation85%
Обратное распространение ошибки · Глубокое обучениеЭффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.
Learning Rate Scheduling85%
Расписание скорости обучения · Оптимизация обученияИзменение шага по ходу обучения: большой в начале для исследования, малый в конце для точной настройки.
Numerical Methods85%
Численные методы · ОсновыКомпьютер считает приближённо. Понимание точности float, устойчивости и обусловленности спасает от NaN и «необъяснимых» расхождений.