vLLM
Высокопроизводительный фреймворк инференса LLM с PagedAttention для эффективного управления KV-кешем.
См. также — материалы
Что такое vLLM
vLLM — фреймворк для высокопроизводительного инференса больших языковых моделей с открытым кодом, разработанный в UC Berkeley. Ключевое нововведение — PagedAttention: KV-кеш организован как страницы виртуальной памяти, что устраняет фрагментацию и позволяет обслуживать значительно больше параллельных запросов на той же VRAM.
По throughput vLLM превосходит наивный HuggingFace inference в 10–24× при высокой нагрузке: модель 7B на RTX 4090 даёт 80–120 токенов/с при одиночном запросе и 400–600 токенов/с суммарно при параллельных запросах.
Ключевые возможности
- Continuous batching — новые запросы добавляются в батч на каждом шаге декодирования без простоев
- OpenAI-совместимый API из коробки —
chat/completions,completions,embeddings - Широкая поддержка моделей — LLaMA 3, Mistral, Qwen 2.5, DeepSeek, Gemma 2 и большинство HuggingFace-архитектур
- Квантизация — AWQ, GPTQ, fp8 снижают требования к VRAM без значимой потери качества
- Tensor parallelism — горизонтальное масштабирование на несколько GPU одной командой
- Prefix caching — повторное использование KV-кеша для одинаковых системных промптов
Когда выбирать vLLM
| Характеристика | vLLM | llama.cpp | TGI | SGLang |
|---|---|---|---|---|
| Throughput (TPS) | ★★★★★ | ★★ | ★★★★ | ★★★★★ |
| Простота деплоя | ★★★ | ★★★★★ | ★★★★ | ★★★ |
| Multi-GPU | ✓ | частично | ✓ | ✓ |
| OpenAI API | ✓ | ✓ | ✓ | ✓ |
| Лучший сценарий | Чат, RAG, batch | Тонкие инстансы, CPU | Универсальный REST | Макс. TPS на A/H |
vLLM оптимален для высокого суммарного throughput при умеренном числе одновременных пользователей: чат-сервисы, RAG API, массовая генерация.
Быстрый старт
# Минимальный запуск
docker run --gpus all -p 8000:8000 \
vllm/vllm-openai:latest \
--model mistralai/Mistral-7B-Instruct-v0.2
# С квантизацией AWQ (меньше VRAM)
docker run --gpus all -p 8000:8000 \
vllm/vllm-openai:latest \
--model TheBloke/Mistral-7B-Instruct-v0.2-AWQ \
--quantization awq
Проверка через curl:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "mistralai/Mistral-7B-Instruct-v0.2",
"messages": [{"role": "user", "content": "Привет!"}]}'
OpenAI SDK без изменений кода:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
response = client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.2",
messages=[{"role": "user", "content": "Объясни PagedAttention."}]
)
Ключевые параметры запуска
| Параметр | Описание | Пример |
|---|---|---|
--tensor-parallel-size |
Число GPU | 2 |
--quantization |
awq / gptq / fp8 | awq |
--max-model-len |
Максимальный контекст | 8192 |
--gpu-memory-utilization |
Доля VRAM (0–1) | 0.90 |
--enable-prefix-caching |
Кеш системного промпта | — |
Выбор GPU
| GPU | VRAM | Рекомендуемые модели | TPS (7B BF16) |
|---|---|---|---|
| RTX 4090 | 24 ГБ | до 13B BF16, до 34B AWQ | 80–120 |
| A100 40GB | 40 ГБ | до 30B BF16, до 70B AWQ | 150–200 |
| A100 80GB | 80 ГБ | 70B BF16 | 150–200 |
| H100 80GB | 80 ГБ | 70B BF16, высокий параллелизм | 300–500 |
Связанные термины
- PagedAttention — алгоритм управления KV-кешем, лежащий в основе vLLM
- KV-кеш — что кешируется и почему это важно
- continuous batching — как vLLM обрабатывает параллельные запросы
- квантизация — AWQ/GPTQ для экономии VRAM
- tensor parallelism — multi-GPU инференс
- Подробный гайд по vLLM
Готовы запустить GPU-задачу?
Запустить GPU-сервер