A modern AI stack · Lecke 07

Az inferencia motor és a vLLM

Amikor egy AI alkalmazás választ ad, a háttérben egy betanított modell fut egy grafikus processzoron. Az a szoftver, amely ezt a modellt hatékonyan kiszolgálja, az inferencia motor. Ebben a leckében megnézzük, mit jelent az inferencia, mit csinál egy inferencia motor, és miért lett a vLLM az egyik legfontosabb oka annak, hogy az AI kiszolgálás olcsó és gyors lett.

Vissza a tananyaghoz


Mi az inferencia

Egy nyelvi modell életében két nagy szakasz van. Az egyik a tanítás, amikor a modell hatalmas mennyiségű szövegen keresztül megtanulja a mintázatokat, és kialakulnak a paraméterei. Ez egyszeri, nagyon erőforrásigényes folyamat. A másik szakasz az inferencia, ami minden egyes alkalommal lezajlik, amikor a kész modellt használjuk. Az inferencia az, amikor egy betanított modell egy konkrét kérésre választ generál. Beérkezik egy kérdés, a modell pedig lépésről lépésre előállítja a választ. A gyakorlatban egy éles AI szolgáltatás ideje szinte teljes egészében inferenciával telik, hiszen tanítani ritkán tanítunk, kiszolgálni viszont folyamatosan kell.

Fontos látni, hogy az inferencia nem ingyenes. Minden válasz mögött valós számítás áll egy grafikus processzoron, a GPU-n. Minél több felhasználó kér egyszerre választ, annál több számítást kell elvégezni. Egy cég szempontjából ez közvetlenül pénz, mert a GPU-idő drága. Ezért nem mindegy, hogy ugyanabból a hardverből mennyi hasznos munkát tudunk kihozni.


Mit csinál az inferencia motor

Az inferencia motor az a szoftver, amely a modellt hatékonyan kiszolgálja a GPU-n. Nem maga a modell, hanem a modell köré épített kiszolgáló réteg. Fogadja a beérkező kéréseket, betölti és futtatja a modellt a hardveren, kezeli a memóriát, és visszaadja a választ. Ugyanazt a modellt egy egyszerű, összekapkodott megoldással és egy jól megírt inferencia motorral is ki lehet szolgálni, de a kettő teljesítménye között óriási különbség lehet. A modell ilyenkor pontosan ugyanaz, csak a kiszolgálás lett okosabb.

A modern AI stackben ez az egyik legkevésbé látható, de leginkább meghatározó réteg. A felhasználó csak annyit érzékel, hogy a válasz gyorsan megjön. A háttérben viszont az dől el, hogy egy adott GPU egyszerre hány kérést tud kiszolgálni, és mennyi ideig kell várni egy válaszra. Ez a réteg határozza meg a kiszolgálás valódi költségét.


A vLLM

A vLLM egy nyílt forrású, nagy teljesítményű inferencia motor. Kifejezetten arra készült, hogy nyelvi modelleket sok párhuzamos kérés mellett is gyorsan és gazdaságosan szolgáljon ki. Nyílt forrású, tehát bárki ingyen letöltheti, futtathatja és beépítheti a saját rendszerébe. Éppen ezért sok szolgáltató és cég épít vLLM-re, amikor saját modellt akar futtatni, ahelyett hogy egy külső szolgáltató kész API-ját hívná.

A vLLM két fő újítása az, ami miatt kiemelkedik. Az egyik a hatékony memóriakezelés, a másik a beérkező kérések ügyes kötegelése. Ez a két dolog együtt teszi lehetővé, hogy ugyanabból a GPU-ból sokkal nagyobb áteresztőképesség jöjjön ki, mint egy egyszerű megoldással. Nézzük meg mindkettőt közelebbről.


A hatékony memóriakezelés

