跳转到正文

在单个 GPU 节点上运行 RLinf ​

本页主要适用于仿真、数学推理以及其他只需要一个 GPU 节点的 RLinf 工作负载。你可以用一个 RLark 角色创建一个 Worker;这个 Worker 会启动本次 Job 的 Ray 节点,RLinf 再按照原有的 component_placement 在其中运行 Actor、Rollout、Env 等组件。

接下来,你将使用现有 RLinf 工作负载的镜像、配置和启动命令完成一次单节点提交,并通过日志中的训练进展或持久化输出确认任务已经开始工作。

确认任务适合单节点运行 ​

满足以下条件时,可以按照本页操作:

  • RLinf 最终生效的 cluster.num_nodes 为 1;
  • 任务所需的 GPU、数据和存储都能由同一台计算节点提供;
  • 所有组件可以使用同一份镜像、挂载和启动环境。

需要多个 Worker 或额外资源字段时,请改用其他流程

如果 cluster.num_nodes 大于 1、配置包含多个 node_groups、不同 Worker 需要不同镜像或设备,或者任务必须声明当前创建页面无法填写的 CPU、内存或 /dev/shm,请改用规划多节点和异构 Worker,不要继续套用本页的单 Worker 配置。

真机任务需要先完成设备和安全确认

只有平台已经确认机器人、相机和所需驱动可以由这台计算节点上的同一个 Worker 使用,RLinf 配置仍为 cluster.num_nodes: 1,而且现场安全条件已经确认时,才可按照本页创建单节点真机任务。其他真机训练、评测或数据采集任务应先查看使用真实设备前的安全要求。

准备 RLinf 运行信息 ​

先从现有 RLinf 配置或运行记录中确认:

  • RLinf 镜像地址和明确版本,例如 registry.example.com/rlinf:v0.3.0-cuda12.4;
  • 这个 Worker 需要申请的 GPU 数量;
  • RLinf 启动命令,以及可选的环境准备命令;
  • 数据、模型、checkpoint 和训练输出在容器内使用的路径;
  • 判断任务正常运行的首个业务信号和预期输出位置。

这里只需要准备 RLinf 工作负载本身的信息。任务名称可以在页面中填写;任务使用哪组计算资源,将在 Step 3 根据控制台显示的选项确定。

Step 1 保留原有 RLinf 配置 ​

确认本次实际加载的 RLinf 配置使用 cluster.num_nodes: 1,并沿用该工作负载已经验证的以下设置:

  • component_placement;
  • Actor、Rollout、Env 等组件的 world size;
  • offload 设置;
  • pipeline_stage_num;
  • 算法、模型、数据和 checkpoint 配置。

这些设置决定 RLinf 如何使用 Worker 中的 GPU。在控制台中,只需为该 Worker 配置正确的节点、GPU、镜像和挂载。

Step 2 添加 worker 角色 ​

  1. 在左侧导航中选择任务,然后选择创建任务。

  2. 填写便于识别的任务名称,并按页面提示调整名称格式。

  3. 在任务类型中选择自定义任务。这个选项只决定初始角色列表,不会改变 RLinf 的算法或执行模式。

  4. 在角色列表中选择添加角色,把角色名称改为 worker。

    worker 只是这组 RLark Worker 的名称,不对应 RLinf 的 Actor、Rollout 或 Env 组件。component_placement 中出现这些组件,也不表示需要在 RLark 中创建同名角色;对于单节点任务,它们仍可在同一个 Worker 中使用不同或重叠的 GPU。

  5. 选择 worker 这一行,确认它显示为 Header。

Step 3 配置一个 Worker ​

进入 Worker 配置后,填写 worker 角色:

  1. 选择当前环境为这次任务提供的目标集群。

    集群是 RLark 中已经接入的一组计算资源。可以先浏览集群,确认当前环境有哪些集群;再查看节点资源,了解节点的在线状态、可调度状态、GPU 和标签。

  2. 在节点选择中使用当前环境确认过的条件,并检查已选节点数是否为 1。

    Header 角色只能创建 1 个 Worker

    已选节点数不是 1 时,不要继续。否则多个 Worker 会分别启动 Ray Head,并执行同一运行脚本。如果无法确定集群或节点条件,请在这一步向平台管理员说明任务需要 1 个 Worker、多少张 GPU,以及存储需求。

  3. 在 GPU 中填写该 Worker 实际需要的 GPU 数量。

    例如,仅使用 GPU 的配置使用资源编号 0-7 时,通常需要申请 8 张 GPU;仍应以已经验证的 RLinf 配置和目标节点容量为准。

  4. 填写团队提供、目标集群可以拉取的镜像地址和版本。

    优先使用带版本号的 tag,不要使用 latest;团队提供 digest 时可以直接填写。两种写法的区别见选择镜像版本和执行入口。

  5. 如果镜像启动前需要激活环境、切换目录或准备文件,把这些命令写入准备脚本。

    RLark 会替换镜像 ENTRYPOINT

    不要依赖镜像 ENTRYPOINT 完成环境激活、目录切换或文件准备;这些动作需要写入准备脚本,否则运行环境可能没有按预期就绪。

  6. 按需填写非敏感环境变量。

  7. 如需读取数据或保存结果,添加主机目录或对象存储挂载,并填写训练程序实际使用的容器路径。

    训练程序必须使用容器内挂载路径

    添加挂载不会自动改变 RLinf 的输入或输出位置。请让配置或运行命令从容器内挂载路径读取数据,并把 checkpoint 和训练结果写入该路径;写在挂载外的文件可能在 Pod 重建后丢失。不清楚主机目录、对象存储和容器路径之间的关系时,请先阅读在训练任务中使用存储。

完整字段说明见创建训练任务。

Step 4 填写运行命令 ​

进入公共配置后:

  1. 在选择 Head 节点中确认 worker 是 Header 角色。

  2. 如果页面提供跨集群网络域(可选)下拉框,单集群任务保持默认的不使用跨集群网络。

  3. 只有确实需要远程访问时才选择 SSH 公钥。

  4. 在运行脚本中填写已经验证的 RLinf 启动命令。命令依赖工作目录时,请明确执行 cd。

    运行脚本会在 Ray 启动后,由 Header 角色创建的唯一 Worker 执行。

  5. 使用 TensorBoard 时,填写训练程序写入 event 文件的容器路径。

Step 5 核对 YAML 并提交 ​

进入 YAML 预览后,确认最终配置满足以下结果:

检查项预期结果
RLark 角色数1,名称为 worker
Worker 数1
Ray 节点数1,与 cluster.num_nodes 一致
Headerworker,副本数为 1
GPU与 RLinf 配置和目标节点容量一致
镜像、命令和挂载与本次准备的值一致

同时确认节点选择只命中预期 Node。

保护敏感信息

环境变量、准备脚本、运行脚本和 YAML 中不得包含密码、私钥、访问令牌或对象存储密钥。发现敏感信息时,先从任务配置中移除,并改用当前环境允许的凭据注入方式,再继续提交。

保存本次 Job YAML 后,选择提交任务。

Step 6 确认任务开始运行 ​

提交后按下面的顺序快速确认:

  1. 任务列表中出现本次 Job。

    提交后继续检查 RLinf 运行结果

    任务出现在列表中或显示运行中后,请继续检查实际 Pod、Ray 节点、RLinf 业务信号和持久输出。

  2. Job 详情中出现一个 Worker 对应的实际 Pod,并位于预期 Node。

  3. 日志显示 Ray Head 已启动,并开始执行运行脚本。

  4. RLinf 日志出现预先确定的训练、评测或数据处理进展。

  5. checkpoint 或其他输出写入预期的持久化位置,并且可以重新读取。

需要逐项记录运行结果时,请继续阅读确认 RLinf 任务是否正常运行;任何一步没有出现预期结果时,请按首次运行问题排查从最早出现问题的位置开始检查。