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

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

vLLM на VPS: быстрый инференс LLM с OpenAI API
Блог MAATRIX · 2026-07-07

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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое 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
pip install --upgrade pip
pip install vllm

Если планируешь тянуть гейтед-модели (например, официальную Llama), заранее пропиши токен HuggingFace — иначе загрузка весов упрётся в 403.

export HF_TOKEN=hf_...
huggingface-cli whoami

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

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

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

Одна команда поднимает HTTP-сервер с моделью. Возьмём небольшую инструктивную модель.

python -m vllm.entrypoints.openai.api_server \
  --model meta-llama/Meta-Llama-3-8B-Instruct \
  --host 0.0.0.0 --port 8000 \
  --max-model-len 8192

Проверяем, что API отвечает.

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -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 \
  --model Qwen/Qwen2.5-7B-Instruct-AWQ \
  --quantization awq \
  --gpu-memory-utilization 0.90 \
  --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]
Description=vLLM API
After=network.target

[Service]
User=ubuntu
ExecStart=/home/ubuntu/vllm/bin/python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-7B-Instruct --host 0.0.0.0 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo 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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

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

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

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

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

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

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

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

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