掘金 人工智能 11小时前
OpenSearch 视频 RAG 实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Ray在阿里云PAI(Platform for Artificial Intelligence)平台上的应用,旨在提升AI模型训练的效率和便捷性。通过将Ray框架无缝集成到PAI的DLC(Distributed Computing Platform)中,用户无需手动搭建和维护Ray集群,即可轻松提交训练任务,并享受到PAI平台提供的统一调度、高可用、企业级管理等优势。文章详细阐述了Ray on PAI的优势、关键配置以及实际操作案例,为用户提供了清晰的指导。

💡 **Ray与PAI的无缝集成**:PAI DLC将Ray框架集成到DLC中,用户无需手动部署Ray集群,即可一键提交Ray训练任务,实现云上提交,免部署、免运维,降低了使用门槛。

🚀 **统一调度与高利用率**:Ray任务在PAI DLC上运行时,将享受PAI统一调度引擎的优势,包括自动拓扑感知、智能排队策略等,最终实现集群90%+的算力利用率,提升资源利用效率。

🛡️ **LLM容错与稳定可靠**:Ray on PAI 提供了针对Ray框架的优化容错机制,包括AIMaster弹性容错引擎、节点自愈引擎和EasyCKPT大模型CKPT引擎,保障Ray任务稳定运行,有效降低人力和算力浪费。

🏢 **企业级能力**:PAI为大型客户提供完整的企业级能力,实现AI算力、AI任务、AI资产、AI数据的可管可控,包括工作空间、用户管理、资源管理、任务管理、资产管理等,满足企业级AI开发需求。

⚙️ **实操案例**:文章提供了在PAI DLC上使用Ray训练PyTorch ResNet模型的实操案例,包括镜像选择、参数配置、资源准备等步骤,帮助用户快速上手。

1. 前言

1.1 Ray

Ray是一个开源的分布式计算框架,集成了多个AI库,拥有丰富的生态系统,包括Ray Tune(超参数调优)、Ray RLlib(强化学习)、Ray Serve(模型部署)、RaySGD 的分布式运行环境,提供了全面的AI解决方案,使得AI并行训练更容易和高效。 OpenAI 声明使用了 Ray 作为ChatGPT 大模型训练的底层平台,参考 How Does Ray, a Distributed AI System, Powers OpenAI’s ChatGPT?

1.2 PAI

人工智能平台 PAI(Platform for Artificial Intelligence)是阿里云面向企业客户及开发者的一站式开发平台,提供包括数据标注、模型开发、模型训练、模型推理在内的AI开发全链路服务,内置丰富的大模型最佳实践和行业场景插件,为用户提供开箱即用、高性能、高稳定的企业级云原生AI工程化能力。

Ray 与 PAI 平台相结合,能够充分发挥两者优势,为用户带来更易用、调度能力更强、高可用的模型训练体验,本文将详细介绍 Ray 在 PAI DLC 中的最佳实践,助力用户更好地利用这一组合,最大化模型训练效率和效果。

2. Ray on PAI

Ray on PAI 是由 PAI 分布式训练产品 DLC 推出的一项全新任务类型,通过将 Ray 无缝集成到 DLC 中,用户可以将 Ray 框架的训练脚本直接提交至 DLC 进行训练,无需手动部署 Ray 集群,也无需关注底层 Kubernetes 基础设置的复杂配置。

一键提交Ray任务,开发人员真正实现上手0成本, 并可享受到PAI 平台提供高效调度、自愈和企业级的管理能力。

2.1 Ray+PAI:开箱即用,一键提交

PAI DLC 提供直观的用户界面和易于理解的API,对于用户,无需搭建Ray集群,一键提交Ray任务,支持Ray原生能力,实现了云上提交Ray,免部署、免运维、上手0成本。

2.2 Ray+PAI:统一调度,高利用率

在PAI DLC 上提交Ray任务, 将完整享受PAI 统一调度引擎能力,包括自动支持网络拓扑感知、算力拓扑感知,智能、FIFO、遍历、均衡排队策略, 多级Quota的共享、抢占调度机制, 最终实现集群90%+的算力利用率。

除了Ray,PAI DLC 还支持 Megatron、Deepspeed、Pytorch、MPI、Slurm 等10+业内主流AI训练框架,使用PAI DLC, 意味着一份算力,可以运行Ray任务,也可以一键提交其他任务,随时在多种AI场景切换和使用。

2.3 Ray+PAI:LLM容错,稳定可靠

RayNative的容错机制:针对Ray框架,按照应用层面和系统层,分别提供优化容错机制,全面提升容错能力。支持某大模型团队,多个千卡RL任务,故障识别率90%+,Ray的RL训练任务稳定运行超过一周(RL 任务pattern:千卡规模 x 运行几天)

高可用:通过AIMaster弹性容错引擎、 节点自愈引擎和 EasyCKPT 大模型CKPT引擎, 实现故障节点分钟级自愈,任务分钟级恢复、CKPT秒级保存, 保障Ray任务持续运行, 有效降低人力和避免算力的浪费

