Dynamo 互联就绪检查
在信任 Dynamo 分离式服务的性能数据前,验证 RDMA、NVLink 与 NIXL 传输链路是否就绪。
技能明确声明只读、不变更集群,并使用固定的只读探测命令;但依赖调用者已有的 kubectl exec 权限,未要求用户确认或限定 RBAC 范围,且 env 检查会输出清单中的明文环境变量值,若其中含敏感信息可能泄露。因此扣除最小权限、确认机制和敏感数据保护分;未发现恶意外传或破坏性默认行为。
脚本使用结构化 JSON、超时、缺失工具降级和非零结果分类,异常反馈总体可诊断。静态代码也显示其不会执行完整的双 Pod NIXL 传输测试;此外,汇总逻辑忽略 skipped 计数,全部跳过时仍可能报告未检测到传输缺口,造成过度乐观结论。未执行测试,按静态上限扣分。
用途、前置条件、适用场景、非适用场景、正负触发案例和输出契约较清楚,且核心功能依赖本地 Kubernetes/GPU 环境而非海外在线服务。扣分原因是环境要求较重、中文支持未说明,且无法在单 Pod或缺少测试工具时完成真实端到端验证。
文档包含目的、前置条件、步骤、示例、输出契约、限制、故障排查、参考资料和许可证;skill-card 还提供所有者、版本线索和风险说明。扣分原因包括 description 偏长、缺少明确依赖安装说明和正式 changelog/维护责任路径,且 benchmark 记录了意外文件与脚本 lint 问题。
技能能完成配方环境变量检查、节点能力探测,并在无法完成 NIXL 验证时给出下一步命令,输出格式直接可消费。扣分原因是核心的双 Pod 配对传输验证仍需人工执行,不能独立证明 KV 走正确快速路径;静态材料没有可复核的代表性成功输出或端到端执行证据。
源文件、脚本、引用文档、评估用例和一份静态 benchmark 报告提供了可审计材料,且评估用例覆盖正负触发边界。扣分原因是 benchmark 明确缺少 Tier 3 细节,没有提交覆盖关键路径的测试套件,也没有第三方运行结果;本评估未执行任何代码。
- 不要把 warn 或 skipped 当作传输已验证;汇总逻辑可能在全部跳过时给出过于乐观的 verdict。
- 运行前应确认 kubectl RBAC 仅允许目标命名空间和目标 Pod,并检查配方环境变量值不会包含凭据或其他敏感信息。
- 必须使用两个实际调度的 prefill/decode GPU Pod执行配对 NIXL 传输测试,才能确认 RDMA/NVLink 路径。
这个 Skill 能做什么,适合哪些场景?
该技能面向 NVIDIA Dynamo 的分离式或多节点部署,检查支撑 KV 传输的 NIXL、UCX 和 NCCL 互联。它读取 recipe 中的传输环境变量,并在工作节点或工作 Pod 中探测 InfiniBand、GPUDirect RDMA、GDRCopy 和 NVLink 能力。它还会检查 Pod 是否具备 NIXL 测试工具,并提示进行成对传输测试的下一步。所有检查均为只读,不会修改集群或打印密钥。
运行 scripts/check_interconnect.py 的 env、node 和 nixl 检查:读取指定 recipe 的文本环境变量;通过 kubectl exec 在工作 Pod 中探测 InfiniBand 设备及 Active 链路、nvidia_peermem、GDRCopy 和 GPU 拓扑中的 NVLink;查找 NIXL 测试工具并说明如何进行 prefill↔decode 传输测试;为每项检查返回 ok、warn、fail 或 skipped,并汇总分离式传输是否可被信任。
- Dynamo recipe-runner 部署分离式服务后,运维人员需要确认 KV 传输链路。
- 多节点部署上线前,平台工程师需要检查节点是否具备 RDMA、GPUDirect RDMA 或 NVLink 能力。
- 聚合模式正常但分离式服务变慢、挂起或输出异常时,工程师怀疑网络 fabric 而非模型。
- 准备发布分离式吞吐量或延迟基准前,性能工程师需要验证实际传输路径。
这个 Skill 有哪些优点和局限?
- 只读检查,不会修改集群,也不会打印密钥。
- 覆盖 recipe 环境变量、InfiniBand、GPUDirect RDMA、GDRCopy、NVLink 和 NIXL 测试工具就绪状态。
- 对缺失诊断工具返回 skipped,而不是误报为失败,并提供下一步排查方向。
- 不会执行完整的成对 NIXL 传输测试,因此 reachability 可能仍未得到最终验证。
- 缺失 ibstat、nvidia-smi 或 lsmod 时,skipped 结果是不确定的,不能视为通过。
- 只检查 recipe 文本,无法发现 initContainer 或 operator 在运行时注入的环境变量。
- 单节点聚合部署不会实际使用该传输链路;提供的材料也未包含具体基准数值。
如何安装这个 Skill?
使用默认 skills CLI 安装指定技能:
npx skills add nvidia/skills --skill dynamo-interconnect-check --yes
也可以安装整个 NVIDIA 技能集合:
npx skills add nvidia/skills
源材料未说明自定义安装目录之外的手动部署细节;CLI 会提示选择技能和安装位置。
如何使用这个 Skill?
部署完成后,先检查 recipe 环境变量:
python3 scripts/check_interconnect.py env recipes/<model>/<framework>/<mode>
再检查工作 Pod 节点能力和 NIXL 就绪状态:
python3 scripts/check_interconnect.py node --namespace "${NAMESPACE}" --pod <worker-pod>
python3 scripts/check_interconnect.py nixl --namespace "${NAMESPACE}" --pod <worker-pod>
也可通过 agentskills.io 的 run_script() 协议调用脚本。完整的跨 Pod NIXL 传输测试需要 fabric 上两个已调度的 GPU Pod。
这个 Skill 与同类方案有什么区别?
它与 dynamo-troubleshoot 的职责不同:已部署但需要验证分离式互联时使用本技能;Pod 已崩溃或无法调度时,应先使用 dynamo-troubleshoot。