Как запустить Mistral на VPS
Под вывеской «Mistral» в реестре Ollama лежит десяток моделей: от семёрки на 4,4 ГБ до MoE на 26 ГБ, и часть из них — под лицензией, запрещающей коммерцию. Запустить Mistral на VPS — дело пятнадцати минут; сложнее выбрать правильный тег, не удивиться скорости на русском и не поймать своп на третьем запросе. Ниже — путь от чистой Ubuntu до рабочего API с замерами.
Содержание
- Какой именно Mistral: теги, веса и лицензии
- Ставим Ollama и забираем веса без сюрпризов с диском
- Токенизатор и русский язык: где семёрка проигрывает NeMo
- Контекст и память: 32k у семёрки, «миллион» у NeMo
- Mixtral: 47 миллиардов по памяти, 13 по скорости
- Подключаем приложения: API, инструменты и защита порта
- Какой сервер под Mistral взять в MAATRIX
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Какой именно Mistral: теги, веса и лицензии
Команда ollama run mistral тянет Mistral 7B Instruct v0.3 — 7,2 млрд параметров, окно 32 768 токенов. Модель живая, но это не весь ассортимент.
| Тег | Вес | Контекст | Лицензия |
|---|---|---|---|
mistral:7b | 4,4 ГБ (Q4_K_M) | 32 768 | Apache 2.0 |
mistral-nemo:12b | 7,1 ГБ (Q4_0) | 128k | Apache 2.0 |
mistral-small:22b | 13 ГБ | 128k | MRL, некоммерческая |
mistral-small:24b | 14 ГБ | 32 768 | Apache 2.0 |
mixtral:8x7b | 26 ГБ (Q4_0) | 32 768 | Apache 2.0 |
codestral:22b | 13 ГБ | 32 768 | MNPL, не для продакшена |
Две строки — юридические мины, и это главное отличие Mistral от Llama с единой лицензией на всё семейство. Mistral Research License разрешает только исследования: поставить mistral-small:22b или 123-миллиардный mistral-large в свой SaaS без договора нельзя. Non-Production License у Codestral запрещает даже внутренний продакшен, включая ассистента для своих разработчиков. А соседний mistral-small:24b — честный Apache 2.0: разница между 22b и 24b выглядит минорным обновлением, а на деле это смена правового режима.
На процессорном VPS ваш выбор — mistral:7b или mistral-nemo:12b. Тег указывайте целиком: mistral:7b-instruct-v0.3-q4_K_M воспроизводится через год, а mistral переедет на следующий релиз.
Ставим Ollama и забираем веса без сюрпризов с диском
Чистая Ubuntu 24.04 LTS или Debian 13, под root:
curl -fsSL https://ollama.com/install.sh | sh
ollama --version # ollama version is 0.33.1
ollama pull mistral:7b-instruct-v0.3-q4_K_M
ollama show mistral:7b
architecture llama
context length 32768
quantization Q4_K_M
Не пугайтесь строки architecture llama: в GGUF Mistral 7B описан той же архитектурой, что и Llama, разница лишь в гиперпараметрах.
Ловушка с диском тут острее, чем у других: веса ложатся в /usr/share/ollama/.ollama/models, то есть на корневой раздел, а Mixtral весит 26 ГБ. Проверьте df -h / заранее, иначе pull упадёт с no space left on device. Каталог переносит строка Environment="OLLAMA_MODELS=/mnt/models" в systemctl edit ollama плюс chown -R ollama:ollama /mnt/models; забудете chown — получите permission denied на первом же pull, демон работает не от root.
Развернуть за пару минут
Готовый образ на VPS MAATRIX: NVMe, AMD EPYC, root-доступ. Локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть OllamaТокенизатор и русский язык: где семёрка проигрывает NeMo
Пункта нет в мануалах, а он определяет реальную стоимость работы. У Mistral 7B словарь 32 768 токенов на SentencePiece, собранный под английский и код: кириллицы почти нет, русское слово рассыпается на 3–5 кусков. У Mistral NeMo словарь другой — Tekken на 131 072 токена, русский в нём представлен нормально.
Замерьте сами — Ollama отдаёт prompt_eval_count в ответе /api/generate:
TXT=$(head -c 1000 /tmp/ru.txt | tr '\n' ' ')
for M in mistral:7b mistral-nemo:12b; do curl -s http://127.0.0.1:11434/api/generate \
-d "{\"model\":\"$M\",\"prompt\":\"$TXT\",\"stream\":false}" | jq '.prompt_eval_count'; done
На тысяче знаков связного русского вышло mistral:7b — 631 против mistral-nemo:12b — 372. Разница в 1,7 раза бьёт трижды. Контекст: 32k у семёрки — это около 50 тысяч знаков по-русски, а не 130 тысяч, как на английском. Скорость: при 6,8 ток/с семёрка выдаёт 11 знаков в секунду, NeMo при 3,9 ток/с — около 10,5: разрыв в буквах исчезает. Качество: дробление слов портит морфологию, семёрка путает падежи и срывается на английский.
Вывод честный: для русского mistral:7b не лучший выбор в своём весе, берите его под английский и код. Частично лечится системным промптом:
FROM mistral:7b-instruct-v0.3-q4_K_M
PARAMETER num_ctx 16384
PARAMETER stop "</s>"
PARAMETER stop "[/INST]"
SYSTEM """Отвечай только на русском, не переключайся на английский."""
Собирается через ollama create mistral-ru -f Modelfile. Про stop: реплику у Mistral закрывает </s>, разметка диалога — [INST] ... [/INST]. При импорте стороннего GGUF без шаблона модель генерирует бесконечно, дописывая новые [INST]-блоки; две строки выше это закрывают. И нюанс формата: у Mistral нет отдельной роли system — шаблон вклеивает её в первую реплику, поэтому длинная инструкция «забывается» быстрее.
Контекст и память: 32k у семёрки, «миллион» у NeMo
Первое разочарование: Ollama открывает окно 4096 токенов независимо от модели, остальное молча режет. В journalctl -u ollama | grep truncat это видно дословно — msg="truncating input prompt" limit=4096 prompt=9137 new=4096.
Второе разочарование обратное: ollama show mistral-nemo печатает context length 1024000. Это не опечатка — в конфиге NeMo max_position_embeddings действительно больше миллиона. Обучалась модель на 128k, дальше качество разваливается, а столько KV-кэша нет ни на одном VPS.
Третье: у Mistral 7B версий v0.2 и v0.3 нет скользящего окна. В v0.1 был sliding window attention на 4096 токенов с дешёвым длинным контекстом; с v0.2 стоит sliding_window: null, и кэш растёт линейно: 2 × слоёв × KV-голов × head_dim × 2 байта на токен. В семействе 8 KV-голов и head_dim 128, меняется только глубина.
| Модель | Слоёв | KV на токен | Окно 8k | Окно 16k | Окно 32k |
|---|---|---|---|---|---|
mistral:7b | 32 | 128 КиБ | 1 ГиБ | 2 ГиБ | 4 ГиБ |
mistral-nemo:12b, mistral-small:24b | 40 | 160 КиБ | 1,25 ГиБ | 2,5 ГиБ | 5 ГиБ |
mixtral:8x7b | 32 | 128 КиБ | 1 ГиБ | 2 ГиБ | 4 ГиБ |
Полные 128k у NeMo стоили бы 20 ГиБ поверх 7,1 ГБ весов — на 16-гигабайтной машине это гарантированный OOM. Реалистичная цель — 16k в drop-in юнита:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=16384"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_KEEP_ALIVE=30m"
q8_0 режет кэш вдвое и работает только с флеш-аттеншеном: 16k у семёрки обойдутся в 1 ГиБ вместо двух. После рестарта ollama ps покажет итог: mistral:7b … 6.6 GB … 100% CPU — это веса плюс кэш плюс накладные, а 100% CPU значит, что видеокарты нет. Арифметика по каждому тегу — в таблице RAM для Mistral.
Mixtral: 47 миллиардов по памяти, 13 по скорости
MoE ломает интуицию «больше параметров — медленнее». В mixtral:8x7b 46,7 млрд параметров, но роутер берёт на токен двух экспертов из восьми, и считается около 12,9 млрд. Замеры --verbose на 8 vCPU, сначала семёрка:
prompt eval rate: 33.88 tokens/s
eval count: 159 token(s)
eval duration: 23.4s
eval rate: 6.79 tokens/s
Та же машина на Mixtral: eval rate: 4.60 tokens/s. Сводка замеров на VPS с EPYC без GPU, Q4, окно 8k:
| Модель | 4 vCPU | 8 vCPU | 16 vCPU |
|---|---|---|---|
mistral:7b | 4,2 ток/с | 6,8 ток/с | 8,4 ток/с |
mistral-nemo:12b | 2,4 ток/с | 3,9 ток/с | 4,8 ток/с |
mixtral:8x7b | — | 4,6 ток/с | 5,9 ток/с |
mistral-small:24b | — | 2,0 ток/с | 2,6 ток/с |
Модель на 47 млрд параметров быстрее модели на 24 млрд — вот она, MoE. Цена честная: все 26 ГБ весов обязаны лежать в RAM целиком, ведь неизвестно, какие эксперты понадобятся следующему токену.
Отсюда главный риск Mixtral на VPS. Ollama отображает веса через mmap, поэтому при нехватке памяти модель формально запустится — и начнёт читать экспертов с диска. Каждый токен дёргает другую пару, кэш страниц не спасает, скорость падает до 0,2–0,4 ток/с. Диагноз даёт vmstat 1:
r b swpd free buff cache si so bi bo
2 3 1048572 61240 1024 3894120 5312 4180 61440 240
Ненулевые si/so — это не «медленный процессор», а свопинг весов. Лечение одно: больше RAM либо модель меньше. Прочие причины — в отдельной статье.
Подключаем приложения: API, инструменты и защита порта
Ollama говорит на двух диалектах: собственном /api/chat и OpenAI-совместимом /v1/chat/completions. Второй удобнее, под него написаны все клиенты; ключ он не проверяет, но многие SDK падают на пустом значении — подставляйте любую строку вроде OPENAI_API_KEY=ollama.
Приятная особенность: начиная с v0.3 семёрка умеет вызывать функции. Модель отвечает блоком [TOOL_CALLS], а Ollama разворачивает его в стандартное поле:
curl -s http://127.0.0.1:11434/api/chat -d '{"model":"mistral:7b","stream":false,
"messages":[{"role":"user","content":"Погода в Лондоне?"}], "tools":[{"type":"function",
"function":{"name":"get_weather","parameters":{"type":"object",
"properties":{"city":{"type":"string"}}}}}]}' | jq -c '.message.tool_calls'
# [{"function":{"name":"get_weather","arguments":{"city":"London"}}}]
Оговорка по опыту: на семёрке инструменты нестабильны — она путает имена аргументов и иногда описывает вызов словами вместо структуры. Для агентских сценариев берите mistral-nemo:12b.
Главное предупреждение: в Ollama нет аутентификации вообще. Кто дотянулся до порта 11434, тот гоняет инференс на вашем процессоре и удаляет модели через /api/delete. Проверьте себя с другой машины curl -s --max-time 5 http://ВАШ_IP:11434/api/tags: пришёл список моделей — закрывайте порт через ufw deny 11434/tcp.
И не выставляйте OLLAMA_HOST=0.0.0.0 «чтобы приложение с ноутбука достучалось» — оставьте демон на локальном адресе и пробросьте порт туннелем ssh -N -L 11434:127.0.0.1:11434 user@ваш-сервер. Для веб-интерфейса — Nginx с TLS и auth_basic, но учтите: Ollama сверяет Host и на чужой отвечает 403 Forbidden, поэтому обязателен proxy_set_header Host localhost:11434;.
Какой сервер под Mistral взять в MAATRIX
Без видеокарты это задача про объём и скорость памяти, а не про частоту процессора: на каждый токен вычитываются все веса модели, и типичные для VPS 25–40 ГБ/с — ваш потолок. Отсюда правило: лишние гигабайты RAM полезнее лишних ядер, удвоение ядер с 8 до 16 даёт прибавку в четверть, а не вдвое.
Минимум: 4 vCPU, 8 ГБ RAM, 60 ГБ NVMe. Здесь живёт mistral:7b с окном 8–16k и скоростью около 4 ток/с: телеграм-бот, разметка, извлечение полей. Ограничение честное — соседей на машине не будет, ни Open WebUI с Postgres, ни второй модели в памяти.
Рабочий вариант: 8 vCPU, 16 ГБ RAM, 120–160 ГБ NVMe. Целевая связка под mistral-nemo:12b с окном 16k: 7,1 ГБ весов, около 1,3 ГиБ кэша с q8_0, 2–3 ГБ на веб-интерфейс и запас на вторую модель. Русский здесь перестаёт быть компромиссом.
Под Mixtral: 16 vCPU, 32 ГБ RAM, от 200 ГБ NVMe. Ниже 32 ГБ MoE не берите — получите не медленную работу, а свопинг из предыдущей секции. Зато помещаются 26 ГБ весов целиком, окно 32k и OLLAMA_MAX_LOADED_MODELS=2.
Две вещи прямо. Одновременных пользователей процессорный VPS не тянет: пять параллельных запросов к семёрке дают каждому больше минуты ожидания. И mistral-small:24b при двух ток/с для чата непригоден — под 24B нужен GPU. Про разрядность весов — разбор квантования, про поломки — частые ошибки Mistral.
Ollama есть в каталоге приложений MAATRIX, и ставить его руками не нужно: при заказе он разворачивается автоматически на Ubuntu или Debian, юнит уже поднят и в автозапуске, доступы появляются в личном кабинете в разделе «Доступ». Остаётся ollama pull нужного тега и настройка контекста из четвёртой секции.
Локация — Лондон. Причина практическая: из российских сетей многогигабайтные слои реестра Ollama регулярно рвутся на середине, а ollama pull hf.co/... для сторонних GGUF часто не отвечает вовсе. С британской площадки 26 ГБ Mixtral приезжают за минуты, а не за три подхода; пинг из Москвы в 40–60 мс на фоне 5 ток/с неразличим, плюс европейский правовой периметр для рабочих документов. Обязаны хранить данные в РФ по 152-ФЗ — берите российскую площадку, Ollama ставится там так же; детали — в обзоре VPS в Великобритании для нейросетей. Оплата — картой российского банка, по СБП, криптой или токеном MAAT.
Развернуть за пару минут
Готовый образ на VPS MAATRIX: NVMe, AMD EPYC, root-доступ. Локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Развернуть OllamaОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Можно ли использовать Mistral в коммерческом продукте бесплатно?
Зависит от тега: mistral:7b, mistral-nemo, mistral-small:24b и mixtral идут под Apache 2.0. А mistral-small:22b, mistral-large (MRL) и codestral (MNPL) коммерческое использование запрещают.
Запустится ли mixtral:8x7b на 16 ГБ RAM?
Формально да: Ollama отображает веса через mmap и не падает. Но 26 ГБ в 16 не влезают, эксперты читаются с диска, и вы получите 0,2–0,4 ток/с при ненулевых si/so в vmstat 1. Под Mixtral нужно 32 ГБ.
Mistral 7B или Llama 3.1 8B для русского?
При равном железе обычно выигрывает Llama: у Mistral 7B словарь всего 32 768 токенов, и русский текст расходует их почти вдвое больше. Нужен именно Mistral — берите mistral-nemo:12b с Tekken. Про соседа — как запустить Llama 3 на VPS.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.