技术的广泛应用铺设了坚实的基础。飞桨作为中国首个自主研发、功能丰富、开源开放的深度学习平台,正式对外发布了3.0版本,具备动静统一自动并行、编译器自动优化、大模型多硬件适配、大模型训推一体等核心技术,支撑大模型效果更好,性能更优。
据介绍,飞桨框架 3.0 还为大模型硬件适配提供了功能完善、低成本的方案,建设了面向硬件厂商的代码合入、持续集成、模型回归测试等研发基础设施,为硬件适配提供了全套保障。
飞桨将为开发者提供一个“动静统一、训推一体、自动并行、自动优化、广泛硬件适配”的深度学习框架。飞桨框架 3.0 版本应运而生,延续了2.x 版本动静统一、训推一体的设计理念,其开发接口全面兼容2.x 版本。这在某种程度上预示着,使用2.x 版本开发的代码,在绝大多数情况下无需修改,即可直接在3.0版本上运行。着重推出了动静统一自动并行、编译器自动优化、大模型训推一体、大模型多硬件适配四大新特性。这些特性在飞桨框架2.6版本或更早版本时就慢慢的开始开发,目前已达到外部可试用的阶段。这些新特性在使用体验、性能、二次开发便利度以及硬件适配能力等方面带来了显著提升,飞桨正式对外发布3.0版本。此版本包含了对框架2.x 版本部分已有功能的改进,并且在不使用新特性的情况下,表现成熟稳定。
在开发接口之下,飞桨框架可以划分为4个层次:表示层、调度层、算子层和适配层。飞桨3.0版本架构全新重大升级,主要包含高扩展中间表示 PIR,通过打造全架构统一的中间表示,突破框架层各模块壁垒,提升飞桨在科学计算、编译优化、大模型领域的潜力;神经网络编译器自动优化,通过自动融合和策略调优,大幅度的提高模型端到端表现;自动并行,降低大模型场景模型开发和性能优化的成本,大幅度的提高大模型场景的用户体验。
动静统一自动并行这一功能大幅度降低了产业开发和训练的成本。用户只需在单卡基础上进行少量的张量切分标记,飞桨框架便会自动完成分布式切分信息的推导,并添加通信算子以确保逻辑的正确性。同时,根据模型结构和集群信息,结合显存和调度层的优化,飞桨能自动寻找最高效的分布式并行策略,从而大幅度降低混合并行训练的开发成本,使开发者能够更专注于模型和算法的创新。
飞桨提供了PatternRewriter 和 Declarative Rewrite Rule(简称 DRR)这两种 Pass 开发机制,兼顾了自定义的灵活性与开发的易用性。采用三段式的 Pass 开发方式,使开发者能更专注于 Pass 逻辑的处理,而无需关注底层IR的细节。利用 PIR 的 Pass 开发机制,实现了 Pass 开发成本降低58%;应用于推理场景,超过84%的模型推理加速超10%。
编译器自动优化功能明显降低了性能优化的成本。飞桨的编译器采用与框架一体化的设计,能够支持生成式模型、科学计算模型等多种模型的高效训练与可变形状推理,为计算灵活性与高性能之间提供了良好的平衡点。通过算子的自动融合和代码生成技术,Llama2和 Stable Diffusion 等生成式模型的推理性能得到了超过30%的提升。
大模型训推一体特性为产业提供了极致的开发体验。它使训练和推理的能力能够相互复用,为大模型的全流程提供了统一的开发体验和极致的训练效率。通过动转静的工作,训练和推理的工作得以无缝衔接。在 RLHF(人类反馈强化学习)训练过程中的生成计算可以复用推理优化,实现2.1倍的加速。同时,推理量化场景复用训练的分布式自动并行策略,效率提升了3.8倍。
飞桨的重要特色之一是适配异构多芯并充分释放硬件潜能。在接入机制上,飞桨提供了简洁高效的抽象接口和基础算子体系,降低了适配成本。在运行机制上,它优化了调度编排和存储共享等机制,提升了调度效率。从算子内核角度,飞桨提供了编译器自动融合调优方案,以提升端到端的性能。同时,飞桨还为新硬件厂商建设了代码合入、持续集成、模型回归测试等研发基础设施。这些机制保障了新硬件被纳入飞桨的正常发版体系中,用户无需编译即可直接安装试用。飞桨这种功能完善、低成本接入的机制吸引了硬件厂商共同为飞桨贡献了3456个PR,共包含25000多个 commits。
假设我们应该是实现 RMS Normalization 的计算,最简单的办法是,我们大家可以使用飞桨框架提供的张量运算开发接口,调用平方、求和、除法、开根号等操作来完成,代码如下:
上述代码开发简单,但是性能较差,且显存占比较多;开发的人能进行 FusedRMSNorm 的实现,但是对于开发者要求更高,成本也更高。
借助神经网络编译器技术,我们也可以在维持高度灵活性和易用性的基础上,实现性能的显著提升。以下 A100平台上 RMSNorm 算子的性能测试结果便是一个明证:相较于采用 Python 开发接口组合实现的方式,经过编译优化后的算子工作速度提升了 4 倍;即便与手动算子融合的方式相比,也实现了 14%的性能提升。这一成果充分展示了飞桨框架在灵活性与性能之间寻找到的理想平衡点。
为此,飞桨把神经网络编译器技术作为一个重要的研发方向,下面是飞桨编译器的整体架构图。
在生成式大语言模型 Llama 和文生图模型 Stable Diffusion 上的实验结果为,利用编译器的优化技术,相较于未采用手动性能优化的基础版本,推理速度分别实现了 36%和 30%的提升。
目前,飞桨的新一代框架 3.0-Beta 版本已面向开发者开放,并且所有的开发接口跟2.0完全兼容,欢迎广大的开发者去使用和反馈。
现在飞桨框架3.0技术公开课已在7月30日正式开讲,核心工程师团队倾囊相授,无论是想进一步探索框架技术,还是希望探索产业落地实践,都能在课上找到答案。报名课程:前往飞桨AI Studio,搜索飞桨框架3.0全面解析学习课程。这个夏天,飞桨与你一起执桨造浪!