ai-dynamo/dynamo

GitHub: ai-dynamo/dynamo

NVIDIA推出的数据中心级分布式LLM推理服务框架,解决大模型在多节点多GPU环境下的编排调度与吞吐优化问题。

Stars: 7629 | Forks: 1388

简体中文

# Dynamo **开源的数据中心级推理技术栈。** Dynamo 是位于推理引擎之上的编排层——它不会取代 SGLang、TensorRT-LLM 或 vLLM,而是将它们转化为一个协调的多节点推理系统。分离式服务(Disaggregated serving)、智能路由、多级 KV 缓存和自动扩缩容协同工作,旨在最大化吞吐量并最小化 LLM、推理、多模态和视频生成工作负载的延迟。 使用 Rust 构建以保障性能,使用 Python 实现可扩展性。 ## 何时使用 Dynamo - 您正在**多个 GPU 或节点**上提供 LLM 服务,并需要协调它们 - 您希望使用 **KV 感知路由**来避免冗余的 prefill 计算 - 您需要**独立扩缩容 prefill 和 decode**(分离式服务) - 您希望获得**自动扩缩容**能力,在最低总拥有成本(TCO)下满足延迟 SLA - 您在启动新副本时需要**快速冷启动** 如果您只在单个 GPU 上运行单个模型,那么仅使用推理引擎可能就足够了。 **功能支持一览:** | | [SGLang](https://docs.nvidia.com/dynamo/backends/sg-lang) | [TensorRT-LLM](https://docs.nvidia.com/dynamo/backends/tensor-rt-llm) | [vLLM](https://docs.nvidia.com/dynamo/backends/v-llm) | |---|:----:|:----------:|:--:| | [**分离式服务**](https://docs.nvidia.com/dynamo/design-docs/disaggregated-serving) | ✅ | ✅ | ✅ | | [**KV 感知路由**](https://docs.nvidia.com/dynamo/components/router) | ✅ | ✅ | ✅ | | [**基于 SLA 的规划器**](https://docs.nvidia.com/dynamo/components/planner/planner-guide) | ✅ | ✅ | ✅ | | [**KVBM**](https://docs.nvidia.com/dynamo/components/kvbm) | 🚧 | ✅ | ✅ | | [**多模态**](https://docs.nvidia.com/dynamo/user-guides/multimodal) | ✅ | ✅ | ✅ | | [**工具调用**](docs/tool-calling/README.md) | ✅ | ✅ | ✅ | ## 主要成果 | 成果 | 详情 | |--------|---------| | 每块 GPU 吞吐量提升 **7x** | 在 GB200 NVL72 上使用 Dynamo 运行 DeepSeek R1,对比在单块 B200 上未使用 ([InferenceX](https://inferencex.semianalysis.com/)) | | 模型启动速度提升 **7x** | 使用 ModelExpress 进行权重流式传输(在 H200 上运行 DeepSeek-V3) | | 首字延迟(TTFT)缩短 **2x** | 使用 KV 感知路由,运行 Qwen3-Coder 480B ([Baseten benchmark](https://www.baseten.co/blog/how-baseten-achieved-2x-faster-inference-with-nvidia-dynamo/)) | | SLA 违规减少 **80%** | 规划器在 TCO 降低 5% 的情况下实现自动扩缩容 ([Alibaba APSARA 2025 @ 2:50:00](https://yunqi.aliyun.com/2025/session?agendaId=6062)) | | 吞吐量提升 **750x** | 在 GB300 NVL72 上运行 DeepSeek-R1 ([InferenceXv2](https://inferencex.semianalysis.com/)) | ## Dynamo 的作用 大多数推理引擎针对单个 GPU 或单个节点进行优化。Dynamo 是**位于它们之上的编排层**——它将一组 GPU 集群转化为一个协调的推理系统。

Dynamo architecture overview

