mcpField
D
dynamo-recipe-runner

dynamo-recipe-runner

github.com/promptingcompany云与 DevOps040 次安装17 周前更新
代码仓库

关于 dynamo-recipe-runner

dynamo-recipe-runner 帮助运维人员选择并部署现有 Dynamo 配方到 Kubernetes,再通过兼容 OpenAI 的冒烟测试验证。它只修改必要的配方配置;无法访问集群时可返回待执行命令。

主要功能

  1. 01筛选并验证现有配方
  2. 02修改必要的部署配置
  3. 03具备集群访问权限时应用清单
  4. 04通过兼容 OpenAI 的请求测试端点

适用场景

  1. 01按模型和框架选择配方
  2. 02准备 GPU 与存储配置
  3. 03将配方部署到 Kubernetes 命名空间
  4. 04验证已部署的端点

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/promptingcompany/nv-skills --skill dynamo-recipe-runner

安装后在 Claude Code 中输入/dynamo-recipe-runner确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
k8s-recipe-workflow.md
scripts/
recipe_tool.py

详细介绍

Dynamo 配方运行器

目的

以尽可能少的来回沟通,将用户意图转化为可用的 Dynamo 配方端点。不要创建新的指南内容。操作现有的 recipes/ 目录树,仅修改必要的最少数量的清单;用户有集群访问权限时进行部署,并通过兼容 OpenAI 的冒烟请求验证成功。

前置条件

  • 操作员机器上安装了 Python 3.10+。
  • kubectl 已配置并使用可用的集群上下文。
  • 集群有一个默认存储类,用于模型缓存 PVC。
  • Hugging Face 令牌已存储在目标命名空间中名为 hf-token-secret(或等效名称)的 Kubernetes secret 中。
  • 对 ai-dynamo/dynamo 仓库中的 recipes/ 目录树具有读取权限。

必需输入

修改清单前,请收集或推断以下信息:

  • 配方目标:模型、框架(vllm、sglang、trtllm、tokenspeed)、部署模式以及 GPU 类型/数量
  • Kubernetes 上下文和命名空间
  • Hugging Face secret 名称,通常为 hf-token-secret
  • 模型缓存 PVC 使用的存储类
  • 如果配方使用占位符或过时的测试镜像,则需提供运行时镜像标签
  • 是否执行命令,还是仅提供准确命令

如果缺少必需值,且无法根据选定的配方推断,请只询问该值。

操作说明

1. 部署前检查

先运行只读检查:

git status --short
python3 scripts/recipe_tool.py list --format table
kubectl config current-context
kubectl get storageclass
kubectl get nodes -o wide
kubectl get namespace "${NAMESPACE}"
kubectl get secret hf-token-secret -n "${NAMESPACE}"

如果无法使用 kubectl 或无法连接集群,请继续选择并验证配方,然后返回准确命令,不要假装已经执行部署。

2. 选择配方

使用 recipes/README.md 中的配方矩阵和扫描器:

python3 scripts/recipe_tool.py list \
  --query qwen --framework vllm --mode disagg --format table

优先选择完全匹配的现有配方。除非用户明确要求编写新配方,否则不要虚构新的清单。

3. 检查并验证

读取所选配方的 README、模型缓存清单、deploy.yaml,以及(如果存在)perf.yaml。然后运行:

python3 scripts/recipe_tool.py validate \
  recipes/<model>/<framework>/<mode>

应用清单前,先解决报告的阻塞项:存储类、模型缓存 PVC、镜像标签、HF token secret、GPU 数量、前端服务名称和路由器模式。

4. 修改最少的配置值

仅修改本次运行所需的配方专属配置值。不要重新格式化整个 YAML 文件。常见修改项:

  • storageClassName
  • 镜像仓库/标签
  • 模型路径或模型缓存挂载路径
  • GPU 资源请求/限制
  • 前端 DYN_ROUTER_MODE
  • 仅当清单中硬编码了命名空间时,才修改命名空间

绝不要将 Hugging Face 令牌写入文件或日志。请使用 Kubernetes secrets。

5. 部署

