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

Непрерывное пакетирование

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

2 минуты чтенияПоследнее обновление

Обзор

It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.

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

Графические процессоры работают быстрее всего, когда они обрабатывают множество запросов одновременно в пакете. Наивный подход — статическая пакетная обработка — группирует фиксированный набор запросов, выполняет их все до завершения, а затем запускает следующий пакет. Проблема: выходные данные языковой модели сильно различаются по длине, поэтому короткие запросы завершаются раньше, а их слоты простаивают, пока пакет ожидает самый длинный из них, тратя впустую циклы графического процессора и задерживая новые поступления. Непрерывная пакетная обработка (также называемая пакетной обработкой на лету или на уровне итерации, популяризированная в статье Orca и используемая в vLLM, TensorRT-LLM и TGI) работает с точностью одного шага декодирования. После генерации каждого токена готовые последовательности выходят из пакета, а вновь поступившие запросы немедленно помещаются в слоты. Благодаря этому пакет остается полным, а графический процессор — насыщенным, что часто увеличивает пропускную способность в несколько раз и снижает задержку для ожидающих пользователей.

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

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

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

Стоимость и бюджет

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

Более четкие решения

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

Контроль качества

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

Будущее непрерывного пакетирования

Непрерывное дозирование теперь является стандартом при производстве LLM-обслуживания. Будущая работа усовершенствует планировщик: отделение фазы предварительного заполнения с большими объемами вычислений от более легкой фазы декодирования (дезагрегирование), фрагментирование предварительного заполнения во избежание остановок декодирования, политики приоритета и справедливости для смешанных рабочих нагрузок, а также более тесная связь со спекулятивным декодированием, чтобы за шаг проверялось несколько черновых токенов. Цель — выжать максимальное количество токенов в секунду на каждый графический процессор, сохраняя при этом низкую и предсказуемую задержку индивидуального ответа.

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

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

Удаление короткого завершенного ответа в середине пакета и заполнение его слота, чтобы графический процессор никогда не простаивал в ожидании долгого поколения.

Сочетание непрерывной пакетной обработки с PagedAttention от vLLM для дешевой вставки и удаления последовательностей на каждом этапе декодирования.

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

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

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

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

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

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

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 Continuous Batching quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Начать тест

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

Следующее руководство

Kubernetes для рабочих нагрузок машинного обучения

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

What is Continuous Batching?

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

В чем основной недостаток статической (фиксированной) пакетной обработки для обслуживания LLM?

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

С какой степенью детализации непрерывная пакетная обработка добавляет и удаляет запросы?

Непрерывная пакетная обработка (на уровне итерации) обновляет активный набор после каждого шага декодирования, поэтому она работает по токенам, а не по всему запросу.

Когда последовательность завершается в середине партии при непрерывной пакетной обработке, что происходит с ее слотом?

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

Какой метод естественным образом сочетается с непрерывной пакетной обработкой, чтобы удешевить вставку/удаление последовательностей?

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

Какой исследовательской работе обычно приписывают популяризацию пакетной обработки на уровне итерации (непрерывной)?

В документе Orca было представлено планирование на уровне итераций, и эта идея была принята обслуживающими системами, такими как vLLM, TGI и TensorRT-LLM.