主题
提交训练任务前检查
在提交前检查配置、镜像、任务放置和存储,可以避免任务占用资源后才暴露问题。RLark 创建器只校验表单结构,不会执行 RLinf/Hydra 配置检查或完整的调度预演。
本文使用 Header 角色表示控制台选择的角色;提交后,该角色对应 head: true 的 Head Task。它不是一个具体 Node,也不会自动只使用第一个 Worker。
确认创建器已经检查的内容
创建器在进入下一步和提交时检查:
- 任务名称格式;
- 至少一个名称不重复的角色,以及一个 Header 角色;
- 每个角色已选择集群、填写镜像,并在所选集群内匹配至少一个节点;
- 当界面计算出 GPU 上限时,请求没有超过该上限;
- 每个挂载具有目标路径,主机目录具有源路径,对象存储挂载选择了 StorageClass;
- 公共运行脚本非空。
这些检查只说明表单可以生成 Job YAML,不说明任务能够运行。
补充创建器不会执行的检查
| 检查项 | 创建器行为 | 提交前操作 |
|---|---|---|
| RLinf 版本、fork 或补丁兼容性 | 不检查 | 记录确认使用的代码 ref、镜像 digest 和兼容性检查结果。 |
Hydra 组合、插值和 validate_cfg | 不执行 | 使用该工作负载版本自己的受支持验证流程,保存脱敏的最终配置。 |
| RLinf placement 与 RLark 角色的一致性 | 不检查 | 对齐 Node Group、component placement、进程数、rank 和路径。 |
| 镜像能否拉取 | 不预拉取 | 确认目标集群的仓库网络和拉取凭据。 |
镜像内 bash、ray、python 和业务入口 | 不检查 | 使用不可变镜像,在等价环境中检查命令和解释器。 |
| 节点选择器的全局唯一性 | 只计算所选集群 | 请平台管理员在全局 Node 清单中记录所有匹配项。 |
| CPU、内存与共享内存 | 不能配置 CPU、内存,也不配置 /dev/shm | 任务需要这些资源时,向平台管理员确认可用的配置方式。 |
| 设备数量和拓扑 | 只列出部分上报资源 | 核对每个实际落点的容量、型号、驱动和占用。 |
hostPath 内容与权限 | 不检查 | 在每个匹配节点检查相同路径、内容、权限和清理范围。 |
| PVC 挂载与对象一致性 | 提交前不创建 PVC | 先验证 StorageClass,并确认并发和持久化语义。 |
| Ray 全部 Worker 就绪 | 启动后检查,且 Head Task 的集群检查失败仍继续 | 在业务命令前检查关键依赖;未就绪时不要启动训练,并输出可定位的错误。 |
| 网络域、NCCL 和应用网卡 | 不执行端到端预演 | 使用管理员确认的路由、端口和网卡信息,逐项核对工作负载的通信配置与版本兼容性。 |
| 机器人连接与安全 | 不检查 | 没有独立安全审批和现场验证时不得提交真机任务。 |
不要直接运行训练入口来测试配置
RLinf 训练入口通常在 Hydra 组合后调用 validate_cfg,而通用校验过程会构造 Cluster。直接运行训练入口可能初始化运行时或访问硬件。请使用与目标版本匹配、且确认不会初始化运行时或访问硬件的配置检查方式;没有不占用资源的检查命令时,先检查配置文件,不要在生产节点上试运行。
准备 RLinf 任务信息
在工作负载项目或团队使用的运行记录中写明:
- RLinf 代码 ref,以及 fork、补丁或适配层来源;
- 每个角色的镜像引用和实际 digest;
- 原始 Hydra 配置、命令行 override 和脱敏最终配置;
- 数据集、模型、checkpoint 和输出的版本或完整对象路径;
- 预期角色、进程数、GPU/设备、rank 和网络拓扑;
- 正常启动、正常运行和失败时,日志或输出中分别会出现什么,以及出现哪些情况时应停止任务。
这些信息用于填写 Job 和核对运行结果,不是 RLark CRD 中的独立对象。记录中不要包含密码、令牌、私钥、对象存储密钥或镜像仓库凭据。
向管理员确认运行环境
在共享或托管环境中,请向平台管理员提供角色、副本、资源、存储和网络需求,并取得以下信息:
- 每个角色的目标集群、完整单值
nodeSelector及其全局匹配数量; - Header 是否只匹配 1 个 Node,其他角色的匹配数是否符合预期;
- 可以使用的 GPU、设备和配额,以及镜像能否从目标数据面拉取;
- 可以使用的 StorageClass,或每个可能落点上已经检查过的
hostPath条件; - 需要跨集群通信时使用的 Domain、业务端口和通信接口;
- 需要 Secret、SSH 或 WebTerminal 时,当前环境允许的接入方式。
用户只需取得创建任务所需的结果。全局 Node、镜像、存储和网络的检查方法见管理员指南为训练任务确认运行条件。RLark 不会自动把这些环境信息保存到 Job;提交后请把最终 Job YAML 与本次运行记录放在一起。
如果任一输入的来源、版本或验证状态不明确,请停止提交。
检查镜像和入口
在管理员指定的等价环境中确认:
bash、Ray CLI 和 Head 包装脚本检查使用的python位于准备脚本完成后的PATH。- 镜像不依赖被 RLark 覆盖的
ENTRYPOINT执行必要初始化。 - 多角色镜像的 Ray、Python、CUDA/驱动和业务协议兼容。
- 准备脚本可重复执行,运行脚本使用明确工作目录。
WebTerminal 中临时安装的依赖不会写回镜像。需要补充依赖时,请重新构建并固定镜像。
对齐 RLinf 与 RLark 的任务放置
使用任务创建字段逐项对照 RLinf node_groups、component_placement、env_configs 和 hardware rank。然后让管理员:
- 对完整的单值
nodeSelector执行全局匹配。 - 记录所有 Node 及命名空间,确认它们只属于预期集群。
- 确认 Header 角色只匹配 1 个 Node,YAML 副本数也为 1。
- 核对节点在线、可调度、资源充分,并能访问镜像、存储和网络依赖。
检查存储与输出
- 对象存储:确认管理员提供的 StorageClass 属于目标集群。在管理员指定的测试前缀中上传或由测试任务写入一个不含敏感信息、名称唯一的小文件,再下载并核对大小或哈希;多个 Worker 使用同一挂载前,还要确认跨节点挂载和并发访问方式。
- 主机目录(
hostPath):确认源路径属于 Worker 所在节点,并在每个可能落点检查路径、内容、空间和权限;不能用一个节点的结果代表全部节点。 - 输出:需要在 Pod 重建或后续任务中继续使用的 checkpoint、TensorBoard 日志和最终结果,应写入经过验证的对象存储挂载。只有管理员确认任务会回到保留相同目录的节点时,才依赖主机目录;不要写入容器文件系统。
- 挂载目标:确认不会遮蔽镜像中仍需使用的代码或配置。
路径含义、StorageClass 获取方式和读写检查步骤见在训练任务中使用存储。向管理员确认时,请提供目标集群、角色和 Worker 数、输入与输出位置、计划使用的容器内挂载路径,以及是否需要多 Worker 跨节点读写;不要提供存储凭据。
检查 Job YAML
提交前保存 YAML,并确认:
- 只有一个
head: true,且该 Task 副本数为 1; - 每个 Task 的名称、底层角色、单值
nodeSelector和副本符合工作负载要求与管理员确认的环境信息; - 镜像 digest、GPU/设备、变量和挂载符合记录;
- 没有 Secret 或未说明的默认值;
runScript指向已经确认的配置和容器内挂载路径;需要跨 Pod 保留的输出应写入经过验证的对象存储;- 需要明确 CPU、内存或
/dev/shm配置时,不再使用创建弹窗提交。
提交成功只表示 API 接受 Job。启动后仍要分别验证 Pod 落点、Ray 成员、RLinf 最终配置、首个训练信号和持久输出。
首次运行前,请记录代码和镜像版本、配置来源、管理员确认的环境信息、最终 Job YAML、各层状态与查看时间、Head Task 和首个异常 Worker 的脱敏日志,以及第一个预期业务信号和持久对象前缀。运行未达到预期时,按首次运行问题排查逐项检查;达到预期时,继续按检查 RLinf 任务是否正常运行完成验收。