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

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

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

Чуйте това ръководствоAI-разказан · ~2 min

На тази страница2 минути четене
  1. Преглед
  2. Дълбоко гмуркане
  3. Внедряване в реалния свят
  4. Бъдещето на дезагрегираните услуги за предварително попълване и декодиране
  5. Прилагайки го на практика
  6. Продължете да изследвате
  7. Често задавани въпроси

Преглед

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. Всеки пул се настройва и мащабира независимо, подобрявайки добрата производителност, изглаждайки латентността на опашката и позволявайки на операторите да постигат едновременно кратки цели за време до първи токен и време за изходен токен.

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

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

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

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

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

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

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

Прилагайки го на практика

Защо има значение

  • Разходи и бюджет. Архитектурните решения стимулират производителността и оперативните разходи в продължение на години.
  • По-ясни решения. Техническото образование помага на екипите да изберат правилния стек, а не само най-новия.
  • Контрол на качеството. По-добрият инженерен избор намалява инцидентите, свързани с надеждността в производството.

Внимавайте за

  • Оптимизирането на един бенчмарк може да скрие по-широки системни слабости.
  • Разходите за инфраструктура и поддръжка често се подценяват.
  • Пропуските в сигурността и видимостта могат да нарастват, когато системите стават по-сложни.

Следващи стъпки

  1. Определете целите за латентност, качество и разходи преди внедряването.
  2. Бенчмарк при реалистични условия на натоварване и данни.
  3. Мониторинг на инструмента за грешки, отклонение и въздействие върху потребителя.
  4. Подгответе пътеките за връщане назад и реакция на инцидент преди мащабиране.

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

Безплатен бюлетин

Получавайте дневния AI бюлетин

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

Един имейл всеки делничен ден. Отписване с едно кликване. Никога не продаваме и не споделяме вашия имейл адрес.

Тествайте себе си

Take the Disaggregated Prefill and Decode Serving quiz

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

Стартирай теста

Подкрепете безплатното AI образование. AI Understanding е 501(c)(3) с нестопанска цел — без реклами, без платен достъп, никога. Направете дарение

Често задавани въпроси

What is Disaggregated Prefill and Decode Serving?

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

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

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

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

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

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

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

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

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

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

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

Продължавай да учиш

Свързани ръководства

Още ръководства, избрани за тази тема

Получете безплатен AI сертификатКратък безплатен курс и изпит. Без разходи, без карта. Около 2,5 часа.Започнете безплатно →