Месяц назад я решил, что хватит гонять все запросы через OpenAI. Не из принципа — просто накопилось: то лимиты, то задержки, то очередной раунд повышения цен. Взял старый сервер с видеокартой, которая пылилась после майнинг-бума, и пошёл разбираться.
Спойлер: первые два дня я потратил на ерунду. Но потом всё заработало — и я не жалею.
Что вообще нужно, чтобы это запустить
Разрыв между туториалами и реальностью здесь особенно заметен. Везде написано "просто запустите ollama pull llama3" — и как будто всё. Никто не предупреждает, что 8B-модель в полном виде весит 16 гигабайт. Если у вас 8 гигабайт VRAM, она либо не влезет, либо уйдёт на CPU и будет тормозить так, что проще написать ответ вручную.
Реальный минимум для нормальной работы — видеокарта с 8+ ГБ памяти. У меня была RTX 3070 на 8 ГБ. Я запускал квантизованные модели в формате GGUF — это когда модель "сжата" с потерей части точности, зато влезает в память и работает быстро. Для большинства задач разница незаметна.
Без видеокарты тоже можно, на CPU. Но это уже история про терпение, а не про работу.
Ollama: самый быстрый способ не сломать себе голову
Я пробовал несколько инструментов. llama.cpp — мощный, но это как собирать мебель без инструкции. LM Studio — красивый интерфейс, но только для десктопа, никакого сервера. В итоге остановился на Ollama.
По сути это обёртка над llama.cpp с нормальным CLI и REST API. Ставится одной командой, модели скачиваются через ollama pull, сервер поднимается на порту 11434 сам. Никакой возни с конфигами.
Я поставил его на Ubuntu 22.04, добавил в systemd чтобы стартовал автоматически, и через десять минут уже работал Mistral 7B. Первый запрос через curl — и он ответил. Приятный момент, не скрою.
Дальше я подключил Open WebUI — веб-интерфейс, который выглядит почти как ChatGPT. Поднял через Docker, прописал адрес Ollama — и получил нормальный чат, которым могут пользоваться другие люди в сети без доступа к терминалу.
Какую модель выбрать и не пожалеть
На это я потратил больше всего времени. Выбор огромный и непонятный: Llama 3, Mistral, Gemma, Phi — и у каждой ещё по десятку версий и квантизаций.
Со временем выработалась своя логика. Для кода и технических вопросов — Qwen2.5-Coder или DeepSeek-Coder. Для общего ассистента — Mistral 7B или Llama 3.1 8B. Если нужно что-то маленькое и быстрое для простых задач — Phi-3 mini: весит 2 гигабайта, отвечает почти мгновенно.
По квантизации мой стандарт — Q4_K_M. Хороший баланс между размером и качеством. Q2 заметно деградирует, Q8 почти оригинал, но весит вдвое больше.
Один момент, который я не сразу понял: размер модели в параметрах — это не то же самое, что качество. Mistral 7B в некоторых задачах обгоняет более старые 13B-модели. Смотреть надо на бенчмарки под конкретную задачу, а не на цифру.
Что сломалось и как я это чинил
Первая проблема — модель запускалась, но работала медленно. Оказалось, Ollama не видел видеокарту: я не установил CUDA toolkit. Час потерял, пока не догадался проверить ollama ps — там было написано "CPU" вместо "GPU". Поставил нужные драйверы, перезапустил — скорость выросла раз в десять.
Дальше — когда я открыл порт наружу, чтобы обращаться к серверу с ноутбука, выяснилось, что Ollama по умолчанию слушает только localhost. Нужно добавить переменную окружения OLLAMA_HOST=0.0.0.0 в systemd-юнит. В документации это не очевидно.
Третья история — про безопасность, и она неприятная. Я просто открыл порт 11434 в файрволе. Через день увидел в логах чужие запросы — кто-то нашёл открытый Ollama и начал им пользоваться. Закрыл порт, поставил перед ним nginx с базовой авторизацией. Проблема решена, но осадок остался.
Стоит ли оно того
Честно — зависит от задачи.
Если нужна максимальная мощность для сложных рассуждений, GPT-4o или Claude всё равно лучше. Я не буду делать вид, что Mistral 7B на моём сервере с ними сравнится.
На практике у меня теперь есть инструмент, который работает без интернета, не отправляет данные никуда, не имеет лимитов на запросы и стоит ровно столько, сколько стоит электричество. Для внутренних инструментов, автоматизации, работы с чувствительными данными — это совсем другой разговор.
Я подключил его к нескольким скриптам, которые раньше ходили в OpenAI API. Задержка выросла немного, качество чуть упало на сложных запросах — но для этих задач хватает. И я перестал думать о том, что где-то хранятся логи моих запросов.
Если у вас есть нормальная видеокарта и пара свободных вечеров — попробуйте. Начните с Ollama и Mistral 7B. Скорее всего, вы удивитесь, что это вообще работает на домашнем железе.
