Перейти к содержанию
modelium.
Начать с задачи
←

vLLM Production Stack: установить Helm-чарт и проверить ответ

vLLM Production Stack — готовый набор компонентов для обслуживания модели в Kubernetes: сервер vLLM принимает запросы, а router направляет их к серверу. Для первой проверки официальный пример разворачивает одну учебную модель и позволяет получить ответ через локально перенаправленный порт. Нужен уже работающий GPU-кластер; Modelium сверил инструкцию с кодом, но не запускал кластер.

Для инженера, не домашний рецепт. Понадобятся изолированный Kubernetes-кластер с доступным GPU, установленные kubectl, helm и git, права на установку приложений и место для образов и весов. Официальный учебный файл запрашивает 6 CPU, 16Gi оперативной памяти и 1 GPU для группы контейнеров (pod): это параметры примера, не минимальные требования к любому запуску. На этой машине Modelium нет GPU-кластера и Helm; ни модель, ни маршрутизатор редакция не запускала. Подготовка требует сети для репозитория, образов, зависимостей чарта и весов; эта статья не подтверждает офлайн-работу. s1 s2

Что даст учебная установка?

Представьте отдельный тестовый кластер: клиент посылает запрос на один адрес, router передаёт его одному серверу vLLM с моделью. Helm-чарт — конфигурация, по которой Kubernetes создаёт эти компоненты. Официальный минимальный пример использует facebook/opt-125m, одну реплику и один GPU; здесь проверяем маршрут запроса, а не качество модели, работу под нагрузкой или отказоустойчивость. s1

Важная граница: у учебной модели OPT отдельная лицензия с разрешением для некоммерческих исследований, но с запретом коммерческого и производственного использования. Название «Production Stack» относится к программному стеку, а не делает эту модель пригодной для бизнеса. Для реальной задачи выбирайте модель и версию с подходящими условиями отдельно. s4

Как развернуть пример на отдельном кластере?

  1. Убедитесь, что kubectl get nodes показывает ваш тестовый кластер и что он действительно предоставляет GPU рабочим pod. Не запускайте команды в рабочем кластере по умолчанию. Проверьте установленный контекст командой kubectl config current-context. Если нет GPU или прав, остановитесь: пример рассчитан на готовый GPU-кластер, а не обычный домашний ноутбук. s1
  2. В терминале получите официальный репозиторий: git clone https://github.com/vllm-project/production-stack.git, затем cd production-stack и git checkout 7b1164dbe71b1f02ede85152bdfc2f383376dc2d. Проверьте git rev-parse HEAD: вывод должен совпасть с указанным полным коммитом. Это закрепляет файлы чарта и пример; образы с тегом latest в самом примере не закреплены, поэтому побайтовая воспроизводимость образов здесь не обещается. s1 s2
  3. В каталоге репозитория выполните helm dependency build ./helm: зависимости чарта загружаются по его Chart.lock. На своём изолированном стенде установите локальный чарт командой helm install vllm ./helm -f tutorials/assets/values-01-minimal-example.yaml. Отсутствие ошибок Helm ещё не означает, что модель запущена. Если релиз с именем vllm в текущем пространстве имён кластера (namespace) уже есть, не переустанавливайте поверх него. s1 s3
  4. Выполните kubectl get pods и дождитесь состояния Running и готовности router и модели; первоначальная загрузка образа и весов может занять время. Если pod не готов, посмотрите его события и логи на своём тестовом кластере, прежде чем отправлять запрос. s1

Как проверить именно ответ модели через router?

В отдельном терминале запустите kubectl port-forward svc/vllm-router-service 30080:80 и оставьте команду работающей. Перенаправление даёт адрес на вашем компьютере, а не разрешение открывать этот сервис в интернет. В первом терминале запросите curl http://127.0.0.1:30080/v1/models: в списке ожидается ID facebook/opt-125m. Один список — ещё не доказательство генерации. s1

Затем отправьте короткое продолжение текста: curl -X POST http://127.0.0.1:30080/v1/completions -H 'Content-Type: application/json' -d '{"model":"facebook/opt-125m","prompt":"Once upon a time,","max_tokens":10}'. Проверьте HTTP-успех и поле choices[0].text в ответе, но не ожидайте заданных слов: модель может продолжить фразу по-разному. Сравните ID запрошенной модели с полем model. Это тест нового ответа через router, не тест безопасности, производительности или правильности фактов. Modelium этот запрос не выполнял. s1

Если /v1/models пуст или запрос не проходит, сначала сравните kubectl get pods, запущенный port-forward и точный ID модели в файле tutorials/assets/values-01-minimal-example.yaml. Не подменяйте тест ответом напрямую от pod — иначе router останется непроверенным. s1

Где смотреть метрики и как убрать учебный релиз?

В закреплённом чарте kube-prometheus-stack.enabled, оба serviceMonitor.enabled и grafanaDashboards.enabled по умолчанию false. Поэтому успешно отвечающая модель не означает, что Prometheus уже собирает показатели или что Grafana установлена. Для своей тестовой среды с Prometheus Operator авторы предлагают отдельно включить ServiceMonitor для engine и router; для пустого кластера — дополнительно kube-prometheus-stack.enabled: true. Проверьте наличие соответствующих объектов и фактический сбор на своём стенде до вывода о наблюдаемости; мы его не проводили. s2 s3

Когда учебный релиз больше не нужен, остановите port-forward через Ctrl+C и выполните helm uninstall vllm только в том же тестовом namespace и контексте. Удаление релиза не равнозначно автоматической очистке всех загруженных данных и persistent volumes; проверьте остатки отдельно, не удаляя рабочие ресурсы. Если кластера пока нет, начните с одиночного сервера vLLM и проверьте модель без Kubernetes. s1 s2

Источники

  1. vLLM Production Stack: minimal Helm installation, закреплённый tutorial — revision 7b1164dbe71b1f02ede85152bdfc2f383376dc2d. Получено 22.10.2026.
  2. vLLM Production Stack: значения Helm-чарта 0.1.13 — revision 7b1164dbe71b1f02ede85152bdfc2f383376dc2d. Получено 22.10.2026.
  3. vLLM Production Stack: наблюдаемость и установка Helm — revision 7b1164dbe71b1f02ede85152bdfc2f383376dc2d. Получено 22.10.2026.
  4. Meta OPT: лицензия учебной модели на закреплённой ревизии — revision 27dcfa74d334bc871f3234de431e71c6eeba5dd6. Получено 22.10.2026.