MyGit

v2.6.0

PaddlePaddle/Paddle

版本发布时间: 2024-01-08 14:43:49

PaddlePaddle/Paddle最新发布版本:v3.0.0-beta0(2024-06-27 18:00:34)

1. 重要更新

2. 不兼容升级

3. 训练框架(含分布式)

Python API

升级 Tensor 索引机制

本版本全面优化了 Tensor 的基础索引、高级索引以及联合索引功能,以更好地符合业界标准与用户习惯。具体包括:在基础索引中增加了对 view 的支持,修正了高级索引中的一些错误行为,并实现了联合索引的读取功能。此外,我们还将索引解析下沉到 C++层面,改进了高级索引算子的性能,并移除了 bool 索引中的冗余计算。通过这些优化措施,Tensor 的基础索引、高级索引和联合索引性能得到了全面提升。#56893, #58643, #57986, #56272, #58856, #55211, #57023, #56613, #55602, #59281, #57737

升级 Inplace 机制

在之前的版本中,为了确保反向微分计算的正确性,当某个 API 的反向计算依赖于其前向输入数据时,飞桨会避免使用 Inplace 操作方式,因为这种方法可能会覆盖原始输入数据。虽然这种机制简化了实现过程,但也限制了许多 API 实现 Inplace 功能,从而影响了用户体验。 在本版本中,飞桨对 Inplace 机制进行了全面升级。实现自动检测反向计算对前向输入的依赖关系,并在需要时保存这些输入数据,从而支持更多的 Inplace 操作。这一改进不仅提升了内存使用效率,还增强了 API 的功能性。 此外,我们新增了 109 个支持 Inplace 操作的 API,包括 paddle.abs_、paddle.sin_/cos_/tan_、比较操作如 paddle.greater_than_/less_than_/equal_、逻辑操作如 paddle.logical_and_/logical_or_/logical_not_,以及 paddle.neg_和 paddle.log_等。在丰富飞桨的功能集同时,提升了用户在数值计算和深度学习任务中的效率与便捷性。#54683, #55078, #55576, #56888, #55509, #57093

其他新增 API

新一代中间表示(PIR)

PIR(Paddle Intermediate Representation)对底层的核心概念如 Operation、Attribute 和 Type 等进行了系统性的抽象,为开发者构建了一套灵活且强大的基础组件。此外,通过引入 Dialect 这一概念,飞桨框架能够全面且分层次地管理各模块对中间表示(IR)的需求,并支持开发者根据特定需求定制化扩展 Dialect,从而显著提升了框架的扩展性和适应性。在设计上,PIR 严格遵循 SSA(Static Single Assignment)原则,统一了顶层结构,实现了“算子顺序性”与“计算图语义”的兼容表示,为复杂的计算流程提供了清晰且一致的视图。为了进一步优化大模型的性能,PIR 还提供了一套更加简洁、低成本的 Pass 开发流程,包括 DRR(Declarative Rewrite Rule)和模式重写器(Pattern Rewriter)。同时,内置了一系列丰富且功能完备的 Pass 优化策略,这些策略能够针对大模型的特点进行深度优化,从而为大模型的极致性能提供了强有力支撑。通过这些创新设计和优化手段,PIR 为飞桨框架的高效运行和持续扩展奠定了坚实基础。

新功能

功能优化

性能优化

  1. 新增 fused_attention,fused_dropout_add,fused_gemm_epilogue_pass,fused_linear_param_grad_add_pass,fused_weight_only_linear_pass,fused_softmax_mask_upper_triangle 等优化算子融合类 Pass,提升训练和推理性能。#57557,#58272,#58188,#58401,#59366,#57655,#57360,#56672,#58537,#56247,#59391,#58897,#54933

动转静能力增强

动态图到静态图的转换是深度学习框架中的一项关键技术,它允许开发者在灵活性和训练效率之间找到最佳平衡。本版本飞桨对动转静核心功能进行了全面升级,在飞桨产业级模型库的 700 多个模型中,动转静训练的成功率高达 100%。

新功能

Bug Fix

漏洞修复

动态图分布式能力增强

为了满足大型模型的需求,本版本重点提升了飞桨动态图的分布式计算能力。在通信库、图分析、分布式策略和任务启停等方面进行了多方面的改进,为大型模型训练提供了全面的支持。在性能方面,我们通过减少流水并行 GPU 显存占用、采用 TensorFusion 技术、实现通信计算 overlap 以及减少非必要的数据同步拷贝等方式,进一步提升了训练性能。同时,通过环境变量控制 Optimizer 等方式提高了混合并行调试的灵活性。此外,通过修复相关 Bug,进一步提升了系统的稳定性。

新功能

功能优化

性能优化

Bug Fix

自动并行

