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

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

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

Прослушайте это руководствоОзвучено ИИ · ~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 отвечает, он работает в два этапа. Предварительное заполнение считывает все приглашение сразу и создает кеш ключ-значение (KV); это большой параллельный пакет, связанный с вычислениями, который насыщает математические блоки графического процессора. Затем Decode генерирует токены по одному, на каждом этапе считывая весь KV-кеш — небольшой поток вычислений, ограниченный пропускной способностью памяти. При совместном использовании длинное предварительное заполнение останавливает декодирование каждого (блокировка начала строки), а объединение этих двух данных в пакетное состояние создает помехи. При дезагрегации предварительное заполнение выполняется в одном пуле графических процессоров, а декодирование — в другом, передавая KV-кеш между ними через быстрые соединения, такие как NVLink или InfiniBand. Каждый пул настраивается и масштабируется независимо, что повышает производительность, сглаживает задержку и позволяет операторам одновременно достичь жестких целевых показателей по времени появления первого токена и времени на вывод каждого токена.

Реальная реализация

Чат-помощник направляет длинные запросы к документам в ресурсоемкий кластер предварительного заполнения, а затем передает ответы из оптимизированного для памяти кластера декодирования, чтобы обеспечить плавную задержку при вводе.

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

Mooncake (используемый Кими из 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 Understanding — это некоммерческая организация 501(c)(3). Никакой рекламы и платного доступа. Сделать пожертвование

Часто задаваемые вопросы

What is Disaggregated Prefill and Decode Serving?

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

Какова основная аппаратная причина разделения предварительного заполнения и декодирования на разные пулы графических процессоров?

Предварительное заполнение обрабатывает всю подсказку параллельно и насыщает вычислительные ресурсы, в то время как декодирование считывает KV-кэш на каждом этапе и ограничивается пропускной способностью памяти — противоположные аппетиты, которые оправдывают отдельные, независимо настраиваемые пулы.

Какую структуру данных необходимо передать из воркеров prefill в воркеры декодирования?

Предварительное заполнение создает кэш KV для приглашения; decode необходим этот кеш для продолжения генерации, поэтому кеш передается по быстрому соединению с пулом декодирования.

Какую проблему конкретно решает дезагрегация при настройке общего графического процессора?

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

Почему предварительное заполнение может быть агрессивно пакетным, но декодирование получает преимущества от другой настройки?

Предварительное заполнение обрабатывает все токены приглашений вместе, поэтому большие пакеты хорошо загружают тензорные ядра; decode генерирует по одному токену за раз и ограничивается памятью, поэтому масштабируется по-разному.

Какие межсоединения обычно используются для перемещения кэша KV между дезагрегированными пулами?

Чтобы передача KV-кэша не стала новым узким местом, необходимы каналы с высокой пропускной способностью и низкой задержкой, такие как NVLink (внутриузловые) и InfiniBand (межузловые).

Продолжайте учиться

Связанные руководства

Другие руководства, выбранные по этой теме

Получите бесплатный AI-сертификатКороткий бесплатный курс и экзамен. Без стоимости, без карты. Около 2,5 часов.Начать бесплатно →