Ollama на GPU-сервере: запуск LLM в облаке
Задача страницы. Показать, как развернуть Ollama на облачном GPU-сервере: установка, Docker, доступ через REST API и Open WebUI — от нуля до рабочего LLM-сервиса.
Что такое Ollama
Ollama — инструмент для запуска LLM одной командой. В отличие от vLLM или TGI, Ollama ориентирован на простоту: минимальные зависимости, встроенный менеджер моделей и REST API, который поднимается автоматически при старте.
Что включено из коробки:
- Встроенная библиотека моделей — Llama 3.1/3.2, Mistral, Qwen 2.5, Gemma 2, DeepSeek-R1, Phi-3 и десятки других;
ollama pull <model>скачивает и регистрирует модель. - REST API на порту 11434 — нативный формат и OpenAI-совместимый эндпоинт
/v1/chat/completions. - Управление VRAM — автоматическая выгрузка неиспользуемых моделей, поддержка GPU через CUDA и ROCm.
- Простой деплой — один бинарник или Docker-образ, без конфигурационных файлов.
Отличие от vLLM: Ollama фокусируется на простоте, а не на максимальном throughput. Для прототипов, внутренних инструментов и dev-окружений — Ollama; для высоконагруженного production API с параллельными запросами — vLLM.
Установка на сервер
Прямая установка через официальный скрипт (Ubuntu/Debian, CUDA уже должен быть установлен):
curl -fsSL https://ollama.com/install.sh | sh
Ollama автоматически определяет GPU через CUDA. После установки сервис запускается как systemd-unit.
По умолчанию Ollama слушает только localhost. Для доступа снаружи — переопределите хост:
# Запуск с привязкой к внешнему адресу
OLLAMA_HOST=0.0.0.0 ollama serve
Или через systemd override:
sudo systemctl edit ollama
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Запуск модели:
ollama run llama3.1:8b
Первый запуск скачивает модель (4.7 GB для llama3.1:8b). Последующие запуски — мгновенные, модель берётся из кэша.
Запуск через Docker
CPU (тест без GPU)
docker run -d \
-p 11434:11434 \
--name ollama \
ollama/ollama
GPU (NVIDIA)
docker run -d \
--gpus=all \
-p 11434:11434 \
-v ollama_data:/root/.ollama \
--name ollama \
ollama/ollama
Volume ollama_data сохраняет скачанные модели между перезапусками контейнера.
docker-compose.yml с GPU
services:
ollama:
image: ollama/ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
- ollama_data:/root/.ollama
ports:
- "11434:11434"
restart: unless-stopped
volumes:
ollama_data:
После запуска контейнера — скачать и запустить модель:
docker exec -it ollama ollama run mistral
Популярные модели
| Модель | Размер файла | VRAM | Команда |
|---|---|---|---|
| llama3.2:3b | 2 GB | 4 GB | ollama run llama3.2:3b |
| llama3.1:8b | 4.7 GB | 8 GB | ollama run llama3.1:8b |
| mistral:7b | 4.1 GB | 8 GB | ollama run mistral |
| qwen2.5:14b | 9 GB | 16 GB | ollama run qwen2.5:14b |
| deepseek-r1:32b | 20 GB | 24 GB | ollama run deepseek-r1:32b |
| llama3.1:70b | 40 GB | 48 GB | ollama run llama3.1:70b |
Полный список: ollama.com/library. Все модели в формате GGUF с автоматической квантизацией.
REST API — примеры запросов
Нативный API Ollama
# Chat completion
curl http://localhost:11434/api/chat \
-d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Привет! Как дела?"}]
}'
# Стриминг (по умолчанию включён)
curl http://localhost:11434/api/chat \
-d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Напиши стихотворение."}],
"stream": true
}'
OpenAI-совместимый эндпоинт
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Через OpenAI SDK:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # любое ненулевое значение
)
response = client.chat.completions.create(
model="llama3.1:8b",
messages=[{"role": "user", "content": "Привет!"}]
)
print(response.choices[0].message.content)
Open WebUI — веб-интерфейс для Ollama
Open WebUI — полнофункциональный чат-интерфейс (аналог ChatGPT) для Ollama. Поддерживает историю чатов, загрузку файлов, RAG, мультимодальные модели.
services:
ollama:
image: ollama/ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
open-webui:
image: ghcr.io/open-webui/open-webui:main
environment:
- OLLAMA_BASE_URL=http://ollama:11434
ports:
- "3000:8080"
depends_on:
- ollama
restart: unless-stopped
volumes:
ollama_data:
После запуска: откройте http://server-ip:3000, создайте аккаунт администратора и выберите модель из списка.
Переменные окружения
| Переменная | Описание | Пример |
|---|---|---|
OLLAMA_HOST |
Адрес и порт для прослушивания | 0.0.0.0:11434 |
OLLAMA_MODELS |
Путь к директории с моделями | /data/ollama/models |
OLLAMA_NUM_PARALLEL |
Число параллельных запросов | 4 |
OLLAMA_MAX_LOADED_MODELS |
Максимум загруженных моделей в VRAM | 2 |
CUDA_VISIBLE_DEVICES |
Ограничить доступные GPU | 0 или 0,1 |
OLLAMA_KEEP_ALIVE |
Время хранения модели в VRAM без запросов | 5m или -1 (всегда) |
Выбор GPU под задачу
| GPU | VRAM | Максимальный размер модели | Примечание |
|---|---|---|---|
| RTX 4080 | 16 GB | 14B (GGUF Q4) | Хорошо для 7–14B моделей |
| RTX 4090 | 24 GB | 32B (GGUF Q4) | Оптимально для большинства задач |
| A100 40GB | 40 GB | 70B (GGUF Q4) | Производственный деплой |
| A100 80GB | 80 GB | 70B (BF16), несколько моделей | Параллельный запуск нескольких LLM |
Ollama работает с GGUF-квантизацией — модели занимают меньше VRAM, чем при BF16. Для llama3.1:70b потребуется минимум A100 40GB.
Запустить Ollama на cloudcompute.ru
Поднимите GPU-инстанс, установите Ollama одной командой и запускайте любые модели из библиотеки — без настройки окружения и управления CUDA вручную.
Навигация по разделу «Инференс LLM»
Обзор: /solutions/llm-inference/
Альтернативные стеки: vLLM, llama.cpp, TGI, SGLang
Производительность и стоимость: Стоимость инференса, Квантизация
Готовы запустить?
Запустить GPU-сервер