Если бюджет и ресурсы ограничены, а развернуть self-hosted LLM нужно, присмотритесь к такой связке: Mistral-7B-Instruct-v0.3 + виртуальная машина с RTX A5000 24GB в облаке + vLLM. Да, это далеко не энтерпрайз-уровень, но для некоторых базовых сценариев результат работы будет очень даже хорошим.

Собственно, в этой статье мы развернем сервер с GPU, подготовим Python-окружение, установим vLLM, запустим модель, отправим тестовый запрос через API и посмотрим на базовые метрики, которые помогут оценить выбранную конфигурацию.

На скриншоте ниже — расчет для одиночного запуска на NVIDIA RTX 3090 24 ГБ. Он нужен как ориентир по требованиям к видеопамяти: при выбранных параметрах модель помещается в 24 ГБ VRAM. В облаке развернем ее на сервере с NVIDIA RTX A5000 24 ГБ и после запуска проверим фактическую занятость VRAM, доступность API, время до первого токена и базовую скорость генерации.

В продакшен-сценариях такая модель может быть основой для прототипа внутреннего ассистента, RAG-сценария, автоматизации поддержки или API для тестовой интеграции. Но в этой статье нас интересует развертывание модели на сервере и первичная техническая проверка того, что инференс-сервис запущен, помещается в выбранную GPU-конфигурацию и отвечает на запросы.

Подбор сервера

Заходим в панель управления SelectelПродуктыОблачные серверы.

В разделе серверов кликаем на Создать сервер.  На странице создания сервера выберите локацию: ru-3b, ru-7a или ru-7b. Актуальную информацию о доступности по локациям можно узнать в документации

Для запуска нашей LLM нужен сервер с GPU. Основная нагрузка при инференсе будет идти на видеокарту: в ее памяти размещаются веса модели, KV-кэш и служебные структуры инференс-фреймворка. CPU, RAM и диск тоже важны, но в этой задаче они скорее обеспечивают стабильную работу окружения, чем определяют скорость генерации.

Итак, берем сервер с одной NVIDIA RTX A5000 24 ГБ. Ее достаточно для воспроизводимого запуска модели 7B-класса. Да и по предварительному расчету модель помещается в 24 ГБ VRAM.

Прокрутите страницу вниз до выбора конфигурации и перейдите во вкладку GPU

Для системных ресурсов возьмем 8 vCPU, 32 ГБ RAM. На диске лучше оставить запас. 

Помимо операционной системы, место понадобится для Python-зависимостей, кэша Hugging Face, файлов модели и временных файлов, которые могут появляться при установке и первом запуске. Для этой инструкции берем 100 ГБ SSD — этого достаточно для выбранной модели и окружения.

В качестве образа используем GPU Optimized Ubuntu. Такой образ сокращает подготовительный этап: сервер уже создается с окружением, рассчитанным на работу с GPU NVIDIA. После подключения останется проверить видеокарту через nvidia-smi, установить зависимости и запустить vLLM.

Если вы подбираете сервер для продакшен-нагрузки, нужно отдельно учитывать длину контекста, число параллельных запросов, требуемую задержку, пропускную способность, параметры vLLM, prefix caching, формат весов и стоимость одного млн токенов.

Новые GPU в облаке Selectel от 131,77 ₽/час

Видеокарты для ресурсоемких задач — NVIDIA® H200, RTX™ 6000 Pro.

Подробнее →

Подготовка окружения

После создания сервера подключаемся к нему по SSH:

ssh root@<server_ip>

Проверяем, что сервер видит GPU:

nvidia-smi
GPU видна корректно: NVIDIA RTX A5000, 24 ГБ VRAM, процессов на GPU пока нет.
GPU видна корректно: NVIDIA RTX A5000, 24 ГБ VRAM, процессов на GPU пока нет.

После проверки GPU обновляем системные пакеты. Это снижает риск конфликтов при установке Python-зависимостей и вспомогательных утилит:

