Технічний КЕРІВНИЦТВО

Обслуговування дезагрегованого попереднього заповнення та декодування

Обслуговуюча архітектура, яка розділяє висновок моделі великої мови на дві окремі фази — попереднє заповнення та декодування — і запускає їх на різних пулах графічних процесорів.

Послухайте цей посібникШІ-розказаний · ~2 min

На цій сторінці2 хвилини читання
  1. Огляд
  2. Глибоке занурення
  3. Реалізація в реальному світі
  4. Майбутнє дезагрегованого попереднього заповнення та обслуговування декодування
  5. Застосування на практиці
  6. Продовжуйте досліджувати
  7. Часті запитання

Огляд

Це важливо, тому що ці дві фази мають протилежні апаратні потреби, і примусове їх розміщення на тих самих машинах витрачає пропускну здатність і шкодить затримці.

Глибоке занурення

Коли LLM відповідає, це працює в два етапи. Prefill зчитує весь запит одночасно та створює кеш ключ-значення (KV); це великий, паралельний, пов’язаний з обчисленнями сплеск, який насичує математичні блоки GPU. Потім Decode генерує токени по одному, на кожному кроці зчитуючи весь кеш KV — обмежений пропускною здатністю пам’яті, легкий обчислювальний поток. Якщо працювати разом, довгий попередній заповнення зупиняє декодування кожного (блокування на початку рядка), а групування двох створює перешкоди. Дезагрегація виконує попереднє заповнення в одному пулі графічних процесорів і декодує в іншому, передаючи кеш KV між ними через швидкі з’єднання, такі як NVLink або InfiniBand. Кожен пул налаштовується та масштабується незалежно, покращуючи хорошу пропускну здатність, згладжуючи кінцеву затримку та дозволяючи операторам одночасно досягати цільових показників часу до першого токена та часу до вихідного токена.

Реалізація в реальному світі

Помічник у чаті спрямовує довгі підказки документів до кластера попереднього заповнення, який потребує великих обчислень, а потім потоково передає відповіді з кластера декодування, оптимізованого для пам’яті, щоб підтримувати плавну затримку введення.

NVIDIA Dynamo та vLLM дозволяють операторам розгортати окремі робочі групи попереднього заповнення та декодування, щоб серія довгих підказок не зупиняла поточні генерації.

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

Служба завершення коду виділяє невеликий пул попереднього заповнення для коротких підказок і великий пул декодування, оскільки більшість витрат припадає на потокову передачу багатьох вихідних маркерів.

Майбутнє дезагрегованого попереднього заповнення та обслуговування декодування

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

Застосування на практиці

Чому це важливо

  • Вартість і бюджет. Архітектурні рішення збільшують продуктивність і експлуатаційні витрати протягом багатьох років.
  • Чіткіші рішення. Технічна освіта допомагає командам вибрати правильний стек, а не лише найновіший.
  • Контроль якості. Кращий інженерний вибір зменшує проблеми з надійністю у виробництві.

Зверніть увагу на

  • Оптимізація одного тесту може приховати ширші слабкі сторони системи.
  • Витрати на інфраструктуру та обслуговування часто недооцінюються.
  • Прогалини в безпеці та спостережуваності можуть зростати в міру ускладнення систем.

Наступні кроки

  1. Визначте цільові показники затримки, якості та вартості перед впровадженням.
  2. Тест за реалістичних умов навантаження та даних.
  3. Моніторинг інструментів на наявність помилок, дрейфу та впливу користувача.
  4. Перед масштабуванням підготуйте шляхи відкату та реагування на інциденти.

Продовжуйте досліджувати

Безплатний розсилок

Отримуйте щоденне зведення новин про ШІ

Три перевірені історії про ШІ щоробочого ранку, написані простою мовою. Безплатно назавжди, без реклами.

Один лист щотижня з понеділка по п'ятницю. Відписатися в один клік. Ми ніколи не продаємо та не передаємо вашу адресу.

Перевір себе

Take the Disaggregated Prefill and Decode Serving quiz

Миттєва зворотна связь на кожну відповідь та сертифікат із перевіреним ідентифікатором, яким можна поділитися, після проходження курсу.

Розпочати вікторину

Підтримайте безплатну освіту у сфері ШІ. AI Understanding — це некомерційна організація 501(c)(3) — без реклами, без платних стін, назавжди. Зробіть пожертву

Часті запитання

Що таке дезагрегована служба попереднього заповнення та декодування?

Обслуговуюча архітектура, яка розділяє висновок моделі великої мови на дві окремі фази — попереднє заповнення та декодування — і запускає їх на різних пулах графічних процесорів. Це важливо, тому що ці дві фази мають протилежні апаратні потреби, і примусове їх розміщення на тих самих машинах витрачає пропускну здатність і шкодить затримці.

Яка основна апаратна причина для розділення попереднього заповнення та декодування на різні пули GPU?

Попереднє заповнення паралельно обробляє весь запит і насичує обчислення, тоді як декодування зчитує кеш KV на кожному кроці та обмежується пропускною здатністю пам’яті — протилежні потреби, які виправдовують окремі, незалежно налаштовані пули.

Яку структуру даних необхідно передати від робітників попереднього заповнення до робітників декодування?

Prefill створює кеш KV для підказки; decode потрібен цей кеш для продовження генерації, тому кеш надсилається через швидкісне з’єднання до пулу декодування.

Яку проблему конкретно зменшує дезагрегація в налаштуванні спільного графічного процесора?

На спільних графічних процесорах довгий пакет попереднього заповнення може блокувати поточні кроки декодування; їх розділення запобігає перешкодам і стабілізує хвостову затримку.

Чому попереднє заповнення можна агресивно пакетувати, але декодування отримує переваги від різного налаштування?

Prefill обробляє всі підказки разом, тому більші партії добре живлять ядра тензора; decode генерує один токен за раз і стробується пам’яттю, тому масштабується по-різному.

Які з’єднання зазвичай використовуються для переміщення кешу KV між дезагрегованими пулами?

Посилання з високою пропускною здатністю та низькою затримкою, такі як NVLink (внутрішньовузлове) і InfiniBand (міжвузлове), потрібні, щоб передача KV-кешу не стала новим вузьким місцем.

Продовжуйте вчитися

Пов'язані посібники

Інші посібники, вибрані для цієї теми

Отримайте безкоштовний сертифікат зі ШІКороткий безкоштовний курс та іспит. Безкоштовно, без картки. Близько 2,5 години.Почати безкоштовно →