**[架构深度解析 →](https://docs.nvidia.com/dynamo/design-docs/overall-architecture)** ### 核心能力 | 能力 | 作用 | 重要性 | |------------|-------------|----------------| | [**分离式 Prefill/Decode**](https://docs.nvidia.com/dynamo/design-docs/disaggregated-serving) | 将 prefill 和 decode 分离为可独立扩缩容的 GPU 池 | 最大化 GPU 利用率;每个阶段都在为其工作负载调优的硬件上运行 | | [**KV 感知路由**](https://docs.nvidia.com/dynamo/components/router) | 根据工作节点负载和 KV 缓存重叠情况路由请求 | 消除冗余的 prefill 计算——TTFT 提升 2 倍 | | [**KV 块管理器 (KVBM)**](https://docs.nvidia.com/dynamo/components/kvbm) | 跨 GPU → CPU → SSD → 远程存储卸载 KV 缓存 | 将有效上下文长度扩展到超越 GPU 内存的限制 | | [**ModelExpress**](https://github.com/ai-dynamo/modelexpress) | 通过 NIXL/NVLink 在 GPU 之间流式传输模型权重 | 新副本的冷启动速度提升 7 倍 | | [**Planner**](https://docs.nvidia.com/dynamo/components/planner/planner-guide) | SLA 驱动的自动扩缩容器,分析工作负载并合理调整资源池规模 | 在最低总拥有成本(TCO)下满足延迟目标 | | [**Grove**](https://github.com/ai-dynamo/grove) | 用于拓扑感知成组调度(NVL72)的 K8s operator | 将工作负载最优地放置在机架、主机和 NUMA 节点上 | | [**AIConfigurator**](https://github.com/ai-dynamo/aiconfigurator) | 在几秒钟内模拟超过 1 万种部署配置 | 无需消耗 GPU 小时即可找到最优服务配置 | | [**容错能力**](https://docs.nvidia.com/dynamo/user-guides/fault-tolerance/request-migration) | 金丝雀健康检查 + 进行中的请求迁移 | 工作节点可能发生故障;用户的请求则不会中断 | ### 1.0 版本新特性 - **零配置部署 ([DGDR](https://docs.nvidia.com/dynamo/kubernetes-deployment/deploy-models/dgdr-reference))** *(测试版):* 在一个 YAML 中指定模型、HW 和 SLA——AIConfigurator 会自动分析工作负载,Planner 会优化拓扑结构,然后由 Dynamo 进行部署 - **Agentic 推理:** 针对优先级、预期输出长度和投机 prefill(speculative prefill)的逐请求提示,外加用于追踪的会话元数据以及 SGLang 子代理(subagent)KV 隔离。[LangChain](https://docs.langchain.com/oss/python/integrations/chat/nvidia_ai_endpoints#use-with-nvidia-dynamo) + [NeMo Agent Toolkit](https://github.com/NVIDIA/NeMo-Agent-Toolkit) 集成 - **多模态 E/P/D:** 带有嵌入缓存的分离式 encode/prefill/decode——图像工作负载的 TTFT 提速 30% - **视频生成:** 原生支持 [FastVideo](https://github.com/hao-ai-lab/FastVideo) + [SGLang Diffusion](https://lmsys.org/blog/2026-02-16-sglang-diffusion-advanced-optimizations/)——在单块 B200 上实现实时 1080p 处理 - **K8s 推理网关插件:** 标准 Kubernetes 网关内的 KV 感知路由 - **存储层 KV 卸载:** 支持 S3/Azure blob + 用于集群范围缓存可见性的全局 KV 事件 ## 部署模式 Dynamo 可以在两种部署模式下运行。两者都提供兼容 OpenAI 的 API,并支持相同的后端、分离式服务和 KV 感知路由。 | 模式 | 简介 | 适用场景 | |------|------------|-------------| | **独立模式** *(默认)* | Dynamo 自带的 Frontend 提供 HTTP 服务,集成的 Dynamo Router 做出 KV 感知路由决策。无需外部网关。 | 本地开发、单集群部署,以及任何您希望 Dynamo 端到端接管请求入口的环境。 | | **网关模式 (GAIE)** | Dynamo 在 Kubernetes [Gateway API Inference Extension](https://gateway-api-inference-extension.sigs.k8s.io/) 网关之后运行。KV 感知路由由 Dynamo Endpoint Picker Plugin (EPP) 在网关层执行;Frontend 作为 sidecar 在 `--router-mode direct` 下运行,并遵循 EPP 的逐请求工作节点选择。 | 已经标准化采用 Inference Gateway 的生产级 Kubernetes 平台、多租户集群,或者当您需要将网关级策略(身份验证、限流、可观测性)与 KV 感知路由共存时。 | 在**独立**模式下,请求流为 `client → Frontend → Router → workers`。在**网关**模式下,请求流为 `client → Inference Gateway → EPP (KV-aware routing) → Frontend sidecar (direct) → workers`。 有关网关模式的完整设置、支持的功能和配置,请参阅 [Inference Gateway (GAIE) 指南](docs/kubernetes/inference-gateway.md)。 ## 快速开始 ### 选项 A:容器(最快) ``` # 拉取预构建的 container(SGLang 示例) docker run --gpus all --network host --rm -it nvcr.io/nvidia/ai-dynamo/sglang-runtime:1.2.1 # 在 container 内 — 启动 frontend 和 worker python3 -m dynamo.frontend --http-port 8000 --discovery-backend file > /dev/null 2>&1 & python3 -m dynamo.sglang --model-path Qwen/Qwen3-0.6B --discovery-backend file & # 发送请求 curl -s localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{ "model": "Qwen/Qwen3-0.6B", "messages": [{"role": "user", "content": "Hello!"}], "max_tokens": 100 }' | jq ``` 其他可用选项:[`tensorrtllm-runtime:1.2.1`](https://docs.nvidia.com/dynamo/resources/release-artifacts) 和 [`vllm-runtime:1.2.1`](https://docs.nvidia.com/dynamo/resources/release-artifacts)。 ### 选项 B:从 PyPI 安装 安装 [uv](https://github.com/astral-sh/uv) (`curl -LsSf https://astral.sh/uv/install.sh | sh`),然后: ``` uv pip install --prerelease=allow "ai-dynamo[sglang]" # or [vllm] ``` 然后如上所示启动 Frontend 和 worker。有关系统依赖项和特定于后端的说明,请参阅[完整安装指南](docs/getting-started/local-installation.md)。 ### 选项 C:Kubernetes(推荐) 对于生产级多节点集群,请安装 [Dynamo Platform](https://docs.nvidia.com/dynamo/kubernetes-deployment/start-here/installation-guide) 并使用单个清单进行部署: ``` # Zero-config 部署:指定 model + SLA,Dynamo 处理其余部分 apiVersion: nvidia.com/v1beta1 kind: DynamoGraphDeploymentRequest metadata: name: my-model spec: model: Qwen/Qwen3-0.6B backend: vllm sla: ttft: 200.0 # ms itl: 20.0 # ms autoApply: true ``` 常见模型的预构建方案: | 模型 | 框架 | 模式 | 方案 | |-------|-----------|------|--------| | Llama-3-70B | vLLM | 聚合式 | [查看](recipes/llama-3-70b/vllm/) | | DeepSeek-R1 | SGLang | 分离式 | [查看](recipes/deepseek-r1/sglang/) | | Qwen3-32B-FP8 | TensorRT-LLM | 聚合式 | [查看](recipes/qwen3-32b-fp8/trtllm/) | 完整列表请参见 [recipes/](recipes/README.md)。特定云平台指南:[AWS EKS](docs/kubernetes/cloud-providers/eks/eks.md) · [Google GKE](docs/kubernetes/cloud-providers/gke/gke.md) · [Azure AKS](docs/kubernetes/cloud-providers/aks/aks.md) · [Amazon ECS](docs/kubernetes/cloud-providers/ecs/ecs.md) ## 从源码构建 面向希望在本地进行构建和开发的贡献者。详情请参阅[完整构建指南](docs/getting-started/building-from-source.md)。 ``` # 安装系统 deps(Ubuntu 24.04) sudo apt install -y build-essential libhwloc-dev libudev-dev pkg-config libclang-dev protobuf-compiler python3-dev cmake # 安装 Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && source $HOME/.cargo/env # 创建 venv 并构建 uv venv dynamo && source dynamo/bin/activate uv pip install pip 'maturin[patchelf]' cd lib/bindings/python && maturin develop --uv && cd $PROJECT_ROOT uv pip install -e lib/gpu_memory_service uv pip install -e . ``` ## 最新资讯 - [03/15] [Dynamo 1.0 现已发布——生产就绪并获社区广泛采用](https://developer.nvidia.com/blog/introducing-nvidia-dynamo-a-low-latency-distributed-inference-framework-for-scaling-reasoning-ai-models/) - [03/15] [NVIDIA Blackwell Ultra 在 MLPerf 中创下新的推理记录](https://developer.nvidia.com/blog/nvidia-blackwell-ultra-sets-new-inference-records-in-mlperf-debut/) - [03/15] [NVIDIA Blackwell 在 SemiAnalysis InferenceMax 基准测试中领先](https://developer.nvidia.com/blog/nvidia-blackwell-leads-on-new-semianalysis-inferencemax-benchmarks/) - [12/05] [Moonshot AI 的 Kimi K2 在 GB200 上借助 Dynamo 实现了 10 倍推理加速](https://quantumzeitgeist.com/kimi-k2-nvidia-ai-ai-breakthrough/) - [12/02] [Mistral AI 使用 Dynamo 运行 Mistral Large 3,推理速度提升 10 倍](https://www.marktechpost.com/2025/12/02/nvidia-and-mistral-ai-bring-10x-faster-inference-for-the-mistral-3-family-on-gb200-nvl72-gpu-systems/) - [11/20] [Dell 将 PowerScale 与 NIXL 集成,TTFT 提升了 19 倍](https://www.dell.com/en-us/dt/corporate/newsroom/announcements/detailpage.press-releases~usa~2025~11~dell-technologies-and-nvidia-advance-enterprise-ai-innovation.htm)
较早的资讯 Dynamo 提供全面的基准测试工具: - **[基准测试指南](docs/benchmarks/benchmarking.md)** – 使用 AIPerf 比较部署拓扑 - **[SLA 驱动的部署]()** – 优化部署以满足 SLA 要求 ## Frontend OpenAPI 规范 兼容 OpenAI 的 Frontend 在 `/openapi.json` 路径下提供 OpenAPI 3 规范。要在不运行服务器的情况下生成: ``` cargo run -p dynamo-llm --bin generate-frontend-openapi ``` 这会将内容写入 `docs/reference/api/openapi.json`。 ## 服务发现与消息传递 Dynamo 使用 TCP 进行组件间通信。在 Kubernetes 上,原生资源([CRDs + EndpointSlices](docs/kubernetes/service-discovery.md))处理服务发现。对于大多数部署,外部服务是可选的: | 部署环境 | etcd | NATS | 备注 | |------------|------|------|-------| | **本地开发** | ❌ 不需要 | ❌ 不需要 | 传递 `--discovery-backend file`;vLLM 还需要 `--kv-events-config '{"enable_kv_cache_events": false}'` | | **Kubernetes** | ❌ 不需要 | ❌ 不需要 | K8s 原生发现;TCP 请求平面 | 对于 Slurm 或其他选择 etcd 或基于 NATS JetStream 模式的分布式部署: - [etcd](https://etcd.io/) 可以直接通过 `./etcd` 运行。 - [nats](https://nats.io/) 需要启用 JetStream:`nats-server -js`。 快速设置两者:`docker compose -f dev/docker-compose.yml up -d` ## 更多资讯 - [11/20] [Dell 将 PowerScale 与 Dynamo 的 NIXL 集成,TTFT 提速 19 倍](https://www.dell.com/en-us/dt/corporate/newsroom/announcements/detailpage.press-releases~usa~2025~11~dell-technologies-and-nvidia-advance-enterprise-ai-innovation.htm) - [11/20] [WEKA 与 NVIDIA 合作开发 Dynamo 的 KV 缓存存储](https://siliconangle.com/2025/11/20/nvidia-weka-kv-cache-solution-ai-inferencing-sc25/) - [11/13] [Dynamo 办公时间播放列表](https://www.youtube.com/playlist?list=PL5B692fm6--tgryKu94h2Zb7jTFM3Go4X) - [10/16] [Baseten 如何通过 NVIDIA Dynamo 实现推理速度提升 2 倍](https://www.baseten.co/blog/how-baseten-achieved-2x-faster-inference-with-nvidia-dynamo/) - [12/01] [InfoQ: NVIDIA Dynamo 简化了用于 LLM 推理的 Kubernetes 部署](https://www.infoq.com/news/2025/12/nvidia-dynamo-kubernetes/)
## 参考 - **[支持矩阵](https://docs.nvidia.com/dynamo/resources/support-matrix)** — 硬件、操作系统、CUDA 和后端版本 - **[功能矩阵](https://docs.nvidia.com/dynamo/resources/feature-matrix)** — 详细的 backend 兼容性 - **[发布构件](https://docs.nvidia.com/dynamo/resources/release-artifacts)** — 容器、wheels、Helm charts - **[服务发现](https://docs.nvidia.com/dynamo/kubernetes-deployment/advanced-platform/service-discovery)** — K8s 原生对比 etcd 对比基于文件的发现 - **[基准测试指南](https://docs.nvidia.com/dynamo/user-guides/benchmarking)** — 使用 AIPerf 比较部署拓扑
标签:人工智能, 分布式系统, 响应大小分析, 大模型推理, 推理服务框架, 数据中心, 用户模式Hook绕过, 通知系统