apt update && apt upgrade -y

Ставим базовые утилиты:

apt install -y python3 python3-pip python3-venv python3.12-dev build-essential git \
curl htop tmux

tmux пригодится, если позже вы захотите оставить vLLM работать после разрыва SSH-сессии. В этой инструкции запускаем сервер в активном терминале, чтобы видеть логи загрузки модели. Здесь важно не пропустить python3.12-dev и build-essential. При первом запуске vLLM может компилировать вспомогательные CUDA/Triton-модули.

Создаем рабочую директорию:

mkdir -p /opt/mistral-vllm
cd /opt/mistral-vllm

Все дальнейшие команды будем выполнять из директории /opt/mistral-vllm.

Создаем виртуальное окружение:

python3 -m venv venv
source venv/bin/activate

Виртуальное окружение помогает изолировать зависимости vLLM и упростить повторяемость установки.

Обновляем pip командой:

pip install --upgrade pip

Свежая версия снижает вероятность ошибок при установке крупных ML-библиотек и их зависимостей.

Далее ставим vLLM:

pip install vllm

vLLM выбран потому, что он подходит для server-side инференса: умеет эффективно обслуживать запросы к LLM, работать с batching и поднимать OpenAI-compatible эндпоинт. 

Создаем переменные окружения

Здесь зададим название модели и API-ключ, которым будем защищать эндпоинт. Ключ можно сгенерировать на сервере и использовать его далее.

export MODEL_ID="mistralai/Mistral-7B-Instruct-v0.3"
export VLLM_API_KEY=$(openssl rand -hex 32)
echo "$VLLM_API_KEY"

Сохраните значение ключа: оно понадобится позже для тестовых запросов.Не публикуйте реальное значение ключа в скриншотах, логах и репозиториях.

Запускаем vLLM

При запуске сразу учтем настройки инференса:

vllm serve "$MODEL_ID" \
--host 0.0.0.0 \
--port 8000 \
--api-key "$VLLM_API_KEY" \
--dtype auto \
--max-model-len 32768 \
--enable-prefix-caching

После запуска команда не должна завершиться. vLLM остается работать в foreground и пишет логи в терминал.

Prefix caching полезен, когда в запросах повторяется большая часть промта: например, один и тот же системный промт, шаблон инструкции или RAG-контекст. Это  может снизить накладные расходы на обработку повторяющейся части запроса. Для первого развертывания Prefix caching не обязателен, но мы включаем его сразу, чтобы не упустить типовую оптимизацию.

При запуске vLLM может несколько десятков секунд прогревать модель и создавать KV-кэш. После этого API-сервер становится доступным на порту 8000. В логах в процессе также видна информация о модели: 

  • веса модели заняли 13.51 ГБ памяти GPU;

  • доступная память под KV-кэш составила 7,32 ГБ;

  • размер GPU KV-кэш — 59 936 токенов;

  • максимальная конкурентность для запросов длиной 32 768 токенов — 1,83x;

В отдельном SSH-окне можно проверить GPU:

nvidia-smi
Появился процесс, память занята моделью.
Появился процесс, память занята моделью.

Проверка API-сервера

После запуска vLLM сначала проверим служебный эндпоинт /health:

curl -i http://127.0.0.1:8000/health

Если сервер запущен корректно, в ответе будет статус HTTP/1.1 200 OK. Эта проверка показывает, что API-сервер vLLM поднялся и принимает запросы на порту 8000. После этого можно проверять уже модельный эндпоинт /v1/models.

Проверка, что модель доступна через API

Сначала проверим, что vLLM-сервер видит загруженную модель:

curl -s http://127.0.0.1:8000/v1/models \
 -H "Authorization: Bearer $VLLM_API_KEY" | python3 -m json.tool

В ответе должна появиться модель:

Осталось проверить модель тестовым запросом. Создадим файл с запросом:

