Continuous batching в LLM inference
Что такое continuous batching и зачем он нужен в inference больших языковых моделей?
Короткий ответ
Continuous batching динамически добавляет и удаляет requests из batch на decode steps, повышая GPU utilization без ожидания завершения всего batch.
Полный разбор
В обычном batching сервер может ждать, пока наберется batch, и затем обрабатывать все запросы вместе. В autoregressive LLM decode запросы имеют разную длину, поэтому часть batch быстро заканчивается, а GPU начинает простаивать.
Continuous batching работает на уровне итераций decode: завершенные sequence удаляются, новые sequence добавляются, scheduler поддерживает плотный batch активных токенов. Это повышает throughput и utilization, но требует аккуратного KV cache management, fairness, admission control и trade-off с latency.
В ответе хорошо упомянуть, что prefill и decode имеют разные профили нагрузки, а batching policy может отличаться для них.
Теория
LLM inference ограничен не только FLOPs, но и memory/KV cache/scheduler. Continuous batching - ключевая техника production serving.
Типичные ошибки
- Описывать только static batching.
- Не упоминать разные длины запросов.
- Забыть про KV cache management.
Как отвечать на собеседовании
- Скажи "decode step scheduler".
- Отдельно назови throughput/latency trade-off.