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

For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.

Encoder Disaggregation

Обзор

Дезагрегация энкодера выносит vision-энкодер из конвейера prefill/decode в отдельный worker. Вместо выполнения кодирования изображений в общем потоке выделенный encode worker обрабатывает медиа и передает полученные embeddings downstream worker'ам через NIXL (RDMA).

Это позволяет:

  • Независимо масштабировать encode worker'ы в зависимости от нагрузки на vision
  • Снизить давление на GPU-память у prefill/decode worker'ов
  • Лучше использовать GPU, подбирая число worker'ов под реальные узкие места

Когда использовать

Используйте дезагрегацию энкодера, когда:

  • Кодирование vision становится узким местом, и вам нужно масштабировать энкодеры независимо от LLM worker'ов
  • Вы хотите запускать vision-энкодер на другом оборудовании, например на меньших GPU для кодирования и больших GPU для LLM inference
  • Развертывание обрабатывает большой поток multimodal-запросов, и ограничением становится throughput кодирования

Для простых развертываний или разработки/тестирования проще настроить агрегированный вариант (EPD).

Матрица поддержки

BackendE/PDE/P/DNotes
vLLMОтдельный encode worker сейчас обрабатывает входы image_url; входы video_url остаются на пути prefill/PD
TRT-LLMПоддерживает image URL (через MultimodalEncoder) и заранее вычисленные embeddings (через NIXL)
SGLangNIXL для embeddings; bootstrap-механизм для передачи P/D KV

Паттерны развертывания

E/PD — отдельный encoder, объединенные prefill+decode:

Frontend → Processor → Encode Worker → PD Worker → Response
(NIXL)

Encode worker запускает vision-модель и передает embeddings через NIXL в объединенный prefill+decode worker.

E/P/D — все стадии разделены:

Frontend → Processor → Encode Worker → Prefill Worker → Decode Worker → Response
(NIXL) (KV transfer)

Полная дезагрегация с отдельными worker'ами для каждой стадии. Encode worker передает embeddings в prefill worker, а тот затем передает KV cache в decode worker.

Запуск

vLLM

cd $DYNAMO_HOME/examples/backends/vllm

# E/PD
bash launch/disagg_multimodal_e_pd.sh --model "Qwen/Qwen3-VL-30B-A3B-Instruct-FP8"

# E/P/D
bash launch/disagg_multimodal_epd.sh --model "Qwen/Qwen3-VL-30B-A3B-Instruct-FP8"

TRT-LLM

cd $DYNAMO_HOME/examples/backends/trtllm

# E/PD
bash launch/disagg_e_pd.sh

# E/P/D
./launch/epd_multimodal_image_and_embeddings.sh

SGLang

cd $DYNAMO_HOME/examples/backends/sglang

# E/PD
./launch/multimodal_epd.sh

# E/P/D
./launch/multimodal_disagg.sh

См. документацию по конкретным backend'ам (vLLM, TRT-LLM, SGLang) для полного описания конфигурации и флагов компонентов.