PRZEWODNIK techniczny

Zdezagregowane wstępne wypełnianie i dekodowanie

Architektura obsługująca, która dzieli wnioskowanie modelu dużego języka na dwie oddzielne fazy — wstępne wypełnianie i dekodowanie — i uruchamia je na różnych pulach procesorów graficznych.

2 minuty czytaniaOstatnia aktualizacja

Przegląd

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

Głębokie nurkowanie

Kiedy LLM odpowiada, działa w dwóch etapach. Funkcja Prefill odczytuje jednocześnie cały monit i tworzy pamięć podręczną typu klucz-wartość (KV). jest to duży, równoległy impuls związany z obliczeniami, który nasyca jednostki matematyczne procesora graficznego. Następnie dekodowanie generuje tokeny pojedynczo, przy czym każdy krok odczytuje całą pamięć podręczną KV – ograniczoną przepustowością pamięci i wymagającą niewielkich obliczeń. Działajcie razem, długie wstępne wypełnienie blokuje dekodowanie wszystkich (blokowanie nagłówka linii), a łączenie ich w partie powoduje zakłócenia. Dezagregacja umieszcza wstępne wypełnienie jednej puli GPU i dekodowanie w drugiej, przesyłając pamięć podręczną KV między nimi za pośrednictwem szybkich połączeń wzajemnych, takich jak NVLink lub InfiniBand. Każda pula jest dostrajana i skalowana niezależnie, co poprawia wydajność, wygładza opóźnienia końcowe i pozwala operatorom jednocześnie osiągać cele w krótkim czasie do pierwszego tokena i czasu na token wyjściowy.

Wgląd techniczny

Obie fazy różnią się wąskim gardłem. Prefill przetwarza wszystkie tokeny podpowiedzi równolegle, więc jego FLOPy skalują się wraz z długością podpowiedzi i maksymalizują rdzenie tensorowe. Dekodowanie jest autoregresyjne: każdy nowy token wymaga jednego przejścia w przód, które ponownie odczytuje pełną pamięć podręczną KV z HBM, więc przepustowość jest bramkowana przepustowością pamięci, a nie obliczeniami. Dezagregacja wykorzystuje to poprzez ustalanie rozmiaru, grupowanie, a nawet wybieranie innej równoległości dla każdej puli, a następnie wysyłanie pamięci podręcznej KV od procesów roboczych wstępnie wypełniających w celu dekodowania procesów roboczych.

Wpływ strategiczny

Koszt i budżet

Decyzje dotyczące architektury wpływają na wydajność i koszty operacyjne przez lata.

Jaśniejsze decyzje

Edukacja techniczna pomaga zespołom wybrać odpowiedni stos, a nie tylko najnowszy.

Kontrola jakości

Lepsze wybory inżynieryjne zmniejszają liczbę incydentów związanych z niezawodnością w produkcji.

Przyszłość zdezagregowanego udostępniania wstępnego wypełniania i dekodowania

Oczekuj, że dezagregacja stanie się wartością domyślną w stosach produkcyjnych. Spopularyzowały go systemy takie jak DistServe, Splitwise i Mooncake, a vLLM i NVIDIA Dynamo udostępniają teraz zdezagregowane tryby. Badania naciskają na optymalizację transferu pamięci podręcznej KV, łączenie pamięci podręcznej i ponowne wykorzystanie żądań, dynamiczne równoważenie współczynników wstępnego wypełniania/dekodowania w przypadku zmieniającego się ruchu oraz ściślejsza integracja z buforowaniem prefiksów i wstępnym wypełnianiem fragmentów. W miarę jak okna kontekstowe rozrastają się do milionów tokenów, oddzielenie tych faz staje się coraz bardziej istotne w celu zapewnienia opłacalnej obsługi z niskimi opóźnieniami.

Implementacja w świecie rzeczywistym

Asystent czatu kieruje podpowiedzi dotyczące długich dokumentów do klastra wstępnego wypełniania wymagającego dużej mocy obliczeniowej, a następnie przesyła strumieniowo odpowiedzi z klastra dekodowania zoptymalizowanego pod kątem pamięci, aby zapewnić płynność opóźnień podczas pisania.

