Техническо РЪКОВОДСТВО

Обслужване на дезагрегирано предварително попълване и декодиране

Архитектура за обслужване, която разделя извода за големия езиков модел на две отделни фази – предварително попълване и декодиране – и ги изпълнява на различни групи GPU.

2 min readПоследна актуализация

Преглед

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

Дълбоко гмуркане

Когато LLM отговори, той работи на два етапа. Prefill чете цялата подкана наведнъж и изгражда кеша за ключ-стойност (KV); това е голям, паралелен, обвързан с изчисления импулс, който насища математическите единици на GPU. След това Decode генерира токени един по един, като всяка стъпка чете целия KV кеш - обвързано с честотната лента на паметта, леко изчислено изтичане. Изпълнявайки се заедно, дългото предварително попълване спира декодирането на всички (блокиране на началната линия), а групирането на двете създава смущения. Дезагрегирането поставя предварително попълване на един GPU пул и декодиране на друг, прехвърляйки KV кеша между тях през бързи връзки като NVLink или InfiniBand. Всеки пул се настройва и мащабира независимо, подобрявайки добрата производителност, изглаждайки латентността на опашката и позволявайки на операторите да постигат едновременно кратки цели за време до първи токен и време за изходен токен.

Техническа информация

Двете фази се различават по своето тясно място. Prefill обработва паралелно всички токени за подкана, така че неговите FLOPs се мащабират с дължината на подканата и увеличава максимално тензорните ядра. Декодирането е авторегресивно: всеки нов токен се нуждае от едно преминаване напред, което препрочита пълния KV кеш от HBM, така че пропускателната способност се определя от честотната лента на паметта, а не от изчисленията. Дезагрегацията използва това чрез оразмеряване, групиране и дори избиране на различен паралелизъм за всеки пул, след което изпраща KV кеша от работниците за предварително попълване за декодиране на работниците.

Стратегическо въздействие

Cost and budget

Архитектурните решения стимулират производителността и оперативните разходи в продължение на години.

Clearer decisions

Техническото образование помага на екипите да изберат правилния стек, а не само най-новия.

Quality control

По-добрият инженерен избор намалява инцидентите, свързани с надеждността в производството.

Бъдещето на дезагрегираните услуги за предварително попълване и декодиране

Очаквайте дезагрегацията да стане стандартна в производствените стекове. Системи като DistServe, Splitwise и Mooncake го популяризираха, а vLLM и NVIDIA Dynamo сега доставят дезагрегирани режими. Изследванията настояват за оптимизиране на прехвърляне на KV-кеш, обединяване на кеша и повторно използване в заявки, динамично повторно балансиране на съотношенията за предварително попълване/декодиране при променящ се трафик и по-тясна интеграция с кеширане на префикс и предварително попълване на парчета. Тъй като контекстните прозорци нарастват до милиони токени, разделянето на тези фази става все по-съществено за рентабилно обслужване с ниска латентност.

Внедряване в реалния свят

Асистентът за чат насочва подкани за дълги документи към натоварен с изчисления клъстер за предварително попълване, след което предава поточно отговори от оптимизиран за памет клъстер за декодиране, за да поддържа плавно забавяне при въвеждане.

NVIDIA Dynamo и vLLM позволяват на операторите да разположат отделни работни групи за предварително попълване и декодиране, така че поредица от дълги подкани да не замразява текущите поколения.

Mooncake (използван от Kimi от Moonshot AI) дезагрегира предварително попълване и декодиране и добавя разпределен KV-кеш пул, за да намали излишното бързо преизчисляване в мащаб.

Услуга за завършване на код отделя малък пул за предварително попълване за кратки подкани и голям пул за декодиране, тъй като повечето разходи идват от поточно предаване на много изходни токени.

Рискове и предпазни огради

Оптимизирането на един бенчмарк може да скрие по-широки системни слабости.

Разходите за инфраструктура и поддръжка често се подценяват.

Пропуските в сигурността и видимостта могат да нарастват, когато системите стават по-сложни.

Пътна карта за изпълнение

1

Определете целите за латентност, качество и разходи преди внедряването.

2

Бенчмарк при реалистични условия на натоварване и данни.

3

Мониторинг на инструмента за грешки, отклонение и въздействие върху потребителя.

4

Подгответе пътеките за връщане назад и реакция на инцидент преди мащабиране.

Продължете да изследвате

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.

Start quiz

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

Next guide

KServe и обслужване на модели в Kubernetes

Frequently asked questions

What is Disaggregated Prefill and Decode Serving?

Архитектура за обслужване, която разделя извода за големия езиков модел на две отделни фази – предварително попълване и декодиране – и ги изпълнява на различни групи GPU. Има значение, защото тези две фази имат противоположни хардуерни апетити и принуждаването им към едни и същи машини губи капацитет и вреди на латентността.

Каква е основната хардуерна причина за разделянето на предварително попълване и декодиране на различни GPU пулове?

Prefill обработва паралелно цялата подкана и насища изчисленията, докато декодирането чете KV кеша на всяка стъпка и е ограничено от честотната лента на паметта – противоположни желания, които оправдават отделни, независимо настроени пулове.

Каква структура от данни трябва да се прехвърли от работниците за предварително попълване към работниците за декодиране?

Prefill изгражда KV кеша за подканата; decode се нуждае от този кеш, за да продължи да генерира, така че кешът се изпраща през бърза връзка към пула за декодиране.

Кой проблем конкретно намалява дезагрегацията при настройка на споделен GPU?

На споделени графични процесори дълъг пакет от предварително запълване може да блокира текущите стъпки за декодиране; разделянето им предотвратява тази намеса и стабилизира латентността на опашката.

Защо предварителното попълване може да се пакетира агресивно, но декодирането се възползва от различни настройки?

Prefill обработва всички подкани заедно, така че по-големите партиди захранват добре тензорните ядра; decode генерира един токен наведнъж и се управлява от паметта, така че се мащабира по различен начин.

Кои връзки обикновено се използват за преместване на KV кеша между дезагрегирани пулове?

Необходими са връзки с висока честотна лента и ниска латентност като NVLink (вътрешен възел) и InfiniBand (между възел), така че прехвърлянето на KV-кеша да не се превърне в новото пречка.