← БЛОГ

Self-hosted LLM в проде: Ollama, квантование и лимиты железа

Какая модель влезет в ваш сервер, сколько это стоит и когда API всё-таки дешевле. Считаем память, выбираем квант и отдаём модель по HTTP.

Сколько памяти нужно на самом деле

Грубая формула: параметры × байты на параметр + 1–2 ГБ на контекст. В 4-битном кванте (Q4_K_M — разумный дефолт) модель на 8 млрд параметров занимает ~5 ГБ, на 27 млрд — ~17 ГБ. Отсюда простая таблица соответствия железа и моделей:

8 ГБ VRAM/RAM   → 7–8B  (llama3.1:8b, qwen2.5:7b)
16 ГБ           → 14B   (qwen2.5:14b)
24 ГБ           → 27–32B (gemma2:27b, qwen2.5:32b)
без GPU (CPU)   → те же модели, но в 5–20 раз медленнее

Без видеокарты жить можно: на 8-ядерном VPS модель 8B выдаёт 5–10 токенов в секунду. Для чат-бота с людьми это медленно, для фоновой обработки текстов — нормально.

Квантование: где заканчивается халява

Квант — это сжатие весов с потерями. Q4 почти не отличим от оригинала на типовых задачах, Q3 и ниже заметно глупеет, Q8 — почти без потерь, но вдвое тяжелее Q4. Правило: берите самую большую модель, которая влезает в Q4, а не маленькую в Q8 — 14B-Q4 стабильно умнее, чем 7B-Q8.

$ ollama pull qwen2.5:14b        # Q4_K_M по умолчанию
$ ollama run qwen2.5:14b "Суммаризуй: …"
# HTTP-API уже слушает:
$ curl localhost:11434/api/generate \
    -d '{"model":"qwen2.5:14b","prompt":"…"}'
ИЗ ПРАКТИКИOllama по умолчанию выгружает модель из памяти через 5 минут простоя — первый запрос после паузы «тормозит». Для прода ставим OLLAMA_KEEP_ALIVE=-1, а память под контекст ограничиваем через num_ctx.

В прод: systemd, лимиты, доступ

В проде Ollama живёт как systemd-сервис или контейнер, слушает только 127.0.0.1, наружу — через reverse-proxy с токеном. Обязательно ограничьте параллелизм: два тяжёлых запроса одновременно на одной GPU — и оба ползут.

OLLAMA_HOST=127.0.0.1:11434
OLLAMA_KEEP_ALIVE=-1
OLLAMA_NUM_PARALLEL=1
OLLAMA_MAX_LOADED_MODELS=1

Когда API всё-таки дешевле

Честная арифметика: VPS с 24 ГБ GPU стоит ~25 000 ₽/мес. Если вы прогоняете меньше пары миллионов токенов в день — облачный API, скорее всего, дешевле. Self-hosted выигрывает, когда данные нельзя отдавать наружу (медицина, юристы, персональные данные), когда объёмы большие и стабильные или когда нужна предсказуемая цена без сюрпризов от вендора.

Модель выбрана по памяти: самая большая, что влезает в Q4
OLLAMA_KEEP_ALIVE=-1 — модель не выгружается между запросами
API слушает 127.0.0.1, наружу — proxy с авторизацией
Параллелизм ограничен под ёмкость GPU
Посчитана точка безубыточности против облачного API

Нужна своя нейросеть без утечек?

Развернём Ollama на вашем железе с готовым HTTP-API — данные не покидают ваш контур, счетов за токены нет.