A jó NVFP4-kvantálás kulcsa a rétegenként eltérő pontosság

A jó minőségű NVFP4-kvantálás során nem minden modellréteget azonos pontossággal kezelnek. A Baseten három megközelítést ismertet annak eldöntésére, mely rétegek futhatnak 4 biten, és melyeknél szükséges nagyobb pontosság.
- Az NVFP4 minden értéket 4 biten tárol.
- A rétegek eltérően érzékenyek a kvantálásból eredő információvesztésre.
- Az NVFP4 blokkonként, 16 értékenként használ külön skálát.
- A ModelOpt AutoQuantize több pontossági formátum között választ memóriakeret alapján.
- A SaturationQuant a rétegek együttes kvantálásának hatását is figyelembe veszi.
Kevesebb memória, nagyobb számítási teljesítmény
A kvantálás során a modell súlyait és aktivációit alacsonyabb pontosságú formátumban tárolják. Az NVFP4 minden értéket 4 biten reprezentál. Ez csökkenti a modell méretét, és gyorsíthatja a futtatást, mivel a GPU-nak kevesebb adatot kell a videomemóriából a számítási egységekhez továbbítania.
A Baseten szerint memóriaigényes feladatoknál a súlyok méretének csökkentése nagyjából a betöltendő adatmennyiséget is arányosan mérsékli. Az FP16 egy súlyhoz 2 bájtot, az FP8 1 bájtot, az FP4 pedig 0,5 bájtot használ. Számításigényes feladatoknál a kvantálás a számítási teljesítményt növelheti. Az NVIDIA Blackwell GPU-k natív FP4-támogatása mellett az FP4 tenzormagos műveletek csúcsteljesítménye a Baseten szerint akár az FP16 négyszerese is lehet.
A 4 bit nem minden rétegnek elegendő
A súlyok a tanítás során megtanult, következtetéskor változatlan paraméterek. Az aktivációk ezzel szemben minden bemenet feldolgozásakor újra létrejönnek, ezért nehezebb őket kvantálni. Az alacsonyabb pontosság egyes rétegekben alig változtatja meg a modell kimenetét, más rétegekben viszont fontos információk veszhetnek el.
Az FP4 mindössze 16 rögzített értéket tud megjeleníteni: 0-t, valamint a pozitív és negatív 0,5, 1, 1,5, 2, 3, 4 és 6 értékeket. A skálázás ezért a kvantálás része. Az NVFP4 a tenzorokat 16 egymást követő értékből álló blokkokra osztja, és minden blokkhoz külön skálát használ. Így egyetlen kiugró érték kevésbé rontja a többi érték pontosságát.
Az aktivációs skálák meghatározásához kalibrációra van szükség. Ilyenkor reprezentatív bemeneteket futtatnak végig a modellen, rögzítik az aktivációk eloszlását, majd kiválasztják a leképezési tartományt. A Baseten szerint a szélsőértékek egyszerű használata csökkentheti a tipikus értékek pontosságát, ezért percentilis-, hisztogram- és hibaalapú módszerek is alkalmazhatók.
Három út a rétegenkénti pontosság kiválasztásához
Az első megközelítés szabályalapú. Ezek az algoritmusok a modell architektúrája alapján választják ki az egyes rétegek pontosságát, anélkül, hogy mérnék azok kvantálási érzékenységét. MoE-modelleknél például az expert rétegek gyakran alacsonyabb pontosságon futhatnak, miközben az attention rétegek magasabb pontosságon maradnak. Ez memóriát takaríthat meg, mivel az expert súlymátrixok adják a modell paramétereinek nagy részét.
A NVIDIA ModelOpt előre definiált konfigurációkat kínál ehhez. Az NVFP4_EXPERTS_ONLY_CFG csak a MoE expert rétegeit kvantálja, az NVFP4_MLP_ONLY_CFG pedig az MLP- és MoE-rétegeket, miközben az attention rétegeket magasabb pontosságon hagyja.
A második megközelítés az izolált rétegérzékenység mérése. Ilyenkor azt becsülik meg, mennyivel nőne a modell vesztesége, ha egyetlen réteget kvantálnának, miközben minden más réteg változatlan marad. A ModelOpt AutoQuantize a kapott pontszámok alapján választ az NVFP4, az FP8 és a kvantálatlan állapot között, egy megadott memóriakereten belül. A Baseten szerint ezek a pontszámok önmagukban nem adhatók össze, amikor több réteget egyszerre kvantálnak.
A bejegyzés harmadik módszerként a SaturationQuant megközelítést mutatja be. Ennek célja, hogy a rétegek közötti kölcsönhatást is beépítse a pontszámításba, így a vegyes pontosságú konfigurációk összehasonlíthatóbbá váljanak.
Baseten: What makes a high-quality NVFP4 quantization?


