主题
提交训练任务前检查
在提交前检查配置、镜像、任务放置和存储,可以避免任务占用资源后才暴露问题。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 代码 ref,以及 fork、补丁或适配层来源;
- 每个角色的镜像引用和实际 digest;
- 原始 Hydra 配置、命令行 override 和脱敏最终配置;
- 数据集、模型、checkpoint 和输出的版本或完整对象路径;
- 预期角色、进程数、GPU/设备、rank 和网络拓扑;
- 正常启动、正常运行和失败时,日志或输出中分别会出现什么。
部署参数还应给出每个角色的目标集群、完整单值选择器、全局匹配 Node 与命名空间、可用资源数量、StorageClass 和可选 Domain。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。
- 核对节点在线、可调度、资源充分,并能访问镜像、存储和网络依赖。
检查存储与输出
- 对象存储:从目标集群检查列表和低风险读写,并确认多 Worker 挂载语义。
hostPath:在每个可能落点检查路径,不能用一个节点的结果代表全部节点。- 输出:确认 checkpoint、TensorBoard 和最终结果写入持久挂载内部,而不是容器文件系统。
- 挂载目标:确认不会遮蔽镜像中仍需使用的代码或配置。
检查 Job YAML
提交前保存 YAML,并确认:
- 只有一个
head: true,且该 Task 副本数为 1; - 每个 Task 的名称、底层角色、单值
nodeSelector和副本符合启动清单与部署参数; - 镜像 digest、GPU/设备、变量和挂载符合记录;
- 没有 Secret 或未说明的默认值;
runScript指向已经确认的配置和持久输出路径;- 需要明确 CPU、内存或
/dev/shm配置时,不再使用创建弹窗提交。
提交成功只表示 API 接受 Job。启动后仍要分别验证 Pod 落点、Ray 成员、RLinf 最终配置、首个训练信号和持久输出。
首次运行前,请记录本次启动清单与部署参数版本、最终 Job YAML、各层状态与查看时间、Head Task 和首个异常 Worker 的脱敏日志,以及第一个预期业务信号和持久对象前缀。运行未达到预期时,按首次运行问题排查逐项检查;达到预期时,继续按检查 RLinf 任务是否正常运行完成验收。