A legelterjedtebb számformátumok LLM-hez

Bíró Gábor 2025. január 22.
6 perc olvasási idő

A nagy nyelvi modellek (LLM-ek) hatékony működéséhez elengedhetetlen a súlyok megfelelő tárolása és feldolgozása. A választott számformátum közvetlen hatással van a modell memóriaigényére, számítási sebességére és pontosságára. Az évek során az FP32-t fokozatosan felváltotta az FP16 és a BF16, míg az inferencia optimalizálása érdekében egyre elterjedtebbek az INT8 és alacsonyabb bitmélységű kvantált formátumok.

A legelterjedtebb számformátumok LLM-hez
Forrás: Saját szerkesztés

A mesterséges intelligencia, különösen a mélytanulás, rengeteg számítást igényel. A számítások során használt számformátumok (azaz, ahogyan a számokat a számítógép tárolja és kezeli) közvetlenül befolyásolják:

  • Sebesség: Az alacsonyabb pontosságú formátumok (kevesebb bit) gyorsabb számításokat tesznek lehetővé.
  • Memóriaigény: Kevesebb bit kevesebb memóriát igényel, ami kritikus a nagy modellek betöltése és futtatása során.
  • Energiafogyasztás: A kevesebb bit feldolgozása általában kevesebb energiát igényel.
  • Pontosság: A magasabb pontosságú formátumok (több bit) pontosabb eredményeket adnak, de ez a sebesség, memória és energia rovására mehet.

A cél az, hogy megtaláljuk az optimális egyensúlyt a pontosság és a hatékonyság között. A legelterjedtebb számformátum az LLM modelleknél a súlyok tárolására a félig pontos lebegőpontos számábrázolás (FP16) és a bfloat16 (BF16), valamint egyre inkább az int8 vagy még alacsonyabb bitmélységű formátumok kvantáláshoz.

Jellemző számformátumok az MI területén:

  1. FP32 (Floating point 32 bites, lebegőpontos szám)
    • Régebben ez volt az alapértelmezett formátum a mélytanulásban.
    • Nagy pontosságú, de sok memóriát és számítási erőforrást igényel.
    • Ma már ritkán használják közvetlenül a súlyok tárolására LLM-ekben.
  2. FP16 (16 bites lebegőpontos szám)
    • Az Nvidia vezette be a Pascal architektúrával (2016)
    • Nvidia Tensor Core és más GPU-k támogatják, így gyorsabb számításokat tesz lehetővé.
    • Csökkenti a memóriahasználatot és a számítási igényt az FP32-höz képest. A pontosság csökkenése sok esetben elfogadható a mélytanulási modellek betanításánál és futtatásánál.
    • Még mindig elég precíz a nagy méretű modellekhe de .bizonyos esetekben (pl. nagyon kis gradiensek) a pontosságvesztés problémákat okozhat ("underflow").
  3. BF16 (bfloat16, 16 bites lebegőpontos szám, de nagyobb exponenssel)
    • Ugyanúgy 16 bit, mint az FP16, de más a belső felépítése: több bitet használ a kitevőre (exponent) és kevesebbet a törtrészre (mantissa).
    • Ezáltal a BF16 dinamikus tartománya (a legnagyobb és legkisebb ábrázolható számok közötti különbség) közelebb van az FP32-éhez, mint az FP16-éhoz.
    • Ez csökkenti az "underflow" problémákat, és lehetővé teszi a BF16 használatát a betanításnál is, kevesebb pontosságvesztéssel, mint az FP16.
    • Az Nvidia az Ampere architektúrával (2020) vezette be a BF16 támogatást.
  4. FP8 (8 bites lebegőpontos szám)
    • Az Nvidia Hopper (H100) és Blackwell (B100, B200, GB200) architektúrákban debütált.
    • Két változata van: E4M3 (4 bit kitevő, 3 bit törtrész) és E5M2 (5 bit kitevő, 2 bit törtrész).
    • Az E4M3 nagyobb pontosságot, az E5M2 nagyobb dinamikatartományt biztosít.
    • Jelentősen gyorsítja a betanítást és a futtatást, miközben a pontosságvesztés is elfogadható az FP16-os képest.
  5. INT8 (8 bites egész szám, kvantált modellekhez)
    • Nagyon hatékony memória- és számítási szempontból, akár 4× gyorsabb lehet, mint az FP16.
    • Bizonyos precíziós veszteséggel jár, de jól optimalizálható.
    • Edge eszközökön és mobilokon gyakori, illetve a dedikált gyorsítókártyák (pl. Nvidia TensorRT, Qualcomm AI Engine) támogatják.
    • A betanításnál ritkábban alkalmazzák, mert a pontosságvesztés itt nagyobb problémákat okozhat.
    • Elterjedt gyakorlat, hogy az eredetileg FP32, FP16 -os modelleket kvantálással a modell súlyait és aktivációit átalakítják INT8-ba inference-hez.
  6. INT4 / INT2 (kvantált, alacsony bitmélységű formátumok)
    • Legújabb modellekben (pl. LLaMA-2, GPT-4 optimalizációk) egyre elterjedtebbek.
    • Drasztikusan csökkenti a memóriahasználatot és gyorsítja az inferenciát.
    • Leginkább inference-re való, tanításhoz nem ajánlott.