可观测:构建覆盖多资源类型的精细化Metric体系,为训练稳定性监控、训练调优、算力管理等场景,提供可视化数据支撑。提供 任务、POD、卡等多维度,数百个监控指标,支持Ray Dashboard, 并且对接云监控和ARMS, 满足客户云上多样的可观测需求。

2.4 Ray+PAI:企业级能力

针对大型客户,PAI提供完整的企业级能力,实现AI算力、AI任务、AI资产、AI数据的可管可控,具体来说:

工作空间:为企业和团队提供统一的计算资源管理及人员权限管理能力,为AI开发者提供支持团队协作的全流程开发工具以及AI资产管理能力。

用户管理:提供用户、角色、组织、权限、安全,企业用户访问控制,以及平台审计能力。

资源管理:精细化计算资源分配,资源观测与多维度指标监控能力。

任务管理:任务调度策略的配置,事件通知管理能力,任务状态异常告警。

资产管理:企业自有数据处理和存储,数据集、模型、镜像、代码配置、自定义组件的管理。

被集成:提供面向MLOps流程的workflow编排能力,PAIFlow;全链路标准OpenAPI及SDK,实现与企业自有系统集成。

3. 使用案例

3.1 进入DLC

登录PAI控制台, 左侧目录选择DLC,DLC 产品页面,新建DLC任务,选择Ray框架

3.2 参数配置

节点镜像

节点镜像会被同时用于 head 和 worker 节点容器。用户所用 Ray 镜像版本应 >= 2.6,可以使用 Ray 社区提供的 docker 镜像 ,目前的测试均基于2.9版本。Ray 社区还提供了 镜像,内置了包括 pytorch、tensorflow 等机器学习框架的支持。使用 GPU 时需提供包含支持 cuda 的镜像。更多支持的镜像版本请参考官方Docker镜像文档。

运行时环境目前 DLC 仅支持通过配置三方库配置的三方库列表(ThirdpartyLibs),后续会逐步开放通过框架高级配置(Settings.AdvancedSettings)来配置 Ray 的环境运行依赖(runtime_env)。在生产环境中,强烈建议使用已经打包好的镜像来执行任务,避免因为临时安装依赖库造成的任务失败。

启动命令

PAI DLC 任务的启动命令会被用作 ray job submit 所提交的 entrypoint 命令,通常为运行一个 Python 脚本文件。例如:

python /root/code/sample.py

需注意,目前只有第一行命令会被 ray 提交至 ray cluster 运行,如果有多个命令请用 ; 或者 &&连接。如果需要在命令里直接放入 Python 脚本,可以采用参考下面的例子:

`echo 'import rayimport osimport requests

ray.init()

@ray.remoteclass Counter:def init(self):# Used to verify runtimeEnvself.name = os.getenv("counter_name")# assert self.name == "ray"self.counter = 0

def inc(self):    self.counter += 1def get_counter(self):    return "{} got {}".format(self.name, self.counter)

counter = Counter.remote()

for _ in range(50000):ray.get(counter.inc.remote())print(ray.get(counter.get_counter.remote()))' >> sample.py && python sample.py`

资源准备

任务节点

DLC 支持 Ray Cluster 的两种可配置的任务节点类型:Head 和 Worker。配置资源数量时,Head 节点的数量必须为1。同时在 DLC 平台上,Head 节点只会被用于运行 entrypoint 脚本,不会被用作 Ray Worker 节点。

除此以外,每个 Ray 任务 DLC 会自动生成一个 Submitter 节点用于执行任务启动命令,同时用户可以通过 Submitter 节点的日志来浏览查看提交的 Ray 任务日志。在预付费任务中,该节点会共享占用极小部分用户资源用于启动任务;而在后付费任务中,会生成一个最小可用的资源类型节点。

资源数量

Ray Cluster worker 节点上的 Logical Resources与用户在提交任务时配置的物理资源一致。例如,当用户配置了1个8卡的GPU节点时,Ray cluster worker 节点默认的资源大小也为 8 GPUs。如使用如下 @ray.remote 修饰函数或者类,会产生两个 Tasks 或者 Actors:

@ray.remote(num_gpus=4)

资源的配置需要符合任务的需求。一般而言,少而大的节点好过多而小的节点。通常每个节点建议的内存大小为至少 2 GiB,并且根据 Task/Actor 数量增长而增加,否则容易出现 OOM 错误。

3.3 实操案例

• Train PyTorch ResNet model with GPUs on DLC

    选择镜像地址,参考使用 ray-ml:2.9.3-py310-cu118

    github.com/ray-project… PAI 代码配置,或直接本地上传

    输入任务启动命令

    选择 Ray 框架,并配置 head 和 worker 资源

    创建任务;等待任务完成,并查看任务日志

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Ray PAI AI训练 分布式计算 云原生
相关文章