
PaddlePaddle 3.0 现已正式发布。重点特性说明如下:
- 动静统一自动并行: 这一功能大幅度降低了产业开发和训练的成本。用户只需在单卡基础上进行少量的张量切分标记,飞桨框架便会自动完成分布式切分信息的推导,并添加通信算子以确保逻辑的正确性。同时,根据模型结构和集群信息,结合显存和调度层的优化,飞桨能自动寻找最高效的分布式并行策略,从而大幅降低混合并行训练的开发成本,使开发者能够更专注于模型和算法的创新。自动并行架构进行了深入的验证和打磨,以更好地支持纯文稠密模型、纯文稀疏模型(MoE)和多模态理解模型等常见大模型场景的预训练+精调流程;完善算子的切分推导规则,并支持将自动并行训练参数转化成手动并行参数进行下游推理,自动并行达到了全面可用的状态,帮助用户降低大模型并行程序的开发成本。同时,为了进一步简化用户的分布式开发流程,推出全新的
paddle.distributed.parallel
接口,基于对分布式张量标记语法的封装,支持用户在模型组网外不侵入地配置数据并行、模型并行、流水并行等常见的并行策略。此外,静态图自动并行架构基于PIR完成了全面的升级,底层的基础组件、核心模块、并行策略和性能优化策略均统一基于扩展的PIRDistDialect
进行实现,进一步增强了自动并行的动静一致性,并在Llama系列模型上性能达到了持平甚至领先手动并行方式的水平。 - 大模型训推一体: 3.0版本将继续秉持自2.0版本起采用的“动静统一、训推一体”的设计理念。得益于动静统一的架构和接口设计,飞桨能够完整支持动态图和静态图这两种不同的运行模式,并且具备出色的整图导出能力。飞桨的动转静整图导出成功率高达95%,高于PyTorch的62%。“训推一体”意味着能够在同一套框架下,尽可能复用训练和推理的代码,特别是复用模型组网代码。在完成模型的开发训练后,只需进行少量的开发工作,即可实现快速推理部署。这一特性为产业提供了极致的开发体验。它使训练和推理的能力能够相互复用,为大模型的全流程提供了统一的开发体验和极致的训练效率。通过动转静的工作,训练和推理的工作得以无缝衔接。支持多款主流大模型、DeepSeek-R1满血版实现单机部署,吞吐提升一倍。
- 科学计算高阶微分: 飞桨框架3.0为科学计算提供了高阶自动微分、编译优化和分布式训练能力的支撑。英伟达Modulus的41个不同方程实验显示,飞桨的微分方程求解速度比PyTorch开启编译器优化后的版本平均快 112%。同时,飞桨还建设了面向通用数理问题求解的赛桨PaddleScience以及专注于生物计算的螺旋桨PaddleHelix工具包。此外,飞桨框架3.0还原生支持复数技术体系,这对于气象预报、汽车飞行器气动分析等场景下的数据特征分析具有重要意义。
- 神经网络编译器: 这一功能显著降低了性能优化的成本。飞桨的编译器采用与框架一体化的设计,能够支持生成式模型、科学计算模型等多种模型的高效训练与可变形状推理,在计算灵活性与高性能之间提供了良好的平衡点。使用 CINN 编译器后超过 60%的 模型有显著性能提升,平均提升达 27.4%。CINN神经网络编译器在完备性、性能表现等方面效果全面提升。此版本中,我们对编译器前端、后端各个环节进行了全面优化:包括新增反向计算图自动Re-Compute机制、前端 Pass 性能优化、符号推导机制升级、算子融合策略优化、后端 Schedule 策略和下标表达式化简能力增强等,同时排查并修复了大量正确性和性能问题,系统化的提升了编译器的通用优化能力。
- 异构多芯适配: 飞桨的重要特色之一是适配异构多芯并充分释放硬件潜能。在接入机制上,飞桨提供了简洁高效的抽象接口和基础算子体系,降低了适配成本。在运行机制上,它优化了调度编排和存储共享等机制,提升了调度效率。从算子内核角度,飞桨提供了编译器自动融合调优方案,以提升端到端的性能。同时,飞桨还为新硬件厂商建设了代码合入、持续集成、模型回归测试等研发基础设施。这些机制保障了新硬件被纳入飞桨的正常发版体系中,用户无需编译即可直接安装试用。
除了上述核心特性外,高扩展中间表示为了提升飞桨框架的可扩展性,研发了高扩展中间表示PIR(Paddle Intermediate Representation)。通过PIR提供的DRR(Declarative Rewrite Rule)机制,Pass的开发成本可以降低60%。同时PIR完成在全场景的验证,并默认开启,支持一键动转静,保证了框架卓越的性能表现和良好的拓展性。
对框架2.0版已有功能的持续改进,同时新特性在使用体验、性能、二次开发便利度以及硬件适配能力等方面带来了显著提升。此版本在用户体验层面持续丰富并增强了满足更多场景的API功能,针对大模型场景优化完善了分布式并行策略优化和推理功能增强,在编译安装方面做了比较彻底的易用性改进,对依赖包的安装方式和版本进行了全新同步升级,对系统安全进行了全面加固,对产品文档也进行了全面的纠错检查,同时也对一些废弃代码做了大量的清理以保证架构的简洁性。
不兼容升级
飞桨API支持隐式类型提升。在加减乘除等最常用的计算中,如果两个输入的数据类型不一样,就需要确定输出的数据类型问题。飞桨历史上的现状是部分支持且实际规则并不清楚,客观上表现为动静不一致、API和运算符重载不一致 及 不符合交换率,特别是在大模型广泛使用 bf16/fp16 与 fp32 进行混合计算时容易出现非预期问题且难以定位。飞桨从3.0 beta版本开始,明确了隐式数据类型提升规则,其中详细定义了 Tensor与Tensor 和 Tensor与1个数(Scalar)计算结果的类型,保证了计算符合交换律,运算符重载与二元 API 结果一致,动态图与静态图结果一致。更符合用户理解和业界习惯。#60638, #63842, #60011
废弃功能
支持0维Tensor已经稳定了2个版本,本版本取消了在一些情况下将0维Tensor转成只含1个元素的1维Tensor的开关FLAGS_set_to_1d,这个开关是为了兼容一些套件中用1个元素的1维Tensor表示0维Tensor的不正确写法。即当前飞桨完全区分0维Tensor和只含1个元素的1维Tensor的语义,两者不等价。#61227
还没有评论,来说两句吧...