Что такое vLLM

Обновлено и опубликовано Опубликовано:

VLLM —
простыми словами

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

Проект появился в 2023 году в исследовательской группе UC Berkeley. Ключевая идея — алгоритм PagedAttention, который управляет памятью видеокарты постранично, как операционная система управляет оперативной памятью процесса. За счет этого GPU меньше простаивает, а один сервер обслуживает заметно больше параллельных запросов, чем при наивном инференсе.

Второй важный механизм — continuous batching. Новые запросы добавляются в батч на лету, не дожидаясь завершения уже идущей генерации. Это отличает vLLM от простых оберток вокруг модели, где батч формируется один раз и не меняется до конца обработки.

Установка vLLM

vLLM написан на Python и ставится через pip:

pip install vllm

Для работы нужна видеокарта NVIDIA с CUDA — библиотека рассчитана в первую очередь на серверный GPU-инференс. Есть и готовый образ Docker, его удобно использовать, если не хочется настраивать окружение Python вручную.

* если ставите на голую машину, а не через Docker — версии CUDA Toolkit, драйвера NVIDIA и PyTorch должны совпадать друг с другом и с требованиями конкретной версии vLLM. При рассинхроне сборка падает или уходит в компиляцию из исходников. Docker-образ эту проблему снимает полностью.

vLLM как пользоваться

Сервер с OpenAI-совместимым API запускается одной командой:

vllm serve meta-llama/Llama-3.1-8B-Instruct

После запуска мы получаем HTTP-сервер, к которому можно обращаться так же, как к API OpenAI — достаточно поменять адрес эндпоинта в клиенте. Это упрощает миграцию проектов, изначально написанных под облачные модели.

Возможности vLLM

  • PagedAttention. Постраничное управление KV-кэшем, снижает расход видеопамяти и позволяет держать в работе больше запросов одновременно.
  • Continuous batching. Новые запросы подмешиваются в очередь без ожидания завершения текущего батча.
  • OpenAI-совместимый API. Сервер повторяет интерфейс Chat Completions, что упрощает подключение существующих клиентов.
  • Поддержка квантования. Из коробки — AWQ, GPTQ, FP8. Поддержка GGUF вынесена в отдельный плагин vllm-gguf-plugin и покрывает не все модели.
  • Мульти-GPU. Тензорный и конвейерный параллелизм для моделей, которые не помещаются на одну видеокарту.

Vllm-Windows

Нативной поддержки Windows у vLLM нет — в официальной документации в списке платформ Windows отсутствует. Рабочих путей запуска на Windows три:

  • через WSL2 с обычным Linux-сборками vLLM — вариант, который рекомендует сама команда проекта;
  • через Docker Model Runner с бэкендом WSL2 и видеокартой NVIDIA;
  • через сторонний форк SystemPanic/vllm-windows с нативными Windows-сборками под CUDA.

vLLM или Ollama

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

  • Ollama рассчитана на запуск одной моделью на одном компьютере, vLLM — на обслуживание множества параллельных запросов с высокой пропускной способностью.
  • Ollama изначально работает с моделями в формате GGUF, у vLLM поддержка GGUF ограничена и реализована отдельным плагином.
  • Ollama запускается на Windows нативно, у vLLM для Windows нужен WSL2, Docker Model Runner или сторонний форк.
  • Ollama проще развернуть для личного использования, vLLM даёт больше контроля над параллелизмом и пропускной способностью на серверном GPU.

vLLM распространяется под лицензией Apache 2.0. Актуальный список поддерживаемых моделей, GPU и форматов квантования стоит смотреть в официальной документации проекта — она обновляется быстрее, чем любая статья на эту тему.



Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Другие термины

SMTP   Git   Чипсет   Кодек   Свитч   Docker   Дистрибутив   Grafana Loki   Материнская плата   PowerDNS   Corosync   PHP-FPM   Термопаста   Procmail   Podman   SOCKS   Cron   Rocky Linux   Вайб-кодинг   Кэш  
.....

Реклама