vLLM: Ускоренный инференс языковых моделей

vLLM — это фреймворк для высокоэффективного запуска больших языковых моделей (LLM), разработанный с нуля для максимальной скорости, параллельности и поддержки большого количества запросов одновременно.

Если вы используете LLaMA, Mistral, Falcon или другие большие модели в проде или прототипе — vLLM это то, что стоит попробовать.


Что делает vLLM особенным

vLLM оптимизирован для инференса LLM. В отличие от стандартного подхода через Hugging Face pipeline(), он:

  • поддерживает OpenAI-совместимый API
  • эффективно управляет памятью (через PagedAttention)
  • обрабатывает десятки и сотни запросов одновременно
  • совместим с популярными моделями

Как установить и запустить vLLM

Установка через pip:

pip install vllm

Запуск API-сервера (с OpenAI-совместимым интерфейсом):

python -m vllm.entrypoints.openai.api_server \
  --model mistralai/Mistral-7B-Instruct-v0.1

После запуска сервер принимает запросы как обычный OpenAI API:

curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer any" \
  -d '{"prompt": "Привет, мир!", "max_tokens": 50}'

Поддерживаемые модели

vLLM работает с:

  • LLaMA, Mistral, Falcon, Baichuan, OpenLLaMA и др.
  • HuggingFace модели (AutoModelForCausalLM)
  • 16-битные модели (fp16, bf16), включая LoRA-адаптированные

Не поддерживаются модели в формате GGUF или GPTQ.


Что такое PagedAttention

Обычный способ запуска LLM требует многократного копирования и пересчёта памяти при генерации. Это замедляет работу при множественных запросах.

vLLM реализует PagedAttention — алгоритм, который хранит ключи и значения от всех пользователей в единой структуре и обновляет их по страницам.

Это даёт:

  • Высокую параллельность (много пользователей одновременно)
  • Низкое потребление памяти
  • Высокую скорость генерации

Запуск с авторизацией и на сервере

Можно указать API-ключ:

--api-key "your-secret-key"

Можно развернуть на GPU-сервере или облаке (например, RunPod, Lambda, или bare-metal).

Пример запуска с Docker:

FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu20.04

RUN apt update && apt install -y python3-pip git
RUN pip install vllm torch --extra-index-url https://download.pytorch.org/whl/cu121

CMD ["python3", "-m", "vllm.entrypoints.openai.api_server", \
     "--model", "mistralai/Mistral-7B-Instruct-v0.1", \
     "--host", "0.0.0.0", \
     "--port", "8000"]

Когда использовать vLLM

vLLM идеально подойдёт, если:

  • Нужно много одновременных запросов к LLM
  • Используется OpenAI API-совместимость
  • Требуется низкая задержка и высокая пропускная способность

Если вы используете LLM как внутренний ассистент, чат-бот, генератор в проде — vLLM даст максимум производительности без лишних усилий.


Следующий шаг: интеграция с API и стриминг ответов. Также можно подключать LoRA-адаптеры и кастомные модели.