# Налаштування vLLM на сервері: швидкий інференс LLM

> Налаштування vLLM на GPU-сервері: вимоги до відеокарти, встановлення, запуск OpenAI-сумісного API та усунення помилок браку пам'яті.

## Що таке 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 для моделі](https://www.zevshost.net/uk/kb/skolko-vram-nuzhno-modeli/).

## Встановлення 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](https://www.zevshost.net/uk/kb/openai-api-nastroika/), тому бібліотеки openai для Python і JavaScript підключаються без змін: достатньо змінити base\_url.

## Чим прискорити роботу та заощадити пам'ять

Швидкість та обсяг пам'яті регулюються параметрами запуску. Основні прийоми:

- Квантування моделі в AWQ або GPTQ знижує споживання VRAM майже вдвічі без помітної втрати якості.
- Параметр `--max-model-len` обмежує довжину контексту і звільняє пам'ять під чергу запитів.
- Continuous batching у vLLM об'єднує паралельні запити автоматично, окреме налаштування не потрібне.
- Кілька відеокарт підключаються параметром `--tensor-parallel-size`, що дає змогу запускати моделі більші за одну GPU.

Коли відеопам'яті бракує навіть із квантуванням, варіант — запуск на процесорі через [llama.cpp і формат GGUF](https://www.zevshost.net/uk/kb/llama-cpp-kvantizaciya-gguf/): повільніше, зате без GPU.

## Що робити за помилки браку пам'яті

Помилка `CUDA out of memory` — поширена проблема під час першого запуску. Порядок дій:

- Зменшіть значення `--gpu-memory-utilization` до 0.8 і перезапустіть сервер.
- Скоротіть `--max-model-len`, коли повний контекст моделі надмірний для задачі.
- Візьміть квантовану версію моделі замість повної точності fp16.
- Перевірте завислі процеси на GPU командою `nvidia-smi` і завершіть їх через `kill`.
- Коли модель усе одно не поміщається, порахуйте потрібний обсяг наново та виберіть GPU з більшим запасом VRAM.

Після налаштування надішліть тестовий запит через curl і порівняйте швидкість відповіді зі звичайним запуском моделі. Базове встановлення vLLM на цьому завершено — далі сервер підключають до веб-інтерфейсу або вбудовують у продукт.

---

Джерело: https://www.zevshost.net/uk/kb/vllm-nastroika-servera/
