NastępnyNastępny poradnik
KServe i modelowanie w Kubernetesie
Techniczne
PRZEWODNIK techniczny
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.
Posłuchaj tego przewodnikaOpowiadane przez sztuczną inteligencję · ~2 min
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.
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.
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.
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.
Darmowy newsletter
Trzy zweryfikowane historie AI każdego poranka w dni robocze, napisane prostym angielskim. Bezpłatne na zawsze, bez reklam.
Jedno e‑mail każdego dnia roboczego. Wypisz się jednym kliknięciem. Nigdy nie sprzedajemy ani nie udostępniamy Twojego adresu.
Sprawdź się
Natychmiastowa informacja zwrotna na każde pytanie oraz udostępnialny certyfikat z weryfikowalnym ID po zaliczeniu kursu.
Wspieraj darmową edukację AI. AI Understanding jest organizacją non-profit 501(c)(3) — bez reklam, bez płatnej ściany, zawsze. Przekaż darowiznę
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.
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.
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.
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.
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.
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).
Ucz się dalej
Wybrano więcej przewodników na ten temat
NastępnyNastępny poradnik
KServe i modelowanie w Kubernetesie
Techniczne