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-сервер