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-сервер