Что такое vLLM и зачем он нужен на сервере
vLLM — библиотека для быстрого инференса больших языковых моделей на GPU. Она использует технологию PagedAttention, которая экономит видеопамять и увеличивает пропускную способность в несколько раз по сравнению с обычным запуском через Transformers. vLLM поднимает OpenAI-совместимый HTTP-сервер, поэтому клиенты для ChatGPT API переключаются на свою модель без переписывания кода.
Библиотеку выбирают, когда сервер обслуживает много параллельных запросов: чат-бот на сайте, внутренний ассистент компании или API для мобильного приложения. Для единичных экспериментов на CPU подходит llama.cpp, а vLLM раскрывает возможности именно на GPU-сервере с одной или несколькими видеокартами.
Требования к серверу для запуска vLLM
Перед установкой проверьте параметры сервера. vLLM требует NVIDIA GPU с поддержкой CUDA и достаточным объёмом видеопамяти — расчёт объёма зависит от размера модели и квантования.
| Параметр | Минимум | Рекомендуется |
|---|---|---|
| GPU | NVIDIA, 8 ГБ VRAM | NVIDIA, 24 ГБ VRAM |
| Драйвер NVIDIA | 525 | 550 |
| CUDA | 12.1 | 12.4 |
| Python | 3.10 | 3.11 |
| Оперативная память | 16 ГБ | 32 ГБ |
Точный объём видеопамяти для конкретной модели стоит посчитать заранее — см. расчёт VRAM для модели.
Установка vLLM на VDS
Поставьте драйвер NVIDIA и CUDA Toolkit, затем создайте виртуальное окружение Python и установите пакет через pip.
sudo apt update
sudo apt install -y nvidia-driver-550 python3.11-venv
python3.11 -m venv /opt/vllm-env
source /opt/vllm-env/bin/activate
pip install --upgrade pip
pip install vllm
Проверьте, что GPU виден системе, командой nvidia-smi. Если карта не отображается, перезагрузите сервер и проверьте, что модуль nouveau отключён в конфигурации ядра.
Как запустить OpenAI-совместимый сервер
vLLM поставляется с готовым сервером, который повторяет формат запросов OpenAI API. Запустите его одной командой, указав модель с Hugging Face.
python -m vllm.entrypoints.openai.api_server --model mistralai/Mistral-7B-Instruct-v0.2 --host 0.0.0.0 --port 8000 --gpu-memory-utilization 0.9
После запуска сервер принимает запросы на порту 8000 по пути /v1/chat/completions — формат совпадает с OpenAI API, поэтому библиотеки openai для Python и JavaScript подключаются без изменений: достаточно поменять base_url.
Чем ускорить работу и сэкономить память
Скорость и объём памяти регулируются параметрами запуска. Основные приёмы:
- Квантование модели в AWQ или GPTQ снижает потребление VRAM почти вдвое без заметной потери качества.
- Параметр
--max-model-lenограничивает длину контекста и освобождает память под очередь запросов. - Continuous batching в vLLM объединяет параллельные запросы автоматически, отдельная настройка не требуется.
- Несколько видеокарт подключаются параметром
--tensor-parallel-size, что позволяет запускать модели крупнее одной GPU.
Когда видеопамяти не хватает даже с квантованием, вариант — запуск на процессоре через llama.cpp и формат GGUF: медленнее, зато без GPU.
Что делать при ошибке нехватки памяти
Ошибка CUDA out of memory — частая проблема при первом запуске. Порядок действий:
- Уменьшите значение
--gpu-memory-utilizationдо 0.8 и перезапустите сервер. - Сократите
--max-model-len, если полный контекст модели избыточен для задачи. - Возьмите квантованную версию модели вместо полной точности fp16.
- Проверьте зависшие процессы на GPU командой
nvidia-smiи завершите их черезkill. - Если модель всё равно не помещается, пересчитайте требуемый объём и выберите GPU с большим запасом VRAM.
После настройки отправьте тестовый запрос через curl и сравните скорость ответа с обычным запуском модели. Базовая установка vLLM на этом завершена — дальше сервер подключают к веб-интерфейсу или встраивают в продукт.