2017 年 12 月,加州大学伯克利分校 RISE 实验室的 Robert Nishihara、Phillip Moritz 等人发布了一篇论文 ——Ray: A Distributed Framework for Emerging AI Applications(Ray:一个新兴人工智能应用的分布式框架)。
这是第一个专为扩展 ML 和 AI 工作负载量身定制的统一分布式计算框架,Ray 开始为业内所关注。
这两年,随着 AI 技术的爆发,越来越多的 AI 应用开始基于 Ray 构建。就连 OpenAI 的 ChatGPT,也要依赖 Ray。
OSCHINA 开源中国采访了蚂蚁金服资深技术专家潘臻轩 (泰初),请他给我们讲讲 Ray 是什么,有什么特别之处,并谈谈 Ray 未来的发展。
潘臻轩 (泰初)
1. 请您先介绍一下自己。重点谈一谈,您是什么时候开始接触分布式计算,经历了怎样的过程?当前关注的方向是什么?
我叫潘臻轩,花名泰初,目前负责蚂蚁 AI 在线服务团队,主要涵盖搜推广的引擎基建、大模型推理、异构集群和 Ray 的相关工作。
我是 2011 年开始接入分布式计算相关的工作,次年加入阿里集团,从事第一代实时计算相关的引擎研发工作,经历了流计算在阿里的迅猛发展。
2016 年加入蚂蚁集团,先后从事实时计算和图计算的相关工作,基于 Ray 构建了业界首个工业级的流图计算引擎,并推动图计算在蚂蚁的大规模应用。
从 2023 年开始,负责 AI 在线服务团队,主要基于 Ray 体系之上,围绕搜推广工程基建和大模型离在线推理,打造统一 AI 服务框架和离在线一体的推理服务,并支持蚂蚁全站的搜索、推荐、推理相关的业务。
2. 什么是 AI 分布式计算框架?当前有哪些框架可供选择?你们在项目 / 业务中为什么最终选择了 Ray?Ray 有什么特别之处?
AI 的分布式计算框架,主要是提供面向 AI 场景的分布式计算能力。目前业界也有一些其他的框架,比如基于 Spark、Flink 进行面向 AI 场景的数据处理,以及模型推理 KServe 等。
我们在项目中最终选择 Ray,主要是考虑 Ray 提供一整套分布式底座、良好的编程接口和丰富的 AI 生态集成,能够实现离线、在线推理的能力。Ray 主要包含高性能分布式引擎 Ray Core、面向 AI 场景的数据处理(Ray Data)、基于 Ray 的分布式训练框架 Ray Train 和基于 Ray 的在线推理服务 Ray Serve 等。
3. Ray 在 2017 年就对外开源了。为什么等到这两年,业内才对 Ray 的讨论明显更多?
这里我个人认为主要有几点变化。
一方面是 Ray 整体的生态越来越完备,从早期的 Ray Core 到 Ray AI Libraries,Ray 技术栈方便快捷地提供了面向机器学习平台统一的计算运行时环境。如 Ray Data、Ray Train 和 Ray Serve, 可以用于构建机器学习完整的工作流程,提供数据预处理、模型训练和推理服务。
另一方面,随着 Ray 的价值越来越被大家认识到,更多的 AI 应用开始基于 Ray 构建,比如大模型推理引擎 vLLM 就基于 Ray Core 及 Ray Serve 构建分布式推理能力,从而进一步丰富 Ray 的 AI 生态集成,形成了良好的飞轮效应。
最后,由于 Ray 在 AI 生态上的优势逐步体现,以及标杆性企业 OpenAI 对 Ray 的使用也让大家进一步看到 Ray 的价值,促进了更多的公司开始关注 Ray、使用 Ray。
4. Databricks 和 Anyscale 联合创始人、伯克利计算机科学高级教授 Ion Stoica 表示,ML 训练需求每 18 个月增加十倍,但个人计算机的 GPU 功能不足以满足训练模型的需求,所以才需要 Ray 来处理负载。那么,Ray 在其中的作用是什么?
Ray 提供了一整套的 AI 库,用户可以快速的应用到 ML Pipeline 的多个阶段。
在模型训练时,用户可以基于 Ray Train 构建自己的分布式训练任务。基于 Ray Train 可以将单机模型训练代码扩展到云端的机器集群,同时屏蔽分布式计算的复杂性。这样用户既可以享受到单机研发的高效和便利,又能充分的利用分布式算力。同时 Ray Train 还提供了训练过程中的容错方案,帮助用户实现分布式训练任务的可靠性。
5. 如何将 Ray 用在一个具体的 AI 产品 / 平台上?有什么典型案例?
可以将 Ray 集成到用户自己的 AI 研发平台,构建完整的 AI 研发流水线,也可以使用 Ray 的部分关键能力与企业内部现有体系进行协同。
在蚂蚁,我们主要把 Ray 应用于离在线的推理服务和统一的 AI 服务应用。这里以离在线推理服务为例,用户在模型训练完成之后,可以选择基于 Ray Data 进行批量数据集的离线推理,也可以选择基于 Ray Serve 构建在线的推理服务。
6. 历史上 Ray 发布的各个版本中,你认为有哪些重大更新?这些关键更新产生了什么样的影响?
从我们的视角来看,Ray 有几个重要的版本迭代对整体 Ray 的发展产生一定的影响。
第一个是 2020 年 Ray 发布了 1.0 版本,其中引入了 Placement Group 的特性,该特性增加了用户自定义任务编排的灵活性,该特性应用于后来的 Ray AI Libraries 以及大家所熟知的 vLLM 中。
第二个是 2021 年的 Ray 1.5 版本,该版本发布了 Ray Data Alpha 版本发布,随着 AI 生态的发展,AI 生态相关的数据处理和离线推理的诉求越来越多,该特性更好的弥补了 Ray 在该领域的空白,目前 Ray Data 在 AI 数据处理方面的应用也越来越广泛。
第三个是 2022 年 Ray 2.0 版本,该版本引入了 Ray AIR (Ray AI Runtime) 的概念,从通用分布式计算框架聚焦 AI 生态,这让 Ray 后续的发展更加聚焦和明确,同时引入 Ray AIR 之后,用户也可以基于 Ray AIR 快速构建自己的 AI 基建。
第四个是 2023 年 Ray 2.9 版本,该版本引入了 Streaming Generator ,该特性更加围绕生成式大模型,原生支持流式推理能力,更好地支持大模型场景。
最后一个 2024 年 Ray 2.32 版本,该版本引入了 Ray DAG,该特性进一步让 Ray 更好地支持 AI 场景下带来的异构设备之间的通信。
7. 这个以机器学习 (ML) 闻名的开源框架,被亚马逊用来替换 Apache Spark,管理大数据智能分析 (BI) 数据集。我们也看到,Ray 也常常被用来与 Spark、Flink、MARS 或 Dask 等数据处理框架相比。那么未来 Ray 有可能取代这些框架吗?
个人的观点,Ray 和当前的这些数据处理框架不是同一个纬度的比较,比如 Ray 提供了 Ray Train、Ray Tune、Ray Serve 等都不局限于通用的数据处理,而是面向 AI 场景的核心能力。
单纯到数据处理上,Ray Data 可能更适合和以上的框架对比,就从我个人的理解 Ray Data 和这些框架之间并不会是取代的关系,而是在各自的场景发挥各自的优势。比如就今天大数据场景而言,Spark 主要用于做批处理、Flink 主要用于流式计算。而 Ray Data,更偏向 AI 场景下的数据预处理,以及基于 Ray Data 构建离线推理等,所以他们之间并不是简单的取代关系。
8. 您能否结合分布式计算面临的挑战,来谈谈 Ray 未来的发展?
随着大型机器学习模型的快速发展,分布式计算领域正面临一系列新的挑战,尤其是在处理非结构化数据和进行大模型的分布式推理方面。Ray,作为一个专为 AI 和 Python 生态系统设计的分布式计算框架,不仅与 Python 的生态完美融合,而且在分布式系统的构建和管理方面表现出色,有效地应对了这些挑战。因此,在大型模型的应用场景中,Ray 展现出了巨大的潜力和发展空间。
Ray 的灵活性和高效性,使其成为处理大规模非结构化处理的理想选择。它能够支持复杂的数据处理流程,包括数据的预处理和离线推理等,这些流程在大型模型中尤为重要。Ray 通过其分布式执行引擎,能够优化资源利用,加速计算任务,从而提高整体的计算效率。
同时,AI 的价值日益凸显,企业对于构建一个统一的 AI 技术平台的需求也越来越迫切。这样的平台可以提高企业的工作效率和效能,降低开发和运营成本。基于 Ray Core 和 Ray AI Libraries 构建的 AI 技术栈,提供了一个强大的、可扩展的解决方案,它不仅能够支持现有的 AI 工作流程,还能够适应未来技术的发展和变化。
Ray Core 作为 Ray 的核心组件,提供了分布式任务调度和执行的能力,而 Ray AI Libraries 则扩展了 Ray 的生态,使其能够更好地支持 AI 模型的构建、训练和部署。通过这样的技术栈,企业可以构建一个端到端的 AI 解决方案,从而实现从数据预处理到模型推理的全流程自动化和优化。
展望未来,随着 AI 技术的不断进步和应用场景的不断扩展,基于 Ray 构建的统一 AI 技术栈将为企业带来更大的竞争优势。它不仅能够提高数据处理和模型训练的效率,还能够加快新模型的部署速度,帮助企业快速响应市场变化,实现业务的快速增长。因此,Ray 及其相关技术在未来的 AI 领域中无疑将扮演越来越重要的角色。
潘臻轩 (泰初)
蚂蚁金服资深技术专家。2016 年加入蚂蚁集团,参与了蚂蚁集团实时计算从 0 到 1 的演进,并围绕 Ray 构建了蚂蚁实时图计算体系。目前负责蚂蚁 AI 在线服务 (搜索、推荐、推理) 和统一 AI 分布式计算框架,围绕 Ray 构建分布式 AI 计算体系。