TAO Kubernetes 作业运行
通过 Kubernetes 提交和监控带 NVIDIA GPU 的 TAO 训练作业。
文档说明了 kubeconfig、服务账户、命名空间、S3、NGC 和模型凭据的数据流,并要求在节点安装前取得用户批准;但 allowed-tools 含 Bash,提交 Job、取消 Job、安装依赖和删除资源会产生外部影响,缺少通用的逐次确认、最小 RBAC、敏感凭据脱敏和恢复流程,因此扣分。
预检、状态、日志、副本诊断、失败分类和 backoff_limit=0 使主路径及异常反馈较清晰;但依赖未提供的 tao-run-platform、versions.yaml、脚本路径和 SDK 实现,TAO_SKILL_BANK_ROOT 与 TAO_SKILL_BANK_PATH 变量还存在不一致,且无本技能专属测试覆盖,因此按静态上限保守扣分。
目标用户、支持的 EKS/GKE/AKS/自建集群、单节点与多节点场景以及不支持弹性训练、gang scheduling、MPI/Horovod 和 PVC 的边界较明确;但缺少语义触发规则、输入输出契约和中文支持说明,且依赖 PyPI、nvcr.io、Helm 和海外文档,部分中国大陆网络环境可能受限,因此扣分。
文档包含前置检查、配置、API、监控、清理、分布式训练、替代方案和常见错误,且有版本、Apache-2.0 声明、skill card 和评估报告;但缺少推荐的 Instructions/Examples 章节,作者格式不合规范,版本变更、维护责任和更新路径不清晰,许可证元数据为 NOASSERTION,配置与 SKILL.md 也有细节不一致,因此扣分。
提供了可直接改写的 Python create_job、监控、日志、失败分析和取消示例,覆盖 GPU Job 的核心任务,且明确推荐 operator 替代复杂场景;但示例依赖未随证据提供的 SDK/共享技能和外部集群,唯一评估任务主要测试文档总结而非实际提交结果,直接可用性和相对手工操作的收益证据有限,因此不超过静态上限并扣分。
证据包含固定 revision、结构化配置、评估任务、结果摘要、参考文档名称及基准日期;但只有一个正向任务、没有负向或关键路径复现材料,基准结果缺乏可核验日志或提交的测试套件,无法独立验证主要运行时声明,因此扣分。
- 执行会访问并改变 Kubernetes 集群状态;在提交或取消 Job 前应确认目标集群、命名空间、RBAC、GPU 配额、镜像来源和数据路径。
- 不要将 NGC、S3 或 HF 凭据直接暴露在日志、命令历史或 Job 环境中;文档未充分说明凭据脱敏和 Pod 内最小权限。
- 多节点 Indexed Job 不具备 gang scheduling 或弹性恢复能力,部分 Pod 调度成功时可能导致 rank-0 长时间等待。
- 预检依赖未提供的共享技能、脚本和版本文件,使用前应核对这些路径与 SDK 版本;中国大陆网络环境还需验证 PyPI、nvcr.io 和 Helm 可达性。
这个 Skill 能做什么,适合哪些场景?
该技能使用 NVIDIA TAO SDK 将 TAO 容器提交为 Kubernetes Job,默认运行单 Pod GPU 作业。它支持通过 kubeconfig 或 Pod 内服务账户连接 EKS、GKE、AKS 和本地集群,并可通过 Indexed Job 进行多节点分布式训练。技能还提供作业状态、日志、副本诊断、失败分析、取消和自动清理指导。它要求 GPU 节点运行时、TAO SDK、可认证的集群以及 NVIDIA GPU Operator 或设备插件已就绪。
执行 GPU 节点运行时、Python SDK、集群认证和 GPU 资源的预检;调用 KubernetesSDK.create_job() 创建带 GPU 资源限制的 Kubernetes Job;传递环境变量、S3 输入输出、镜像拉取密钥和节点选择器;通过 get_job_status()、get_job_logs()、get_job_replicas() 和 get_failure_analysis() 读取状态、日志和故障信息;调用 cancel_job() 删除运行中的作业;在多节点模式下创建无头 Service 和 Indexed Job,并注入 TAO 或 torchrun 所需的 rendezvous 环境变量。
- 需要在 EKS、GKE、AKS 或本地 GPU 集群中运行 TAO 训练的 ML 平台工程师。
- 希望把 TAO 容器接入现有 Kubernetes 原生平台、通过 Python SDK 提交作业的团队。
- 需要使用 S3 数据集输入和结果输出,并监控 GPU 作业日志与失败原因的工程师。
- 需要在多节点、多 GPU 环境运行 PyTorch 分布式 TAO 训练的用户。
这个 Skill 有哪些优点和局限?
- 使用 Kubernetes Job 和 NVIDIA GPU 资源限制,适合接入现有云端或本地集群。
- 提供预检、状态、日志、副本诊断、失败分析、取消和 TTL 自动清理流程。
- 支持单节点和 Indexed Job 多节点分布式训练,并同时兼容 TAO entrypoint 与原生 torchrun 环境变量。
- 明确区分自管 GPU 节点与云厂商托管节点的运行时检查方式。
- 依赖 NVIDIA driver 580、CUDA Toolkit 13.0、Container Toolkit 1.19.0、TAO SDK 和 GPU Operator 或设备插件。
- 不支持弹性或容错训练;Indexed Job 的 backoff_limit 为 0。
- 不提供 gang scheduling、MPI/Horovod 或 PVC 共享存储支持。
- 多节点作业要求 Kubernetes 1.28+、节点间 29500 端口连通,并且源材料未提供测试套件或平台验证矩阵。
如何安装这个 Skill?
使用仓库 README 支持的 skills CLI 安装指定技能:
npx skills add nvidia/skills --skill tao-run-on-kubernetes --yes
安装后,技能会在代理下一次加载技能并遇到相关任务时可用。运行前还需安装 Python 依赖:python -m pip install 'nvidia-tao-sdk[kubernetes]'。源材料未规定其他客户端的专用安装步骤。
如何使用这个 Skill?
向代理提出类似请求:“在已有 NVIDIA GPU Operator 的 EKS 集群中,通过 TAO SDK 提交一个使用 1 张 GPU 的 DINO 训练 Job,并监控日志。”
技能会先检查 GPU 节点运行时、TAO SDK、集群认证和 GPU 资源,然后使用 KubernetesSDK.create_job() 提交作业。多节点训练可在 create_job() 中设置 num_nodes > 1;S3 工作流需要相应的 S3 凭据。
这个 Skill 与同类方案有什么区别?
技能明确建议:需要弹性 PyTorch 训练时使用 Kubeflow Training Operator;需要 MPI 或 Horovod 时使用 MPI Operator;需要 gang scheduling、队列或配额时使用 Volcano 或 Kueue。该技能的 Indexed Job 路径更简单且依赖较少。