本版本对动静统一自动并行(Auto Parallel)编程范式进行了全面的优化,简化了开发者的编程复杂度。开发者无需深入了解手动并行编程范式下的复杂概念和 API 接口,如行切分、列切分等。仅需通过少量的张量切分标注即可完成混合并行模型的构建。框架能够自动推导出所有张量和算子的分布式切分状态,并添加合适的通信算子。同时支持一键动转静进行分布式训练,使开发者能够高效轻松地实现任意混合并行策略,大幅降低了混合并行训练代码的开发成本。

完善了自动并行核心功能

增强动态图半自动并行能力

静态图半自动并行能力增强

AutoTuner

本版本实现基于 Profiling 的并行策略自动搜索和调优工具 AutoTuner,能够在给定模型和硬件资源的条件下,自动将并行策略和优化策略进行组合,并选取有效的组合配置运行实验,从而搜索出大模型训练和推理的最佳配置。此外,AutoTuner 实现了多种剪枝优化策略,包括显存建模等,能够大幅度减少搜索空间和搜索时间。#54460,#54668,#59794,#59727,#59782,#54834,#58127,#56968,#55466,#56939,#58183,#58314,#55499,#59748

算子库

不兼容升级

为了提升飞桨框架的可维护性,删除框架中部分废弃的算子(如 diag_v1, isfinite_v1, pad2d_v1 等),通过飞桨 1.x 版本训练所保存的使用到这些算子的模型将无法在飞桨新版本上进行推理。#57895,#57892,#57898,#57730,#57732,#57810,#57884,#57794,#57926,#57925,#57807,#57808

算子库功能增强

Bug 修复

CUDA

新功能

功能优化

性能优化

Bug Fix

拓展神经网络编译器 CINN 架构能力

在本次更新中,飞桨神经网络编译器 CINN 的重点在于架构的梳理和能力的全面扩展。鉴于大模型对动态 Shape 的需求日益增长,初步探索并实现了在动态 shape 下编译器的有效运行和优化策略。 在架构层面,引入了 Python DSL,这一举措显著提升了 CINN 的开发便捷性和 Debug 能力,使得开发者能够更高效地编写和调试代码。同时,对 Schedule 的逻辑进行了重构,以 GroupSchedule 为主导,从而在算子 Group 层面实现更加通用且稳定的优化策略。为了增强 CINN 的稳定性,探索并引入了强约束组件,这一组件能够有效减少系统中的不确定性和潜在错误。此外,对 CINN 的历史工具类和软件结构进行了系统性的整理、优化和改进,进一步提升了代码的可读性和可维护性。在与飞桨其他组件的整合方面,进一步加强了 CINN 与 PIR、Paddle 的紧密结合,使得编译器与飞桨整体框架更加协调一致。这一改进不仅提升了编译器的性能,还为开发者提供了更加流畅和统一的开发体验。

兼容性升级

改造废弃

新功能

功能优化

性能优化

bug 修复

文档

4. 部署方向(Paddle Inference)

通用推理优化

本版本升级提升了推理引擎在 GPU 和 CPU 上性能和易用性,降低了用户使用成本和线上推理的应用成本。在 GPU 上支持了高性能的多线程异步执行器,各模型推理性能提升 5%~10%;同时支持新版本 TensorRT 和 BF16 推理能力,TensorRT 推理性能和易用性进一步提升;在 CPU 上,支持最新版本的 OneDNN 高性能推理,在 SwinTransformer、FastRCNN 等系列模型上性能大幅提升。

大模型推理优化

实现了生成式大模型的细粒度融合推理优化,该优化方案既保证了高性能的推理能力,又具备良好的可拓展性。用户可以根据需要,灵活运用各种细粒度融合算子和飞桨原生算子,自由组合构建生成式大模型的网络结构,从而实现高效且低成本的推理。此外,我们的方案还支持主流的生成式大模型结构,显著降低了这类模型的推理部署成本,为生成式大模型的高效、低成本落地提供了有力支持。

Paddle-TensorRT 推理优化

改造废弃

Bug Fix

5. 硬件适配

硬件适配方案 (Custom Device)

在本次更新中,新增了对分布式高级策略、自定义算子和自定义融合策略的支持。通过升级分布式通信库,新增了对 MP、GroupShared、PP、SP 和 MOE 等多项高级分布式策略的支持。同时支持厂商灵活接入不同颗粒度的 Transformer 算子库并通过融合 Pass 修改计算图进行性能加速。

新功能

功能优化

Bug Fix

昆仑 XPU

新功能

功能优化

Bug Fix

海光 DCU

Bug Fix

6. 环境适配

采用模块化编译的方式优化了 CMake 代码的逻辑,提升了飞桨全量编译和增量编译的效率,提升了 RD 本地开发效率,同时支持了 Python3.12,CUDA12,Hopper 架构编译,并引入 Clang 等工具全面优化了代码格式。此外,将 C++单测从链接静态库的方式转变为链接动态库,减小编译体积。这些改进措施为用户提供更加流畅、高效地安装和开发体验。

