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).
Матрица поддержки
| Backend | E/PD | E/P/D | Notes |
|---|---|---|---|
| vLLM | ✅ | ✅ | Отдельный encode worker сейчас обрабатывает входы image_url; входы video_url остаются на пути prefill/PD |
| TRT-LLM | ❌ | ✅ | Поддерживает image URL (через MultimodalEncoder) и заранее вычисленные embeddings (через NIXL) |
| SGLang | ✅ | ✅ | NIXL для 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) для полного описания конфигурации и флагов компонентов.