> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/mistral-small.md).

# Mistral Small 3.1

Mistral Small 3.1, выпущенная в марте 2025 года компанией Mistral AI, это **плотная модель с 24 миллиардами параметров** которая дает намного больше, чем можно ожидать от её размера. С контекстным окном 128K, встроенными возможностями зрения, лучшим в классе вызовом функций и **Лицензия Apache 2.0**, это, пожалуй, лучшая модель, которую можно запустить на одной RTX 4090. Она превосходит GPT-4o Mini и Claude 3.5 Haiku в большинстве бенчмарков и при этом удобно умещается на потребительском оборудовании при квантизации.

## Ключевые особенности

* **24B плотных параметров** — без сложности MoE, простое развертывание
* **Окно контекста 128K** — RULER 128K результат 81.2%, обгоняет GPT-4o Mini (65.8%)
* **Встроенное зрение** — анализ изображений, диаграмм, документов и скриншотов
* **Лицензия Apache 2.0** — полностью открыта для коммерческого и личного использования
* **Элитный вызов функций** — нативное использование инструментов с выводом в JSON, идеально для агентных рабочих процессов
* **Мультиязычность** — более 25 языков, включая CJK, арабский, хинди и европейские языки

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

| Компонент | Квантизировано (Q4) | Полная точность (BF16)  |
| --------- | ------------------- | ----------------------- |
| GPU       | 1× RTX 4090 24GB    | 2× RTX 4090 или 1× H100 |
| VRAM      | \~16GB              | \~55GB                  |
| ОЗУ       | 32GB                | 64GB                    |
| Диск      | 20GB                | 50GB                    |
| CUDA      | 11.8+               | 12.0+                   |

**Рекомендация Clore.ai**: RTX 4090 (\~$0.5–2/день) для квантизированного вывода — лучшее соотношение цены и производительности

## Быстрый старт с Ollama

Самый быстрый способ запустить Mistral Small 3.1:

```bash
# Установите Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Запустить Mistral Small 3.1 (автозагрузка ~14GB Q4 квантизации)
ollama run mistral-small3.1

# Или указать конкретную квантизацию
ollama run mistral-small3.1:24b-instruct-2503-q4_K_M
```

### Ollama как API, совместимый с OpenAI

```bash
# Запустить сервер Ollama
ollama serve &

# Загрузить модель
ollama pull mistral-small3.1

# Запрос через API
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-small3.1",
    "messages": [
      {"role": "system", "content": "Вы — полезный помощник по программированию."},
      {"role": "user", "content": "Напишите декоратор Python для ограничения частоты запросов"}
    ],
    "temperature": 0.15
  }'
```

### Ollama с поддержкой зрения

```bash
# Отправьте изображение для анализа
curl http://localhost:11434/api/chat -d '{
  "model": "mistral-small3.1",
  "messages": [{
    "role": "user",
    "content": "Что показывает это изображение?",
    "images": ["/path/to/image.jpg"]
  }]
}'
```

## Настройка vLLM (Production)

Для рабочих нагрузок в продакшене с высокой пропускной способностью и параллельными запросами:

```bash
# Установите vLLM (требуется v0.8.1+)
pip install -U vllm

# Убедитесь, что mistral_common установлен (должно устанавливаться автоматически)
python -c "import mistral_common; print(mistral_common.__version__)"
```

### Сервис на одной GPU (только текст)

```bash
vllm serve mistralai/Mistral-Small-3.1-24B-Instruct-2503 \
  --tokenizer-mode mistral \
  --config-format mistral \
  --load-format mistral \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.90
```

### Сервер с поддержкой зрения (рекомендуются 2 GPU)

```bash
vllm serve mistralai/Mistral-Small-3.1-24B-Instruct-2503 \
  --tokenizer-mode mistral \
  --config-format mistral \
  --load-format mistral \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --limit-mm-per-prompt 'image=10' \
  --tensor-parallel-size 2 \
  --max-model-len 65536
```

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

```python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")

response = client.chat.completions.create(
    model="mistralai/Mistral-Small-3.1-24B-Instruct-2503",
    messages=[
        {"role": "system", "content": "Вы — полезный помощник. Сегодня 2026-02-20."},
        {"role": "user", "content": "Напишите полный REST API на FastAPI с операциями CRUD для блога"}
    ],
    temperature=0.15,
    max_tokens=4096
)
print(response.choices[0].message.content)
```

## HuggingFace Transformers

Для прямой интеграции с Python и экспериментов:

```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "mistralai/Mistral-Small-3.1-24B-Instruct-2503"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    load_in_4bit=True  # 4-битная квантизация — помещается на GPU с 24GB
)

messages = [
    {"role": "system", "content": "Вы — полезный помощник по программированию."},
    {"role": "user", "content": "Реализуйте двоичное дерево поиска на Python с методами вставки, удаления и поиска"}
]

input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)

output = model.generate(
    input_ids,
    max_new_tokens=2048,
    temperature=0.15,
    do_sample=True
)
print(tokenizer.decode(output[0][input_ids.shape[-1]:], skip_special_tokens=True))
```

