Перейти к основному содержимому

Чтобы получить чистое Markdown-содержимое этой страницы, добавьте .md к этому URL. Полный индекс документации см. на https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. на https://docs.nvidia.com/dynamo/llms-full.txt.

Примеры

Примеры vLLM

Инструкции по быстрому старту см. в README vLLM. В этом документе приведены все шаблоны развертывания для запуска vLLM с Dynamo, включая агрегированные, дезагрегированные, KV-маршрутизируемые конфигурации и конфигурации с экспертным параллелизмом.

Содержание

Настройка инфраструктуры

Для локальной разработки или разработки на bare-metal запустите etcd и, при необходимости, NATS с помощью Docker Compose:

docker compose -f dev/docker-compose.yml up -d
  • etcd необязателен, но используется как локальный backend обнаружения по умолчанию. Также доступно обнаружение на основе файлов (параметры --discovery-backend см. в python -m dynamo.vllm --help).
  • NATS нужен только при использовании событий KV-маршрутизации на базе NATS. События на базе ZMQ и маршрутизация на основе предсказаний не требуют NATS.
  • В Kubernetes ни один из них не требуется при использовании оператора Dynamo.

Каждый скрипт запуска запускает frontend и worker(ы) в одном терминале. Для лучшей видимости логов можно запускать каждую команду отдельно в разных терминалах. Для AI-агентов, работающих с Dynamo, можно запустить скрипт запуска в фоновом режиме и использовать команды curl для проверки развертывания.

Обслуживание LLM

Агрегированное обслуживание

Самый простой шаблон развертывания: один worker выполняет и prefill, и decode. Требуется 1 GPU.

Запуск на устройствах CUDA:

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/agg.sh

Запуск на XPU:

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/xpu/agg_xpu.sh

Агрегированное обслуживание с KV-маршрутизацией

Два worker за KV-aware router, который максимизирует повторное использование кеша. Требуется 2 GPU.

Запуск на устройствах CUDA:

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/agg_router.sh

Запуск на XPU:

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/xpu/agg_router_xpu.sh

Это запускает frontend в режиме KV-маршрутизации с двумя worker, которые публикуют KV-события через ZMQ.

Дезагрегированное обслуживание

Разделяет prefill и decode на независимые worker, соединенные через NIXL для передачи KV-кеша. Требуется 2 GPU.

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/disagg.sh

Дезагрегированное обслуживание с KV-маршрутизацией

Масштабируется до 2 prefill-worker и 2 decode-worker с KV-aware routing в обоих пулах. Требуется 4 GPU.

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/disagg_router.sh

Frontend работает в режиме KV-маршрутизации и автоматически обнаруживает prefill-worker, чтобы активировать внутренний prefill router.

Параллелизм данных / экспертный параллелизм

Запускает 4 data-parallel worker с экспертным параллелизмом за KV-aware router. Использует модель Mixture-of-Experts (Qwen/Qwen3-30B-A3B). Требуется 4 GPU.

cd $DYNAMO_HOME/examples/backends/vllm
bash launch/dep.sh

Запустите дезагрегированный пример и попробуйте добавить еще один prefill-worker после запуска конфигурации. Система автоматически обнаружит и задействует новый worker.

Расширенные примеры

Спекулятивное декодирование

Запустите Meta-Llama-3.1-8B-Instruct с Eagle3 в качестве черновой модели для ускорения инференса при сохранении точности.

Руководство: Быстрый старт по спекулятивному декодированию

См. также: Обзор функции спекулятивного декодирования для документации, общей для разных backend.

Мультимодальность

Обслуживайте мультимодальные модели с помощью интеграции vLLM-Omni.

Руководство: vLLM-Omni

Несколько узлов

Разверните vLLM на нескольких узлах, используя распределенные возможности Dynamo. Для multi-node развертываний требуется сетевое соединение между узлами и правила firewall, разрешающие обмен данными NATS/ETCD.

Запустите NATS/ETCD на head node, чтобы все worker nodes могли к ним обращаться:

# On head node
docker compose -f dev/docker-compose.yml up -d

# Set on ALL nodes
export HEAD_NODE_IP="<your-head-node-ip>"
export NATS_SERVER="nats://${HEAD_NODE_IP}:4222"
export ETCD_ENDPOINTS="${HEAD_NODE_IP}:2379"

Для multi-node tensor/pipeline parallelism (когда TP x PP превышает число GPU на одном узле) см. launch/multi_node_tp.sh. Подробнее о распределенном выполнении см. в документации vLLM по multiprocessing.

DeepSeek-R1

Dynamo поддерживает DeepSeek R1 с data parallel attention и широким экспертным параллелизмом. Каждый DP attention rank представляет собой отдельный компонент Dynamo, который отправляет собственные KV-события и метрики.

Запуск на 2 узлах (16 GPU, dp=16):

# Node 0
cd $DYNAMO_HOME/examples/backends/vllm
./launch/dsr1_dep.sh --num-nodes 2 --node-rank 0 --gpus-per-node 8 --master-addr <node-0-addr>

# Node 1
./launch/dsr1_dep.sh --num-nodes 2 --node-rank 1 --gpus-per-node 8 --master-addr <node-0-addr>

Настраиваемые параметры см. в launch/dsr1_dep.sh.

Развертывание в Kubernetes

Полные инструкции по развертыванию в Kubernetes, конфигурации и сведения по устранению неполадок см. в руководстве по развертыванию vLLM в Kubernetes.

Общую документацию Dynamo по K8s см. также в руководстве по развертыванию в Kubernetes.

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

Workers не запускаются из-за ошибок NIXL

Убедитесь, что NIXL установлен и side-channel ports не конфликтуют. Каждому worker в конфигурации с несколькими worker нужен уникальный VLLM_NIXL_SIDE_CHANNEL_PORT.

KV Router маршрутизирует некорректно

При использовании KV-aware routing убедитесь, что PYTHONHASHSEED=0 задан для всех процессов vLLM. Подробнее см. в разделе Согласованность хеширования.

GPU OOM при запуске

Если после предыдущего запуска остались осиротевшие GPU-процессы, следующий запуск может завершиться OOM. Проверьте наличие zombie processes:

nvidia-smi # look for lingering python processes
kill -9 <PID>

См. также