Miközben a modell egy választ generál, tárolnia kell a beszélgetés addigi részéhez tartozó belső, köztes állapotát, hogy ne kelljen mindent újraszámolnia minden egyes új szónál. Ezt az állapotot hívják a figyelem gyorsítótárának, angol nevén KV cache-nek. A KV cache a GPU memóriájában él, és ahogy egyre hosszabb a szöveg, úgy nő a mérete is. Sok párhuzamos kérésnél ez a gyorsítótár gyorsan felemészti a rendelkezésre álló memóriát.

A vLLM újítása, hogy ezt a gyorsítótárat okosan, lapozásos módszerrel kezeli. Ezt az eljárást PagedAttention néven ismerjük. A név arra utal, hogy a rendszer a gyorsítótárat kis, egyforma darabokban, lapokban tartja nyilván, hasonlóan ahhoz, ahogy egy operációs rendszer kezeli a memóriát. Így nem kell minden kéréshez előre egy nagy, összefüggő memóriaterületet lefoglalni, és nem marad kihasználatlan hely a lefoglalt, de éppen nem használt részeken. A gyakorlatban ez azt jelenti, hogy ugyanabba a GPU memóriába sokkal több párhuzamos kérés fér el, mert a hely jóval kevésbé pazarlódik.


SOK PÁRHUZAMOS KÉRÉS kérés kérés kérés kérés vLLM kötegelés és lapozott KV cache egy GPU nagy áteresztőképesség Egy motor egyszerre sok kérést köteget, egy GPU-ból több hasznos munka jön ki
A vLLM összegyűjti a sok párhuzamos kérést, kötegelve futtatja őket, és a lapozott gyorsítótárral egyetlen GPU-ból nagyobb áteresztőképességet hoz ki.

A kérések kötegelése

A másik fő újítás a kérések kötegelése, angolul batching. A GPU akkor dolgozik hatékonyan, ha egyszerre sok számítást végez, nem pedig ha egyesével, kérésenként kapja a munkát. Ha minden kérést külön, egymás után szolgálnánk ki, a GPU nagy része sok időben tétlenül állna. A kötegelés lényege, hogy a motor a beérkező kéréseket összefogja, és együtt, egyszerre dolgozza fel őket a hardveren.

A vLLM ezt folyamatosan, menet közben teszi. Nem várja meg, amíg összegyűlik egy nagy adag, hanem ahogy jönnek a kérések, dinamikusan illeszti be őket a futó kötegbe, és ahogy egy-egy válasz elkészül, a helyére újat vesz fel. Ennek köszönhetően a GPU szinte folyamatosan hasznos munkát végez. Ez az áteresztőképesség, angolul throughput, vagyis hogy adott idő alatt összesen mennyi kérést tud kiszolgálni a rendszer. A kötegelés a memóriakezeléssel együtt hat, hiszen minél kevesebb memóriát pazarolunk, annál több kérés fér bele egy kötegbe.


Naív kiszolgálás, kérésenkéntnaív
Kötegelt kiszolgálásvLLM

A sávok ugyanabból a GPU-ból kihozható áteresztőképességet szemléltetik, viszonyítva, nem pontos mérési adat. A lényeg az arány, nem a konkrét érték.


Miért lett olcsó és gyors az AI kiszolgálás

Itt érdemes megállni egy fontos gondolatra. Sokan úgy magyarázzák az AI árának zuhanását, hogy a modellek egyre kisebbek és olcsóbbak lettek. Ebben van igazság, de a kép hiányos. Az árcsökkenés jelentős része nem a modellben, hanem a kiszolgálásban dől el. Nem feltétlenül a modell lett kisebb, hanem a kiszolgálás lett hatékonyabb. Ugyanaz a modell ugyanazon a hardveren ma sokkal több kérést tud kiszolgálni, mint néhány éve, mert az inferencia motor időközben jóval okosabb lett.

