3.1 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 的支持。文档和代码也进行了相应的更新和优化,以提升整体的准确性和专业性。
Bug 修复¶
修复
tensordot
API 输入输出类型不一致问题。#72139修复
atleast
API 输出是 Tensor 列表时的问题。#73102修复
nonzer
API 问题。#72003修复
dualpipev
中的内存泄漏问题。#72070修复
softmax
计算溢出问题。#71935修复
take_along_axis
中在broadcast=False
时的形状检查问题。#72436修复
maximum
、minimum
对 Nan 输入的不正确问题。#71933修复
visit_type
问题。#72782修复
gather_scatter_functor
中的 int32 越界问题。#72905修复
Bernoulli
的 inplace 实现。#73271修复
moe_permute
、moe_unpermute
问题。#73365修复
ast.parse
对 pyi 文件语法检查问题。#71872修复复数除法问题。#73331
功能增强¶
增强 API 的功能,提升 API 易用性,改善用户体验。包括但不限于扩展 API 支持的数据类型,API 参数检查,纠正 API 参数默认值,完善 API 返回值等。#71997, #72911, #72985, #73240, #72927, #73451, #73416, #73420, #73347, #73050, #73246, #73123, #73336, #73062, #72201, #72190
增强 API 对复数类型的支持。#72279, #72308, #72518, #72391, #72239, #72286, #72169, #72577, #72619
增强 API 对 0-Size Tensor 的支持。#72570, #72692, #72138, #72410, #72565, #72262
修改对 API 代码中的拼写错误,以提高整体的准确性和专业性。#71780, #71786, #72093, #72113, #72241, #72237, #72590, #72591, #72769, #72858, #73045, #72195, #72627, #72657, #73162, #73402, #72208, #72659, #72658, #72660, #72661, #72656
通信优化减少显存峰值。#72035
开发者相关¶
2. 基础执行架构¶
支持 FP8 矩阵运算,提升模型训练效率,同时对多个模型进行增强,提升稳定性; 提供是 C_ops 的方式调用反向接口,方便显存优化和功能实验。
新特性¶
Bug 修复¶
性能优化与稳定性:优化训练稳定性,增强 Python 3.11+支持,提升 CINN 编译器在动态图模式下的自动启用逻辑,修复动态 shape 推断与梯度回传问题,优化 GPU 内核执行效率(如 for_range、常量折叠),改进 NPU 内存拷贝与上下文管理,提升大规模模型训练性能与硬件利用率。 #71777, #71837, #71834, #71950, #71960, #72103, #70652, #72313, #72405, #72581, #73418
大 Tensor 支持扩展:扩展算子对超大尺寸 Tensor 的支持,包括数学运算(lerp/mean/bmm/trapezoid)、张量操作(arg_min_max/diag/prelu)、填充(pad)、比较(allclose/isclose)及融合算子(softmax_mask_fuse)等,解决混合精度训练中的兼容性问题。 #71916, #71970, #72516, #72517, #72638, #72652, #73046, #73093, #73136, #72679, #73174, #73198, #73121, #73096, #73261, #73201, #73291, #73373, #73318, #73436, #72705, #72276, #73135, #73304, #73381, #72712, #72717, #72634, #72562, #72628, #72706, #72831, #72888, #72753, #72931, #73021, #73064, #73069, #73153, #73118, #73252, #73253, #73262, #73259, #73288, #73105, #73275, #73284, #73110, #73335, #73342, #73447, #73460, #73194
0-Size Tensor 问题修复:修复 0-Size Tensor 导致的计算异常,覆盖池化(max_pool1d/lp_pool1d)、排序(matrix_rank)、统计(std/nanmedian)及元素级操作(elementwise compare)等,确保极端输入场景下的数值稳定性与 API 一致性。 #71961, #72017, #72785, #73214, #73263, #73267, #73280, #72444, #72437, #72460, #73090, #73516, #72807, #72799, #72800, #72809, #73497
API 功能增强与兼容性:新增对 Python 标准库类型(dataclasses)的支持,扩展 API 数据类型兼容性(bfloat16 参数创建、-1 维自动推断),修复 NumPy API 交互错误,优化 BatchNorm 内存布局。 #72059, #72283, #72451, #72512, #72618, #72976, #73084, #73205, #73250, #73111, #73260, #72094, #71844, #71357
内存管理与错误修复:解决内存越界(set_value/nonzero)、空指针(data nullptr)、CUDA graph 分配失败等高危问题,修复梯度裁剪(clip_grad)、张量赋值(assign)、广播(broadcast)等核心操作的内存泄漏与计算错误,优化 NPU 异步执行与预测器 GIL 释放逻辑,提升系统健壮性。 #71895, #72101, #72133, #72149, #72176, #72314, #72256, #72757, #72749, #72792, #72815, #72819, #72958, #73023, #73103, #73014, #73137, #73256, #73211, #73251, #73210, #73415, #73206, #71983, #72485, #72561
其他重要修复:修复科学计算、save/load 等模块缺陷,改进 Slice 算子内核配置,优化动态 shaoe 推断的回退策略,完善异常抛出与类型检查逻辑等。 #71810, #72246, #72378, #72467, #72635, #72751, #72044, #72051, #73231, #73109
SOT 相关问题修复, #71932, #71971, #72194, #72288, #72306, #72367, #72495, #72522, #72704, #72631, #72737, #73067, #73030, #73059, #73282, #73511, #73526, #73549, #73515
功能增强¶
Paddle API 0-size 机制建设。 #72721, #72756, #72790, #72806, #72764, #72786, #72853, #72826, #72851, #72928, #72912, #72922, #72924, #72887, #72921, #72906, #72895, #72821, #72914, #72936, #72943, #72694, #72919, #72940, #72820, #72934, #72975, #72872, #72984, #72988, #72972, #72977, #72937, #73086, #73042, #73017, #73044, #73077, #73108, #73027, #72970, #73008, #72996, #73165, #73166, #73170, #73122, #73204, #73207, #73186, #73197, #73168, #73172, #73125, #73181, #73270, #73028, #73094, #73180, #73276, #73333, #73341, #73299, #73346, #73361, #73375, #73152, #73377, #73355, #73382, #73385, #73386, #73352, #73387, #73401, #73384, #73450, #73437, #73503, #73507, #73477, #73513, #73525, #73528, #73517, #72898, #72880, #72864, #72993, #72954, #72866, #72878, #72889, #72861, #72837
SOT 相关提升:增强了功能(如 NumPy 互操作性和 super 支持)、改进训练稳定性,修复多个问题以提升代码健壮性, #71763, #71666, #71858, #71865, #72474, #72154, #72784, #72956, #73038, #73066, #73287, #73278, #73332, #73372, #73412, #73407, #73506
代码风格重构:通过代码重构及跨平台内核行为统一,提升代码质量与可维护性,并新增了 YAML 格式预提交检查工具, #72216, #72360, #72816, #72969, #73106, #72825, #73150, #73151, #73158, #73101, #73326, #72580, #72424
Paddle CPU/GPU Kernel 精度问题推全。 #72879, #72894, #73012, #72973, #73018, #72965, #73128, #73229, #72992, #73344, #73274, #73295, #73293, #73317, #73320, #73454, #73492, #73535
slice 问题修复:修复了 slice 相关问题,包括索引逻辑、性能优化等, #72644, #72676, #72838, #72966, #73095, #72840, #73112, #73367, #73390, #73307, #73465, #73362, #72733, #72886
其他重要提升:包括动态 shape 支持、修复 meshgrid 并增加单元测试、升级 CUB 至 2.1.0 版本、改进 FP8 数值处理、优化 CUDA 图共享池机制、移除 ShadowFeedOp 以简化数据流、增强 PIR 模型保存/加载的版本兼容性、修复 flip 和 reverse 内核问题、改进 paddle.angle 的 NaN 传播逻辑、引入异步 GC 检查机制、优化 Dy2St 的 Scope 无锁接口、清理未使用的第三方依赖(absl),并进一步推进 PHI 与 Fluid 的解耦,提升框架的稳定性、性能和扩展性。 #72356, #72380, #72633, #72794, #72917, #72920, #72945, #72620, #73011, #73051, #73052, #73075, #73176, #73191, #73337, #73311, #73173, #73239, #73448, #73478, #73522, #73369
性能提升¶
废弃¶
开发者相关¶
3. 编译器架构¶
优化编译器性能和增加稳定性
性能优化¶
Bug 修复¶
修复各类场景下的一些处理逻辑 Bug。(#71813, #71886, #71927, #71915, #71946, #71949, #71955, #71942, #71939, #71973, #72001, #72020, #72014, #72021, #72027, #72061, #72025, #72095, #72108, #72132, #71985, #72106, #72140, #72167, #72037, #72178, #72143, #72175, #72191, #72213, #72189, #72214, #72166, #72180, #72284, #72267, #72348, #72332, #72307, #72353, #72204, #72457, #72426, #72536, #72541, #72365, #72621, #72630, #72669, #72682, #72732, #72811, #72941, #72795, #73536)
4. 自动并行架构¶
在 3.1 版本中,我们对自动并行架构进一步打磨,以提高自动并行易用性和动态图性能。具体地,我们完善了自动并行核心机制,包括新增了多个算子的切分推导规则,支持分布式张量的同一维度被多个 mesh 维度切分,支持动态图并行策略(PP,CP,SEP,TP-CONV)等。同时,对动态图自动并行系统地做了性能优化,在 Llama 等系列模型上性能基本持平手动并行的性能。
功能改进¶
支持分布式张量的同一维度被多个 mesh 维度切分。 #73233
支持自动并行通信拓扑描述 ProcessMesh 转换为手动并行通信组。 #72052
支持任意可序列化 python object 的 send/recv。 #72098
动态图并行策略补齐
新增以下算子的切分推导规则
min
,min_grad
#72269bitwise_or
,atan2
,fmax
,fmin
,reciprocal
#72310argmin
,abs
,cosh
#72264mean_all
,mean_all_grad
#72479topk
,topk_grad
#72499argsort
#72388round
,mish
,elu
,selu
,celu
,stanh
,softplus
,softshrink
,thresholded_relu
,logit
,nonzero
#72312unique ops
#72824put_along_axis
#72766round_grad
,trunc_grad
,ceil_grad
,floor_grad
,poisson_grad
#72677log_softmax
,cummax
,cummin
#72720unary
#72177unary_grad
#72260index_select
,index_select_grad
#72727roll
,roll_grad
#72740empty_like
#73169roi_align
,roi_align_grad
#72925expand_as
,expand_as_grad
#73107fused_gemm_epilogur
#73126label_smooth
,label_smooth
#72845group_norm
,group_norm_grad
#72946instance_norm
,instance_norm_grad
#72938batch_norm
,sync_batch_norm
#72918reduce_any
#73175fused_gemm_epilogue_rule
#73494
性能优化¶
Bug 修复¶
5. 算子机制¶
新特性¶
梯度与自动微分优化:初步支持 put_along_axis 及 repeat_interleave 操作的双重梯度计算,提升复杂算子在自动微分场景下的数值稳定性,实现 masked_fill 操作的算子分解。 #72789, #73056, #73225
运算符机制扩展:新增对__radd__和__rmul__的自定义支持,增强框架对非对称运算符的重载能力。 #73119
FP8 模块支持及算子开发:新增 FP8 块量化 GEMM 支持,引入多个融合算子,为混合专家(MoE)模型提供高效算子级实现,提升训推性能。 #73228, #73285, #73133, #73364, #73520, #73531
Bug 修复¶
梯度与自动微分稳定性提升:修复部分反向算子梯度计算错误,增强自动微分场景下的数值稳定性与功能正确性。 #71716, #72299, #72358, #73037, #73140, #73185
数值精度与溢出防护:解决数值溢出、精度损失及大 tensor 溢出问题,保障低精度计算与大张量操作的可靠性。 #72584, #72608, #72681, #72639, #73245, #73359, #72456
算子逻辑与框架对齐:对齐算子运算逻辑,修复部分算子输入异常等问题,其他重要修复:添加检查,保障框架功能正确性。 #72282, #71863, #72650, #72843, #73070, #73141, #73203, #73350, #73440, #73539, #73339
CUDA 内核与硬件适配优化:支持 NVIDIA SM90 架构,修复溢出等问题,移除冗余 CUDA 错误检查,提升 GPU 计算效率与新硬件适配性。 #72507, #72849, #72959, #73130, #73489
其他¶
fluid 算子规范化与退场, #71789, #71818, #71808, #71860, #71806, #72011, #72043, #72034, #72047, #72056, #72087, #72086, #72083, #72079, #72078, #72076, #72057, #72077, #72096, #72085, #72092, #72110, #72127, #72111, #72126, #72135, #72112, #72131, #70358, #72125, #72171, #72160, #72188, #72197, #72212, #72211, #72184, #71897, #72219, #72218, #72074, #70330, #70274, #72295, #72220, #72343, #72303, #72296, #72338, #70001, #70348, #70329
6. 框架性能优化¶
功能增强¶
性能优化与加速:启用深度卷积的 cuDNN 支持,提升卷积运算效率。更新池化操作策略并优化 permute 内存操作,减少 CUDA 内存占用。优化打印速度,加速调试与日志输出流程。 #71796, #73442, #73563
功能增强与操作支持:新增 masked_fill 操作及布尔索引优化,增强张量掩码处理能力。实现 index_elementwise 操作,支持基于索引的元素级运算。添加池化与 reshape 执行策略,提升模型操作的灵活性。 #72788, #72942
错误修复与稳定性提升:修复 fused_rms_norm 在 SPMD 并行模式下的部分状态支持问题。修正 slice 操作中输出维度计算及 IndexGetStride 的索引错误,确保计算正确性。 #72118, #72223, #73184, #73237, #73054
性能提升¶
Faster Guard 适配:减少 SOT 端到端链路开销。 #71900, #71979, #72081, #72327, #72564, #72823
性能优化与加速:优化算子调度策略。升级 Flash Attention 至 v3 版本,减少计算开销。修复模型性能瓶颈,提升推理与训练速度。 #71937, #71828, #71461, #72039, #72228, #72225, #72623, #72666, #73147, #73393
并行计算:优化自动并行中的网格重分片策略,实现 Sharding Stage 的通信融合并优化逻辑,提升分布式训练稳定性,降低分布式训练通信开销。 #71969, #72120, #73279, #73406
功能增强与修复:- 优化算子索引和内核调度逻辑。 #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#72361#72406#72528#72752#72852#72982#73357#73414#73464#73234#71776
DCU kernel 扩展数据类型 #73129
8. 安装环境适配¶
优化了框架的稳定性和跨平台兼容性,修复了不同平台上的编译安装失败问题;升级 CUDA 等关键依赖,进一步优化 CI/CD 流程,提升构建速度并增强系统整体稳定性;停止对 Python3.8 环境下的编译安装维护。
Bug 修复¶
开发者相关¶
Windows 平台支持 CUDA12.8。#72433
CI 维护与升级。#72443, #72836, #72563, #72653, #72477, #72778, #72960, #73289, #73422, #73514, #72748,
Github Action CI 建设。#71738, #70602, #71958, #71959, #71992, #72013, #72153, #72031, #72141, #72104, #72182, #72342, #72352, #72249, #72068, #72441, #72392, #72446, #72435, #72515, #72514, #72396, #72547, #72345, #72236, #72586, #72537, #72609, #72632, #72642, #72673, #72647, #72696, #72771, #72711, #72680, #72774, #72813, #72804, #72903, #72900, #72932, #72967, #72991, #72115, #73242, #72801, #73433, #73391, #73456, #73376, #73453, #73481, #73546, #73446, #72744
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