Training

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