Inference

continuous batching

Динамическое добавление новых запросов в батч без ожидания завершения текущего.

Что такое continuous batching

В классическом статическом батчинге сервер собирает группу запросов, обрабатывает их целиком, и только потом берёт следующую группу. Если один запрос в батче генерирует 500 токенов, а остальные завершились на 50-м — GPU простаивает, ожидая «отстающего».

Continuous batching (также называемый iteration-level scheduling или в-полёте батчинг) решает эту проблему: на каждом шаге декодирования сервер проверяет очередь и подставляет новые запросы на место завершившихся. Нет «медленного» запроса, который блокирует весь батч.

Эффект на производительность

При реальных нагрузках continuous batching даёт 3–10× рост throughput по сравнению со статическим батчингом:

  • GPU утилизируется значительно эффективнее
  • Латентность p99 (хвосты) снижается — нет ожидания «отстающих» запросов
  • Эффективная параллельность: при размере батча 32 и разных длинах ответов GPU никогда не простаивает

Где реализован

Фреймворк Реализация
vLLM Да, с PagedAttention
TGI Да
SGLang Да
llama.cpp Ограниченно (с версии b3000+)

Связанные термины

  • batching — статический батчинг как базовая концепция
  • PagedAttention — управление памятью, complementary к continuous batching
  • tokens per second — метрика, которую continuous batching максимизирует
  • serving — контекст применения

Готовы запустить GPU-задачу?

Запустить GPU-сервер