Robocikowo>ROBOCIKOWO
Wnioskowanie

FP8

2022AktywnyOpublikowano: 2 września 2026Aktualizacja: 2 września 2026Opublikowany
Kwantyzacja do 8-bitowych formatów zmiennoprzecinkowych (E4M3/E5M2) do treningu i inferencji sieci neuronowych, wspierana sprzętowo w GPU NVIDIA Hopper i Blackwell.
Kluczowa innowacja
Wprowadzenie dwóch 8-bitowych formatów zmiennoprzecinkowych (E4M3 i E5M2), które pozwalają trenować i uruchamiać sieci neuronowe z jakością dorównującą 16-bitowej, przy dwukrotnie mniejszym zużyciu pamięci i dwukrotnie większej przepustowości.
Kategoria
Wnioskowanie
Poziom abstrakcji
Wzorzec
Poziom operacji
Element architekturyModelTrening
Zastosowania
Trening dużych modeli językowychInferencja LLM o niskiej latencjiRedukcja zużycia pamięci GPUZwiększenie przepustowości obliczeń na rdzeniach TensorTrening mixed-precision

Jak działa

Wartości tensorów (wagi, aktywacje, gradienty) są konwertowane z FP32/FP16 do jednego z formatów FP8: E4M3 dla przebiegu w przód, E5M2 dla gradientów w przebiegu wstecznym. Ponieważ 8 bitów daje bardzo wąski zakres reprezentowalnych wartości, przed konwersją stosuje się współczynniki skalowania (scaling), które przesuwają rozkład wartości tensora w zakres reprezentowalny przez FP8. Biblioteka NVIDIA Transformer Engine wykorzystuje „delayed scaling" — wyznacza współczynnik na podstawie historycznych maksimów wartości bezwzględnych (amax) z poprzednich iteracji. Skalowanie może być per-tensor lub drobnoziarniste (per-blok/per-kafelek). Właściwe mnożenie macierzy wykonują rdzenie Tensor w FP8, a akumulacja odbywa się w wyższej precyzji (FP32), po czym wynik jest ponownie skalowany. Master weights i akumulatory zwykle pozostają w wyższej precyzji dla stabilności.

Rozwiązany problem

Trening i inferencja dużych modeli językowych są ograniczone przez pojemność pamięci GPU i przepustowość obliczeń. Formaty 16-bitowe (FP16/BF16) były dotąd standardem, ale zajmują dwa razy więcej pamięci i przepustowości niż formaty 8-bitowe. Kwantyzacja całkowitoliczbowa INT8 redukuje rozmiar, ale jej wąski, jednorodny zakres utrudnia stabilny trening. FP8 rozwiązuje ten kompromis, dając 8-bitowy rozmiar przy zachowaniu zakresu dynamicznego formatu zmiennoprzecinkowego.

Komponenty

Format E4M3Reprezentacja wag i aktywacji (przebieg w przód)

8-bitowy format zmiennoprzecinkowy: 1 bit znaku, 4 bity wykładnika, 3 bity mantysy. Maksymalna wartość ±448, brak reprezentacji nieskończoności. Wyższa precyzja, węższy zakres — używany w przebiegu w przód.

Format E5M2Reprezentacja gradientów (przebieg wsteczny)

8-bitowy format zmiennoprzecinkowy: 1 bit znaku, 5 bitów wykładnika, 2 bity mantysy. Maksymalna wartość ±57344, zgodny z IEEE-754 dla wartości specjalnych (NaN, nieskończoność). Szerszy zakres dynamiczny, niższa precyzja — używany dla gradientów.

Współczynnik skalowaniaUtrzymanie wartości w zakresie FP8 i stabilności numerycznej

Mnożnik przesuwający rozkład wartości tensora do zakresu reprezentowalnego przez FP8. Może być per-tensor lub drobnoziarnisty (per-blok/per-kafelek); Transformer Engine stosuje delayed scaling oparty na historii amax.

