PaddlePaddle 3.1.0 Release Note
重要更新
飞桨框架 3.1 版本,针对核心功能自动并行进一步优化打磨,提升易用性和性能表现;同时提供FP8低精度训练支持,提升大模型训练速度提升10-20%;完善硬件扩展机制,降低类 cuda 类硬件适配成本,用户仅需注册kernel;同时对于框架基础能力进行增强,提升框架稳定性。重点更新功能如下:
- 自动并行架构: 自动并行架构进一步打磨,以提高自动并行核心机制易用性和动态图性能。完善了自动并行核心机制,包括新增了多个算子的切分推导规则,支持分布式张量的同一维度被多个mesh维度切分,支持动态图并行策略(PP,CP,SEP,TP-CONV)等。同时,对动态图自动并行系统地做了性能优化,在 Llama2 Qwen Baichuan 等系列模型上性能基本持平手动并行的性能。
- 低精度训练: 基于blockwise 的fp8 gemm算子,支持低精度训练,训练精度媲美BF16,大模型训练速度提速 10-20%。
- 异构多芯适配: 提供类 cuda 算子复用机制,仅需注册即可使用对应 kernel。
- 框架稳定性增强: 系统修复算子在0-Size 和大维度情况计算结果错误。
1. 用户体验升级
API功能增强、Bug修复与改进,旨在提升用户体验和API的易用性。新增了paddle.randn_like API,修复了多个API的功能缺陷,并增强了对复数类型和0-Size Tensor的支持。文档和代码也进行了相应的更新和优化,以提升整体的准确性和专业性。
新特性
- 新增
paddle.randn_likeAPI。#72492
Bug 修复
- 修复
tensordotAPI 输入输出类型不一致问题。#72139 - 修复
atleastAPI输出是Tensor列表时的问题。#73102 - 修复
nonzerAPI问题。#72003 - 修复
dualpipev中的内存泄漏问题。#72070 - 修复
softmax计算溢出问题。#71935 - 修复
take_along_axis中在broadcast=False时的形状检查问题。#72436 - 修复
maximum、minimum对Nan输入的不正确问题。#71933 - 修复
visit_type问题。#72782
功能增强
- 增强API的功能,提升API易用性,改善用户体验。包括但不限于扩展API支持的数据类型,API参数检查,纠正API参数默认值,完善API返回值等。#71997, #72911, #72985, #73240, #72927, #73451, #73416, #73420, #73347, #73050, , , , , ,
文档
开发者相关
废弃代码清理
2. 基础执行架构
支持FP8矩阵运算,提升模型训练效率,同时对多个模型进行增强,提升稳定性; 提供是C_ops的方式调用反向接口,方便显存优化和功能实验。
新特性
- 支持FP8矩阵乘法加速,提升计算性能与精度适配能力。 #73092
- 0-size Tensor 执行支持。 #71829, #72263, #72244, #72814
- DeepEP支持。 #73495
- 默认开启CINN后端。 #71838
- 支持SOT相关执行。 #72472, #72559, #72466, , , , , ,
Bug 修复
- 性能优化与稳定性:优化训练稳定性,增强Python 3.11+支持,提升CINN编译器在动态图模式下的自动启用逻辑,修复动态shape推断与梯度回传问题,优化GPU内核执行效率(如for_range、常量折叠),改进NPU内存拷贝与上下文管理,提升大规模模型训练性能与硬件利用率。 #71777, #71837, #71834, #71950, #71960, #72103, #70652, #72313, #72405, #72581,
功能增强
-
Paddle API 0-size 机制建设。 #72721, #72756, #72790, #72806, #72764, #72786, #72853, #72826, #72851, #72928, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
性能提升
- SOT相关:通过优化Guard条件机制、增强动态shape处理能力及新增no_grad支持等改进,提升了执行效率并扩展了功能特性,同时优化了代码结构与性能表现。 #70362。 #70154, #71748, #72004, #72159, #72174, #71994, #72250, #72285, #72322, , , , , , , , , , , , ,
废弃
- 代码清理:清理 Python 3.8 支持声明,并完成了相关代码清理、依赖精简及语法现代化更新,以优化代码维护性与兼容性。 #71815, #72802, #72856, #72854, #72855, #72873, #72870, #72868, #72891
开发者相关
- 优化了CINN后端集成与动态 shape 处理逻辑,通过代码结构重构与测试强化提升了框架稳定性,并新增调试日志功能以增强可维护性。 #71817, #71896, #71984, #72067, #72165, #72207, #72235, #72273, #72326, #72400, , , ,
其他
3. 编译器架构
优化编译器性能和增加稳定性
性能优化
- 支持训练场景的Layout自动转换优化。#71891
- 后端新增了argmin、argmax、arange等算子的Kernel编译优化。#71956, #72598
- 支持矩阵乘的融合优化。#72846
- 优化部分算子 Kernel 计算性能。#72871
Bug修复
修复各类场景下的一些处理逻辑 Bug。#71813, #71886, #71927, #71915, #71946, #71949, #71955, #71942, #71939, #71973, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
4. 自动并行架构
在3.1 版本中,我们对自动并行架构进一步打磨,以提高自动并行易用性和动态图性能。具体地,我们完善了自动并行核心机制,包括新增了多个算子的切分推导规则,支持分布式张量的同一维度被多个mesh维度切分,支持动态图并行策略(PP,CP,SEP,TP-CONV)等。同时,对动态图自动并行系统地做了性能优化,在Llama等系列模型上性能基本持平手动并行的性能。
功能改进
-
支持分布式张量的同一维度被多个mesh维度切分。 #73233
-
支持自动并行通信拓扑描述ProcessMesh转换为手动并行通信组。 #72052
-
支持任意可序列化python object的send/recv。 #72098
-
动态图并行策略补齐
性能优化
- 支持分组切分并行的tensor_fusion优化策略和overlap优化策略。 #72551, #72902, #73142, #71785
- 优化reshard模块,以降低通信开销。#71969, #73024, #71868
- 优化multiply 的切分推导规则,以降低通信开销。#73408
- 优化分布式切分状态为 Partial 时反向通信,以降低通信开销。 #73236
- 梯度更新时通信融合优化。 #72120、
Bug 修复
- 修复虚拟流水线并行策略在H卡上通信hang的bug。#71104, #73470
- 修复 save/load 的bug。 #72023
- 修复 linear_fused_grad_add 策略在动态图模式下跑不通的bug。 #72708
- 修复 fused_rms_norm 算子跑不通和精度bug。 #72663
- 修复 expand 算子切分推导规则的bug。#73154
其他
- 清理废弃代码,以便于维护代码。 #71814, #72538
- 新增API local_map,将分布式张量传递给为普通张量编写的函数。 #71804
- 为算子 fused_linear_param_grad_add 增加检查。#72483
5. 算子机制
新特性
- 梯度与自动微分优化:初步支持put_along_axis及repeat_interleave操作的双重梯度计算,提升复杂算子在自动微分场景下的数值稳定性,实现masked_fill操作的算子分解。 #72789, #73056, #73225
- 运算符机制扩展:新增对__radd__和__rmul__的自定义支持,增强框架对非对称运算符的重载能力。 #73119
- FP8模块支持及算子开发:新增FP8块量化GEMM支持,引入多个融合算子,为混合专家(MoE)模型提供高效算子级实现,提升训推性能。 #73228, #73285, #73133, #73364, #73520,
Bug 修复
- 梯度与自动微分稳定性提升:修复部分反向算子梯度计算错误,增强自动微分场景下的数值稳定性与功能正确性。 #71716, #72299, #72358, #73037, #73140, #73185
- 数值精度与溢出防护:解决数值溢出、精度损失及大 tensor 溢出问题,保障低精度计算与大张量操作的可靠性。 #72584, #72608, #72681, #72639, , ,
功能增强
-统一动态图与静态图模式下量化API的使用方式,简化量化模型开发流程, #73100
性能提升
- 优化gelu算子分解性能,提升计算效率。 #72812
其他
- fluid 算子规范化与退场, #71789, #71818, #71808, #71860, #71806, #72011, #72043, #72034, #72047, #72056, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
6. 框架性能优化
新特性
支持sharding_overlap的acc_steps可配置。 #72395
Bug 修复
- 修复算子
c_softmax_with_cross_entropy_grad的inplace问题。 #72366
功能增强
- 性能优化与加速:启用深度卷积的cuDNN支持,提升卷积运算效率。更新池化操作策略并优化permute内存操作,减少CUDA内存占用。优化打印速度,加速调试与日志输出流程。 #71796, #73442, #73563
- 功能增强与操作支持:新增masked_fill操作及布尔索引优化,增强张量掩码处理能力。实现index_elementwise操作,支持基于索引的元素级运算。添加池化与reshape执行策略,提升模型操作的灵活性。 #72788, #72942
- 错误修复与稳定性提升:修复fused_rms_norm在SPMD并行模式下的部分状态支持问题。修正slice操作中输出维度计算及IndexGetStride的索引错误,确保计算正确性。 #72118, #72223, #73184, #73237,
性能提升
- Faster Guard适配:减少SOT端到端链路开销。 #71900, #71979, #72081, #72327, #72564, #72823
- 性能优化与加速:优化算子调度策略。升级Flash Attention至v3版本,减少计算开销。修复模型性能瓶颈,提升推理与训练速度。 #71937, #71828, #71461, #72039, , , , , ,
功能增强与修复:- 优化算子索引和内核调度逻辑。 #72625, #72741, #73082, #73501
- 模型与操作支持:支持NHWC格式的深度卷积,适配更多硬件内存布局。 #72121
7. 硬件适配
优化硬件机制,提供类cuda硬件kernel复用方案。
新特性
以customdevice接入方案为基础,增加低成本支持类cuda后端硬件的支持方案。类cuda后端可以以插件式方式接入paddle,低成本复用paddle中多数nv生态中的cuda kernel,且可以与paddle框架中的特性feature升级解耦,大大降低硬件后端接入与迭代成本,提升用户接入意愿,形成paddle与硬件厂商共建生态的良好合作关系。 #72604, #72668, #72758, #72865, #72910, #73033, #73145, #73281, #73079
补充XPU 基础能力:XPU 环境下增加kernel ,扩展数据类型,补充分支 #71424, #71809, #71594, #71779, #71756, #71573, #71883, #71954, #71931, #72280, , , , , , , , , , ,
DCU kernel 扩展数据类型 #73129
Bug 修复
修复xpu执行问题 #71852, #71966, #72005, #71908, #72431, #72519, #72734, #72763, #72762, #72890, , , , , , , , , , , , , , , , , ,
8. 安装环境适配
优化了框架的稳定性和跨平台兼容性,修复了不同平台上的编译安装失败问题;升级CUDA等关键依赖,进一步优化CI/CD流程,提升构建速度并增强系统整体稳定性;停止对Python3.8环境下的编译安装维护。
Bug 修复
- 修复使用clang17编译第三方库时的编译错误。#72524
- 修复使用CUDA12.9时的编译问题。 #72808, #72841, #72978, #73360
- 修复使用GCC13.3时的编译问题。#73144
- 修复WITH_PIP_CUDA_LIBRARIES=ON时的编译问题。#72907
- 修复WITH_NVSHMEM=ON时的编译问题。#73368
功能增强
开发者相关
- 编译安装维护与升级。#71911, #73005
- 镜像维护与更新。#71065, #71821
- Windows平台符号的导入导出更新。#72497, #72498, #72500
- Windows平台支持CUDA12.8。#72433
- CI维护与升级。#72443, #72836, , , , , , , , , ,
废弃
- 停止支持Python3.8环境下的编译。#72827
9. 贡献者名单
0x3878f, A-nnonymous, AndSonder, ApricityXX, aquagull, author, baoqiwen, BeingGod, blacksheep-Aristotle, BoShen5, bukejiyu, cangtianhuang, carryyu, chang-wenbin, changeyoung98, chen2016013, ckl117, co63oc, cqulilujia, crashbussy, cszdrg, Cutelemon6, cyy536, DanielSun11, danleifeng, datutu-L, deepllz, Dmovic, DrRyanHuang, dynamicheart, Eddie-Wang1120, eggman-1024, emmanuel-ferdman, Enigmatisms, enkilee, fangfangssj, feixi21, FeixLiu, ForFishes, Function-Samuel, ggggxm, GITD245, Glencsa, GoldenStain, gongshaotian, gouzil, gzy19990617, hanlintang, Hongqing-work, houj04, huangjiyi, hxzd5568, HydrogenSulfate, jzhang533, LCStayingdullCircuit, leon062112, lifulll, linkk08, LittleHeroZZZX, liufengwei0103, Liujie0926, liuruyan, lixinqi, LiYuRio, lizexu123, lizhenyun01, lj970926, lshpku, megemini, mikethegoblin, ming1753, mzj104, NKNaN, ooooo-create, pesionzhao, phlrain, pkuzyc, PolaKuma, Qin-sx, RichardWooSJTU, risemeup1, runzhech, RuohengMa, sasaya123, shanjiang7, SigureMo, sneaxiy, swgu98, SylarTiaNII, tianhaodongbd, tianshuo78520a, timminator, tizhou86, umiswing, waliwali777, wanghuancoder, Waynezee, Wennie396, xiaoguoguo626807, XieYunshen, Xing-lil, xkkkkkk23, Xreki, xuxinyi389, Yeenyeong, yongqiangma, YqGe585, yuanlehome, YuanRisheng, yulangz, yuwu46, zeroRains, zhangbo9674, zhanghonggeng, zhangting2020, ZhangX-21, zhangyk0314, zhangyuqin1998, zhink, zhiqiu, zhouquan32, zhoutianzi666, zhupengyang, zrr1999, zty-king, zyfncg