Ez azért lényeges, mert megváltoztatja azt, hogyan gondolkodunk a költségekről. Ha egy GPU háromszor annyi kérést tud kiszolgálni, akkor egy kérés kiszolgálásának költsége töredékére esik, anélkül hogy a modell egyetlen paramétere is változna. A vLLM és a hozzá hasonló inferencia motorok pontosan ezt a hatékonyságot hozták el. A miért ilyen olcsó ma az AI kérdés jó része tehát az inferencia rétegben dől el, nem a modellben.


2

Két külön kérdés. Az egyik, hogy milyen okos a modell. A másik, hogy milyen hatékonyan szolgáljuk ki. Az AI kiszolgálás olcsósága nagyrészt a második kérdésen múlik, és ezt a réteget a vLLM-hez hasonló inferencia motorok viszik előre.


Mikor releváns ez egy cégnek

Egy vezető joggal kérdezi, mikor kell ezzel a réteggel egyáltalán foglalkoznia. A válasz attól függ, hogyan használja a cég az AI-t. Ha a cég egy külső szolgáltató kész API-ját hívja, akkor az inferencia motort a szolgáltató üzemelteti, és ez a réteg gyakorlatilag rejtve marad. Ilyenkor nem kell vLLM-mel foglalkozni, csak az API-t kell meghívni, a hatékony kiszolgálás a szolgáltató dolga.

A helyzet akkor változik meg, ha a cég saját, nyílt súlyú modellt futtat a saját infrastruktúráján, nem pedig külső API-t hív. Ilyenkor a cég maga lesz az, aki kiszolgálja a modellt, és ekkor az inferencia motor közvetlenül az ő költségét és sebességét határozza meg. Ebben az esetben a vLLM választása és beállítása valódi, kézzelfogható különbséget jelent abban, hány GPU-ra van szükség, és mennyibe kerül a működés.

Vegyünk egy fiktív magyar példát. Képzeljünk el egy hazai biztosítótársaságot, amely ügyfélkérdésekre válaszoló AI asszisztenst szeretne, de az adatvédelmi és megfelelőségi elvárások miatt az érzékeny ügyféladatot nem küldheti ki egy külső szolgáltatóhoz. Ezért a cég egy nyílt súlyú modellt futtat a saját, ellenőrzött infrastruktúráján, hogy az adat végig házon belül maradjon. Ebben a felállásban az inferencia motor nem technikai apróság, hanem az egyik legfontosabb döntés. A vLLM révén ugyanaz a néhány GPU sokkal több munkatársat és ügyfélkérdést tud kiszolgálni, ami közvetlenül a projekt megtérülésén látszik.


Külső API-t hív a cég

  • Az inferencia motort a szolgáltató üzemelteti
  • A réteg rejtve marad, csak az API-t kell hívni
  • A kiszolgálás hatékonysága nem a cég gondja
  • Az adat a szolgáltatóhoz kerül

Saját modellt futtat a cég

  • A cég maga szolgálja ki a modellt
  • Az inferencia motor közvetlenül a költséget szabja meg
  • A vLLM választása kézzelfogható különbség
  • Az adat végig házon belül maradhat

Vezetői tanulság

A legfontosabb üzenet nem technikai. Az inferencia motor az a láthatatlan réteg, ahol az AI kiszolgálás valódi költsége és sebessége eldől. Amikor arról olvasunk, hogy az AI egyre olcsóbb, érdemes tudni, hogy ennek jó része nem a modell zsugorodásából, hanem a kiszolgálás hatékonyabbá válásából fakad. A vLLM ennek a fejlődésnek az egyik motorja, és sok cég épp erre alapozza a saját modelljeinek futtatását.

Ha a cég külső API-ra épít, ez a réteg a szolgáltató gondja marad, és nyugodtan hagyható a háttérben. Ha viszont adatvédelmi, megfelelőségi vagy költségokból saját modellt futtat, akkor az inferencia motor a döntések élvonalába kerül, mert ezen múlik, hány GPU-ra van szükség és mennyibe kerül a működés. A helyes kérdés vezetőként nem az, hogy melyik a legokosabb modell, hanem az, hogy adott hardverből mennyi hasznos munkát tudunk kihozni.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →