65
13 марта 2026
Как хостить LLM на своём GPU-сервере
Полный гайд по self-hosted LLM: выбор модели, железа, inference-движка и настройка API для команды
Запуск собственного LLM-сервера — это полный контроль над данными, отсутствие ежемесячных платежей за API и возможность кастомизации. В этом гайде разберём, как поднять production-ready LLM-сервер на GPU.
Зачем хостить LLM самому?
| Аргумент | Self-hosted | Облачный API (OpenAI, Anthropic) |
|---|---|---|
| Конфиденциальность | Данные не покидают сервер | Данные отправляются провайдеру |
| Стоимость при объёме | Фиксированная (аренда GPU) | Растёт с каждым токеном |
| Latency | Контролируемая | Зависит от провайдера |
| Доступность | Не зависит от API-лимитов | Rate limits, outages |
| Кастомизация | Своя модель, файнтюнинг | Только то, что предлагает провайдер |
| Начальные затраты | Выше (настройка) | Ниже (API-ключ) |
Когда self-hosted выгоден:
- Больше ~$500/мес на API-токены
- Есть требования по конфиденциальности (медицина, финансы, внутренняя документация)
- Нужна кастомная модель (файнтюнинг)
- Стабильный поток запросов (не спорадический)
Выбор модели
По задаче
| Задача | Рекомендуемая модель | Параметры |
|---|---|---|
| Универсальный чат-бот | Qwen2.5-32B-Instruct | 32B |
| Генерация кода | Qwen2.5-Coder-32B-Instruct | 32B |
| Reasoning / логика | DeepSeek-R1-Distill-Qwen-32B | 32B |
| Лёгкий ассистент | Qwen2.5-7B-Instruct | 7B |
| Максимальное качество | DeepSeek-V3 / Llama 3.1 405B | 671B / 405B |
| Мультиязычный | Qwen2.5-32B (best multilingual) | 32B |
| Суммаризация / RAG | Mistral-Small-24B-Instruct | 24B |
По доступному VRAM
| VRAM | Лучшая модель (Q4_K_M) | Качество |
|---|---|---|
| 8 ГБ | Qwen2.5-7B | Хорошее для простых задач |
| 12 ГБ | Qwen2.5-14B | Хорошее |
| 16 ГБ | Mistral-Small-24B | Очень хорошее |
| 24 ГБ | Qwen2.5-32B | Отличное |
| 48 ГБ | Llama 3.1 70B | Отличное |
| 80 ГБ | Llama 3.1 70B (FP16) | Максимальное в классе |
| 640 ГБ | DeepSeek-V3 (FP8) | Frontier-уровень |
Выбор inference-движка
Ollama — для простоты
Когда использовать: личный сервер, 1–3 пользователя, быстрый старт.
# Установка
curl -fsSL https://ollama.com/install.sh | sh
# Запуск модели
ollama run qwen2.5:32b
# API-сервер (совместим с OpenAI)
ollama serve
# Доступен на http://localhost:11434/v1/chat/completions
Плюсы: простота, автоматическое скачивание моделей, GGUF-квантизации.
Минусы: нет continuous batching, медленнее при нескольких пользователях.
vLLM — для продакшена
Когда использовать: API для команды/продукта, 5+ пользователей, максимальная производительность.
pip install vllm
vllm serve Qwen/Qwen2.5-32B-Instruct \
--tensor-parallel-size 1 \
--max-model-len 16384 \
--gpu-memory-utilization 0.92 \
--dtype auto \
--api-key your-secret-key \
--host 0.0.0.0 --port 8000
Плюсы: continuous batching, PagedAttention, tensor parallelism, OpenAI-совместимый API.
Минусы: требует больше настройки, только HuggingFace-формат (не GGUF).
llama.cpp + llama-server — для CPU offload
Когда использовать: модель не помещается в VRAM целиком, нужен частичный CPU offload.
./llama-server \
-m model.gguf \
--n-gpu-layers 30 \
-c 8192 \
--host 0.0.0.0 --port 8080
Сравнение
| Движок | Throughput (tok/s, 32B, 1 user) | Throughput (10 users) | Формат | Multi-GPU |
|---|---|---|---|---|
| Ollama | ~25 | ~10 (per user) | GGUF | Pipeline |
| vLLM | ~30 | ~20 (per user) | HF/AWQ/GPTQ | Tensor |
| llama-server | ~25 | ~8 (per user) | GGUF | Pipeline |
Настройка OpenAI-совместимого API
Все три движка предоставляют API, совместимый с OpenAI SDK:
from openai import OpenAI
client = OpenAI(
base_url="http://your-server:8000/v1",
api_key="your-secret-key", # для vLLM; для Ollama — любой
)
response = client.chat.completions.create(
model="Qwen/Qwen2.5-32B-Instruct", # или "qwen2.5:32b" для Ollama
messages=[
{"role": "system", "content": "Ты полезный ассистент."},
{"role": "user", "content": "Объясни что такое transformer"}
],
temperature=0.7,
max_tokens=1024,
)
print(response.choices[0].message.content)
Это значит, что вы можете подставить свой сервер вместо OpenAI API в любом приложении, которое использует OpenAI SDK — LangChain, LlamaIndex, AutoGen, Continue.dev и т.д.
Веб-интерфейс: Open WebUI
Для удобного ChatGPT-подобного интерфейса:
# docker-compose.yml
services:
ollama:
image: ollama/ollama
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- webui_data:/app/backend/data
depends_on:
- ollama
volumes:
ollama_data:
webui_data:
docker compose up -d
docker exec ollama ollama pull qwen2.5:32b
Откройте http://your-server:3000 — многопользовательский чат с историей, файлами и RAG.
Продакшен-настройки
Reverse proxy с HTTPS
server {
listen 443 ssl http2;
server_name llm.your-domain.com;
ssl_certificate /etc/letsencrypt/live/llm.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/llm.your-domain.com/privkey.pem;
# API endpoint
location /v1/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_read_timeout 300s; # LLM генерирует долго
}
# WebUI
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Мониторинг
Ключевые метрики для LLM-сервера:
| Метрика | Как отслеживать | Норма |
|---|---|---|
| GPU utilization | nvidia-smi / Prometheus |
70–95% |
| VRAM usage | nvidia-smi |
<95% |
| Tokens/second | vLLM metrics endpoint | Зависит от модели |
| Request latency (TTFT) | Логи / Prometheus | <2с для 32B |
| Queue depth | vLLM metrics | <10 |
| GPU temperature | nvidia-smi |
<85°C |
vLLM предоставляет встроенный Prometheus endpoint:
vllm serve ... --enable-metrics
# Метрики на http://localhost:8000/metrics
Автозапуск
# systemd unit для vLLM
sudo tee /etc/systemd/system/vllm.service << 'EOF'
[Unit]
Description=vLLM Server
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/.local/bin/vllm serve Qwen/Qwen2.5-32B-Instruct \
--tensor-parallel-size 1 \
--max-model-len 16384 \
--gpu-memory-utilization 0.92 \
--api-key your-secret-key
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now vllm
Сравнение стоимости: self-hosted vs API
Пример: 1M токенов/день
| Вариант | Стоимость/мес | Качество |
|---|---|---|
| OpenAI GPT-4o | ~$450 | Отличное |
| Anthropic Claude 3.5 Sonnet | ~$270 | Отличное |
| Self-hosted Qwen2.5-32B на RTX 4090 | ~$150 (аренда) | Очень хорошее |
| Self-hosted Qwen2.5-32B на б/у RTX 3090 | ~$50 (электричество) | Очень хорошее |
При 5M+ токенов/день self-hosted становится в 5–10× дешевле облачных API.
Пример: 10M токенов/день
| Вариант | Стоимость/мес |
|---|---|
| OpenAI GPT-4o | ~$4 500 |
| Self-hosted 2× RTX 3090 + Qwen-32B | ~$100 (электричество) |
| Self-hosted A100 80GB (аренда) | ~$500 |
Выбор GPU для LLM-сервера
| Сценарий | GPU | VRAM | Модель |
|---|---|---|---|
| Личный ассистент | RTX 3090 (б/у) | 24 ГБ | Qwen2.5-32B Q4 |
| Команда 5–10 человек | RTX 4090 | 24 ГБ | Qwen2.5-32B Q4 |
| Команда 10–30 человек | 2× RTX 3090 или A100 40GB | 48–80 ГБ | Llama 3.1 70B Q4 |
| API для продукта | A100 80GB или H100 | 80 ГБ | Llama 3.1 70B FP16 |
| Frontier-модели | 8× H100 | 640 ГБ | DeepSeek-V3 / Llama 405B |
Частые проблемы
Модель загружается, но отвечает медленно
- Проверьте, что модель полностью на GPU (
nvidia-smi— VRAM usage) - CPU offload = в 10–50× медленнее
- Включите Flash Attention в llama.cpp (
-fa) - Используйте vLLM вместо Ollama для нескольких пользователей
OOM при нескольких пользователях
- Уменьшите
--max-model-len(KV-кеш растёт с контекстом × кол-во пользователей) - В vLLM:
--max-num-seqs 4(ограничить параллельные запросы) - Используйте квантизацию (Q4_K_M вместо FP16)
Качество ответов хуже, чем у ChatGPT
- Используйте Instruct/Chat версию модели (не base)
- Проверьте system prompt
- Попробуйте модель побольше (7B → 32B)
- Настройте temperature (0.7 для чата, 0 для точных задач)
Итог
Self-hosted LLM — это практично и экономично при объёме от 1M токенов/день. Для старта:
- Возьмите RTX 3090 (б/у за $600) или арендуйте GPU-сервер
- Установите Ollama (простота) или vLLM (производительность)
- Поставьте Open WebUI для интерфейса
- Запустите Qwen2.5-32B — лучший баланс качества и размера
Хотите запустить LLM-сервер без покупки железа? Арендуйте GPU-сервер в облаке Intelion — оплата по минутам, без обязательств.
#GPU
#LLM
#vLLM
#inference
#self-hosted
#Ollama
#API