Műszaki ÚTMUTATÓ

Bontott előtöltési és dekódolási szolgáltatás

Kiszolgáló architektúra, amely a nagy nyelvi modell-következtetést két külön fázisra – előtöltésre és dekódolásra – osztja, és különböző GPU-készleteken futtatja azokat.

2 perc olvasásUtoljára frissítve

Áttekintés

It matters because these two phases have opposite hardware appetites, and forcing them onto the same machines wastes capacity and hurts latency.

Mély merülés

Amikor egy LLM válaszol, két szakaszban működik. Az előtöltés egyszerre olvassa be a teljes promptot, és létrehozza a kulcsérték (KV) gyorsítótárat; ez egy nagy, párhuzamos, számításhoz kötött sorozat, amely telíti a GPU matematikai egységeit. A Decode ezután egyenként generál tokeneket, minden lépésben beolvassa a teljes KV gyorsítótárat – ez egy memóriasávszélességhez kötött, enyhén kiszámítható csordogálás. Együtt futva egy hosszú előtöltés mindenkinél leállítja a dekódolást (head-of-line blokkolás), és a kettő kötegelése interferenciát okoz. A szétbontás az egyik GPU-készleten előre kitölti, a másikon pedig dekódolja, és a KV-gyorsítótárat gyors összeköttetéseken, például NVLink-en vagy InfiniBandon keresztül továbbítja közöttük. Mindegyik készletet egymástól függetlenül hangolják és skálázzák, javítva a jó teljesítményt, kisimítva a farok késleltetését, és lehetővé téve az operátorok számára, hogy egyszerre érjék el az első tokenig és a kimenetenkénti időre vonatkozó célokat.

Technikai betekintés

A két fázis szűk keresztmetszetében különbözik. A Prefill az összes prompt tokent párhuzamosan dolgozza fel, így FLOP-jai a prompt hosszával skálázódnak, és maximalizálja a tenzormagokat. A dekódolás autoregresszív: minden új tokennek egy előremenő lépésre van szüksége, amely újra beolvassa a teljes KV gyorsítótárat a HBM-ből, így az átvitelt a memória sávszélessége korlátozza, nem pedig a számítás. A lebontás ezt kihasználja méretezéssel, kötegekkel, sőt különböző párhuzamosság kiválasztásával minden készlethez, majd a KV-gyorsítótárat az előtöltő dolgozóktól a dekódoló dolgozók felé szállítja.

Stratégiai hatás

Költség és költségvetés

Az építészeti döntések évekig növelik a teljesítményt és a működési költségeket.

Tisztább döntések

A technikai oktatás segít a csapatoknak a megfelelő verem kiválasztásában, nem csak a legújabb készletben.

Minőségellenőrzés

A jobb mérnöki döntések csökkentik a termelés megbízhatósági incidenseit.

A lebontott előtöltési és dekódolási szolgáltatás jövője

Várhatóan a bontás lesz az alapértelmezett a termelési veremekben. Az olyan rendszerek, mint a DistServe, a Splitwise és a Mooncake népszerűsítették, a vLLM és az NVIDIA Dynamo pedig bontott módokat szállít. A kutatások előmozdítják a KV-gyorsítótár átvitelének optimalizálását, a gyorsítótár-összevonást és a kérések közötti újrafelhasználást, az előtöltési/dekódolási arányok dinamikus újraegyensúlyozását változó forgalom mellett, valamint az előtag gyorsítótárazásával és a darabolt előtöltéssel való szorosabb integrációt. Ahogy a kontextusablakok több millió tokenekké nőnek, e fázisok szétválasztása egyre fontosabbá válik a költséghatékony, alacsony késleltetésű kiszolgáláshoz.

Valós megvalósítás

A csevegési asszisztens a hosszú dokumentumkérdéseket egy nagy számításigényű előtöltési fürthöz irányítja, majd egy memóriaoptimalizált dekódolófürtből streameli a válaszokat, hogy a gépelési várakozási idő zökkenőmentes legyen.

