Обращение к облачному API — это счёт за каждый токен и чужой сервер, куда уезжают ваши данные. Для части задач это нормально, для части — нет: черновики договоров, переписка клиентов, внутренние регламенты. Ollama решает проблему в лоб: ставит языковую модель на ваше железо и поднимает рядом HTTP-сервер, к которому код обращается так же, как к OpenAI. Ниже — что нужно от машины, как поставить, как обращаться из кода и где локальный запуск честно проигрывает облаку.
Что такое Ollama и зачем она нужна
Ollama — это менеджер локальных языковых моделей. Одной командой она скачивает модель, подбирает под ваше железо параметры запуска и держит фоновый сервис, который слушает порт 11434. Дальше вы либо общаетесь с моделью в терминале, либо шлёте в этот порт обычные HTTP-запросы из своего приложения.
Три причины, по которым это берут в работу:
- Данные не покидают контур. Ни промпт, ни ответ никуда не уходят. Для персональных данных и коммерческой тайны это часто единственный допустимый вариант — подробнее в заметке о том, как не слить данные через ИИ.
- Нет счёта за токены. Вы платите за электричество и амортизацию видеокарты, а не за каждый запрос. Массовая обработка — разметка тысяч тикетов, генерация описаний товаров — на локальной модели становится бесплатной по переменным затратам.
- Нет лимитов и зависимости от доступности. Никаких 429-х ответов и «сервис недоступен в вашем регионе» — можно молотить в несколько потоков всю ночь.
Цена — качество. Модель, которая помещается в потребительскую видеокарту, слабее топовых закрытых моделей: она хуже держит длинные рассуждения, чаще путается в редких фактах и слабее работает с русским языком. Это не «почти то же самое, но бесплатно», это другой инструмент.
Что нужно от железа
Главный ресурс — память, в которую модель загружается целиком. Если она влезает в видеопамять (VRAM), генерация идёт быстро; если приходится частично держать её в оперативной памяти, скорость падает в разы, но работать будет.
Ориентиры для моделей в квантизации Q4 (веса сжаты примерно до 4 бит на параметр — стандартный компромисс между качеством и размером):
- 3–4B параметров — около 2–3 ГБ. Пойдёт даже на ноутбуке без дискретной видеокарты. Годится для классификации, извлечения полей, простых переформулировок.
- 7–9B — около 5–6 ГБ. Рабочая лошадка: 8 ГБ VRAM хватает. Уже прилично суммаризирует и пишет код на уровне «черновик, который надо проверить».
- 20–30B — 14–20 ГБ. Нужна карта на 24 ГБ или Mac с общей памятью. Например,
gpt-oss:20bвесит около 14 ГБ и, по документации Ollama, стартует на системах от 16 ГБ памяти. - 70B и выше — от 40 ГБ. Это уже серверная территория или несколько карт.
Отдельно про Apple Silicon: на маках оперативная и видеопамять общие, поэтому Mac с 32–64 ГБ тянет модели, для которых на PC понадобилась бы дорогая профессиональная карта. Из дискретных карт лучше всего поддержаны NVIDIA (нужны драйверы CUDA, проверяются командой nvidia-smi), AMD работает через ROCm.
Установка
На Linux — один скрипт:
curl -fsSL https://ollama.com/install.sh | sh
Он ставит бинарник, создаёт системного пользователя ollama и регистрирует сервис systemd, который поднимается при старте машины. На macOS и Windows скачивается обычное приложение с сайта — оно делает то же самое и живёт в трее.
Проверить, что сервис жив:
systemctl status ollama
curl http://localhost:11434
Второй запрос должен вернуть строку Ollama is running. Если ставите на удалённый сервер, все команды ниже удобно гонять через SSH — базовый набор разобран в заметке про повседневные команды SSH.
Первый запуск и базовые команды
Скачать модель и сразу начать диалог:
ollama run gemma3:4b
Первый запуск качает несколько гигабайт, дальше модель берётся с диска. Выход из чата — /bye. Остальной повседневный набор:
ollama pull qwen3:8b # скачать, не запуская
ollama ls # что уже лежит на диске
ollama ps # что сейчас загружено в память
ollama stop qwen3:8b # выгрузить из памяти
ollama rm qwen3:8b # удалить с диска
ollama show qwen3:8b # параметры модели и её шаблон промпта
Команда ollama ps — самая полезная при отладке: она показывает, уехала модель в GPU или осталась в оперативной памяти. Если видите «100% CPU», ждать быстрых ответов не стоит.
HTTP API: как обращаться из кода
Ровно за это Ollama и любят: у неё сразу есть локальный REST API на http://localhost:11434. Простейший запрос на генерацию:
curl http://localhost:11434/api/chat -d '{
"model": "qwen3:8b",
"messages": [
{"role": "system", "content": "Отвечай кратко, по-русски."},
{"role": "user", "content": "Что делает команда chmod 644?"}
],
"stream": false
}'
С "stream": true ответ придёт потоком построчных JSON-объектов — так работают чаты, где текст печатается по мере генерации. Есть и /api/generate для одиночного промпта без истории, и /api/embed для получения векторов текста — то, что нужно, если строите поиск по своим документам поверх RAG.
OpenAI-совместимый режим
Если код уже написан под OpenAI, переписывать ничего не надо. Ollama отдаёт совместимый интерфейс на /v1/: достаточно подменить базовый URL, а ключ передать любой — он игнорируется.
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # значение не проверяется
)
response = client.chat.completions.create(
model="gpt-oss:20b",
messages=[{"role": "user", "content": "Привет"}],
)
print(response.choices[0].message.content)
Поддержаны /v1/chat/completions, /v1/completions, /v1/embeddings и /v1/models. Работают стриминг, вызов инструментов и режим JSON — так что структурированный вывод можно получать и от локальной модели, хотя схему она держит менее аккуратно, чем большие облачные.
Настройки, которые понадобятся сразу
Поведение сервиса задаётся переменными окружения. На Linux их прописывают в override для systemd — sudo systemctl edit ollama — в секцию [Service]:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/mnt/data/ollama"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_CONTEXT_LENGTH=8192"
Что они делают:
OLLAMA_HOST— адрес прослушивания. По умолчанию127.0.0.1, то есть снаружи сервер недоступен. Меняйте, только если понимаете последствия (см. ниже).OLLAMA_MODELS— куда складывать веса. По умолчанию на Linux это/usr/share/ollama/.ollama/models, и системный раздел кончается быстро — модели удобнее держать на отдельном диске.OLLAMA_KEEP_ALIVE— сколько держать модель в памяти после последнего запроса. По умолчанию 5 минут;-1означает «не выгружать никогда». Для сервиса, к которому обращаются редко, но ждать 20 секунд загрузки не хотят, это ключевая настройка.OLLAMA_CONTEXT_LENGTH— размер контекстного окна, по умолчанию 4096 токенов. Больше контекст — больше памяти под кеш; как это считается, разобрано в заметке про токены и лимиты.
После правки — sudo systemctl restart ollama.
Не выставляйте порт в интернет
У Ollama нет ни аутентификации, ни ограничения запросов: кто дотянулся до порта, тот и хозяин модели. Прописать OLLAMA_HOST=0.0.0.0 и открыть 11434 наружу — значит подарить вычислительные мощности первому же сканеру. Правильный путь: закрыть порт файрволом и пускать трафик через nginx с TLS и проверкой токена, либо оставить сервис на 127.0.0.1, а с рабочей машины ходить через SSH-туннель.
Какую модель взять
Библиотека на ollama.com большая, и выбирать проще по задаче, чем по рейтингам:
- Универсальный чат и суммаризация — линейки Gemma, Qwen, Llama в размере 7–9B. Qwen заметно лучше остальных ведёт себя на русском.
- Код — специализированные code-варианты тех же семейств; они обучены на репозиториях и лучше держат синтаксис.
- Рассуждения — модели с «reasoning»-режимом вроде DeepSeek-R1 и gpt-oss. Отвечают медленнее, потому что сначала генерируют цепочку рассуждений.
- Эмбеддинги — отдельные маленькие модели, например
nomic-embed-text; они не разговаривают, а превращают текст в вектор.
Практичная стратегия — начать с 7–9B и подниматься выше, только если качество не устраивает на реальных примерах. Разница между 8B и 30B на простой классификации часто нулевая, а памяти вторая съедает втрое больше.
Свой пресет через Modelfile
Чтобы не таскать системный промпт в каждый запрос, соберите свою версию модели. Файл Modelfile:
FROM qwen3:8b
PARAMETER temperature 0.3
PARAMETER num_ctx 8192
SYSTEM """Ты технический редактор. Отвечай на русском,
без вводных фраз, только по существу."""
Сборка и запуск:
ollama create redactor -f Modelfile
ollama run redactor
Дальше redactor — обычное имя модели, его можно указывать в API. Удобно, когда одну базовую модель используют несколько сервисов с разными ролями.
Когда локальная модель не подходит
Честный список ограничений: сложные многошаговые рассуждения, работа с длинным контекстом на сотни тысяч токенов, задачи, где ошибка дорого стоит, и качественный перевод на редкие языки — здесь закрытые облачные модели по-прежнему сильно впереди. Если вы выбираете между вариантами, есть сравнение Gemini, Claude и OpenAI.
Разумный компромисс — гибрид: дешёвая массовая работа (классификация, извлечение полей, черновики, эмбеддинги) идёт на локальной модели, а редкие сложные запросы уходят в облако. Ollama такому сценарию не мешает: раз интерфейс совместим с OpenAI, переключение между локальным и облачным провайдером — это смена базового URL и имени модели. В самой Ollama для этого есть и облачные модели с суффиксом :cloud — команды те же, но вычисления уезжают на её серверы; данные при этом покидают ваш контур, так что главного преимущества локального запуска в этом режиме уже нет.
Итог
Ollama превращает «поднять свою модель» из проекта на выходные в три команды: установить, скачать модель, отправить запрос на localhost:11434. Дальше всё решает память — от неё зависит, какую модель вы потяните и с какой скоростью. Начните с 7–9B и OpenAI-совместимого эндпоинта, проверьте на реальных задачах и уже по результату решайте, нужна ли модель побольше, карта помощнее или облако для самых трудных запросов.
Частые вопросы
Зависит от размера модели. В квантизации Q4 модель на 3–4B занимает около 2–3 ГБ, на 7–9B — 5–6 ГБ, на 20–30B — 14–20 ГБ. Например, gpt-oss:20b весит примерно 14 ГБ и, по документации Ollama, стартует на системах от 16 ГБ памяти. Быстрее всего работа идёт, когда модель целиком помещается в видеопамять; проверить это можно командой ollama ps.
Да. Ollama отдаёт OpenAI-совместимый интерфейс на http://localhost:11434/v1/ — достаточно подменить base_url, а ключ передать любой (он игнорируется, обычно пишут 'ollama'). Поддержаны /v1/chat/completions, /v1/completions, /v1/embeddings и /v1/models, работают стриминг, вызов инструментов и JSON-режим.
Нет. У сервиса нет ни аутентификации, ни ограничения числа запросов, поэтому любой, кто дотянулся до порта 11434, сможет использовать вашу модель и посмотреть список установленных. Оставьте сервис на 127.0.0.1 и ходите через SSH-туннель либо поставьте перед ним nginx с TLS и проверкой токена.
Для массовых простых задач — классификации, извлечения полей, черновиков, эмбеддингов — вполне. Для сложных многошаговых рассуждений, очень длинного контекста и задач с высокой ценой ошибки закрытые облачные модели заметно сильнее. Практичный вариант — гибрид: рутина локально, редкие сложные запросы в облако.
Источники
- 1.Ollama Docs — Quickstarthttps://docs.ollama.com/quickstart
- 2.Ollama Docs — Linux install and systemd servicehttps://docs.ollama.com/linux
- 3.Ollama Docs — OpenAI compatibilityhttps://docs.ollama.com/api/openai-compatibility
- 4.Ollama Docs — FAQ (OLLAMA_HOST, OLLAMA_MODELS, keep_alive, context length)https://docs.ollama.com/faq
- 5.Ollama Library — gpt-osshttps://ollama.com/library/gpt-oss
- 6.Ollama Docs — Cloud modelshttps://docs.ollama.com/cloud



