MAATRIX / Блог / vLLM: быстрый инференс LLM на VPS

vLLM: быстрый инференс LLM на VPS

Блог MAATRIX · 2026-07-07

vLLM выжимает из GPU максимум за счёт PagedAttention и непрерывного батчинга — и сразу отдаёт OpenAI-совместимый API. Показываем, как поднять его на сервере и не упереться в память.

Что такое vLLM и когда он нужен

['vLLM — движок инференса, который в разы обгоняет наивный transformers.generate на нагрузке с многими параллельными запросами. Секрет — PagedAttention (память под KV-кэш выделяется страницами, как в ОС) и continuous batching (запросы доклеиваются в батч на лету).', '
  • Высокий throughput — десятки одновременных чатов на одной карте.
  • OpenAI API из коробки/v1/chat/completions без обвязки.
  • Квантование — AWQ, GPTQ, FP8 для экономии VRAM.
', 'vLLM ориентирован на GPU. Для лёгких квантованных моделей есть и CPU-режим, но продакшн-скорость даёт видеокарта. CPU-часть (препроцессинг, раздача API) любит быстрые ядра и NVMe — здесь связка AMD EPYC + NVMe у MAATRIX хорошо разгружает вокруг GPU.', 'Разница с наивной генерацией особенно заметна под нагрузкой. Обычный цикл generate обрабатывает запросы почти по одному и простаивает, пока модель ждёт следующий токен. vLLM же держит GPU занятым постоянно: как только в каком-то запросе освободился слот, движок подклеивает новый, а PagedAttention не даёт памяти под кэш фрагментироваться. На практике это разница между 3–5 и несколькими десятками одновременных диалогов на той же карте.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для vLLM

Подготовка окружения

['Нужны свежие драйверы NVIDIA и Python 3.10+. Сначала убедимся, что карта видна системе и хватает версии CUDA-драйвера — vLLM собран под современный тулкит, и слишком старый драйвер даст ошибку инициализации.', '
nvidia-smi
', 'Ставим vLLM в изолированное окружение, чтобы не конфликтовать с системным Python и другими проектами.', '
python3 -m venv ~/vllm && source ~/vllm/bin/activate\npip install --upgrade pip\npip install vllm
', 'Если планируешь тянуть гейтед-модели (например, официальную Llama), заранее пропиши токен HuggingFace — иначе загрузка весов упрётся в 403.', '
export HF_TOKEN=hf_...\nhuggingface-cli whoami
']

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Запуск OpenAI-совместимого сервера

['Одна команда поднимает HTTP-сервер с моделью. Возьмём небольшую инструктивную модель.', '
python -m vllm.entrypoints.openai.api_server \\\n  --model meta-llama/Meta-Llama-3-8B-Instruct \\\n  --host 0.0.0.0 --port 8000 \\\n  --max-model-len 8192
', 'Проверяем, что API отвечает.', '
curl http://localhost:8000/v1/chat/completions \\\n  -H "Content-Type: application/json" \\\n  -d \'{"model":"meta-llama/Meta-Llama-3-8B-Instruct","messages":[{"role":"user","content":"Привет"}]}\'
', 'Первый запрос будет заметно медленнее остальных: движок прогревает CUDA-графы и раскладывает веса по памяти. Дальше ответы идут быстро. Список поднятых моделей всегда можно проверить обращением к /v1/models — тот же контракт, что и у OpenAI, поэтому фронтенды и SDK подхватывают сервер без доработок.']

Тюним под память GPU

['Главные рычаги — доля памяти под кэш и длина контекста. Если ловишь OOM, снижай их.', '
python -m vllm.entrypoints.openai.api_server \\\n  --model Qwen/Qwen2.5-7B-Instruct-AWQ \\\n  --quantization awq \\\n  --gpu-memory-utilization 0.90 \\\n  --max-model-len 4096
', '
  • --gpu-memory-utilization — сколько VRAM отдать под модель и кэш (0.85–0.95).
  • --max-model-len — режь контекст, если модель не влезает.
  • --quantization awq/gptq — почти вдвое меньше памяти при малой потере качества.
  • --tensor-parallel-size N — размазать модель на N карт.
', 'Логика простая: чем длиннее контекст и чем больше одновременных запросов ты хочешь держать, тем больше памяти уходит на KV-кэш, а не на сами веса. Если модель загружается, но падает при первом же длинном запросе — почти всегда виноват max-model-len. Начни с консервативных значений (например, 4096 и 0.85), убедись, что всё стабильно под нагрузкой, и только потом поднимай планку. Квантование AWQ или GPTQ даёт больше всего свободы: 7B-модель в 4 битах спокойно оставляет место под приличный кэш даже на карте среднего класса.']

Запускаем как сервис

['Чтобы vLLM пережил перезагрузку, оформим его в systemd.', '
[Unit]\nDescription=vLLM API\nAfter=network.target\n\n[Service]\nUser=ubuntu\nExecStart=/home/ubuntu/vllm/bin/python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-7B-Instruct --host 0.0.0.0 --port 8000\nRestart=always\n\n[Install]\nWantedBy=multi-user.target
', '
sudo systemctl daemon-reload\nsudo systemctl enable --now vllm
']

Частые ошибки

['
  • CUDA out of memory — снизь max-model-len и gpu-memory-utilization, включи квантование.
  • Gated repo на HuggingFace — прими лицензию и задай HF_TOKEN.
  • Медленный первый запрос — это прогрев и загрузка весов, дальше быстро.
  • Порт наружу без защиты — прикрой Nginx + ключ, иначе твой GPU будут греть чужие.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для vLLM

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Нужен ли обязательно GPU?

Для продакшн-скорости — да. CPU-режим есть, но подходит скорее для тестов и маленьких квантованных моделей.

Чем vLLM лучше обычного transformers?

Continuous batching и PagedAttention дают кратно больший throughput при многих параллельных запросах и экономят память под KV-кэш.

Как подключить vLLM к своему приложению?

Он отдаёт OpenAI-совместимый API, так что достаточно указать в SDK base_url своего сервера и любой api_key.