NVFP4
Jak działa
Tensor jest najpierw normalizowany jednym globalnym współczynnikiem w formacie FP32 na cały tensor. Następnie dzieli się go na bloki 16 kolejnych elementów; dla każdego bloku wyznaczany jest osobny współczynnik skali w formacie FP8 E4M3 (4-bitowy wykładnik, 3-bitowa mantysa — skala ułamkowa, nie tylko potęgi dwójki). Elementy są skalowane i zapisywane w 4-bitowym formacie FP4 E2M1, kodującym 16 wartości (0, ±0,5, ±1, ±1,5, ±2, ±3, ±4, ±6). Mnożenia macierzy wykonują rdzenie Tensor piątej generacji NVIDIA Blackwell, które natywnie mnożą wartości FP4, uwzględniają skale blokowe i tensorowe, a akumulują w wyższej precyzji. W treningu (praca NVIDIA) format uzupełniają techniki takie jak losowe transformaty Hadamarda dla wartości odstających, kwantyzacja dwuwymiarowa, zaokrąglanie stochastyczne gradientów oraz pozostawianie wrażliwych warstw w wyższej precyzji.
Rozwiązany problem
Kwantyzacja 4-bitowa z pojedynczym współczynnikiem na tensor lub z gruboziarnistą skalą potęgi dwójki (jak w MXFP4) traci zbyt dużo dokładności przy tak małej liczbie bitów. NVFP4 ogranicza tę stratę dzięki mniejszym blokom (16 elementów) i dokładniejszej, ułamkowej skali FP8 E4M3 wspartej globalną normalizacją FP32, dając niską zajętość pamięci przy dokładności zbliżonej do FP8.
Komponenty
Grupa 16 kolejnych wartości tensora dzielących jeden współczynnik skali FP8 E4M3.
8-bitowy współczynnik zmiennoprzecinkowy (4 bity wykładnika, 3 bity mantysy) skalujący blok 16 elementów; skala ułamkowa, nie tylko potęgi dwójki.
Pojedynczy współczynnik FP32 na cały tensor, normalizujący jego ogólny zakres przed skalowaniem blokowym.
4-bitowa wartość zmiennoprzecinkowa: 1 bit znaku, 2 bity wykładnika, 1 bit mantysy; koduje 16 poziomów, maksimum ±6.
Implementacja
NVFP4 używa mniejszego bloku (16) i skali FP8 E4M3 na blok oraz globalnej skali FP32. Daje to wyższą dokładność niż MXFP4, ale większy narzut bitów skali (~4,5 bita/element) i bardziej złożoną ścieżkę kwantyzacji/dekwantyzacji.
FP4 E2M1 koduje tylko 16 wartości, więc wartości odstające silnie degradują jakość, zwłaszcza w treningu. Praca NVIDIA stosuje losowe transformaty Hadamarda, kwantyzację 2D, zaokrąglanie stochastyczne gradientów i pozostawianie wrażliwych warstw w wyższej precyzji.
Ewolucja
NVIDIA prezentuje NVFP4 jako 4-bitowy format o dwupoziomowym skalowaniu (skala FP8 E4M3 na blok 16 + globalna skala FP32) dla efektywnej i dokładnej inferencji niskiej precyzji na architekturze Blackwell.
Praca NVIDIA „Pretraining Large Language Models with NVFP4” pokazuje trening modelu 12B na 10 bln tokenów w 4-bitowej precyzji, z jakością porównywalną do bazy FP8, dzięki losowym transformatom Hadamarda, kwantyzacji 2D i zaokrąglaniu stochastycznemu.
Hiperparametry (konfigurowalne osie)
Liczba elementów dzielących jeden współczynnik skali. W NVFP4 wynosi 16 (dwukrotnie mniej niż w MXFP4).
Format pojedynczego elementu: FP4 E2M1 (2 bity wykładnika, 1 bit mantysy).
Format współczynnika skali na blok; w NVFP4 to FP8 E4M3 (skala ułamkowa) zamiast E8M0 z MXFP4.
Format globalnego współczynnika na cały tensor; w NVFP4 to FP32.
Złożoność obliczeniowa
Złożoność przestrzenna: ~4 bity/element + skala FP8 (E4M3) na 16 elementów + jeden FP32 na tensor.
Wąskie gardło obliczeniowe
Celem NVFP4 jest odciążenie przepustowości i pojemności pamięci dzięki 4-bitowemu przechowywaniu wag. Wąskie gardło przesuwa się ku przepustowości arytmetycznej rdzeni Tensor oraz — na sprzęcie bez natywnego wsparcia FP4 — ku kosztowi dekwantyzacji bloków i stosowania dwóch poziomów skali.
Paradygmat wykonania
NVFP4 to format numeryczny stosowany w mnożeniach macierzy na rdzeniach Tensor; skalowanie działa na poziomie bloku 16 elementów i całego tensora, a akumulacja odbywa się w wyższej precyzji.
Równoległość
Skalowanie blokowe i mnożenia NVFP4 są w pełni równoległe na rdzeniach Tensor GPU; format stosowany zarówno w inferencji, jak i w treningu.
Wymagania sprzętowe
Rdzenie Tensor piątej generacji w architekturze NVIDIA Blackwell natywnie obsługują mnożenia NVFP4 z dwupoziomowym skalowaniem (blok 16 + tensor).
Format można emulować programowo, ale bez akceleracji sprzętowej i korzyści wydajnościowych.
CPU nie ma natywnych mnożeń FP4; użycie ogranicza się do emulacji lub dekwantyzacji do wyższej precyzji.