Training
FP16
16-битный формат с плавающей точкой для ускорения GPU-вычислений; требует loss scaling при обучении.
Что такое FP16
FP16 (Half Precision Float) — 16-битный формат с плавающей точкой: 1 бит знака, 5 бит экспоненты, 10 бит мантиссы. Занимает вдвое меньше памяти, чем FP32, и акселерируется Tensor Cores с поколения Volta (V100).
Основная проблема FP16 — ограниченный диапазон: максимальное значение ~65504. Большие градиенты могут переполниться (overflow → NaN), маленькие — обнулиться (underflow → потеря информации).
FP16 vs BF16
| FP16 | BF16 | |
|---|---|---|
| Диапазон | ±65504 | ±3.4×10³⁸ |
| Loss scaling | Необходим | Не нужен |
| Поддержка GPU | V100, A100, RTX 20/30/40xx | A100+, RTX 30/40xx |
| Рекомендация | Для V100/T4 | Предпочтительнее при выборе |
Когда использовать FP16
FP16 следует использовать когда:
- GPU не поддерживает BF16 (V100, T4, RTX 20xx)
- Совместимость с определёнными фреймворками, не поддерживающими BF16
На современных GPU (A100+) предпочтительнее BF16.
# FP16 в HF Trainer (с автоматическим loss scaling)
from transformers import TrainingArguments
args = TrainingArguments(
fp16=True,
fp16_opt_level="O2", # уровень оптимизации
...
)
Связанные термины
- BF16 — предпочтительная альтернатива
- mixed precision — техника, использующая FP16/BF16
- loss scaling — необходима для стабильного обучения в FP16
- Tensor Core — аппаратная акселерация FP16
Готовы запустить GPU-задачу?
Запустить GPU-сервер