cat > request.json <<'EOF'
{
"model": "mistralai/Mistral-7B-Instruct-v0.3",
"messages": [
{
"role": "user",
"content": "Return exactly three bullet points that explain what an inference server does."
}
],
"max_tokens": 120,
"temperature": 0
}
EOF

Отправим запрос в эндпоинт /v1/chat/completions:

curl -sS http://127.0.0.1:8000/v1/chat/completions \
-H "Authorization: Bearer $VLLM_API_KEY" \
-H "Content-Type: application/json" \
-d @request.json | python3 -m json.tool

Если все настроено корректно, API вернет JSON с ответом:

Тестируем работоспособность

Для smoke-теста лучше использовать короткий технический запрос на английском языке. Так мы проверяем именно работу инференс-эндпоинта: 

  • модель загружена, 

  • OpenAI-compatible API принимает запрос, 

  • авторизация проходит,

  • сервер возвращает сгенерированный ответ. 

Оценку качества модели для конкретного языка или бизнес-сценария нужно проводить отдельно — на целевых промтах и данных.

После smoke-теста измерим базовые метрики инференса через streaming-запрос к OpenAI-compatible эндпоинту. Это не полноценный нагрузочный тест, просто контрольный прогон, который показывает порядок метрик для выбранной конфигурации.

Метрика

Значение

GPU

NVIDIA RTX A5000 24 ГБ

Модель

mistralai/Mistral-7B-Instruct-v0.3

Контекст модели

32 768 токенов

Prompt tokens

42

Completion tokens

200

Total tokens

242

Total latency

4.920 сек

TTFT

0,479 сек

Decode time

4,441 сек

Output speed
(скорость генерации выходных токенов в одиночном запросе)

45,03 токена/сек

В этом прогоне модель начала отвечать через 0,479 секунды, а затем сгенерировала 200 токенов за 4,441 секунды. Итоговая скорость генерации составила 45,03 токена/сек.

Заключение

В рамках инструкции результат достаточный: модель помещается в 24 ГБ VRAM NVIDIA RTX A5000 и комфортно себя там чувствует. Эндпоинт стабильно отвечает, а TTFT не превышает секунды. Скорость генерации в районе 45 токенов/сек на одиночном запросе — хороший показатель для конфигурации такого уровня.Этого более чем достаточно, чтобы использовать конфигурацию как тестовый стенд, прототип API или демонстрацию self-hosted LLM. 

Конечно, для продакшен-нагрузки и сотен одновременных юзеров потребуется полноценный бенчмарк с параллельными запросами и расчетом стоимости миллиона токенов. Но база для старта у нас уже есть.

А какие модели вы планируете развернуть в облаке в ближайшее время? Если уже пробовали Mistral в связке с vLLM — делитесь своими замерами и впечатлениями в комментариях.

Комментарии (3)


  1. fermentum
    20.05.2026 08:33

    Можно побольше примеров использования? Модель Mistral-7B весьма посредственная и сильно артефачит, подменяя токены из других языков. Хотелось бы понять чем обоснован ее выбор.


    1. starfair
      20.05.2026 08:33

      Скорее всего, из того что было под рукой, и влазило в A5000 24Gb, хотя логичнее было потестировать что-то поновее с MoE и побольше контекстом.


    1. Stanislavvv
      20.05.2026 08:33

      Модель 3-летней давности, да ещё и неквантизованная... По нынешним временам вещь бесполезная.
      Подозреваю, что просто взяли что попалось под руку чисто рекламы ради. Были бы компетентные люди — а) взяли бы vllm в докере, а не собирали неизвестно какую версию, б) взяли бы квантизованную модель, хотя б ту же гемму, квен или если от мистралей — ministral-3, причём не прямо из репозитория авторов, а что-нибудь от QuantTrio, в) контекст 32к — это э... маловато по нынешним временам (его для такой видеокарты придётся урезать, но всё ж можно будет найти компромисс между объёмом модели и объёмом контекста + его можно и в fp8)