作者 | openYuanrong 团队
策划 | 华卫
近期,华为开源了自研的 Serverless 分布式计算引擎 openYuanrong。openYuanrong 已经在华为 MetaERP、小艺、华为云、终端云、ICT、海思等核心产品和平台广泛使用,是华为面向分布式计算领域长期积累下来的核心竞争力产品,也是业界首个统一支持通用计算和 AI 智能计算中多种分布式应用场景的开源 Serverless 分布式计算引擎。
开源地址:https://www.openeuler.org/zh/projects/yuanrong/
Serverless 计算以其单机体验编程、自动弹性扩缩、免运维、和屏蔽复杂基础设施等优点广受业界关注,但传统的 Serverless 产品(以 FaaS 为代表)大多是面向特定垂直领域定制、缺乏通用性。因此,面对复杂的应用,往往需要和现有微服务(容器)集群混合部署。如此便会造成多个基于异构软件技术栈的异构集群之间的互操作效率低下、集成和管理复杂。不仅如此,随着 AI 技术的普及,以及 AI Agent 新应用的兴起,通算和智算集群之间也需要相互集成,当前的各个集群软件之间缺乏协同,也带来开发运维复杂、集群资源割裂、跨系统数据流转开销大等严重问题。而 openYuanrong 则致力于以统一的 Serverless 技术栈支持上述各类通算和智算负载在统一资源池上的细粒度融合部署,实现各负载间的高效协同和资源复用,同时提高系统性能,提升计算资源的使用效率。
1 经过华为核心场景锻造的 Serverless 分布式计算引擎
通用计算场景。华为 MetaERP 以 openYuanrong 为分布式底座构建业界首个 Serverless 的 ERP 系统。MetaERP 为华为公司整体提供 ERP 服务,包含上千个微服务、日处理百 TB 级数据,是目前国内最大的 ERP 系统之一。MetaERP 使用 openYuanrong 提供零代码修改方案将大量使用 Spring 开发的标准微服务直接进行 Serverless 化,和 FaaS 原生的扩展服务实现共集群部署。openYuanrong 的快照极速冷启动等方案使得大型 Java 微服务启动时延从 90s 缩短至 1.4s,满足了 Serverless 自动水平弹性,以及无请求缩容到 0 的需求。同时,MetaERP 还采用了 openYuanrong 提供的 Serverless 流处理方案,实现性能优于 Flink 的大数据处理流水线。通过 openYuanrong 提供的 Serverless 技术,MetaERP 整体提升开发效率 60%,资源成本节省 30%。
智能计算场景。华为小艺服务广泛采用 openYuanrong 作为其云端 AI 训 - 推 - 用的 Serverless AI 基础设施。传统方案下,SFT 训练、强化学习、大模型推理、AI Agent 分别采用不同的软件技术栈,独立集群部署(如在训推场景中使用 Ray,而 Agent 实例则运行在 K8S 管理的容器中),带来了大量的开发运维成本。小艺基于 openYuanrong 在单一资源池上构建了统一的 Serverless AI 平台,同时支持了 SFT 训练、强化学习、模型推理、AI Agent 四个领域负载的融合部署和资源灵活调度,在极大简化了分布式系统的开发运维的同时提升了资源利用率。利用 openYuanrong 的分布式内核技术,小艺的强化学习训推任务调度端到端时延减半;大模型推理实例启动速度从分钟级下降到秒级(如 Llama2-70B 水平弹性时延从 571 秒缩短至 4.55 秒)。基于 openYuanrong 的异构分布式内存数据系统,分布式 KV Cache 整体性能提升 1 倍以上,同时强化学习过程中,训推转换时实例间参数同步时延也从分钟级缩短至秒级。相较于业界类似产品(如 Ray),openYuanrong 提供了更高的性能和弹性调度能力,更成熟稳定,同时也支持通算和智算负载的融合部署,构建全流程的 Serverless AI 平台。

2 openYuanrong 的整体架构
openYuanrong 从架构上看主要由三部分组成:
多语言函数运行时:一套以函数、状态、数据对象、数据流为核心抽象的分布式编程接口和高效实现,其中“函数”类似单机 OS“进程”,可以表达任意分布式应用的运行实例,并天然支持相互间直连互调或通过分布式内存共享传递数据,无需经过网关中转或外部存储。支持 Python、Java、C++ 等主流编程语言及相互间跨语言调用,使能用户以单机体验的编程方式高效开发各类分布式应用。
函数系统:Serverless 大规模分布式动态调度,支持函数动态生命周期管理(函数实例可在运行过程中动态创建 / 删除、长时间运行、休眠 / 唤醒),支持包括 Java 微服务、大模型推理在内的各类应用实例秒级冷启动和快速水平弹性,支持实例自动垂直弹性和跨节点迁移,实现节点内高密部署和集群资源高效利用。
数据系统:近计算的异构分布式内存数据缓存,提供 Object、Stream、KV 等语义,实现函数实例间高性能数据共享及传递。通过 HBM/DDR/SSD 多级缓存,支持节点内基于共享内存的免拷贝数据访问、节点间基于 D2D/H2H/D2H/H2D 高速传输的高效分布式数据访问。

本质上 openYuanrong 提供了一套统一 Serverless 架构支持各类分布式计算场景,通过提供多语言函数编程接口,以单机编程体验简化分布式应用开发;通过提供分布式动态调度和数据共享等能力,实现分布式应用的高性能运行和集群的高效资源利用。
3 openYuanrong 与业界同类系统的异同点
业界同类系统有 Ray、AWS Lambda 等。和 Ray 相比,Ray 和 openYuanrong 都支持面向 Python 的“单机体验编程、分布式运行”;但和 Ray 主要面向 Python 编程语言不同,openYuanrong 采用多语言运行时和分布式内核分离的架构,能够支持更丰富的编程语言,也支持更大规模集群调度,以及极致水平 / 垂直弹性和跨节点迁移。同时,openYuanrong 也构建了比 Ray Object Store 性能更高、功能更全的分布式内存数据系统,实现高性能数据共享 / 流转。此外,openYuanrong 的分布式管理架构也支持分布式高可靠运行,消除了单点故障。和 AWS Lambda 等 FaaS 系统相比,FaaS 只适用于特定的工作负载,而 openYuanrong 是业界首个将 Serverless 从专用场景扩展到通用分布式场景的系统。
openYuanrong 已在 openEuler 社区全面开源,采用 Apache 2.0 License,期待更多优秀的开发者参与,共同定义智能时代的分布式计算新范式。
今日好文推荐