Inference

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

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер