快速提交Ray任务
概述
Ray 是一款专为 AI 工作负载打造的开源分布式计算框架,能够统一基础设施,高效管理、执行和优化从数据处理、模型训练到模型服务的全流程 AI 计算需求。凭借对 Python 的天然友好性,算法开发者可轻松在集群上扩展应用程序与机器学习工作负载。
百舸平台为用户提供开箱即用的 Ray 环境。您无需更改代码或调整资源,只需使用预置 Ray 镜像,或使用包含 Ray Runtime 的自定义镜像,并提供入口命令(entrypoint)与依赖定义,即可运行 Ray 作业。平台会自动创建并管理 Ray 集群,完成节点检查、资源调度、日志与指标采集,并提供 Dashboard。
功能限制
- 暂不支持容错与诊断,支持 Ray 原生的自动重试。
- Ray Dashboard 中 Metrics 功能的启用需要用户对接自己的 Grafana。可参考 自定义监控指标采集 实现 Ray Metrics 采集和监控。
前提条件
准备训练镜像
Ray 集群由 Head 管理节点与 Worker 计算节点构成。百舸将基于您指定的统一镜像,分别构建 Head 节点与 Worker 节点容器,并自动完成 Ray 集群的部署与初始化。待集群就绪后,系统会自动启动一个同镜像的 Submitter 节点,用于向 Ray 集群提交您的脚本。
Ray 版本支持范围:平台已对 Ray 2.7~2.49 版本完成验证,更高版本暂未验证。
- 使用百舸官方 Ray 镜像:百舸已经预置 Ray 官方镜像,您可以直接使用

- 使用自定义的镜像:需要镜像中包含 Ray[default]关键依赖,建议您基于百舸预置的 Ray 镜像构建自定义的镜像
准备启动命令和训练脚本
百舸训练任务的执行命令会被用作 ray job submit 所提交的 entrypoint 命令。启动命令可以填写多行或单行,无需在执行命令中写 ray start 或 ray job submit。
例如,执行命令可填写 python /workspace/sample.py,其中 sample.py 为运行的 Python 脚本文件。示例内容如下:
1import ray
2import os
3import requests
4
5ray.init()
6
7
8@ray.remote
9class Counter:
10 def __init__(self):
11 # Used to verify runtimeEnv
12 self.name = os.getenv("counter_name")
13 self.counter = 0
14
15 def inc(self):
16 print(f"current counter {self.counter} counter_name from runtimeENV is {self.name}")
17 import time
18 time.sleep(1)
19 self.counter += 1
20
21 def get_counter(self):
22 return "{} got {}".format(self.name, self.counter)
23
24
25counter = Counter.remote()
26
27for _ in range(50000):
28 ray.get(counter.inc.remote())
29 print(ray.get(counter.get_counter.remote()))
提交 Ray 任务
操作步骤
- 登录 百舸 AI 计算平台。
- 在控制台导航栏选择 大规模训练与推理->分布式训练,进入训练任务列表页,点击 【创建任务】。
-
在新建任务页面的 环境信息 区域配置镜像和执行命令。
- 镜像地址:可选择 百舸预置镜像,也可以切换为 镜像地址 使用自定义镜像;
- 执行命令:填写 Ray 作业入口命令,例如
python /workspace/sample.py。该命令会作为 Ray Job 的 entrypoint 执行,无需手动填写ray start或ray job submit。

-
在 资源配置 区域选择队列、优先级和训练框架。
- 选择可用训练队列。
点击 队列 输入框可打开 选择队列 抽屉,选择满足 Ray 任务资源需求的训练队列。 - 训练框架:选择 Ray框架。
- 计算资源: 配置 Head 和 Worker 节点的资源,支持手动输入资源,或者通过资源模板快速选择。
- 共享内存:支持配置共享内存资源。
- 选择可用训练队列。

参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| 镜像地址 | 是 | 可以选择百舸预置 Ray 镜像,也可以使用自定义镜像。 |
| 执行命令 | 是 | 本任务需要执行的命令,例如 python /workspace/sample.py。该命令会作为 Ray Job 的 entrypoint 执行。 |
| 训练框架 | 是 | 选择 Ray。 |
| 计算资源 | 是 | 配置任务的节点类型为 Head 和 Worker。 |
| RuntimeENV | 否 | RuntimeEnv 用于动态安装 Ray 任务所需的软件依赖、配置环境变量或工作目录等,详见 Ray 官方文档。生产环境中,建议使用已经打包好的镜像执行任务,避免因临时安装依赖库造成任务失败。 |
日志与监控
查看日志
- 在控制台导航栏选择 大规模训练与推理->分布式训练,进入训练任务列表页。
-
在任务列表中查看 监控/日志 列。当存在 Ray 任务时,可在该列进入任务的监控或日志详情。
任务运行日志可通过 Submitter 节点的标准输出查看,Ray 集群系统日志可通过 Head/Worker 节点的文本日志查看。
监控配置
- 在 分布式训练 页面点击 【创建任务】,进入创建任务页面。
- 在环境信息区域配置端口,Ray Metrics 需要通过 自定义监控指标采集 对接 Cprom 后,才能进行指标采集与查询
- 在 监控信息 区域查看 Tensorboard 和 任务告警 配置。
常见问题
1. 我还需要在执行命令中写 ray start 或 ray job submit 吗?
不需要。
在平台提交 Ray Job 时:
- 平台会在 Head 节点容器内自动执行
ray start --head ...启动 Ray 集群。 - 平台会在 Worker 节点容器内自动执行
ray start --address=<head-service>:6379 --block,将 Worker 加入集群。 - Ray 集群就绪后,系统将自动启动一个 Submitter 节点,用于向 Ray 集群提交脚本。
2. 1 个 Ray Job 会创建几个 Ray 集群?集群什么时候销毁?
1 个 Ray Job 对应 1 个独立的 Ray 集群。Ray Job 结束后,对应的 Ray 集群会自动销毁。
3. Ray Job 结束之后,是否可以查询 Ray Dashboard?
目前仅支持在 Ray Job 处于运行中状态时查看 Ray Dashboard。Ray Job 结束后查看 Ray Dashboard 的功能正在开发中,敬请期待。
评价此篇文章
