Внутри vLLM: анатомия высокопроизводительной системы инференса больших языковых моделей

vLLM — один из самых широко используемых движков инференса с открытым исходным кодом для LLM, и недавний пост Алексы Гордича предлагает основательный технический обзор его внутреннего устройства. Он предназначен для разработчиков, интересующихся тем, как устроены современные движки LLM, или рассматривающих возможность внесения вклада в vLLM, SGLang и подобные проекты. Анализ привязан к коммиту 42172ad (9 августа 2025 г.) и фокусируется на новом движке V1 (V0 устарел).
Основные компоненты движка
Статья начинается с офлайн-синхронной настройки с использованием простого объекта LLM. Конструктор движка разбит на несколько ключевых частей:
- Конфигурация vLLM — все параметры для модели, кэша, параллелизма и т.д.
- Процессор — преобразует необработанные входные данные в запросы ядра движка посредством валидации и токенизации.
- Клиент ядра движка — в примере это
InprocClient, работающий в процессе; для продакшена следует перейти на многопроцессный клиент, напримерDPLBAsyncMPClient. - Обработчик выходных данных — преобразует выходные данные ядра движка в выходные данные для пользователя.
Само ядро движка содержит исполнитель моделей (управляющий прямыми проходами), менеджер структурированных выходных данных (для управляемой декодировки) и планировщик с очередями ожидания и выполнения. Планировщик использует политику (FCFS или приоритетную) и включает менеджер KV-кэша.
Paged Attention и KV-кэш
Менеджер KV-кэша — сердце paged attention. Он поддерживает free_block_queue доступных блоков, часто сотни тысяч, в зависимости от VRAM и размера блока. Размер блока для стандартного трансформера (не-MLA) вычисляется как:
2 * block_size * num_kv_heads * head_size * dtype_num_bytes
что при настройках по умолчанию даёт практический размер блока. Этот механизм пейджинга обеспечивает эффективное управление памятью и высокую пропускную способность.
Продвинутые функции
Пост не ограничивается основами. В нём описаны продвинутые функции, делающие vLLM готовым к продакшену:
- Chunked prefill — разбивает длинные промпты на фрагменты для перемежения с генерацией.
- Кэширование префиксов — повторно использует KV-кэш для общих префиксов промптов.
- Управляемая декодировка — ограничивает вывод схемой или грамматикой.
- Спекулятивная декодировка — использует черновую модель для ускорения генерации.
- Раздельные P/D — разделяет prefill и decode на разных GPU.
Также рассматривается масштабирование до нескольких GPU и узлов, а также уровень обслуживания для обработки одновременного веб-трафика. Упоминаются бенчмарки и автонастройка для измерения задержки и пропускной способности.
Для разработчиков, создающих или расширяющих системы инференса LLM, это даёт чёткую мысленную модель того, как vLLM оркестрирует планирование, память и выполнение. Это первая часть серии, поэтому в будущем ожидаются более глубокие погружения в отдельные подсистемы.
📖 Читать полный источник: HN LLM Tools
👀 Смотрите также

Fewshell: Самостоятельно размещенный SSH-копайлот, отказывающийся выполнять команды без одобрения человека
Fewshell — это мобильный+десктопный SSH-копайлот, требующий обязательного одобрения человека для каждой команды — нет настройки для автоматического одобрения. Создан бывшим инженером Amazon AI, занимающимся исследованиями в области безопасности ИИ.

Claude Watch: Инструмент с открытым исходным кодом для визуализации логики кода, созданного ИИ
Claude Watch — это инструмент с открытым исходным кодом, который предоставляет графическую семантическую визуализацию для проектов, созданных с помощью AI-агентов для написания кода, таких как Claude Code. Он анализирует код вложенным образом и включает AI-поиск для ответов на вопросы о логике проекта.

Плагин MCP с кэшированием промптов автоматически снижает затраты на API Claude, выявляя стабильный контекст.
Плагин prompt-caching для MCP автоматически определяет стабильные части контекста, такие как системные промпты и определения инструментов, затем помечает их для функции кэширования Anthropic, чтобы снизить стоимость API на 80-92% во время сессий программирования.

Куратор Claude-Skills ищет отзывы о библиотеке из 181 навыка для агентов
Реза, сопровождающий проекта claude-skills, просит сообщество оставить отзывы о своей библиотеке с открытым исходным кодом, которая содержит 181 навык агента, 250 инструментов Python и 15 персонажей агентов, работающих в 11 инструментах для ИИ-кодирования. Он задаётся вопросом, эффективен ли подход с изолированными навыками, и хочет получить мнения о недостающих навыках, агентах на основе персонажей и интеграциях инструментов.