标题: 蚂蚁集团基于 Ray 构建的分布式 AI Agent 框架 [打印本页] 作者: 链载Ai 时间: 昨天 20:51 标题: 蚂蚁集团基于 Ray 构建的分布式 AI Agent 框架
导读本文将分享蚂蚁最新的基于#Ray的分布式#Agent框架,Ragent。
主要内容包括以下几个部分:
1.Background2.Motivation3. Design & Impl.分享嘉宾|陈齐翔 蚂蚁集团 软件工程师、Ragent 框架主要作者编辑整理|王甲君内容校对|李瑶出品社区|DataFun相信很多人都了解 Ray,它是 OpenAI 用于大模型训练的底层分布式框架。蚂蚁集团早在很久之前就加入了 Ray,且今年 Ray 的 CEO 在夏季发布会上也提到,蚂蚁是第一个正式使用并协作开发 Ray 的团队。我们贡献了超过 26% 的 Ray 核心代码,是全球第二大贡献团队。目前,蚂蚁集团在线上运营着超过 150 万 CPU 核心,规模已相当庞大,同时我们也在运营 Ray 在中国的社区。
简单介绍一下 Ray 在蚂蚁内部的发展情况。我们在 2017 年成立了 Ray 团队,并于 2018 年推出了首个业务场景流图计算引擎 Geaflow。在 2018 年至 2022 年间的大数据时代,我们基于 Ray 开发了多个计算引擎,如用于流计算和机器学习训练的Realtime、Mobius 开源引擎,以及在线推理和科学计算引擎 Mars。同时,我们也贡献了 Multi-Tenant 架构,Ray 社区今年才开始考虑这种架构,而蚂蚁因线上集群规模庞大,早已开始考虑多租户。
在 2023 到 2024 年大模型时代,我们在美国完成了一项工作 Unified AI Serving,将离线、在线与 AI 推理、AI 部署整合为一个框架,这是我们 150 万内核业务的核心场景之一。接下来将介绍我们的最新工作,基于 Ray 构建的 AI Agent 框架,主要分为三个部分:背景、动因,以及设计与实现。
特别需要注意的是,右边的工具分为三类:红色的 LlamaIndex 用于计算(CPU/GPU 密集型),绿色的 DB 和 Lucene 访问为 Disk I/O,蓝色的则是网络访问。Agent 任务中涉及这三种不同的计算任务,传统模式可能只处理 CPU 或 CPU+IO,但在这里,一个单任务可能包含复杂的混合工作负载。
一旦 PoC 验证有效,就希望能迅速部署到线上,但这一步非常困难。上线应用涉及众多模块:服务、数据库、数据来源、分布式框架等,对大公司而言,需要与多个团队合作,小公司虽不需多个团队,但仍需掌握所有技术。因此,PoC 到上线的过程繁琐且漫长。此外,用户任务可能同时涉及 GPU、CPU 和 Service Calling,且 Agent 覆盖不同业务场景,每个场景的技术栈不同,需要大量兼容适配工作。
在分布式 Ray 生产化 Agent 过程中,我们对比了三个技术栈层级:底层的 Kubernetes(简称 K8S)、上层的算法库 LangChain 和中间层的 Ray。Ray 之所以居于中间层,是因为它涵盖丰富的 AI 生态,如 Ray Data 用于数据处理和服务化,以及强化学习和训练。Ray 紧贴 K8S,为分布式执行调度提供支持。
Kubernetes 的优势在于底层 API 的灵活性,允许编写各种 CRD 并整合多种硬件,提供资源控制的完整性;但其缺点是从零开发 AI 程序非常复杂。我们与基于 K8S 的团队交流发现,许多机器学习工程师并不熟悉 K8S。在蚂蚁集团,算法工程师离掌握 K8S 还有较远距离,这种学习曲线使得我们不太可能直接让终端用户使用 K8S。此外,Kubernetes 的 AI 生态相对简陋,主要因其重心仍在底层。
完成初始化和注册后,Agent 便可与用户交互。用户的第一个 involve 是从 Ray 文档中学习最新功能,此时 Agent 会调用工具,将用户提供的文档索引到 DB 中作为知识的一部分。工具使用 Ray Data 实现,因此在执行阶段,Agent 将其作为 Ray Data 的作业提交,批处理输出到 DB 中每个文档的知识。
接下来,用户可对文档提问,如询问 Ray 最新版本的 Ray Data 功能,此时 Agent 会从 DB 中进行字符和语义检索,经过大模型处理后返回结果。整个过程只需几行代码即可完成一个 RAG Agent,不过这是简易版的。
在 Agent 场景中,文档处理等纯离线操作通过 Ray Data 实现,第一步可用 Ray Data pipeline 完成离线工作。对于单 Agent 或多 Agent 的二三步,可以实现服务化,每个进程用 Agent Protocol 封装,实现互通信。这在 Agent 场景中尚未完成,但在计划中。