Thanks to Our Contributors

Azure-Tang, zhaoyinglia, From00, JZ-LIANG, xysheng-baidu, SylarTiaNII, kuizhiqing, zhiqiu, FeixLiu, liuzhenhai93, GhostScreaming, pangengzheng, xiaoyewww, wanghuancoder, ForFishes, hitywt, danleifeng, tianshuo78520a, ykkk2333, houj04, lj970926, XiaociZhang, HarperCy, cqulilujia, runzhech, RuohengMa, Caozhou1995, kangguangli, heavyrain-lzy, zyfncg, SigureMo, YuanRisheng, lchdl, LiYuRio, AndSonder, Wennie396, zhangbo9674, liudongxue01, risemeup1, phlrain, winter-wang, yuanlehome, NALLEIN, Liujie0926, yuguo-Jack, gitliuyf, zh794390558, Aurelius84, 6clc, GGBond8488, xiaoguoguo626807, Wong4j, iosmers, xiaoxiaohehe001, LielinJiang, carryyu, Difers, yangxiaoyu14, xuxinyi389, cxxly, gongshaotian, jjyaoao, lijialin03, lxd-cumt, cyber-pioneer, HydrogenSulfate, MayYouBeProsperous, Charles-hit, Patrick-Star125, ScottWong98, huangjiyi, DrRyanHuang, jinyouzhi, BeingGod, Wanglongzhi2001, yangguohao, zyt1024, longranger2, 2742195759, megemini, thisjiang, kevincheng2, zhoutianzi666, Wangzheee, ming1753, tianhaodongbd, freeliuzc, zhenyun-li, MARD1NO, RichardWooSJTU, eee4017, leo0519, csy0225, wwbitejotunn, bukejiyu, jiweibo, iamsonderr, ckl117, ronny1996, zhanglirong1999, LLee233, ZHUI, wangxn12138, zhwesky2010, Courtesy-Xs, zoooo0820, llyyxx0413, Asthestarsfalll, zxcd, pkuzyc, idontkonwher, sneaxiy, hong19860320, ZibinGuo, leolishaohao, MuShangCC, zhupengyang, shentanyue, Travis-Lee, wz1qqx, frank-oops, newway, QingshuChen, zhangyk0314, HandSomeLEEw, Shixiaowei02, zhangyuqin1998, Xing-lil, zhhsplendid, jiahy0825, xinyu-intel, MarioLulab, 0x45f, Tom-Zheng, xingmingyyj, zhangbopd, gouzil, zeroRains, BiynXu, WintersMontagne10335, wuhuachaocoding, GreatV, chenwhql, deepllz, parap1uie-s, ozogxyz, FisherWY, changeyoung98, zhiboniu, YangQun1 dynamicheart, Xreki, liugddx, Lylinnnnn, YSF-A, zzjjay, YanhuiDua, lishicheng1996, USTCKAY, abenmao, cocoshe, HermitSun, ccsuzzh, sanbuphy, enkilee, RedContritio, Liyulingyue, zrr1999, chen2016013, Galaxy1458, chalsliu, mrcangye, XieYunshen, zhiheng-liu, haohongxiang, ZzSean, JamesLim-sy, yuehuayingxueluo, niuliling123, umiswing, sijunhe, littsk, SecretXV, zhurou603, zhangjun, caizejun, yangjianfengo1, vivienfanghuagood, Xinyu302, lizexu123, yghstill, Li-fAngyU, VigiZhang, co63oc, dhanush-2501, ooooo-create, PommesPeter, zeus2x7, akshatvishu, jzhang533, Sekiro-x, gumblex, BernieHuang2008, YibinLiu666, qiuwenbogdut, XavierZXY, MqLeet, zhangting2020, mingxu1067, Ainavo, SSKlearns, yuchen202, silverling, zade23, wenxiaohahaha, NKNaN, Tsaiyue, fsczz, Tomoko-hjf, rhmaaa, zbt78, Hhankyangg, wangzhen38, zhengqiwen1997, engineer1109, onepick, qili93, Rane2021, nemonameless, DesmonDay, RachelXu7, ceci3, lyuwenyu, liuruyan, LokeZhou, shiyutang, lanxianghit, feifei-111, Sahala08, sunzhongkai588, Kaedeharai, Candy2Tang, liyongchao911, whisky-12, InsaneOnion, yoyoIcy, KongAKun, linzeyang, MuhammadNizamani, eltociear, Ligoml, LUZY0726, Windfarer, FlyingQianMM, jeng1220, junelotus, zlsh80826, Vvsmile, Frida-a, TonibMw, guoshengCS, zhink, ZhangYulongg, AlbertVan, fengxin-hello, mjp9527, entired, DanGuge.

相关地址:原始地址 下载(tar) 下载(zip)

查看:2024-01-08发行的版本