CONTINUOUS BATCHING · НЕ ЖДАТЬ САМОГО ДЛИННОГО
Сервер обрабатывает несколько запросов одновременно: за один шаг каждый активный запрос получает по токену. Вопрос в том, когда пускать новых. Обычный батчинг ждёт, пока закончится весь батч. Continuous пускает нового сразу, как освободилось место.
01 · очередь запросов шаг 0
#запрос → ответ моделиприходобычн.contin.
02 · обычный батчинг ждёт весь батч
03 · continuous batching сразу в свободный слот
04 · итог считаю…
Простой слота (красная штриховка) — это GPU, который ничего не делает, пока короткий запрос уже ответил, а длинный ещё пишет. Continuous batching сводит такие дыры к минимуму. На нём построены vLLM, TGI и большинство современных LLM-серверов.
Ответы в очереди сгенерировала настоящая модель со страницы transformer прямо в браузере, поэтому длины у них настоящие. Расписание двух серверов тоже считается здесь, по одним часам. Упрощения: шаг одинаковый по стоимости для любого числа слотов, а промпт нового запроса обрабатывается в том же шаге, где он вошёл.
~/ai $ serve --slots 3