Implementacja

Pułapki implementacyjne
Przepełnienie i niedomiar zakresuWysoka

Wąski zakres 8 bitów powoduje, że bez właściwego skalowania wartości wykraczają poza zakres (overflow do nieskończoności/NaN) lub zapadają do zera (underflow).

Rozwiązanie:Stosuj per-tensor lub drobnoziarniste skalowanie oraz delayed scaling oparty na historii amax.
Utrata dokładności przy wrażliwych warstwachŚrednia

Niektóre warstwy (np. normalizacja, softmax, akumulatory) są wrażliwe na niską precyzję i wymagają pozostawienia w FP16/FP32.

Rozwiązanie:Stosuj podejście mixed-precision: krytyczne operacje i master weights w wyższej precyzji.

Ewolucja

Oryginalny paper · 2022 · arXiv 2022 · Paulius Micikevicius
FP8 Formats for Deep Learning
Paulius Micikevicius, Dusan Stosic, Neil Burgess, Marius Cornea, Pradeep Dubey, Richard Grisenthwaite, Sangwon Ha, Alexander Heinecke, Patrick Judd, John Kamalu, Naveen Mellempudi, Stuart Oberman, Mohammad Shoeybi, Michael Siu, Hao Wu
2022
Publikacja standardu formatów FP8 (E4M3, E5M2)
Punkt przełomowy

NVIDIA, Arm i Intel proponują wspólny standard dwóch formatów FP8 dla deep learningu.

2022
Sprzętowe wsparcie FP8 w NVIDIA Hopper (H100) i Transformer Engine
Punkt przełomowy

H100 wprowadza rdzenie Tensor obsługujące FP8 (2000 TFLOPS, 4000 z sparsity) oraz Transformer Engine automatyzujący przełączanie FP8/16-bit.

2023
Standaryzacja OCP FP8 przez Open Compute Project

Formaty FP8 zostają przyjęte jako otwarty standard branżowy OCP.

2024
Trening DeepSeek-V3 w FP8 na dużą skalę
Punkt przełomowy

DeepSeek-V3 (671B parametrów) wykorzystuje drobnoziarnisty framework treningu mixed-precision FP8, demonstrując FP8 przy treningu modelu frontier.

Hiperparametry (konfigurowalne osie)

Format FP8 (E4M3 / E5M2)Krytyczna

Wybór formatu: E4M3 (więcej precyzji) lub E5M2 (szerszy zakres).

E4M3Przebieg w przód / wagi i aktywacje
E5M2Przebieg wsteczny / gradienty
Granularność skalowaniaWysoka

Poziom, na jakim wyznaczany jest współczynnik skalowania.

per-tensorJeden współczynnik na cały tensor
per-block / per-tileDrobnoziarniste skalowanie (np. w DeepSeek-V3)
Strategia skalowaniaŚrednia

Sposób wyznaczania współczynnika skalowania w czasie.

delayed scalingNa podstawie historii amax
current scalingNa podstawie bieżącego tensora

Paradygmat wykonania

Tryb główny
Gęsty

FP8 to format numeryczny stosowany w gęstych mnożeniach macierzy na rdzeniach Tensor; akumulacja odbywa się w wyższej precyzji.

Równoległość

Poziom równoległości
W pełni równoległy

Kwantyzacja i mnożenia FP8 są w pełni równoległe na rdzeniach Tensor GPU, zarówno w treningu, jak i inferencji.

Zakres
TreningInferencjaPomiędzy urządzeniami

Wymagania sprzętowe

Podstawowe

FP8 jest natywnie wspierany przez rdzenie Tensor w architekturach NVIDIA Hopper, Ada Lovelace i Blackwell, dając 2x przepustowość względem FP16/BF16.

Możliwe

Formaty 8-bitowe są przedmiotem prac na akceleratorach innych niż NVIDIA, lecz FP8 nie jest tam podstawowym, natywnym trybem tensor.