Ollama: как запустить LLM локально и на сервере
Чтобы использовать в работе большую языковую модель (Large Language Model, LLM) и при этом не передавать третьим лицам коммерческую тайну, клиентские базы и исходный код, нужно развернуть локальную модель в собственном закрытом контуре. Еще недавно запуск открытых моделей требовал сборки llama.cpp под конкретное железо, ручной работы с квантованными весами в формате GGUF и написания собственных серверных обвязок для приема запросов.
Ollama снимает эту рутину. Это инструмент для быстрого развертывания Local AI, который запускает открытые модели буквально в пару команд. По сути, это Docker для LLM: сервис сам скачивает веса, распределяет их между видеопамятью и оперативной памятью и предоставляет готовый интерфейс командной строки и стандартный REST API. Ниже мы собрали практическое руководство по запуску Local LLM на домашнем компьютере и на боевом сервере.
Что такое Ollama и зачем он нужен
Принцип работы и архитектура. Чтобы понять, что такое Ollama, заглянем под капот. Это клиент-серверное приложение: в системе работает фоновый движок, который загружает слои нейросети в память, распределяет их между видеокартой и процессором и обрабатывает очередь запросов. Пользователь взаимодействует с ним через консоль, API или внешние клиенты. Ollama AI автоматически определяет доступное оборудование и выбирает подходящий режим вычислений: CUDA для видеокарт NVIDIA, ROCm для AMD, Metal для Apple Silicon или оптимизированный режим для CPU.
В инструмент встроен публичный каталог моделей. Вам не нужно вручную искать файлы весов на Hugging Face: утилита сама скачивает нужные файлы из реестра и сверяет их контрольные суммы. Чтобы обновить модель до последней версии, достаточно повторно выполнить команду загрузки.
Преимущества собственного контура. Развитие сектора Open-source AI сделало открытые модели реальной альтернативой коммерческим подпискам. Локальный запуск закрывает сразу несколько важных задач:
- Безопасность данных. Запросы и документы не покидают ваш контур: обработка идет внутри сети компании. Исключение составляют облачные модели Ollama с пометкой cloud в каталоге: они выполняются на внешних серверах, поэтому для конфиденциальных данных их лучше не использовать.
- Предсказуемые расходы. Вы не платите за каждый сгенерированный токен. Затраты определяются стоимостью собственного оборудования или аренды вычислительных ресурсов.
- Независимость от внешних сервисов. Сервис Generative AI на локальном сервере продолжит работать внутри корпоративной сети, даже если доступ в интернет пропадет. На него также не повлияют сбои, лимиты и изменения тарифов у внешних API-провайдеров.
Что нужно для запуска Ollama: системные требования
Операционные системы. Ollama официально поддерживает три платформы: Windows 10 (версии 22H2 и новее) и Windows 11, macOS 14 Sonoma и новее, а также популярные дистрибутивы Linux (Ubuntu, Debian, RHEL и другие).
Процессор или видеокарта. Модель можно запустить и на обычном процессоре (CPU), но это вариант скорее для старта. Даже на современном многоядерном чипе с поддержкой инструкций AVX2 модель на 7–8B параметров обычно выдает от нескольких до 10–15 токенов в секунду. Этого хватит, чтобы проверить гипотезу или выполнить фоновую классификацию текста, но для живого диалога, особенно с моделями крупнее, скорости будет мало.
Для комфортной работы нужна дискретная видеокарта или серверный ускоритель (GPU). Чтобы сгенерировать каждый следующий токен, модель должна прочитать из памяти все свои веса (у моделей с архитектурой MoE только активную часть), поэтому скорость генерации упирается в пропускную способность памяти. У двухканальной DDR5 в настольном компьютере она составляет около 70–100 ГБ/с, а у видеопамяти современных GPU достигает от 700 ГБ/с до 2 ТБ/с и выше. Именно поэтому на видеокарте инференс работает в разы быстрее.
Расчет оперативной памяти и VRAM. Основное правило простое: веса модели должны целиком помещаться в видеопамять (VRAM), а если инференс идет на процессоре, то в оперативную память сервера. К размеру самих весов добавляйте 2–4 ГБ на контекстное окно (память диалога) при стандартной длине контекста. Чем длиннее контекст, тем больше нужен запас.
| Модель | Параметры | Формат | Минимум VRAM для GPU | Минимум RAM для CPU |
|---|---|---|---|---|
| Llama 3.2 / Qwen3 | 1–4B | Q4_K_M | 2–4 ГБ | 8 ГБ |
| Llama 3.1 / Mistral | 8B / 7B | Q4_K_M | 6–8 ГБ | 16 ГБ |
| Gemma 3 / Qwen3 | 12B / 14B | Q4_K_M | 10–12 ГБ | 24 ГБ |
| Qwen3 | 32B | Q4_K_M | 24 ГБ | 48 ГБ |
| Llama 3.3 / DeepSeek-R1 (дистиллированная версия) | 70B | Q4_K_M | 48 ГБ | 64 ГБ |
Отдельно стоит упомянуть векторные модели (Embedding Models), которые преобразуют текст в числовые векторы для поиска по базам знаний. Они занимают от сотен мегабайт до 1–2 ГБ и не требуют больших ресурсов. Также в каталоге есть открытые модели OpenAI GPT-OSS: версии на 20B параметров достаточно около 16 ГБ памяти, а версия на 120B рассчитана на один ускоритель с 80 ГБ видеопамяти.
Почасовая оплата, запуск от 2 минут и SLA 99,98%
Как установить Ollama на компьютер
Установка в Windows. Переходим на официальный сайт ollama.com, скачиваем установщик OllamaSetup.exe и запускаем его. Программа установит нужные файлы, добавит путь к ollama в переменную PATH и пропишет приложение в автозагрузку. В трее появится значок сервиса. В актуальных версиях приложения для Windows и macOS есть и встроенное окно чата, но в этой статье мы будем работать через терминал.
Установка в macOS. Основной способ: скачать установщик для macOS с официального сайта и перенести приложение в папку «Программы». Пользователям Homebrew удобнее установить Ollama через терминал:
brew install ollama brew services start ollama
Вторая команда запускает сервер Ollama в фоне. Без нее команды вроде ollama run не смогут подключиться к движку.
На компьютерах с процессорами Apple Silicon (M-серии) оперативная память общая для процессора и графики. На Mac с 64 ГБ памяти можно комфортно запускать модели до 32B параметров прямо «из коробки», а модели на 70B в 4-битном квантовании работают уже на пределе возможностей.
Установка в Linux. Перед установкой убедитесь, что в системе есть базовые утилиты: curl для загрузки скрипта и pciutils, с помощью которых установщик определяет видеокарту:
sudo apt update && sudo apt install -y curl pciutils
Сама установка в Ubuntu или Debian выполняется одной строкой:
curl -fsSL https://ollama.com/install.sh | sh
Скрипт сам создаст системного пользователя ollama и зарегистрирует сервис в systemd.
Проверка работы службы. Убедимся, что фоновый сервис запустился и отвечает на запросы. По умолчанию он слушает адрес localhost:11434. Выполняем в консоли простой GET-запрос:
curl http://localhost:11434/
Если служба работает, терминал вернет ответ: Ollama is running. Установленную версию можно посмотреть командой ollama -v.
Как запустить Ollama и первую LLM
Выбор и скачивание модели. Разберем, как пользоваться Ollama через терминал. Список доступных моделей с размерами и вариантами квантования есть в каталоге на сайте ollama.com/library. Чтобы скачать веса на компьютер, но пока не открывать окно чата, используется команда ollama pull.
Скачаем модель Gemma2 на 9 миллиардов параметров:
ollama pull gemma2:9b
Утилита покажет прогресс загрузки манифеста и слоев модели.
Интерактивный диалог через терминал. Для запуска модели достаточно команды run:
ollama run llama3:8b
Модель llama3:8b мы заранее не скачивали, поэтому утилита сама выполнит загрузку, поместит модель в память и выдаст строку ввода. После этого можно сразу приступать к задачам.
Для выхода из диалога введите команду /bye. После выхода модель еще около 5 минут остается в памяти, чтобы следующий запрос обработался быстрее. Выгрузить ее сразу можно командой ollama stop llama3:8b.
Управление скачанными моделями. Каждая загруженная модель занимает место на диске. Посмотреть список сохраненных моделей позволяет команда:
ollama list
Если модель больше не нужна, освобождаем место на диске:
ollama rm gemma2:9b
Команда удалит файлы модели из хранилища. Слои, которые используют другие модели, останутся на месте.
Основные команды Ollama. Команды, которые чаще всего понадобятся в работе:
| Команда | Что делает |
|---|---|
| ollama pull <модель> | Скачивает модель из каталога |
| ollama run <модель> | Запускает диалог с моделью, при необходимости сначала скачивает ее |
| ollama list | Показывает скачанные модели |
| ollama ps | Показывает модели, загруженные в память, и распределение нагрузки между CPU и GPU |
| ollama stop <модель> | Выгружает модель из памяти |
| ollama rm <модель> | Удаляет модель с диска |
| ollama show <модель> | Выводит параметры модели: размер, квантование, длину контекста |
| ollama serve | Запускает сервер Ollama вручную, без менеджера служб |
Как настроить Ollama для удаленного доступа на сервере Servercore
Когда ресурсов рабочей машины перестает хватать или к модели нужно открыть доступ коллегам, Ollama переносят на сервер: собственный или облачный. Если своего оборудования нет, быстрее и проще арендовать сервер.
Выбор серверной конфигурации. В Servercore под такие задачи подходят три варианта:
- Облачный сервер (VPS) на CPU. Оптимален для эмбеддингов, классификации текстов, компактных моделей и отладки микросервисов. Ядра и память можно увеличить в панели управления без переустановки окружения.
- Облачный сервер с GPU. Размер модели здесь ограничен только объемом видеопамяти выбранной карты. Видеокарта подключается к виртуальной машине целиком, поэтому все ее ресурсы доступны вашей модели. Оплата почасовая, а сервер можно остановить, когда видеокарта не нужна: удобно для пилотных проектов и переменной нагрузки.
- Выделенный сервер с GPU. Подходит для постоянной круглосуточной нагрузки, например для корпоративных сервисов и диалоговых систем с большим числом пользователей. Все ресурсы физического сервера принадлежат только вам и не делятся с другими клиентами, а конфигурацию можно подобрать под задачу.
Установка и сетевая конфигурация. Развернем сервис на сервере с Ubuntu 22.04 или 24.04 LTS. Если на сервере есть GPU, предварительно установите драйвер NVIDIA и проверьте его командой nvidia-smi.
curl -fsSL https://ollama.com/install.sh | sh
По умолчанию служба принимает подключения только с адреса 127.0.0.1. Разберем, как настроить Ollama, чтобы к сервису можно было обращаться с других машин и из Docker-контейнеров. Открываем настройки системного юнита:
sudo systemctl edit ollama.service
В открывшемся редакторе добавляем строки:
[Service] Environment="OLLAMA_HOST=0.0.0.0:11434"
Переменная OLLAMA_HOST со значением 0.0.0.0 разрешает принимать входящие подключения на всех сетевых интерфейсах. Перезапускаем сервис:
sudo systemctl daemon-reload sudo systemctl restart ollama
Если запускать Ollama вручную без менеджера служб, переменную нужно передать в команду: OLLAMA_HOST=0.0.0.0:11434 ollama serve. Но для постоянной работы надежнее systemd: он автоматически перезапустит сервис после сбоя или перезагрузки сервера.
Настройка безопасности и проксирование трафика. Будьте предельно внимательны: у Ollama нет встроенной авторизации, паролей или проверки токенов. Если просто открыть порт 11434 в интернет, любой желающий сможет отправлять запросы, расходовать ресурсы GPU, скачивать и удалять модели.
Поэтому первым делом закрываем лишние порты файрволом и оставляем открытыми только SSH и веб-трафик:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow 80,443/tcp sudo ufw allow from 172.16.0.0/12 to any port 11434 proto tcp sudo ufw enable
Предпоследнее правило открывает порт 11434 только для внутренних сетей Docker. Оно понадобится, если вы будете запускать Open WebUI в контейнере (об этом ниже).
Чтобы безопасно открыть доступ к API, ставим перед сервисом веб-сервер Nginx в роли обратного прокси (reverse proxy). Он будет проверять пароль, а SSL-сертификат зашифрует трафик.
Устанавливаем Nginx и утилиты аутентификации:
sudo apt install -y nginx apache2-utils
Создаем пользователя и пароль:
sudo htpasswd -c /etc/nginx/.htpasswd api_user
Создаем файл конфигурации /etc/nginx/sites-available/ollama:
server {
listen 80;
server_name llm.your-domain.com;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Отключаем буферизацию для стриминга токенов
proxy_buffering off;
proxy_read_timeout 600s;
}
}
Включаем виртуальный хост и перезагружаем Nginx:
sudo ln -s /etc/nginx/sites-available/ollama /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx
Остается выпустить бесплатный SSL-сертификат Let’s Encrypt. Для этого домен llm.your-domain.com должен указывать на IP-адрес сервера:
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d llm.your-domain.com
Certbot сам добавит в конфигурацию Nginx настройки для порта 443 и перенаправление с HTTP на HTTPS. Теперь порт 11434 закрыт извне, а все обращения к API идут через зашифрованный шлюз с проверкой пароля.
Масштабирование ресурсов под нагрузку. При росте числа одновременных подключений масштабировать инфраструктуру в Servercore можно двумя путями:
- Вертикально: перейти на видеокарты с большим объемом VRAM (например, с 24 ГБ на 80 ГБ), чтобы держать в быстрой памяти длинный контекст и параллельные запросы. Сколько запросов одна модель обрабатывает одновременно, задает переменная OLLAMA_NUM_PARALLEL.
- Горизонтально: поднять несколько серверов с одинаковыми моделями за балансировщиком нагрузки. Это может быть облачный балансировщик Servercore или собственный HAProxy либо Nginx с алгоритмом Least Connections, который отправляет запрос на наименее загруженный сервер.
Как пользоваться Ollama API и подключить внешние интерфейсы
Интеграция через REST API. Сервис предоставляет готовые эндпоинты: /api/generate для одиночных запросов и /api/chat для диалога с сохранением контекста. Кроме того, у Ollama есть эндпоинт /v1/chat/completions, совместимый с API OpenAI: к нему можно подключить приложения и библиотеки, написанные под OpenAI, просто заменив адрес.
Пример прямого запроса через curl:
curl http://localhost:11434/api/generate -d '{
"model": "llama3:8b",
"prompt": "Опиши принцип работы шины PCI Express за одно предложение.",
"stream": false
}'
Пример отправки запроса в коде на Python:
import requests
url = "http://localhost:11434/api/chat"
payload = {
"model": "llama3:8b",
"messages": [
{"role": "user", "content": "Как посчитать свободную память в Linux?"}
],
"stream": False
}
response = requests.post(url, json=payload)
print(response.json()["message"]["content"])
Если Ollama работает на сервере за Nginx, запросы отправляются на ваш домен с логином и паролем:
curl -u api_user:ваш_пароль https://llm.your-domain.com/api/generate -d '{
"model": "llama3:8b",
"prompt": "Привет!",
"stream": false
}'
Развертывание веб-панели Open WebUI. Если работать через консоль неудобно и нужен полноценный графический интерфейс (GUI), похожий на популярные AI-чаты, поднимаем Open WebUI. Панель поддерживает учетные записи сотрудников, сохраняет историю переписки и позволяет загружать документы для баз знаний.
Проще всего запустить панель с помощью Docker и плагина Docker Compose. Создаем файл docker-compose.yml:
services: open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: always ports: - "3000:8080" extra_hosts: - "host.docker.internal:host-gateway" environment: - 'OLLAMA_BASE_URL=http://host.docker.internal:11434' volumes: - open-webui-data:/app/backend/data volumes: open-webui-data:
Запускаем контейнер в фоновом режиме:
docker compose up -d
Интерфейс будет доступен по адресу http://ip-вашего-сервера:3000. Панель сама подключится к Ollama через адрес host.docker.internal и покажет список доступных моделей в выпадающем меню. Для этого Ollama должен слушать 0.0.0.0, а в ufw должно быть правило для сетей Docker, которое мы добавили выше.
Первый зарегистрированный пользователь автоматически получает права администратора, поэтому создайте учетную запись сразу после запуска. Учтите, что Docker публикует порты в обход правил ufw, и порт 3000 будет открыт в интернет. Для постоянной работы укажите в docker-compose.yml «127.0.0.1:3000:8080» и откройте панель через Nginx с HTTPS так же, как API.
Частые проблемы при работе с Ollama
Ollama не запускается. Проверьте статус сервиса командой sudo systemctl status ollama, а подробности ошибки посмотрите в журнале: journalctl -u ollama -n 50. Частая причина в том, что порт 11434 уже занят. Например, если запустить ollama serve вручную при работающей службе, второй процесс завершится с ошибкой address already in use. Узнать, какой процесс занял порт, можно командой sudo ss -tulpn | grep 11434.
Модель работает слишком медленно. Если генерация замедлилась до 1–2 токенов в секунду, скорее всего, модель не помещается в видеопамять и движок держит часть слоев в оперативной памяти. Проще всего проверить это командой ollama ps: в колонке PROCESSOR вместо 100% GPU будет указано распределение, например 40%/60% CPU/GPU. Подробности можно найти в системном журнале:
journalctl -u ollama --no-pager -n 50 | grep -i offload
Если в выводе есть строка вида offloaded 10/33 layers to GPU, значит, видеокарте не хватает памяти. Выберите модель с меньшим числом параметров, более сильное квантование (например, Q3 вместо Q4) или уменьшите длину контекста.
Аварийное завершение из-за нехватки RAM. Если модель заведомо не помещается в память, Ollama обычно сообщает об ошибке еще при загрузке. Но если память заканчивается уже в процессе работы, срабатывает защитный механизм ядра Linux (OOM Killer), и сервис аварийно завершается со статусом Killed. Проверить это можно в сообщениях ядра командой dmesg -T | grep -i oom. Решение: выбрать модель меньшего размера или сервер с большим объемом оперативной памяти. Файл подкачки (swap) защитит от падений, но генерация с использованием диска будет очень медленной.
Видеокарта не используется. Если на машине с GPU инференс идет только на CPU, проверьте вывод команды nvidia-smi. Если команда не видит видеокарту, драйвер не установлен или не загружен: установите его и перезагрузите сервер. Если драйвер на месте, посмотрите в журнале (journalctl -u ollama | grep -i gpu), какие устройства обнаружил Ollama, и убедитесь, что системный пользователь ollama добавлен в группы для работы с графическими адаптерами. Официальный скрипт делает это сам, но при ручной установке команду нужно выполнить отдельно:
sudo usermod -aG video,render ollama
После этого перезапустите сервис:
sudo systemctl restart ollama
API недоступен по сети. Если внешний клиент не может подключиться к серверу, проверьте, какие интерфейсы слушает сервис: sudo ss -tlpn | grep 11434.
Если там указан 127.0.0.1:11434, служба принимает только локальные запросы. Проверьте, что в настройках юнита прописан параметр OLLAMA_HOST=0.0.0.0:11434, и перезапустите службу. Если служба слушает 0.0.0.0, но подключиться все равно не удается, проверьте правила файрвола (sudo ufw status) и конфигурацию Nginx (sudo nginx -t).
Закончилось место на системном диске. Языковые модели весят от нескольких до десятков гигабайт и быстро заполняют накопитель. В Linux при установке через официальный скрипт модели хранятся в каталоге /usr/share/ollama/.ollama/models, в Windows и macOS в папке .ollama/models в домашнем каталоге пользователя. Если место не освободилось после ollama rm, проверьте подкаталог blobs: незавершенные загрузки остаются там с суффиксом -partial, их можно удалить при остановленной службе. Чтобы хранить модели на отдельном диске большего объема, укажите путь к нему в переменной OLLAMA_MODELS.
Краткий чек-лист перед запуском
- Рассчитайте объем VRAM под нужную модель с запасом 2–4 ГБ на контекст.
- Установите Ollama и проверьте ответ сервиса на порту 11434.
- Загрузите нужную модель из каталога командой ollama pull.
- На сервере обязательно закройте прямой доступ к порту файрволом и настройте Nginx с авторизацией и HTTPS.
- Подключите Open WebUI через Docker для удобной командной работы и не оставляйте панель открытой в интернет без защиты.