Архитектура инференса LLM: батчинг, KV-кеш и мультиарендность
Статья объясняет, как устроены системы инференса больших языковых моделей изнутри. Автор разбирает, почему наивный подход тратит ресурсы GPU впустую, как работают современные техники оптимизации (continuous batching, PagedAttention) и что происходит, когда нужно обслуживать множество пользователей одновременно на одном железе.
Обязательное чтение для ML-инженеров и DevOps, которые развёртывают собственные LLM-сервисы. Статья даёт глубокое понимание того, почему современные фреймворки (vLLM, TensorRT-LLM, SGLang) работают эффективнее наивных реализаций и какие компромиссы стоят за решениями по оптимизации.
Это аннотация к авторской статье. Мы не публикуем и не пересказываем чужие тексты целиком — полная версия у автора.
О чём статья
- Инференс LLM состоит из двух фаз с противоположными узкими местами: prefill (ограничен вычислениями) и decode (ограничен пропускной способностью памяти)
- Continuous batching позволяет добавлять новые запросы после каждого шага генерации вместо ожидания завершения всего батча, что даёт 2-4x прирост пропускной способности
- PagedAttention разбивает KV-кеш на блоки фиксированного размера, устраняя фрагментацию памяти и позволяя разным последовательностям делить одинаковые префиксы промптов
- При самостоятельном развёртывании моделей управление KV-кешем становится центральной задачей — он часто заканчивается раньше, чем вычислительные ресурсы GPU
Анна Мельникова
Medium #llm
Читать оригинал
Комментарии