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-сервер