Что такое continuous batching и как его реализуют в vLLM/TGI?
Ответ от нейросети
sobes.tech AI
Continuous batching — это техника обработки запросов к модели машинного обучения, при которой входящие запросы на инференс собираются в батчи непрерывно и динамически, чтобы максимально эффективно использовать вычислительные ресурсы и снизить задержки. Вместо того чтобы ждать фиксированное время или фиксированное количество запросов, система постоянно формирует батчи из поступающих запросов и запускает их на обработку.
В vLLM и TGI (Text Generation Inference) continuous batching реализован через асинхронное ожидание и динамическое формирование батчей. Например, когда приходит запрос, он помещается в очередь, и движок пытается сформировать батч из нескольких запросов, не задерживая слишком долго первый запрос. Если новых запросов нет, батч запускается с тем, что есть. Это позволяет одновременно обрабатывать несколько запросов, эффективно используя GPU, при этом минимизируя задержки для каждого запроса.
Примерно это выглядит так:
- Запросы поступают в очередь.
- Система ждет либо достижения максимального размера батча, либо истечения таймаута.
- Формируется батч и запускается на модель.
- Результаты распределяются обратно по запросам.
Такой подход особенно полезен для трансформеров, где обработка батча значительно эффективнее по сравнению с одиночными запросами.