Sobes.tech
Back to questions
Senior
7

Что такое continuous batching и чем он лучше static batching?

Companies where asked
Автомакон
VK CloudVK Cloud
ОстровокОстровок

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Continuous batching — это способ динамически набирать и пересобирать batch на каждом шаге генерации, а не фиксировать состав batch заранее. Он лучше static batching в системах с LLM-инференсом, потому что повышает утилизацию GPU и снижает простой из-за разной длины запросов. В итоге обычно получается выше throughput и лучше latency при смешанном потоке запросов.

Определение:

Continuous batching — это техника обслуживания запросов, при которой система постоянно добавляет новые запросы в выполнение и удаляет завершившиеся, формируя batch “на лету” на каждом decoding step.

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

Пример использования:

В LLM inference-сервере приходят запросы на генерацию текста с разной длиной: один пользователь хочет 20 токенов, другой — 200.
При static batching оба запроса объединяются в один batch, и короткий запрос может ждать, пока длинный не продвинется дальше.
При continuous batching короткий запрос можно завершить и сразу заменить его новым входящим запросом, не дожидаясь окончания всего batch.

Шаг 1: В батче есть запросы A, B, C.
Шаг 2: На очередном decoding step запрос A завершился.
Шаг 3: Система сразу убирает A и добавляет новый запрос D.
Шаг 4: Следующий шаг выполняется уже для набора B, C, D.

Пояснение кода:

Код не требуется: это архитектурный принцип работы inference scheduler, а не синтаксис конкретного API.

Разбор примера по шагам:

  1. Система получает поток входящих запросов.
  2. Вместо ожидания набора фиксированного batch она планирует выполнение по шагам генерации.
  3. На каждом шаге проверяется, какие запросы завершились.
  4. Освободившиеся слоты сразу заполняются новыми запросами из очереди.
  5. Таким образом GPU почти не простаивает, а batch остается “живым” и меняется во времени.

Ключевые моменты:

  • Continuous batching лучше подходит для LLM-serving, где длины запросов сильно различаются.
  • Главный плюс — выше GPU utilization и обычно лучше throughput.
  • Дополнительный плюс — меньше head-of-line blocking: короткие запросы не ждут длинные слишком долго.
  • Static batching проще реализовать, но хуже масштабируется по latency и эффективности при реальном потоке запросов.
  • Continuous batching особенно полезен в системах с autoregressive decoding, где модель генерирует токены по одному шагу.