托管Ray服务
AnalyticDB Ray是云原生数据仓库 AnalyticDB MySQL 版推出的全托管Ray服务。该服务在开源Ray的基础上进行了优化与增强,提升了内核性能并简化了运维管理。AnalyticDB Ray主要适用于多模态处理、搜索推荐、金融风控等复杂 AI 场景,旨在助力企业高效构建 Data + AI一体化架构,实现AI应用的规模化落地。
前提条件
集群的产品系列为企业版、基础版或湖仓版。
什么是AnalyticDB Ray
开源 Ray 是一款专为 AI 与高性能计算设计的分布式计算框架,通过简洁的 API 抽象实现高效的分布式调度,用户仅需几行代码,即可将单机任务扩展至千节点集群,能够像调用本地函数一样调度远程资源。其内置模块(如Ray Tune、Ray Train和Ray Serve)与TensorFlow、PyTorch等无缝兼容。在活跃的开源社区和Anyscale等企业的推动下,Ray已成为构建 AI 应用的重要工具。
尽管开源 Ray 提供了高度灵活的分布式计算能力,但在实际生产环境中,企业仍面临分布式作业优化、资源精细化调度、集群运维复杂以及系统稳定性与高可用性保障等挑战。
为解决上述挑战,AnalyticDB for MySQL推出全托管Ray服务——AnalyticDB Ray(下文简称ADB Ray)。ADB Ray基于开源Ray的丰富生态,通过多模态处理、具身智能、搜索推荐、金融风控等典型场景的验证,对Ray内核和服务能力进行了全面增强,优化了内核性能,简化了集群运维,并与AnalyticDB for MySQL湖仓平台无缝集成,助力企业构建Data + AI一体化架构,加速企业AI的规模化落地。
费用说明
创建Ray Cluster资源组,会产生如下费用:
Worker磁盘空间会按照设置的存储空间大小计费。
Worker资源类型为CPU时,会按照所使用ACU弹性资源组计费。
Worker资源类型为GPU时,会按照GPU的规格、数量计费。
注意事项
Worker节点删除、重启会造成如下影响,建议在业务低峰期变更Ray Cluster资源组的Worker配置,避免将作业调度至需要重启的Worker节点上,以防止出现非预期的数据丢失和作业失败的情况。
运行在Worker节点上的Driver、Actor和Task会失败,但Ray会自动重新下发Actor和Task。
Ray分布式对象存储中的数据丢失,如果有其他Task依赖重启Worker上的数据,Task也会失败。
资源组变更:
删除资源组:如果有正在运行的任务,删除资源组将导致该资源组中运行的任务中断。
删除Worker Group:删除Ray Cluster资源组中的Worker Group时,会导致Worker节点删除。Worker节点删除造成的影响,请参见Worker节点删除的影响。
变更Worker个数:若变更后的Worker最大个数小于变更前的最小Worker个数,会导致Worker节点被删除。Worker节点删除造成的影响,请参见Worker节点删除的影响。
变更其他配置:除最小Worker个数和最大Worker个数参数之外,其他的参数变更(例如:Head资源规格、Worker资源类型)都会导致Head节点或相应Worker Group中的Worker节点重启。Worker节点重启造成的影响,请参见Worker节点重启的影响。
自动扩容:
Ray Cluster的扩容依赖于逻辑资源需求,而非物理资源利用率。因此,即使物理资源利用率很低,Ray Cluster也可能触发自动扩容。
某些第三方应用程序会尽可能创建更多的Task以充分利用资源。在允许自动扩缩的情况下,会创建大量的Task,使得Ray快速地扩容到最大规模。因此,在运行第三方程序时,请了解其创建Task的内在逻辑,以避免产生额外的资源消耗。
容灾机制:ADB Ray中配置了Redis容灾机制,确保在Head节点重启时,Ray Cluster状态、Actor状态和Task状态均能够恢复。
创建Ray服务
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,然后单击目标集群ID。
在左侧导航栏,单击集群管理>资源管理,单击资源组管理页签。然后在资源组列表的右上角,单击新增资源组。
为资源组命名,选择任务类型为AI,配置如下参数:
参数名称
说明
部署类型
选择RayCluster。
Head资源规格
Head负责管理Ray元数据、运行GCS服务(Global Control Store)、参与Task调度,但不执行Task。
Head资源规格即CPU核数,可选择small、m.xlarge、m.2xlarge等规格,各个规格所对应的CPU核数与Spark资源规格一致,详情请参见Spark资源规格列表。
重要Head主要负责为作业调度,请参照Ray Cluster的整体规模选择Head规格。
Worker Group名称
Worker Group的名称,您可以自定义。一个AI资源组中可以配置多个不同名的Woker Group。
Worker资源类型
支持CPU和GPU两种类型。
若您的业务涉及日常计算任务、多任务处理或复杂的逻辑运算建议您选择CPU。
若您的业务涉及大量数据并行处理、机器学习或深度学习训练建议您选择GPU。
Worker资源规格
若Worker资源类型为CPU,Woker资源规格可选择small、m.xlarge、m.2xlarge等规格,各个规格所对应的CPU核数与Spark资源规格一致,详情请参见Spark资源规格列表。
若Worker资源类型为GPU,由于涉及到GPU机型、库存等问题,请提交工单联系技术支持协助选型。
Worker磁盘空间
磁盘空间主要用于存储Ray日志、临时数据以及Ray分布式对象存储的溢出数据。单位:GB,取值范围是[30,2000]。默认100GB。
重要磁盘仅作为临时存储空间,请勿将其用作长期数据存储。
最小Worker个数
最大Worker个数
最小Worker个数:一个Worker Group中至少需要运行的Woker个数,最小为1。
最大Worker个数:一个Worker Group中最多需要运行的Woker个数,最大为8。
Worker Group支持自动弹性,且每个Worker Group都能独立弹性。当最小Woker个数和最大Woker个数不同时,AnalyticDB for MySQL会根据任务的Task个数在最小Woker个数和最大Woker个数之间动态地扩缩容Woker个数。若存在多个Worker Group,将会自动进行最佳匹配,从而避免单个Worker Group过载或闲置的情况。
分配单元
单个Worker节点上分配多少张GPU。例如分配单元为1/3,则表示每个Worker节点配置1/3张GPU。
重要仅Worker资源类型为GPU时,填写该参数。
单击确定。
连接并使用Ray服务
步骤一:获取连接地址
在左侧导航栏,单击
,单击资源组管理页签。单击对应资源组操作列的
,查看连接地址。Ray grafana:Grafana可视化工具连接地址,单击可跳转至Grafana可视化页面。
Ray集群链接地址:内网连接地址。
Ray Dashboard:公网连接地址、Dashboard地址。单击可跳转至Ray可视化界面,可查看Ray Cluster资源组状态和作业状态。
步骤二:提交作业
前提条件
已安装Python环境,且Python版本为3.7及以上版本。
操作步骤
支持以下两种方式提交作业:
通过CTL提交作业(推荐):使用CTL将脚本文件打包上传到Ray Cluster执行。入口程序在Ray Cluster中执行,需要消耗Ray Cluster资源组的资源。
使用ray.init连接Ray Cluster执行作业:使用ray.init连接Ray Cluster,入口程序在本地执行,不消耗Ray Cluster资源组的资源。且需要本地Ray版本Python版本与Ray Cluster版本一致,Ray Cluster版本变更时需要同步变更本地环境配置。
通过CTL提交作业
执行以下命令,安装Ray。
pip3 install ray[default]
(可选)配置环境变量。
说明您可以配置全局环境变量来指定连接地址,或在提交作业时指定连接地址。
export RAY_ADDRESS="RAY_URL"
参数说明:
RAY_URL
:Ray连接地址。请填写步骤一获取的连接地址。提交作业。
重要提交作业时,系统会将
working-dir
参数指定目录下的所有文件打包上传至ray head执行。因此您需注意:working-dir
参数指定的目录尽量精简,否则文件过大可能导致上传失败。所有依赖的脚本文件需全部放置在
working-dir
参数指定目录下,否则可能因缺少依赖文件而无法执行。
若您已配置环境变量,请执行以下语句提交作业。
ray job submit --working-dir your_working_directory -- python your_python.py
参数说明:
your_working_directory
:脚本文件所在的路径。本文示例脚本文件路径为/root/Ray
。your_python.py
:脚本文件。本文示例脚本文件为scripts.py
。
示例:
ray job submit --working-dir /root/Ray -- python scripts.py
若您未配置环境变量,请执行以下语句提交作业。
ray job submit --address ray_url --working-dir your_working_directory -- python your_python.py
参数说明:
ray_url
:Ray连接地址。请填写步骤一获取的连接地址。your_working_directory
:脚本文件所在的路径。your_python.py
:脚本文件。本示例脚本文件为scripts.py
。
示例:
ray job submit --address http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265 --working-dir /root/Ray -- python scripts.py
查询作业运行状态。
您可以通过如下两种方式查看作业运行状态:
通过命令查看:
ray job list
通过可视化界面查看:
在资源组管理页面。单击对应资源组操作列的
。单击Ray Dashboard地址进入可视化界面。
使用ray.init连接Ray Cluster执行作业
执行以下命令,安装Ray。
pip3 install ray
(可选)配置全局环境变量。
说明您可以配置全局环境变量来指定连接地址,或在脚本文件中指定连接地址。
export RAY_ADDRESS="RAY_URL"
参数说明:
RAY_URL
:Ray连接地址。步骤一获取的连接地址为dashboard地址,端口为8265,通过ray.init()连接ray时,需要将端口替换为10001、将协议替换为ray。例如,步骤一获取的dashboard地址为
http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265
,此处需要替换为ray://amv-uf64gwe14****-rayo.ads.aliyuncs.com:10001
。运行程序。
若您已配置全局环境变量,请执行以下命令运行程序。
python scripts.py
若您未配置全局环境变量,请执行以下命令运行程序。
修改脚本文件,指定连接地址。
ray.init(address="RAY_URL")
参数说明:
RAY_URL
:Ray连接地址。步骤一获取的连接地址为dashboard地址,端口为8265,通过ray.init()连接ray时,需要将端口替换为10001、将协议替换为ray。例如,步骤一获取的dashboard地址为
http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265
,此处需要替换为ray://amv-uf64gwe14****-rayo.ads.aliyuncs.com:10001
。重要如果ray连接地址配置不正确,ray.init()将会启动一个本地集群执行程序。请注意查看输出日志以确定正确连接到ray集群。
执行如下命令运行程序:
python scripts.py