用途:该方案用于在受 SLURM 管理的远程 GPU 集群上运行 NVIDIA TAO 的训练、评估与推理任务。任务由 TAO 服务或 SDK 主机经 SSH 提交到登录节点,依托共享文件系统暂存并以 sbatch 提交、srun 运行容器。仅适用于可访问受管 GPU 集群、共享 Lustre 存储与调度器分配的 GPU 的场景;仅存在于本地代理机器上的文件不可用,数据与输出必须能被集群访问。
主要能力:通过 Pyxis/Enroot 运行 TAO 容器;支持镜像格式 /path/to/image.sqsh、registry#image:tag、docker://registry#image:tag 及普通 registry/image:tag(必要时转为 Pyxis 形式);SQSH 转换按镜像名缓存,:latest 默认用缓存除非启用 force_reconvert_latest;支持多节点分布式训练(num_nodes > 1)并导出 WORLD_SIZE、MASTER_ADDR、MASTER_PORT、NODE_RANK、NUM_GPU_PER_NODE;自动重试基础设施类失败(最多 MAX_JOB_RETRIES = 10),默认启用 #SBATCH --requeue。
使用方式:先做预检——无密码 SSH 到登录节点可用(ssh -o BatchMode=yes -o ConnectTimeout=10),可选安装 nvidia-tao-sdk(pip install "$PIN")。需要凭据 SLURM_USER、SLURM_HOSTNAME(逗号分隔可故障转移)、SLURM_PARTITION;SSH_KEY_PATH 优先用于非交互认证,SSH_AUTH_SOCK 为高级回退;SLURM_BASE_RESULTS_DIR 默认 /lustre/fsw/portfolios/edgeai/<your-dir>,SLURM_ACCOUNT 通常由站点策略要求。后端使用 backend_details.backend_type = "slurm",运行元数据写在 backend_details.slurm_metadata(slurm_job_id、job_dir),不可自行编造。数据路径应使用共享文件系统 URI:lustre:///absolute/path,slurm:// 会在容器启动前转换为实际 Lustre 路径;远程后端拒绝裸 /local/path 与 file://。提交前建议在登录主机用 test -e 校验所需数据文件是否存在。资源默认:num_nodes 1、num_gpus 4、max_num_gpus_per_node 8、cpus_per_task 16、time_hours 4、timeout_hours 3.8、max_time_hours 4、container_mounts /lustre、use_requeue true、use_sqsh true;SLURM 上不要默认 12 小时,若用户要求更长时间需先确认分区支持。
适用场景与限制:适合多节点大规模分布式训练;输入应放在 Lustre 而非 S3,脚本开头长时间下载可能耗尽分配并被调度器终止,S3/HF/NGC 预取仅适合检查点、配置等小型辅助输入。监控依赖 squeue/sacct 与共享结果目录中的 status.json,日志从 <job_dir>/slurm-logs/... 读取;启用聊天监控时,非终态任务不要发最终回复,长排队属正常。取消通过 scancel <slurm_job_id>。常见失败包括 SSH 认证失败、本地数据集路径被拒、SQSH 转换超时、Pyxis/Enroot 不可用及坏节点等瞬时 GPU 故障。私有 nvcr.io 镜像需在集群 ~/.config/enroot/.credentials 配置持久凭据。