Собирал тихий сервер в прошлом году — два A100, 80 гигов видеопамяти. Думал: теперь у меня своя нейросеть, быстрая и бесплатная. За первый месяц потерял на конфигурации больше времени, чем сэкономил на API-запросах за два года вперёд. Зато теперь знаю, куда не надо тыкать и что реально работает.
Это пост о граблях и находках. Без рекламы и «вау, какая технология».
Зачем вообще мучиться
Потому что есть сценарии, где это оправдано. Приватность — первая причина. Медицинские документы, юридические тексты, внутренняя переписка — не хочется отправлять это в чужой дата-центр. Вторая — экономия на объёмах. Если у тебя тысячи запросов в день, свой сервер окупается за несколько месяцев. Третья — кастомизация: можно залить свою базу знаний, переобучить модель, подкрутить параметры так, что публичное API рядом не стояло.
Но если тебе нужен один ответ в час — даже не начинай. Проще заплатить OpenAI или Anthropic.
Три пути, от простого к честному
Самый простой способ — Ollama. Скачал, запустил, получил API.
curl -fsSL https://ollama.ai/install.sh | sh ollama pull llama3 ollama serve
Всё. У меня на ноутбуке с M2 Pro Llama 3 8B работает шустрее, чем я ожидал от встройки. Для тестов и прототипов — норм. Для продакшена — зависит от модели и нагрузки.
Ollama хорош для одного пользователя, но у него нет нормального масштабирования. Если запустить одновременно больше 5–10 запросов — начинает тупить, и никаких очередей нет.
Когда Ollama уже не тянет, но тратиться на сложную инфраструктуру не хочется — есть llama.cpp. Он компилируется из исходников, заточен под максимальную производительность на железе без тяжёлых CUDA-операций.
Квантизация — главная фишка. Берёшь 70-миллиардную модель, сжимаешь в 4-битные веса, получаешь 40 гигабайт вместо 140. Работает на одной видеокарте, иногда даже на процессоре.
Минус: если у тебя не RTX 3090/4090 или карта от AMD с ROCm — будет больно. Я час убил на запуск quantized модели на старом сервере с 2080 Ti. Не повторяй.
Если нужна настоящая пропускная способность и ты готов к настройке — vLLM. Именно его сейчас используют большинство серьёзных проектов с self-hosted LLM.
pip install vllm
python -m vllm.entrypoints.openai.api_server
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 2
Запускает модель с paged attention, справляется с длинными контекстами (до 128K у Llama 3.1) и выдаёт пропускную способность, с которой не сравнится ни Ollama, ни llama.cpp. Но требует сервер с GPU. Желательно несколько.
На одном A100 80GB я получал около 40 токенов в секунду на Llama 3 70B. Этого хватает для комфортной работы — не идеально, но терпимо.
Железо — где экономить нельзя
Процессор важен, но не критично. Главное — видеопамять. Одна буква модели = примерно 2 гигабайта VRAM в fp16. Если квантизируешь до 4 бит — влезаешь примерно в 1 гигабайт на миллиард параметров.
Вот расклад, который у меня работает:
| Модель | Параметры | Минимум VRAM | Реальный выбор |
|---|---|---|---|
| Llama 3.1 | 8B | 16GB fp16 / 6GB q4 | RTX 3080+ |
| Llama 3.1 | 70B | 140GB fp16 / 36GB q4 | 2x A100 или 4x 3090 |
| Mistral | 7B | 14GB fp16 / 5GB q4 | RTX 3060+ |
На процессоре (без GPU) реально работают только 7B модели, и то медленно. 30 секунд на простой ответ — это нормально, но бесит.
Оперативная память тоже важна. Если GPU кончился — модель упадёт в RAM, и всё станет в 10 раз медленнее. Минимум 64 гига — и лучше DDR5.
Что я понял после полутора лет
Не гонись за размером модели. У меня был период, когда я пытался запустить 70B на одной 3090. Работало — но жутко медленно, перегревалось и падало каждые два часа. Сейчас на том же сервере крутится 13B квантизированная — и для 80% задач результат тот же, а карта не орёт как самолёт.
API-слой решает. vLLM хорош, но оберни его в FastAPI-сервис с кэшированием, лимитами и логированием. Иначе через месяц будешь гадать, кто и зачем дёргает модель в три часа ночи.
Без мониторинга ты слеп. Я поставил Prometheus + Grafana на старте. Потом сэкономил себе дня три отладки, когда сервер начал троттлить из-за перегрева — метрики всё показали заранее.
Бэкапь веса. Модель на 70B весит под 140 гигабайт. У меня диск полетел в первый месяц. Восстановление из облака заняло 8 часов. Теперь — зеркало на втором диске.
Деплой LLM на своём сервере — это не ракета, но и не «скачал и работает». Главное, что я для себя вынес: начни с Ollama, проверь задачу, пойми, хватает ли скорости и денег. Если да — масштабируй. Если нет — нужен либо бюджет на железо, либо принять ограничения квантизации.
А бороться с CUDA-ошибками всё равно придётся. Это данность, с которой надо просто смириться.