NVIDIA Dynamo i vLLM umożliwiają operatorom wdrażanie oddzielnych grup pracowników zajmujących się wstępnym wypełnianiem i dekodowaniem, dzięki czemu seria długich monitów nie blokuje bieżących pokoleń.

Mooncake (używany przez Kimi z Moonshot AI) dezagreguje wstępne wypełnianie i dekodowanie oraz dodaje rozproszoną pulę pamięci podręcznej KV, aby ograniczyć zbędne, natychmiastowe ponowne obliczenia na dużą skalę.

Usługa uzupełniania kodu przeznacza małą pulę wstępnego wypełnienia na krótkie monity i dużą pulę dekodowania, ponieważ większość kosztów pochodzi ze przesyłania strumieniowego wielu tokenów wyjściowych.

Zagrożenia i poręcze

Optymalizacja jednego testu porównawczego może ukryć szersze słabości systemu.

Koszty infrastruktury i utrzymania są często niedoszacowane.

W miarę jak systemy stają się coraz bardziej złożone, luki w bezpieczeństwie i obserwowalności mogą się zwiększać.

Plan wdrożenia

1

Przed wdrożeniem zdefiniuj docelowe opóźnienia, jakość i koszty.

2

Test porównawczy w realistycznych warunkach obciążenia i danych.

3

Monitorowanie przyrządu pod kątem błędów, dryftu i wpływu użytkownika.

4

Przed skalowaniem przygotuj ścieżki wycofywania zmian i reakcji na incydenty.

Odkrywaj dalej

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.

Rozpocznij quiz

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

Następny poradnik

KServe i modelowanie w Kubernetesie

Często zadawane pytania

What is Disaggregated Prefill and Decode Serving?

Architektura obsługująca, która dzieli wnioskowanie modelu dużego języka na dwie oddzielne fazy — wstępne wypełnianie i dekodowanie — i uruchamia je na różnych pulach procesorów graficznych. Ma to znaczenie, ponieważ te dwie fazy mają przeciwne wymagania sprzętowe, a zmuszanie ich do pracy na tych samych maszynach marnuje pojemność i szkodzi opóźnieniom.

Jaki jest główny powód sprzętowy rozdzielania wstępnego wypełniania i dekodowania na różne pule procesorów graficznych?

Funkcja wstępnego wypełniania przetwarza cały monit równolegle i nasyca obliczenia, podczas gdy dekodowanie odczytuje pamięć podręczną KV w każdym kroku i jest ograniczone przepustowością pamięci — przeciwne apetyty, które uzasadniają oddzielne, niezależnie dostrojone pule.

Jaką strukturę danych należy przenieść z procesów roboczych wstępnego wypełniania do procesów roboczych dekodujących?

Prefill buduje pamięć podręczną KV dla zachęty; dekodowanie wymaga pamięci podręcznej do dalszego generowania, dlatego pamięć podręczna jest przesyłana szybkim łączem do puli dekodowania.

Który problem w szczególności zmniejsza dezagregacja w przypadku konfiguracji ze współdzieloną kartą graficzną?

Na współdzielonych procesorach graficznych długa seria wstępnego wypełnienia może blokować trwające etapy dekodowania; oddzielenie ich zapobiega tym zakłóceniom i stabilizuje opóźnienie ogona.

Dlaczego wstępne wypełnienie może być agresywne wsadowo, ale dekodowanie przynosi korzyści z innego dostrajania?

Prefill przetwarza wszystkie tokeny podpowiedzi razem, więc większe partie dobrze zasilają rdzenie tensora; decode generuje jeden token na raz i jest bramkowany przez pamięć, więc skaluje się inaczej.

Które połączenia międzysieciowe są zwykle używane do przenoszenia pamięci podręcznej KV pomiędzy zdezagregowanymi pulami?

Aby transfer pamięci podręcznej KV nie stał się nowym wąskim gardłem, potrzebne są łącza o dużej przepustowości i małych opóźnieniach, takie jak NVLink (wewnątrzwęzłowe) i InfiniBand (międzywęzłowe).