Tensor jest dzielony na bloki 32 kolejnych elementów. Dla każdego bloku wyznaczany jest jeden współdzielony współczynnik skali w formacie E8M0 (8-bitowy wykładnik potęgi dwójki), zwykle na podstawie maksymalnej wartości bezwzględnej w bloku. Elementy są następnie skalowane i zapisywane w 8-bitowym formacie FP8: E4M3 (4 bity wykładnika, 3 bity mantysy, zakres ok. ±448) używa się typowo dla przebiegu w przód, a E5M2 (5 bitów wykładnika, 2 bity mantysy, szerszy zakres) dla gradientów w przebiegu wstecz. Mnożenia macierzy wykonują rdzenie Tensor, które natywnie mnożą wartości FP8 i uwzględniają współczynniki blokowe, a akumulacja odbywa się w wyższej precyzji. Algorytm konwersji do skali (zaokrąglanie) ma istotny wpływ na dopasowanie wyników do BF16.
Kwantyzacja FP8 z pojedynczym współczynnikiem na cały tensor traci dokładność, gdy wartości w tensorze mają szeroki zakres rzędów wielkości (np. wartości odstające w aktywacjach lub gradientach). MXFP8 rozwiązuje ten problem, przydzielając osobny współczynnik skali każdemu 32-elementowemu blokowi, co pozwala trenować i uruchamiać modele w 8 bitach bez utraty jakości i bez modyfikacji receptury treningowej.
Grupa 32 kolejnych wartości tensora dzielących jeden współczynnik skali.
8-bitowy wykładnik bez mantysy reprezentujący współczynnik skali jako potęgę dwójki dla całego bloku.
Wartości 8-bitowe: E4M3 dla większej precyzji (forward), E5M2 dla szerszego zakresu (gradienty).
Sposób wyznaczania i zaokrąglania współczynnika E8M0 istotnie wpływa na dokładność; niewłaściwy algorytm rozjeżdża wyniki względem BF16.
Pełne natywne przyspieszenie dostępne jest dopiero na rdzeniach Tensor Blackwell; starsze GPU (Hopper, Ada) wymagają emulacji.
Bloki 32-elementowe są kierunkowe, więc transpozycja tensora wymaga ponownego wyznaczenia skal (często dwóch reprezentacji).
Konsorcjum OCP (AMD, Arm, Intel, Meta, Microsoft, NVIDIA, Qualcomm) publikuje standard MX definiujący MXFP8; praca źródłowa pokazuje pierwszy trening generatywnych LLM z wagami, aktywacjami i gradientami poniżej 8 bitów.
Architektura NVIDIA Blackwell wprowadza sprzętowe wsparcie mikroskalowania (MXFP8, MXFP6, MXFP4) bezpośrednio w rdzeniach Tensor, w odróżnieniu od emulacji na wcześniejszych GPU.
NVIDIA publikuje receptury pokazujące, że MXFP8-E4M3 z odpowiednim algorytmem konwersji dorównuje treningowi w BF16 dla modeli do 8 mld parametrów na zbiorach do 15 bln tokenów.
Złożoność przestrzenna: ~8 bitów/element + 8 bitów na 32 elementy (E8M0).
Liczba elementów dzielących jeden współczynnik skali. W standardzie MX ustalona na 32.
Wariant FP8 użyty dla elementów: E4M3 lub E5M2.
Format współdzielonego współczynnika skali; w MX to E8M0 (potęgi dwójki).
MXFP8 to format numeryczny stosowany w gęstych mnożeniach macierzy na rdzeniach Tensor; skalowanie działa na poziomie bloku, a akumulacja odbywa się w wyższej precyzji.
Skalowanie blokowe i mnożenia MXFP8 są w pełni równoległe na rdzeniach Tensor GPU, zarówno w treningu, jak i inferencji.
Rdzenie Tensor NVIDIA Blackwell natywnie obsługują mnożenia MXFP8 ze skalowaniem blokowym.