Tensor magokon táplálkozva
Ha már a H100-at ennyire a gépi tanulásra hegyezték ki, érdemes többet szentelni az úgynevezett Tensor magoknak, már csak azért is, mert ebből megérhető, hogy miképpen kalkulálja az NVIDIA a megadott számítási teljesítményt.
A negyedik generációs Tensor egységek sokban különböznek elődeiktől. Egyrészt új adattípust támogatnak, így a korábban bevezetett Int8, FP16, BF16 (bfloat16), TF32 és FP64 mellett elérhetővé vált az FP8, azaz a 8 bites lebegőpontos opció. Ráadásul E4M3 és E5M2 formában is elérhető, ahol mindkét esetben 1 jelbit van, de amíg előbbi 4 bites exponenst és 3 bites mantisszát használ, addig utóbbinál rendre 5 és 2 bitre lehet számítani.
A Tensor magok része lesz mostantól az úgynevezett Transformer Engine, amellyel a cél az, hogy transformer modell esetén az adattípusok kevert alkalmazása mellett menedzselhető legyen a precizitás, miközben a pontosságot nem éri csorba. És nem szabad ugye megfeledkezni a már említett structural sparsity lehetőségről sem, ami esetenként megduplázhatja az elérhető teljesítményt a sztenderd tensor operációkhoz viszonyítva.
A fentieket egészíti még ki a TMA, vagyis a Tensor Memory Accelerator, ami nem a Tensor magok, hanem a multiprocesszorok része. Erre azért van szükség, mert a maga a Tensor mag annyira meghízott az elmúlt évek alatt, hogy már könnyen limitációt jelenthet az adatok mozgatása. Elemek szintjén történő címzés helyett a TMA lehetővé teszi a nagy adatblokkok kezelését úgy, hogy nem terheli az ütemezőt, ami így csinálhat más feladatokat. Lényeges persze, hogy az adatblokk nem lehet nagyobb a helyi adatmegosztásra fenntartott gyorsítótár partíció kapacitásánál, de ez a korábbi módszerrel is limitáció volt, csak ott nagyobb többletterheléssel kellett számolni az adatok kezelése kapcsán.
A számítási tempóra rátérve az NVIDIA által FP8, FP16/BF16 és TF32 adattípusok esetében közölt rendre 4000, 2000 és 1000 TFLOPS a structural sparsity-t használva jön ki. A valós teljesítmény az előbbi paraméterek fele, azaz 2000, 1000 és 500 TFLOPS.
Az IEEE754-2008-as szabványnak megfelelő adattípusok kapcsán a 32 bites lebegőpontos sebesség trükkök nélkül 60 TFLOPS, míg a dupla pontosságra két érték is van. Egyrészt az FP64-et végrehajthatják az erre kialakított dedikált feldolgozók vagy a Tensor magok. Előbbi esetben 30, míg utóbbiban 60 TFLOPS-szal lehet számolni. Ezt azért lényeges kiemelni, mert nem ugyanarról az operációról van szó a számítások elvégzésekor, ugyanis amíg a dedikált feldolgozók FMA-t (Fused Multiply-Add), addig a Tensor magok MMA-t (Matrix-Multiply Assist) használnak.
A cikk még nem ért véget, kérlek, lapozz!