## Пример вызова функций

Mistral Small 3.1 — одна из лучших небольших моделей для использования инструментов:

```python
import json
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "Получить текущую цену акции по заданному тикеру",
            "parameters": {
                "type": "object",
                "required": ["ticker"],
                "properties": {
                    "ticker": {"type": "string", "description": "Тикер акции (например, AAPL)"}
                }
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "calculate_portfolio_value",
            "description": "Вычислить общую стоимость портфеля по заданным позициям",
            "parameters": {
                "type": "object",
                "required": ["holdings"],
                "properties": {
                    "holdings": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "ticker": {"type": "string"},
                                "shares": {"type": "number"}
                            }
                        }
                    }
                }
            }
        }
    }
]

response = client.chat.completions.create(
    model="mistralai/Mistral-Small-3.1-24B-Instruct-2503",
    messages=[{"role": "user", "content": "Какая сейчас цена AAPL и MSFT?"}],
    tools=tools,
    tool_choice="auto",
    temperature=0.15
)

for tool_call in response.choices[0].message.tool_calls:
    print(f"Call: {tool_call.function.name}({tool_call.function.arguments})")
```

## Быстрый старт с Docker

```bash
# Развертывание на одной GPU
docker run --gpus all -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:latest \
  --model mistralai/Mistral-Small-3.1-24B-Instruct-2503 \
  --tokenizer-mode mistral \
  --config-format mistral \
  --load-format mistral \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --max-model-len 32768

# С поддержкой зрения (2 GPU)
docker run --gpus all -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:latest \
  --model mistralai/Mistral-Small-3.1-24B-Instruct-2503 \
  --tokenizer-mode mistral \
  --config-format mistral \
  --load-format mistral \
  --tool-call-parser mistral \
  --enable-auto-tool-choice \
  --limit-mm-per-prompt 'image=10' \
  --tensor-parallel-size 2
```

## Советы для пользователей Clore.ai

* **RTX 4090 — оптимальный выбор**: При цене $0.5–2/день одна RTX 4090 запускает Mistral Small 3.1 в квантизированном виде с запасом. Лучшее соотношение цена/производительность на Clore.ai для универсальной LLM.
* **Используйте низкую температуру**: Mistral AI рекомендует `temperature=0.15` для большинства задач. Более высокие значения температуры приводят к непоследовательному выводу с этой моделью.
* **RTX 3090 тоже подходит**: При цене $0.3–1/день RTX 3090 (24GB) нормально запускает Q4 квантизированную модель с Ollama. Немного медленнее, чем 4090, но вдвое дешевле.
* **Ollama для быстрых настроек, vLLM для продакшена**: Ollama дает работающую модель за 60 секунд. Для параллельных API-запросов и большей пропускной способности переключайтесь на vLLM.
* **Вызов функций делает её особенной**: Многие 24B модели умеют разговаривать — немногие надежно вызывают инструменты. Вызов функций у Mistral Small 3.1 сопоставим с GPT-4o Mini. Создавайте агентов, бэкенды API и конвейеры автоматизации с уверенностью.

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

| Проблема                         | Решение                                                                                                              |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `OutOfMemoryError` на RTX 4090   | Используйте квантизированную модель через Ollama или `load_in_4bit=True` в Transformers. Полный BF16 требует \~55GB. |
| Модель Ollama не найдена         | Используйте `ollama run mistral-small3.1` (официальное название библиотеки).                                         |
| Ошибки токенизатора vLLM         | Всегда передавайте `--tokenizer-mode mistral --config-format mistral --load-format mistral`.                         |
| Плохое качество вывода           | Установите `temperature=0.15`. Добавьте системный промпт. Mistral Small чувствительна к температуре.                 |
| Зрение не работает на 1 GPU      | Функции зрения требуют больше VRAM. Используйте `--tensor-parallel-size 2` или уменьшите `--max-model-len`.          |
| Вызовы функций возвращают пустое | Добавьте `--tool-call-parser mistral --enable-auto-tool-choice` для vLLM serve.                                      |

## Дополнительное чтение

* [Mistral Small 3.1 на HuggingFace](https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503)
* [Блог-пост Mistral AI](https://mistral.ai/news/mistral-small-3-1/)
* [Страница модели Ollama](https://ollama.com/library/mistral-small3.1)
* [Документация vLLM](https://docs.vllm.ai/)
* [Библиотека Mistral Common](https://github.com/mistralai/mistral-common)
* [Платформа Mistral AI](https://console.mistral.ai/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/mistral-small.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
