Що таке 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 на цьому завершено — далі сервер підключають до веб-інтерфейсу або вбудовують у продукт.