FP8
8-битный формат с плавающей точкой для H100/H200; удваивает throughput матричных операций.
Что такое FP8
FP8 — 8-битный формат с плавающей точкой, нативно поддерживаемый Tensor Cores 4-го поколения в GPU NVIDIA Hopper (H100/H200) и Ada (RTX 40xx, L40S). Удваивает число операций за такт по сравнению с BF16: 3958 TFLOPS на H100 SXM против 1979 в BF16.
Существует в двух вариантах:
- E4M3 (4 бита экспоненты, 3 бита мантиссы) — лучше для весов (высокая точность)
- E5M2 (5 бит экспоненты, 2 бита мантиссы) — лучше для градиентов (широкий диапазон)
Transformer Engine и автоматический FP8
NVIDIA Transformer Engine, интегрированный в H100, автоматически переключает слои между FP8 и BF16: критичные операции (softmax, layer norm) остаются в BF16, матричные умножения внутри attention и MLP выполняются в FP8.
import transformer_engine.pytorch as te
# Заменить стандартный Linear на FP8-совместимый
layer = te.Linear(512, 512, bias=True)
# Или использовать fp8_autocast
with te.fp8_autocast(enabled=True):
output = model(input)
# Через vLLM (инференс в FP8)
docker run --gpus all vllm/vllm-openai:latest \
--model meta-llama/Llama-3-70B-Instruct \
--dtype fp8
Потеря качества при FP8
Правильно откалиброванный FP8 (с Transformer Engine или статической/динамической калибровкой) даёт потерю точности <0.5% по большинству бенчмарков. Без калибровки — нестабильность или деградация.
Где доступен FP8
| GPU | FP8 | Примечание |
|---|---|---|
| H100/H200 | Да (нативно) | Максимальный эффект |
| RTX 40xx / L40S | Да (Ada) | Поддержка есть, но нет Transformer Engine |
| A100 | Нет | Только BF16 |
| V100/T4 | Нет | FP16 |
Связанные термины
- BF16 — предыдущий стандарт, который FP8 улучшает
- Tensor Core — аппаратные блоки 4-го поколения для FP8
- NVIDIA H100 — GPU с максимальной FP8-производительностью
- FLOPS — метрика, удваиваемая FP8
Готовы запустить GPU-задачу?
Запустить GPU-сервер