# Ollama

Самый простой способ запускать LLM локально на GPU CLORE.AI.

{% hint style="info" %}
**Текущая версия: v0.6+** — Это руководство охватывает Ollama v0.6 и новее. Среди ключевых новых возможностей — структурированные ответы (принудительное соблюдение JSON Schema), совместимый с OpenAI endpoint для эмбеддингов (`/api/embed`), а также одновременная загрузка моделей (запуск нескольких моделей параллельно без выгрузки). Подробнее см. [Новое в v0.6+](#new-in-v06) .
{% endhint %}

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендованных через [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Требования к серверу

| Параметр      | Минимум     | Рекомендуется |
| ------------- | ----------- | ------------- |
| RAM           | 8 ГБ        | 16 ГБ+        |
| VRAM          | 6 ГБ        | 8 ГБ+         |
| Сеть          | 100 Мбит/с  | 500 Мбит/с+   |
| Время запуска | \~30 секунд | -             |

{% hint style="info" %}
Ollama лёгкая и работает на большинстве GPU-серверов. Для более крупных моделей (13B+) выбирайте серверы с 16 ГБ+ RAM и 12 ГБ+ VRAM.
{% endhint %}

## Почему Ollama?

* **Настройка одной командой** - Без Python, без зависимостей
* **Библиотека моделей** - Загружайте модели с помощью `ollama pull`
* **API, совместимый с OpenAI** - Полноправная замена
* **Ускорение на GPU** - Автоматическое определение CUDA
* **Мульти-модельный режим** - Запуск нескольких моделей одновременно (v0.6+)

## Быстрое развертывание на CLORE.AI

**Docker-образ:**

```
ollama/ollama
```

**Порты:**

```
22/tcp
11434/http
```

**Команда:**

```bash
ollama serve
```

### Проверка работоспособности

После развертывания найдите ваш `http_pub` URL в **Мои заказы** и проверьте:

```bash
# Замените на ваш фактический URL http_pub
curl https://your-http-pub.clorecloud.net/

# Ожидаемый ответ: "Ollama is running"
```

{% hint style="warning" %}
Если вы получаете HTTP 502, подождите 30–60 секунд — сервис ещё запускается.
{% endhint %}

## Доступ к сервису

После развертывания на CLORE.AI получайте доступ к вашему экземпляру Ollama через `http_pub` URL:

```bash
# Найдите ваш http_pub в разделе Мои заказы, затем:
curl https://your-http-pub.clorecloud.net/api/tags

# Для API-запросов используйте ваш URL http_pub:
curl https://your-http-pub.clorecloud.net/api/chat -d '{
  "model": "llama3.2",
  "messages": [{"role": "user", "content": "Hello!"}],
  "stream": false
}'
```

{% hint style="info" %}
Все `localhost:11434` примеры ниже работают при подключении по SSH. Для внешнего доступа замените на ваш `https://your-http-pub.clorecloud.net/` URL.
{% endhint %}

## Установка

### Через Docker (рекомендуется)

```bash
docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
```

### Ручная установка

```bash
curl -fsSL https://ollama.com/install.sh | sh
```

Эта одна команда устанавливает последнюю версию Ollama, настраивает системный сервис systemd и автоматически конфигурирует определение GPU. Работает в Ubuntu, Debian, Fedora и большинстве современных дистрибутивов Linux.

## Запуск моделей

### Скачать и запустить

```bash
# Скачать модель
ollama pull llama3.2

# Запустить интерактивный чат
ollama run llama3.2

# Запустить с запросом
ollama run llama3.2 "Explain quantum computing"
```

### Популярные модели

| Модель              | Размер  | Сценарий использования       |
| ------------------- | ------- | ---------------------------- |
| `llama3.2`          | 3B      | Быстрая, общего назначения   |
| `llama3.1`          | 8B      | Лучшее качество              |
| `llama3.1:70b`      | 70B     | Наилучшее качество           |
| `mistral`           | 7B      | Быстрая, хорошее качество    |
| `mixtral`           | 47B     | MoE, высокое качество        |
| `codellama`         | 7-34B   | Генерация кода               |
| `deepseek-coder-v2` | 16B     | Лучше всего для кода         |
| `deepseek-r1`       | 7B-671B | Модель для рассуждений       |
| `deepseek-r1:32b`   | 32B     | Сбалансированное рассуждение |
| `qwen2.5`           | 7B      | Многоязычная                 |
| `qwen2.5:72b`       | 72B     | Лучшее качество Qwen         |
| `phi4`              | 14B     | Последняя модель Microsoft   |
| `gemma2`            | 9B      | Модель Google                |

### Варианты моделей

```bash
# Варианты квантизации
ollama pull llama3.1:8b-instruct-q4_K_M   # 4-бит (меньше, быстрее)
ollama pull llama3.1:8b-instruct-q8_0     # 8-бит (лучшее качество)
ollama pull llama3.1:8b-instruct-fp16     # Полная точность

# Варианты размера
ollama pull llama3.1:8b    # 8 миллиардов параметров
ollama pull llama3.1:70b   # 70 миллиардов параметров

# Новые модели (эпоха v0.6+)
ollama pull deepseek-r1:7b      # Рассуждения, бюджетный вариант
ollama pull deepseek-r1:14b     # Рассуждения, эффективная
ollama pull deepseek-r1:32b     # Рассуждения, сбалансированная
ollama pull deepseek-r1:70b     # Рассуждения, высокое качество
ollama pull qwen2.5:72b         # Самая большая Qwen, топовое качество
ollama pull phi4                # Microsoft Phi-4 14B
```

## Новое в v0.6+

Ollama v0.6 представила несколько крупных возможностей для production-нагрузок:

### Структурированные ответы (JSON Schema)

Принудительно заставляет ответы модели соответствовать определённой JSON Schema. Полезно для создания приложений, которым нужен надёжный, пригодный для парсинга вывод:

```bash
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [{"role": "user", "content": "Расскажи мне о Канаде."}],
  "format": {
    "type": "object",
    "properties": {
      "name": {"type": "string"},
      "capital": {"type": "string"},
      "population": {"type": "integer"},
      "languages": {
        "type": "array",
        "items": {"type": "string"}
      }
    },
    "required": ["name", "capital", "population", "languages"]
  },
  "stream": false
}'
```

Пример на Python со структурированными ответами:

```python
from openai import OpenAI
import json

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

response = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "List 3 programming languages with their main use cases"}],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "languages",
            "schema": {
                "type": "object",
                "properties": {
                    "languages": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {"type": "string"},
                                "use_case": {"type": "string"},
                                "popularity_rank": {"type": "integer"}
                            }
                        }
                    }
                }
            }
        }
    }
)

data = json.loads(response.choices[0].message.content)
print(data)
```

### Совместимый с OpenAI endpoint для эмбеддингов (`/api/embed`)

Новое в v0.6+: `/api/embed` endpoint полностью совместим с OpenAI и поддерживает пакетную обработку входных данных:

```bash
# Эмбеддинг одного текста
curl http://localhost:11434/api/embed -d '{
  "model": "nomic-embed-text",
  "input": "Hello world"
}'

# Пакетные эмбеддинги (новое в v0.6)
curl http://localhost:11434/api/embed -d '{
  "model": "nomic-embed-text",
  "input": ["First document", "Second document", "Third document"]
}'
```

Клиент OpenAI работает напрямую с `/v1/embeddings`:

```python
from openai import OpenAI
import numpy as np

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# Сначала скачайте модель эмбеддингов: ollama pull nomic-embed-text
response = client.embeddings.create(
    model="nomic-embed-text",
    input=["Hello world", "Goodbye world"]
)

emb1 = np.array(response.data[0].embedding)
emb2 = np.array(response.data[1].embedding)

# Косинусное сходство
similarity = np.dot(emb1, emb2) / (np.linalg.norm(emb1) * np.linalg.norm(emb2))
print(f"Similarity: {similarity:.4f}")
```

Популярные модели эмбеддингов:

```bash
ollama pull nomic-embed-text      # 137M, быстро, хорошее качество
ollama pull mxbai-embed-large     # 335M, более высокое качество
ollama pull all-minilm            # 23M, самое быстрое
```

### Одновременная загрузка моделей

До v0.6 Ollama выгружала одну модель, чтобы загрузить другую. V0.6+ поддерживает одновременный запуск нескольких моделей, ограниченный только доступной VRAM:

```bash
# Загрузить две модели одновременно
ollama run llama3.2 &
ollama run deepseek-r1:7b &

# Проверить, что запущено
curl http://localhost:11434/api/ps
```

Настройка параллельности:

```bash
# Разрешить одновременную загрузку до 4 моделей
OLLAMA_MAX_LOADED_MODELS=4 ollama serve

# Каждый runner в отдельном процессе (лучше изоляция)
OLLAMA_NUM_PARALLEL=2 ollama serve
```

Это особенно полезно для:

* A/B-тестирования разных моделей
* Специализированных моделей для разных задач (код + чат)
* Поддержания часто используемых моделей прогретыми в VRAM

## Использование API

### Завершение чата

```bash
# Через http_pub (внешний доступ):
curl https://your-http-pub.clorecloud.net/api/chat -d '{
  "model": "llama3.2",
  "messages": [{"role": "user", "content": "Hello!"}],
  "stream": false
}'

# Через SSH-туннель (localhost):
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [{"role": "user", "content": "Hello!"}],
  "stream": false
}'
```

{% hint style="info" %}
Добавьте `"stream": false` чтобы получить полный ответ сразу, а не потоково.
{% endhint %}

### Endpoint, совместимый с OpenAI

```python
from openai import OpenAI

# Для внешнего доступа используйте ваш URL http_pub:
client = OpenAI(
    base_url="https://your-http-pub.clorecloud.net/v1",
    api_key="ollama"  # подойдёт любая строка
)

# Или через SSH-туннель:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

response = client.chat.completions.create(
    model="llama3.2",
    messages=[
        {"role": "user", "content": "Что такое машинное обучение?"}
    ]
)

print(response.choices[0].message.content)
```

### Потоковая передача

```python
stream = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Write a poem"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
```

### Эмбеддинги

```bash
# Устаревший endpoint (всё ещё работает)
curl http://localhost:11434/api/embeddings -d '{
  "model": "nomic-embed-text",
  "prompt": "Hello world"
}'

# Новый endpoint v0.6+ (поддержка батчей, совместимый с OpenAI)
curl http://localhost:11434/api/embed -d '{
  "model": "nomic-embed-text",
  "input": ["Hello world", "Another text"]
}'
```

### Генерация текста (не чат)

```bash
curl https://your-http-pub.clorecloud.net/api/generate -d '{
  "model": "llama3.2",
  "prompt": "The meaning of life is",
  "stream": false
}'
```

## Полная справка по API

Все endpoint'ы работают и с `http://localhost:11434` (через SSH), и с `https://your-http-pub.clorecloud.net` (внешний).

### Управление моделями

| Endpoint       | Метод  | Описание                          |
| -------------- | ------ | --------------------------------- |
| `/api/tags`    | GET    | Список всех загруженных моделей   |
| `/api/show`    | POST   | Получить сведения о модели        |
| `/api/pull`    | POST   | Скачать модель                    |
| `/api/delete`  | DELETE | Удалить модель                    |
| `/api/ps`      | GET    | Список текущих запущенных моделей |
| `/api/version` | GET    | Получить версию Ollama            |

#### Список моделей

```bash
curl https://your-http-pub.clorecloud.net/api/tags
```

Ответ:

```json
{
  "models": [
    {"name": "llama3.2:latest", "size": 2019393189, "digest": "...", "modified_at": "..."}
  ]
}
```

#### Показать сведения о модели

```bash
curl https://your-http-pub.clorecloud.net/api/show -d '{"name": "llama3.2"}'
```

#### Скачать модель через API

```bash
curl https://your-http-pub.clorecloud.net/api/pull -d '{
  "name": "mistral:7b",
  "stream": false
}'
```

Ответ:

```json
{"status": "success"}
```

{% hint style="warning" %}
Скачивание больших моделей может занять несколько минут. Для очень больших моделей (30 ГБ+) рассмотрите использование SSH и CLI: `ollama pull model-name`
{% endhint %}

#### Удалить модель

```bash
curl -X DELETE https://your-http-pub.clorecloud.net/api/delete -d '{"name": "mistral:7b"}'
```

#### Список запущенных моделей

```bash
curl https://your-http-pub.clorecloud.net/api/ps
```

Ответ:

```json
{
  "models": [
    {"name": "llama3.2:latest", "size": 2019393189, "expires_at": "2025-01-25T12:00:00Z"}
  ]
}
```

#### Получить версию

```bash
curl https://your-http-pub.clorecloud.net/api/version
```

Ответ:

```json
{"version": "0.6.8"}
```

### Endpoint'ы инференса

| Endpoint               | Метод | Описание                                                 |
| ---------------------- | ----- | -------------------------------------------------------- |
| `/api/generate`        | POST  | Завершение текста                                        |
| `/api/chat`            | POST  | Завершение чата                                          |
| `/api/embeddings`      | POST  | Генерация эмбеддингов (устаревший)                       |
| `/api/embed`           | POST  | Генерация эмбеддингов v0.6+ (батчи, совместимо с OpenAI) |
| `/v1/chat/completions` | POST  | Чат, совместимый с OpenAI                                |
| `/v1/embeddings`       | POST  | Эмбеддинги, совместимые с OpenAI                         |

### Создание собственных моделей

Создавайте собственные модели с заданными system prompt через API:

```bash
curl https://your-http-pub.clorecloud.net/api/create -d '{
  "name": "my-assistant",
  "modelfile": "FROM llama3.2\nSYSTEM Вы — полезный помощник по программированию."
}'
```

## Конфигурация GPU

### Проверка использования GPU

```bash
# В контейнере или на сервере
nvidia-smi

# Ollama показывает GPU в логах
ollama run llama3.2 --verbose
```

### Несколько GPU

Ollama автоматически использует доступные GPU. Для конкретного GPU:

```bash
CUDA_VISIBLE_DEVICES=0 ollama serve
```

### Управление памятью

```bash
# Установить лимит памяти GPU
OLLAMA_GPU_MEMORY=8GiB ollama serve

# Оставлять модель загруженной
OLLAMA_KEEP_ALIVE=24h ollama serve

# Разрешить одновременные модели (v0.6+)
OLLAMA_MAX_LOADED_MODELS=3 ollama serve
```

## Собственные модели (Modelfile)

Создавайте собственные модели с system prompt:

```dockerfile
# Modelfile
FROM llama3.2

SYSTEM Вы — полезный помощник по программированию. Всегда приводите примеры кода.

PARAMETER temperature 0.7
PARAMETER top_p 0.9
```

```bash
ollama create coding-assistant -f Modelfile
ollama run coding-assistant
```

## Запуск как сервис

### Systemd

```ini
# /etc/systemd/system/ollama.service
[Unit]
Description=Сервис Ollama
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ollama serve
Restart=always
Environment="OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=multi-user.target
```

```bash
systemctl enable ollama
systemctl start ollama
```

## Советы по производительности

1. **Используйте подходящую квантизацию**
   * Q4\_K\_M для скорости
   * Q8\_0 для качества
   * fp16 для максимального качества
2. **Подбирайте модель под VRAM**
   * 8 ГБ: модели 7B (Q4)
   * 16 ГБ: модели 13B или 7B (Q8)
   * 24 ГБ: модели 34B (Q4)
   * 48 ГБ+: модели 70B
3. **Оставляйте модель загруженной**

   ```bash
   OLLAMA_KEEP_ALIVE=1h ollama serve
   ```
4. **Быстрый SSD повышает производительность**
   * Загрузка модели и KV cache выигрывают от быстрого хранилища
   * Серверы с NVMe SSD могут обеспечить производительность в 2–3 раза выше

## Бенчмарки

### Скорость генерации (токенов/с)

| Модель               | RTX 3060 | RTX 3090 | RTX 4090 | A100 40 ГБ |
| -------------------- | -------- | -------- | -------- | ---------- |
| Llama 3.2 3B (Q4)    | 120      | 160      | 200      | 220        |
| Llama 3.1 8B (Q4)    | 60       | 100      | 130      | 150        |
| Llama 3.1 8B (Q8)    | 45       | 80       | 110      | 130        |
| Mistral 7B (Q4)      | 70       | 110      | 140      | 160        |
| Mixtral 8x7B (Q4)    | -        | 35       | 55       | 75         |
| Llama 3.1 70B (Q4)   | -        | -        | 18       | 35         |
| DeepSeek-R1 7B (Q4)  | 65       | 105      | 135      | 155        |
| DeepSeek-R1 32B (Q4) | -        | -        | 22       | 42         |
| Qwen2.5 72B (Q4)     | -        | -        | 15       | 30         |
| Phi-4 14B (Q4)       | -        | 50       | 75       | 90         |

*Бенчмарки обновлены в январе 2026. Фактическая скорость может отличаться в зависимости от конфигурации сервера.*

### Время до первого токена (мс)

| Модель | RTX 3090 | RTX 4090 | A100 |
| ------ | -------- | -------- | ---- |
| 3B     | 50       | 35       | 25   |
| 7-8B   | 120      | 80       | 60   |
| 13B    | 250      | 150      | 100  |
| 34B    | 600      | 350      | 200  |
| 70B    | -        | 1200     | 500  |

### Длина контекста vs VRAM (Q4)

| Модель | 2K ctx | 4K ctx | 8K ctx | 16K ctx |
| ------ | ------ | ------ | ------ | ------- |
| 7B     | 5 ГБ   | 6 ГБ   | 8 ГБ   | 12 ГБ   |
| 13B    | 8 ГБ   | 10 ГБ  | 14 ГБ  | 22 ГБ   |
| 34B    | 20 ГБ  | 24 ГБ  | 32 ГБ  | 48 ГБ   |
| 70B    | 40 ГБ  | 48 ГБ  | 64 ГБ  | 96 ГБ   |

## Требования к GPU

| Модель | VRAM для Q4 | VRAM для Q8 |
| ------ | ----------- | ----------- |
| 3B     | 3 ГБ        | 5 ГБ        |
| 7-8B   | 5 ГБ        | 9 ГБ        |
| 13B    | 8 ГБ        | 15 ГБ       |
| 34B    | 20 ГБ       | 38 ГБ       |
| 70B    | 40 ГБ       | 75 ГБ       |

## Оценка стоимости

Типичные тарифы на маркетплейсе CLORE.AI:

| GPU                                                                                                | VRAM  | Цена/день  | Подходит для        |
| -------------------------------------------------------------------------------------------------- | ----- | ---------- | ------------------- |
| [RTX 3090](https://clore.ai/rent-3090.html?utm_source=docs\&utm_medium=guide\&utm_campaign=ollama) | 24 ГБ | $0.30–1.00 | моделей 13B-34B     |
| [RTX 4090](https://clore.ai/rent-4090.html?utm_source=docs\&utm_medium=guide\&utm_campaign=ollama) | 24 ГБ | $0.50–2.00 | моделей 34B, быстро |
| RTX 4070                                                                                           | 12 ГБ | $0.20–0.50 | моделей 7B          |
| A100 80GB                                                                                          | 80 ГБ | $1.50–3.00 | моделей 70B         |

*Цены в USD/день. Тарифы зависят от провайдера — проверьте* [*CLORE.AI Marketplace*](https://clore.ai/marketplace) *актуальные тарифы.*

## Устранение неполадок

### Модель не загружается

```bash
# Проверьте доступную память
nvidia-smi

# Попробуйте меньшую квантизацию
ollama pull llama3.1:8b-q4_0
```

### Медленная генерация

```bash
# Проверьте, используется ли GPU
ollama run llama3.2 --verbose

# Убедитесь, что CUDA доступна
nvidia-smi
```

### Соединение отклонено

```bash
# Убедитесь, что сервер запущен
ollama serve

# Проверьте, выполняется ли привязка ко всем интерфейсам
OLLAMA_HOST=0.0.0.0 ollama serve
```

### HTTP 502 на URL http\_pub

Это означает, что служба всё ещё запускается. Подождите 30–60 секунд и повторите попытку:

```bash
# Проверьте, готова ли служба
curl https://your-http-pub.clorecloud.net/

# Ожидается: "Ollama is running"
# Если 502: подождите и повторите попытку
```

## Следующие шаги

* [Открыть WebUI](/guides/guides_v2-ru/yazykovye-modeli/open-webui.md) - Красивый чат-интерфейс для Ollama
* [vLLM](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) - Высокопроизводительное продакшн-обслуживание
* [DeepSeek-R1](/guides/guides_v2-ru/yazykovye-modeli/deepseek-r1.md) - Модель для рассуждений
* [DeepSeek-V3](/guides/guides_v2-ru/yazykovye-modeli/deepseek-v3.md) - Лучшая универсальная модель
* [Qwen2.5](/guides/guides_v2-ru/yazykovye-modeli/qwen25.md) - Многоязычная альтернатива
* [Text Generation WebUI](/guides/guides_v2-ru/yazykovye-modeli/text-generation-webui.md) - Расширенные возможности


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/ollama.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
