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

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

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

Обзор

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

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

Глубокое погружение

Когда LLM отвечает, он работает в два этапа. Предварительное заполнение считывает все приглашение сразу и создает кеш ключ-значение (KV); это большой параллельный пакет, связанный с вычислениями, который насыщает математические блоки графического процессора. Затем Decode генерирует токены по одному, на каждом этапе считывая весь KV-кеш — небольшой поток вычислений, ограниченный пропускной способностью памяти. При совместном использовании длинное предварительное заполнение останавливает декодирование каждого (блокировка начала строки), а объединение этих двух данных в пакетное состояние создает помехи. При дезагрегации предварительное заполнение происходит в одном пуле графических процессоров, а декодирование — в другом, передавая KV-кеш между ними через быстрые соединения, такие как NVLink или InfiniBand. Каждый пул настраивается и масштабируется независимо, что повышает производительность, сглаживает задержку и позволяет операторам одновременно достичь жестких целевых показателей по времени появления первого токена и времени на вывод каждого токена.

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

Эти два этапа различаются по своим узким местам. Prefill обрабатывает все токены подсказок параллельно, поэтому его FLOP масштабируются в зависимости от длины подсказки и максимально задействуют тензорные ядра. Декодирование является авторегрессионным: каждому новому токену требуется один прямой проход, который перечитывает весь кэш KV из HBM, поэтому пропускная способность ограничивается пропускной способностью памяти, а не вычислениями. При дезагрегации это используется путем определения размера, пакетирования и даже выбора различного параллелизма для каждого пула, а затем доставки кэша KV от исполнителей предварительного заполнения к исполнителям декодирования.

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

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

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

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

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

Архитектурные решения влияют на производительность и эксплуатационные расходы на протяжении многих лет.

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

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

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

Лучший инженерный выбор снижает вероятность возникновения проблем с надежностью на производстве.

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

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

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

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

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

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

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

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

Шаблоны реализации

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

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

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

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

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

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

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

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

Mooncake (используется Кими из Moonshot AI) дезагрегирует предварительное заполнение и декодирование и добавляет распределенный пул KV-кэша для сокращения избыточных оперативных повторных вычислений в масштабе. Команды обычно получают лучшие результаты, когда заранее определяют пороговые значения качества, сохраняют путь эскалации вручную для крайних случаев и отслеживают как прирост производительности, так и затраты на ошибки с течением времени.

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

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

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

Риски и ограничения

!

Оптимизация одного теста может скрыть более широкие недостатки системы.

!

Затраты на инфраструктуру и техническое обслуживание часто недооцениваются.

!

Пробелы в безопасности и наблюдаемости могут увеличиваться по мере усложнения систем.

Дорожная карта реализации

1

Определите целевые показатели задержки, качества и стоимости перед внедрением.

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

2

Тестирование при реалистичной нагрузке и условиях данных.

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

3

Мониторинг прибора на наличие ошибок, дрейфа и влияния пользователя.

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

4

Перед масштабированием подготовьте пути отката и реагирования на инциденты.

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

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