Számformátumok hardveres támogatásának fontossága

A számformátumok hardveres támogatása azért kritikus fontosságú a GPU-k (és más MI-gyorsítók) esetében, mert ez határozza meg a számítások alapvető hatékonyságát.

  1. Műveleti egységek optimalizálása: Ha egy GPU hardveresen támogat egy adott számformátumot (pl. FP16, BF16, FP8), az azt jelenti, hogy a chipen belül dedikált áramkörök (műveleti egységek, pl. szorzó-összeadó egységek) vannak optimalizálva pontosan erre a formátumra. Ezek az áramkörök közvetlenül, a hardver szintjén végzik a műveleteket, ami nagyságrendekkel gyorsabb, mint a szoftveres emuláció.
  2. Adatmozgatás hatékonysága: A hardveres támogatás nem csak a számításokat, hanem az adatok mozgatását is optimalizálja. A GPU memóriarendszere (regiszterek, gyorsítótárak, globális memória) és az adatbuszok is illeszkednek a támogatott formátumokhoz. Ez azt jelenti, hogy kevesebb bitet kell mozgatni, ami csökkenti a memória-sávszélesség igényt, a késleltetést és az energiafogyasztást.
  3. Párhuzamosítás maximalizálása: A GPU-k ereje a masszív párhuzamosításban rejlik. A hardveres támogatás lehetővé teszi, hogy egyszerre több műveletet végezzenek el az adott formátumú adatokon. Például, ha egy GPU 16 bites műveleteket támogat hardveresen, akkor egy 32 bites művelet helyett két 16 bites műveletet végezhet el párhuzamosan, megduplázva a számítási teljesítményt.
  4. Energiahatékonyság: A dedikált áramkörök nem csak gyorsabbak, de energiatakarékosabbak is. Kevesebb tranzisztort kell kapcsolgatni ugyanannak a műveletnek az elvégzéséhez, ami alacsonyabb energiafogyasztást és hőtermelést eredményez.

Összegzés

Tanításnál főleg FP16 vagy BF16 az elterjedt. Inferenciánál egyre több modell INT8 vagy INT4 kvantálást használ a gyorsabb működés érdekében. A számformátumok fejlődése az MI-ben egy folyamatos optimalizálási folyamat. Az alacsonyabb pontosságú formátumok lehetővé teszik a gyorsabb, hatékonyabb és olcsóbb MI-rendszerek építését, de a pontosság és a dinamikus tartomány közötti kompromisszumokat gondosan mérlegelni kell. Az újabb architektúrák (pl. Ampere, Ada Lovelace, Hopper, Blackwell) egyre több és egyre hatékonyabb számformátumot támogatnak, ami tovább gyorsítja az MI fejlődését. A jövőben várhatóan további, még speciálisabb számformátumok is megjelennek majd.

Bíró Gábor 2025. január 22.
© 2025 Birow.com