llm-d 与 NVIDIA Dynamo 可靠性能力对照分析
一、分析口径
本文只从可靠性视角整理 llm-d 与 NVIDIA Dynamo / ai-dynamo 生态中公开呈现的能力,不做选型判断,也暂不讨论差异化。
可靠性在大模型推理系统中不仅包括传统的 Pod 重启、健康检查和负载均衡,还包括:
- Router / Gateway 高可用;
- Endpoint 健康感知;
- Worker graceful shutdown;
- in-flight request 处理;
- request migration;
- request cancellation;
- load shedding;
- engine process failover;
- GPU / node 故障恢复;
- KV cache 在恢复过程中的角色;
- P/D 分离下的跨阶段恢复;
- 滚动升级与容量恢复;
- 基础设施 HA;
- 故障测试与验证。
为避免混淆,本文将能力状态分为四类:
| 状态 | 含义 |
|---|---|
| 主线 / 文档化 | 官方 README、docs、user guide 中明确作为能力说明 |
| Issue / Proposal | 公开 issue 或提案,方向明确,但不等同于成熟落地 |
| Experimental / Preview | 官方明确标为实验或预览能力 |
| 基础依赖 | 更多依赖 Kubernetes、Gateway、runtime 或底层组件,而不是该项目独立实现 |
二、可靠性能力总表
| 核心问题域 | 要解决的问题 | llm-d 相关能力 / 项目 | Dynamo / NVIDIA 相关能力 / 项目 |
|---|---|---|---|
| 控制面 / 入口高可用 | Router、Frontend、Gateway 自身不能成为单点,入口组件故障后流量应继续可用 | llm-d 以 Gateway API、Envoy、EPP、InferencePool 为基础;Router 作为智能入口,结合 endpoint 状态做请求放置;v0.5 中提到 active-active HA | Dynamo 文档提到可启动多个 frontend + router replica,并共享 router state 以提高 fault tolerance;Fault Tolerance 总览也覆盖 system / infrastructure 层 |
| Endpoint 健康感知 | Router 需要识别 unhealthy、stale、overloaded worker,避免继续转发请求 | llm-d-router 的 EPP 根据 InferencePool 当前状态、load、KV locality、priority 等信号做 placement decision;更多属于 routing / flow-control 基础能力 |
Dynamo Fault Tolerance 把 Health Checks 放在 Worker 层;整体架构中包含 health checks、discovery liveness、stale endpoint removal |
| Discovery / Membership 可靠性 | Worker 上下线、失联、租约过期后,系统如何更新成员视图,避免 stale endpoint | 主要依赖 Kubernetes endpoint、Gateway API、InferencePool / EPP 机制;公开资料中未看到单独 membership fault-tolerance 章节 | Dynamo resilience loop 明确包含 discovery liveness、stale endpoint removal、event-path recovery |
| Graceful Shutdown / Drain | 滚动升级、缩容、Pod 终止时,不应继续接收新请求,并尽量让 in-flight 请求完成 | llm-d issue #927 提议采用 vLLM --shutdown-timeout,并设置 terminationGracePeriodSeconds 大于 shutdown timeout,以减少升级期间流量中断、允许 in-flight request 完成 |
Dynamo 有专门 Graceful Shutdown 文档:收到 SIGTERM / SIGINT 后调用 runtime.shutdown(),invalidates endpoints,不再接收新请求,并按配置等待 in-flight requests 完成和清理资源 |
| In-flight Request Completion | Worker 退出时,已有请求是等待完成、取消、迁移,还是直接失败 | llm-d graceful shutdown issue 的目标是通过 vLLM shutdown timeout 让 in-flight 请求完成;公开主线未看到成熟 request migration / cancellation 策略 | Dynamo graceful shutdown 支持 endpoint draining,并根据配置处理 in-flight requests;Fault Tolerance 总览把 graceful shutdown、request migration、request cancellation 作为关键机制 |
| Request Migration / 故障续推 | Worker 在生成中故障时,请求能否迁移到其他 worker 并继续输出 | 公开主线主要是 routing、flow control、HA、resilient transport、graceful shutdown issue;未看到等价于 Dynamo request migration 的文档化能力 | Dynamo Request Migration 允许 in-progress requests 在 worker 不可用时迁移到健康 worker,保留 accumulated tokens,并保持 client token flow 连续 |
| Request Cancellation | 用户断开连接、请求超时或上游取消后,如何释放 worker 计算资源 | 公开资料中未看到 llm-d 层的一等 request cancellation 机制;通常依赖 Gateway / runtime 行为 | Dynamo Request Cancellation 支持 graceful stop、kill signal、hierarchical cancellation propagation;vLLM backend 文档也说明用户断开连接时请求会跨 worker 自动取消以释放资源 |
| Load Shedding / Request Rejection | Worker 或系统过载时,如何拒绝新请求,防止级联故障、OOM 和尾延迟崩溃 | llm-d Router 提供 request prioritization 和 advanced flow control;v0.5 也提到 operational rigor、availability requirements,但公开材料更偏调度 / SLO | Dynamo Request Rejection / Load Shedding 基于 KV cache utilization、prefill token threshold、worker load monitoring 等阈值,过载时返回 HTTP 503,目标是防止 cascading failures |
| Priority / Degradation | 不同租户或请求优先级不同,故障或过载时如何降级、排队或拒绝 | llm-d-router 支持 request prioritization、flow control,并可通过 objective / target 影响 placement |
Dynamo 文档主要从 load shedding、worker load、HTTP 503、migration / cancellation 角度描述;优先级策略不是其公开 fault-tolerance 叙事核心 |
| Worker Crash Recovery | Worker crash、pod restart、runtime 异常后,如何摘流、替换、恢复服务 | 基础上依赖 K8s restart / endpoint 更新 / Router 重新放置;IRO proposal 面向硬件故障恢复提出 RecoveryRequest 与 EngineAdapter | Dynamo Fault Tolerance 明确覆盖 Worker Pod Restart、Worker Crash、Network Partition、GPU Failure 等 failure scenarios;机制包括 health checks、migration、cancellation、load shedding |
| Engine Process Failover | GPU / 节点仍健康,但 backend engine 进程崩溃时,能否快速恢复而非完整重载 | IRO proposal 通过 EngineAdapter 抽象 pause / resume、scale down / up、engine status 等操作;更偏硬件 / engine recovery 协调 | Shadow Engine Failover 是 Kubernetes 中同节点 engine-process failure 的 active/passive 恢复机制,目标是在 GPU / node 健康、engine 失败时由 standby engine 接管;属于 Experimental / Preview |
| 硬件故障恢复 | GPU reset、node reboot、node replacement 等硬件故障如何与推理服务生命周期协同 | IRO issue 明确提出 RESET_DEVICE、REBOOT_NODE、REPLACE_NODE 三条恢复轨道,并通过 RecoveryRequest CRD 与 EngineAdapter 协调 engine recovery | Dynamo Fault Tolerance failure scenarios 包含 GPU Failure;此外依赖 Kubernetes、Grove、底层 NVIDIA 平台能力和 Shadow Engine Failover 等机制 |
| 网络 / 传输韧性 | 网络拥塞、传输不稳定会导致 P/D KV transfer 或跨节点通信尾延迟波动 | llm-d v0.5 提到 UCCL-based transport resilience;UCCL transport backend 用于提升拥塞网络下稳定性 | Dynamo 依赖 NIXL 做跨 worker / GPU / CPU / storage 数据移动;Fault Tolerance 还把 NATS resilience、etcd HA 放到基础设施层 |
| KV Cache 在可靠性中的角色 | KV 不只是性能缓存;故障时是否能用于恢复、迁移或减少重算 | 公开主线更偏性能:KV locality、offloading、cache-aware routing;未看到成熟 KV-state recovery 语义 | Dynamo load shedding 使用 KV cache utilization 作为 busy threshold;request migration 保留 accumulated tokens,但公开文档未表述为完整 KV block ownership / replica / epoch 级恢复 |
| P/D 分离下的故障处理 | Prefill 成功但 decode 失败、KV transfer 失败、decode worker 下线时,如何恢复请求 | llm-d 有 P/D disaggregation 与 coordinator,但可靠性公开叙事未单独展开 P/D phase-aware recovery | Dynamo request migration、graceful shutdown、request cancellation 覆盖 worker / request 层;vLLM backend 支持 request migration 配置,但 P/D phase-aware recovery 不是公开文档中的单独主题 |
| Rolling Upgrade / ModelService 升级 | 模型服务升级期间如何尽量不中断用户请求 | llm-d #927 明确目标是 graceful ModelService upgrades,配置 vLLM --shutdown-timeout 和 K8s terminationGracePeriodSeconds |
Dynamo Graceful Shutdown 服务于 Kubernetes pod termination、endpoint invalidation、in-flight wait、clean pod restart |
| Capacity Restoration / 故障后补容量 | Worker 下线或故障后,如何补容量、防止幸存节点过载 | llm-d 有 autoscaling、scale-to-zero、flow control;IRO proposal 中 REPLACE_NODE 会 scale down / replace / scale up,但 capacity restoration 没有形成独立文档化闭环 | Dynamo Planner 负责容量规划,Fault Tolerance 通过 load shedding 防止过载;但公开 fault tolerance 文档更强调请求 / worker 恢复与拒绝,未把 recovery-aware autoscaling 单独展开 |
| Infrastructure HA | etcd、NATS、service discovery、event path 等基础组件故障如何处理 | 更多依赖 Kubernetes、Gateway、Envoy、KServe 等生态 HA 能力;v0.5 提到 active-active HA | Dynamo Fault Tolerance 表中明确 infrastructure 层包括 etcd HA 与 NATS resilience |
| 故障测试 / 验证 | 可靠性能力是否有测试框架验证,而不是只在文档中描述 | llm-d-benchmark 主要关注部署、实验执行、数据采集和 teardown;可靠性 chaos / fault testing 公开主线不突出 |
Dynamo 有 Fault Tolerance Testing 文档,测试框架支持 request cancellation 等 fault tolerance mechanisms |
| 可靠性文档体系 | 是否把可靠性作为系统级一等能力组织,而不是散落在 issue / runtime / K8s 配置中 | llm-d 可靠性内容较分散:production、resilience、HA、UCCL、graceful shutdown issue、IRO proposal 等分别出现 | Dynamo 有独立 Fault Tolerance 章节,并按 Request、Worker、Engine Process、System、Infrastructure 分层组织 |
三、按可靠性层次归纳
1. 流量级可靠性
这一层解决的是:
不要把请求继续打到坏节点或过载节点。
| 能力 | llm-d | Dynamo |
|---|---|---|
| 健康感知 | Router / EPP 基于 InferencePool 状态和实时信号做 placement | Health Checks、Discovery Liveness、stale endpoint removal |
| 负载保护 | Router 支持 prioritization 和 advanced flow control | Request Rejection / Load Shedding,基于 KV utilization、prefill token 等阈值返回 503 |
| 入口 HA | v0.5 提到 active-active HA | 多 frontend + router replica,共享 router state |
初步判断:
- 两边都有流量级可靠性能力;
- Dynamo 的 fault-tolerance 文档化更完整;
- llm-d 更像是把这些能力分散在 Router、HA、transport、K8s integration 中。
2. Worker 生命周期可靠性
这一层解决的是:
Pod 升级、缩容、退出、crash 时,系统如何优雅处理。
| 能力 | llm-d | Dynamo |
|---|---|---|
| Graceful shutdown | issue #927:计划采用 vLLM --shutdown-timeout,配合 terminationGracePeriodSeconds |
专门文档:SIGTERM / SIGINT → endpoint invalidation → 等待 in-flight → cleanup |
| Rolling upgrade | 通过 graceful ModelService upgrade issue 推进 | Graceful shutdown 明确覆盖 Kubernetes pod termination 和 clean restart |
| Worker crash | 依赖 K8s + Router/EPP + IRO proposal | Fault Tolerance 明确覆盖 worker crash、pod restart、network partition、GPU failure |
初步判断:
- Dynamo 已经做成用户指南;
- llm-d 正在通过 issue / proposal 补齐;
- llm-d 当前更依赖 Kubernetes 与 runtime 的基础语义。
3. 请求级可靠性
这一层解决的是:
请求已经在生成中,故障或取消时怎么办。
| 能力 | llm-d | Dynamo |
|---|---|---|
| Request migration | 未看到成熟主线能力 | 已有 Request Migration:保留 accumulated tokens,迁移到健康 worker 继续生成 |
| Request cancellation | 未看到独立主线能力 | 已有 Request Cancellation:支持层级取消传播,用户断连时跨 worker 取消 |
| In-flight handling | 主要通过 graceful shutdown issue 依赖 vLLM shutdown timeout | Fault Tolerance 明确把 migration、cancellation、graceful shutdown 组合起来处理 |
初步判断:
- Dynamo 在请求级可靠性上更系统;
- 需要注意 Dynamo request migration 公开语义主要是 accumulated-token continuation;
- 这不应直接等同于完整 KV-state 接管。
4. Engine / 硬件恢复
这一层解决的是:
engine process、GPU、node 发生故障时如何恢复服务能力。
| 能力 | llm-d | Dynamo |
|---|---|---|
| Engine process failover | IRO proposal 通过 EngineAdapter 抽象 pause / resume、scale down / up | Shadow Engine Failover,作为 Engine Process 层机制,被列入 Fault Tolerance |
| GPU reset / node reboot / node replacement | IRO proposal 明确 RESET_DEVICE、REBOOT_NODE、REPLACE_NODE 三条恢复轨道 | Fault Tolerance failure scenarios 包含 GPU Failure;Shadow Engine Failover 覆盖同节点 engine-process failure |
| 硬件恢复编排 | IRO 通过 RecoveryRequest CRD 与 infrastructure recovery controller 协同 | 依赖 Dynamo + Kubernetes + NVIDIA 平台能力 |
初步判断:
- llm-d 在硬件故障恢复方向有明确 proposal;
- Dynamo 已有更完整的 fault-tolerance 叙事,并有 experimental / preview 的 Shadow Engine Failover;
- 两者都在把 engine / hardware failure 从普通 Pod 重启提升为平台级恢复问题。
5. 状态级可靠性
这一层解决的是:
KV、token、sequence state 这些推理状态能否参与恢复。
| 状态 | llm-d | Dynamo |
|---|---|---|
| Token state | 未看到主线 request migration 语义 | Request Migration 保留 accumulated tokens |
| KV state | 公开材料主要用于性能:KV locality、offloading、cache-aware routing | KV utilization 用于 load shedding;KVBM 偏性能管理;公开 migration 未表述为 KV block 级恢复 |
| Sequence state | 未看到成熟公开能力 | Request migration 有 partial generation state,但更像 token-level continuation |
初步判断:
- Dynamo 已经有请求级迁移能力;
- 但公开资料不应解读为完整 KV-state-aware recovery;
- llm-d 公开主线也没有把 KV 状态恢复做成成熟可靠性能力;
- 状态级可靠性是目前两者公开材料中都需要谨慎表述的部分。
四、事实底图总结
从可靠性角度看,两大系统的公开侧重点不同。
llm-d
llm-d 的可靠性能力存在,但整体较分散,主要体现在:
- Router / EPP 的 endpoint 状态感知;
- request prioritization;
- advanced flow control;
- active-active HA;
- UCCL-based transport resilience;
- graceful shutdown / graceful ModelService upgrade issue;
- Inference Resilience Operator proposal;
- Kubernetes / Gateway / runtime 基础可靠性能力。
可以概括为:
1 | llm-d: |
Dynamo / NVIDIA
Dynamo 的可靠性体系更显性,已经有独立 Fault Tolerance 文档,并按层次组织:
- Request;
- Worker;
- Engine Process;
- System;
- Infrastructure。
公开覆盖的能力包括:
- request migration;
- request cancellation;
- graceful shutdown;
- request rejection / load shedding;
- health checks;
- stale endpoint removal;
- shadow engine failover;
- etcd HA;
- NATS resilience;
- fault tolerance testing。
可以概括为:
1 | Dynamo: |
五、当前可确认的边界
为了保证汇报真实可靠,建议在材料中避免以下表述:
1 | 错误表述: |
更稳妥的表述是:
1 | 更准确表述: |
六、后续继续分析的问题
如果后续要进一步深入,可以继续按以下问题核对:
- Dynamo request migration 是否只是 token-level continuation,还是支持真正的 KV / sequence state migration;
- Dynamo Shadow Engine Failover 是否能覆盖 in-flight request,还是主要覆盖 model weights / engine process;
- llm-d IRO proposal 是否进入实现阶段,是否已有 controller / CRD / EngineAdapter 实现;
- llm-d graceful shutdown issue 是否合入主线,ModelService Helm chart 是否已支持相关配置;
- llm-d active-active HA 覆盖的是 Router / control-plane HA,还是包括请求状态级 HA;
- 两者是否有 P/D phase-aware recovery 的明确状态机;
- 两者是否把 recovery-aware autoscaling 与 fault tolerance 联动起来;
- 两者是否有针对 fault injection / chaos testing 的 benchmark 或 e2e 测试体系。