Az NVIDIA Dynamo és a vLLM lehetővé teszi az operátorok számára, hogy külön előtöltési és dekódoló munkacsoportokat telepítsenek, így a hosszú felszólítások sorozata nem fagyasztja le a folyamatban lévő generációkat.

A Mooncake (a Moonshot AI Kimi által használt) szétbontja az előtöltést és dekódolást, és hozzáad egy elosztott KV-gyorsítótárat, hogy csökkentse a redundáns azonnali újraszámítást.

A kódkiegészítő szolgáltatás egy kis előkitöltési készletet szán a rövid promptokhoz és egy nagy dekódolási készletet, mivel a legtöbb költség sok kimeneti token streameléséből származik.

Kockázatok és védőkorlátok

Egy benchmark optimalizálása elrejtheti a rendszer általános hiányosságait.

Az infrastrukturális és karbantartási költségeket gyakran alábecsülik.

A biztonsági és megfigyelhetőségi hiányosságok a rendszerek bonyolultabbá válásával nőhetnek.

Végrehajtási ütemterv

1

Határozza meg a késleltetési, minőségi és költségcélokat a megvalósítás előtt.

2

Benchmark reális terhelési és adatviszonyok mellett.

3

Műszerfigyelés a hibák, az eltolódás és a felhasználói hatások szempontjából.

4

A méretezés előtt készítse elő a visszagörgetési és az incidensre adott válaszútvonalakat.

Folytassa a felfedezést

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Disaggregated Prefill and Decode Serving quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Kezdő kvíz

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Következő útmutató

KServe és modellszolgáltatás a Kubernetesen

Gyakran ismételt kérdések

What is Disaggregated Prefill and Decode Serving?

Kiszolgáló architektúra, amely a nagy nyelvi modell-következtetést két külön fázisra – előtöltésre és dekódolásra – osztja, és különböző GPU-készleteken futtatja azokat. Ez azért fontos, mert ennek a két fázisnak ellentétes hardveres étvágya van, és ha ugyanarra a gépre kényszerítjük őket, az elveszíti a kapacitást és rontja a várakozási időt.

Mi az alapvető hardveres oka az előtöltés és a dekódolás szétválasztásának a különböző GPU-készletekre?

A Prefill párhuzamosan dolgozza fel a teljes promptot, és telíti a számítást, míg a dekódolás minden lépésben beolvassa a KV-gyorsítótárat, és korlátozza a memória sávszélessége – az ellenkező étvágy indokolja a különálló, egymástól függetlenül hangolt készleteket.

Milyen adatstruktúrát kell átvinni az előtöltő munkásoktól a dekódoló dolgozókhoz?

A Prefill létrehozza a KV gyorsítótárat a prompt számára; A dekódolásnak szüksége van erre a gyorsítótárra a generálás folytatásához, így a gyorsítótár egy gyors összeköttetésen keresztül kerül a dekódolási készletbe.

Melyik problémát csökkenti konkrétan a szétbontás egy megosztott GPU-beállításban?

A megosztott GPU-kon egy hosszú előtöltő sorozat blokkolhatja a folyamatban lévő dekódolási lépéseket; szétválasztásuk megakadályozza az interferenciát és stabilizálja a farok késleltetését.

Miért lehet az előtöltést agresszíven kötegelni, de miért lehet dekódolni a különböző hangolás előnyeit?

Az előtöltés együtt dolgozza fel az összes prompt tokent, így a nagyobb tételek jól táplálják a tenzormagokat; A decode egyszerre egy tokent generál, és a memória kapuzza, ezért eltérően skálázódik.

Milyen összeköttetéseket használnak általában a KV-gyorsítótár mozgatására a szétbontott készletek között?

Nagy sávszélességű, alacsony késleltetésű kapcsolatokra van szükség, mint például az NVLink (csomóponton belüli) és az InfiniBand (csomópontközi), hogy ne a KV-gyorsítótár átvitele legyen az új szűk keresztmetszet.