如果所选配方的 README 与默认顺序不同,请遵循该 README。默认顺序如下:

kubectl apply -f recipes/<model>/model-cache/ -n "${NAMESPACE}"
kubectl wait --for=condition=Complete job/model-download -n "${NAMESPACE}" --timeout=6000s
kubectl apply -f recipes/<model>/<framework>/<mode>/deploy.yaml -n "${NAMESPACE}"
kubectl get dynamographdeployment -n "${NAMESPACE}"
kubectl get pods -n "${NAMESPACE}" -o wide

等待前端和工作节点就绪后再进行测试。

6. 冒烟测试

对前端服务进行端口转发,然后验证 /v1/models 和一次聊天补全请求:

kubectl port-forward svc/<deployment-name>-frontend 8000:8000 -n "${NAMESPACE}"
curl http://127.0.0.1:8000/v1/models

如果还安装了 dynamo-router-starter,请优先使用其 scripts/check_router_health.py 执行完整的兼容 OpenAI 冒烟测试。如果失败,请切换到 dynamo-troubleshoot。

可用脚本

脚本用途参数
scripts/recipe_tool.py list枚举可用配方,可按条件筛选--query、--framework、--mode、--format
scripts/recipe_tool.py validate应用前验证配方目录配方路径位置参数

通过 agentskills.io 的 run_script() 协议调用:

run_script("scripts/recipe_tool.py", args=["list", "--framework", "sglang", "--format", "table"])
run_script("scripts/recipe_tool.py", args=["validate", "recipes/nemotron-3-super-fp8/sglang/agg"])

示例

列出适用于单个 8xB200 节点的 sglang 配方:

python3 scripts/recipe_tool.py list --framework sglang --format table

验证指定配方,并在应用前解决阻塞项:

python3 scripts/recipe_tool.py validate recipes/nemotron-3-super-fp8/sglang/agg

通过 Agent 协议执行的等效操作:

run_script("scripts/recipe_tool.py", args=["validate", "recipes/nemotron-3-super-fp8/sglang/agg"])

输出约定

返回:

  • 所选配方路径及选择原因
  • 修改的准确配置值
  • 已运行的命令或待运行的命令
  • 端点和冒烟测试结果
  • 尚未解决的阻塞项(如有)
  • 部署未能正常就绪时的下一步故障排查操作

限制

  • 仅对现有的 recipes/ 目录树进行操作,不会编写新的清单。
  • 修改集群的应用步骤需要拥有目标命名空间的 kubectl 权限。
  • 冒烟测试的覆盖范围有意保持最低限度;如需完整覆盖路由器和端点,请使用 dynamo-router-starter。
  • 多节点分离式传输的正确性不在本项目范围内;部署后请使用 dynamo-interconnect-check。

故障排除

症状可能原因后续步骤
kubectl 无法连接集群未设置上下文或 VPN 已断开返回准确的命令,而不是运行它们;待集群恢复可访问后继续
validate 报告缺少存储类集群没有默认的 StorageClass应用前,在模型缓存清单中修改 storageClassName
模型缓存任务卡在 Pending 状态PVC 未绑定或缺少 HF 密钥检查 PVC 事件;创建 HF 密钥,或重命名现有密钥以匹配配方
工作器 Pod 出现 ImagePullBackOff镜像标签已过时或缺少拉取密钥修改镜像标签;确认命名空间中存在镜像拉取密钥
部署后 /v1/models 返回 4xx/5xx前端尚未就绪或服务端口错误等待 Pod 进入 Ready 状态;重新运行端口转发;如果问题仍然存在,请切换到 dynamo-troubleshoot

基准测试

NVCARPS-EVAL 性能报告(由 NVSkills CI 流水线自动生成)请参阅 BENCHMARK.md。如需更新,请在涉及此技能的上游 PR 上重新运行 /nvskills-ci。

参考资料

  • 有关命令模板和就绪状态检查,请阅读 references/k8s-recipe-workflow.md。
  • 使用 scripts/recipe_tool.py 发现配方并进行轻量验证。

评论

支持 Markdown