# Ollama

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

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

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

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

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

{% hint style="info" %}
Ollama легковесна и работает на большинстве GPU-серверов. Для больших моделей (13B+) выбирайте серверы с 16 ГБ+ ОЗУ и 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
# Замените на ваш реальный http_pub URL
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 в разделе My Orders, затем:
curl https://your-http-pub.clorecloud.net/api/tags

# Для API вызовов используйте ваш http_pub URL:
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 представила несколько основных функций для производственных нагрузок:

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

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

```bash
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [{"role": "user", "content": "Tell me about Canada."}],
  "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 конечная точка для эмбеддингов (`/api/embed`)

Новое в v0.6+: `/api/embed` конечная точка полностью совместима с 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

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

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

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

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

### Chat Completion

```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 %}

### Совместимая с OpenAI конечная точка

```python
from openai import OpenAI

# Для внешнего доступа используйте ваш http_pub URL:
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": "What is machine learning?"}
    ]
)

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

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

```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
# Устаревшая конечная точка (всё ещё работает)
curl http://localhost:11434/api/embeddings -d '{
  "model": "nomic-embed-text",
  "prompt": "Hello world"
}'

# Новая конечная точка 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

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

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

| Эндпоинт       | Метод  | Описание                          |
| -------------- | ------ | --------------------------------- |
| `/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"}
```

### Конечные точки инференса

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

### Создание пользовательских моделей

Создавайте пользовательские модели с конкретными системными подсказками через API:

```bash
curl https://your-http-pub.clorecloud.net/api/create -d '{
  "name": "my-assistant",
  "modelfile": "FROM llama3.2\nSYSTEM You are a helpful coding assistant."
}'
```

## Конфигурация 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)

Создавайте пользовательские модели с системными подсказками:

```dockerfile
# Modelfile
FROM llama3.2

SYSTEM You are a helpful coding assistant. Always provide code examples.

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 Service
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**
   * 8GB: модели 7B (Q4)
   * 16GB: модели 13B или 7B (Q8)
   * 24GB: модели 34B (Q4)
   * 48GB+: модели 70B
3. **Держать модель загруженной**

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

## Бенчмарки

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

| Модель               | RTX 3060 | RTX 3090 | RTX 4090 | A100 40GB |
| -------------------- | -------- | -------- | -------- | --------- |
| 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 контекст | 4K контекст | 8K контекст | 16K контекст |
| ------ | ----------- | ----------- | ----------- | ------------ |
| 7B     | 5 ГБ        | 6 ГБ        | 8GB         | 12GB         |
| 13B    | 8GB         | 10GB        | 14GB        | 22GB         |
| 34B    | 20GB        | 24 ГБ       | 32GB        | 48GB         |
| 70B    | 40GB        | 48GB        | 64GB        | 96GB         |

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

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

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

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

| GPU      | VRAM  | Цена/день  | Подходит для       |
| -------- | ----- | ---------- | ------------------ |
| RTX 3060 | 12GB  | $0.15–0.30 | Модели 7B          |
| RTX 3090 | 24 ГБ | $0.30–1.00 | Модели 13B-34B     |
| RTX 4090 | 24 ГБ | $0.50–2.00 | Модели 34B, быстро |
| A100     | 40GB  | $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 на http\_pub URL

Это означает, что сервис всё ещё запускается. Подождите 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.
