重要更新
飞桨框架 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_like
API。#72492
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
- 修复与TensorRT集成相关的问题。#72302, #72278
功能增强
- 增强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
文档
开发者相关
- 代码风格检查规则更新。#72896, #73179, #73060, #72553, #72915, #72916, #73338, #72935, #72325, #72935
- 代码变量命名更新与代码迁移。#73048, #73148, #73149, #73264, #73159, #73124, #73160, #73161, #73374, #73395, #73076, #73163, #73255
- LodTensor退场。#71968, #72152, #72145
废弃代码清理
- 无用代码清理。#71795, #71792, #71794, #71793, #72265, #73167, #73115, #73049, #72162, #72321, #72336, #72952, #72828
2. 基础执行架构
支持FP8矩阵运算,提升模型训练效率,同时对多个模型进行增强,提升稳定性; 提供是C_ops的方式调用反向接口,方便显存优化和功能实验。
新特性
- 支持FP8矩阵乘法加速,提升计算性能与精度适配能力。 #73092
- 0-size Tensor 执行支持。 #71829, #72263, #72244, #72814
- DeepEP支持。 #73495
- 默认开启CINN后端。 #71838
- 支持SOT相关执行。 #72472, #72559, #72466, #73269, #73329, #73405, #73399, #73424, #73509
- 支持动转静。 #73417, #73081
- 新增支持stride机制的kernel。 #73053
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 并增加单 8000 元测试、升级 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
性能提升
- SOT相关:通过优化Guard条件机制、增强动态shape处理能力及新增no_grad支持等改进,提升了执行效率并扩展了功能特性,同时优化了代码结构与性能表现。 #70362。 #70154, #71748, #72004, #72159, #72174, #71994, #72250, #72285, #72322, #72272, #72417, #72438, #72462, #72463, #72503, #72501, #72521, #72509, #72544, #73469, #73471, #73555
废弃
- 代码清理:清理 Python 3.8 支持声明,并完成了相关代码清理、依赖精简及语法现代化更新,以优化代码维护性与兼容性。 #71815, #72802, #72856, #72854, #72855, #72873, #72870, #72868, #72891
开发者相关
- 优化了CINN后端集成与动态 shape 处理逻辑,通过代码结构重构与测试强化提升了框架稳定性,并新增调试日志功能以增强可维护性。 #71817, #71896, #71984, #72067, #72165, #72207, #72235, #72273, #72326, #72400, #72381, #72560, #72783, #73530
其他
3. 编译器架构
优化编译器性能和增加稳定性
性能优化
- 支持训练场景的Layout自动转换优化。#71891
- 后端新增了argmin、argmax、arange等算子的Kernel编译优化。#71956, #72598
- 支持矩阵乘的融合优化。#72846
- 优化部分算子 Kernel 计算性能。#72871
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
性能优化
- 支持分组切分并行的tensor_fusion优化策略和overlap优化策略。 #72551, #72902, #73142, #71785
- 优化reshard模块,以降低通信开销。#71969, #73024, #71868
- 优化multiply 的切分推导规则,以降低通信开销。#73408
- 优化分布式切分状态为 Partial 时反向通信,以降低通信开销。 #73236
- 梯度更新时通信融合优化。 #72120、#72745
- 优化 gelu 切分推导,以降低通信开销。 #73279
- 优化 fused_rms_norm 在输入有 Partial 状态时的切分推导规则,以减少通信和计算开销。 #73054
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, #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
功能增强
-统一动态图与静态图模式下量化API的使用方式,简化量化模型开发流程, #73100
性能提升
- 优化gelu算子分解性能,提升计算效率。 #72812
其他
- 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. 框架性能优化
新特性
支持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, #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
Bug 修复
修复xpu执行问题
#71852, #71966, #72005, #71908, #72431, #72519, #72734, #72763, #72762, #72890, #72867, #73071, #73004, #72726, #73113, #73127, #73025, #73301, #73292, #73272, #73305, #73356, #73438, #72041, #72275, #72787, #73504, #73290
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, #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
废弃
- 停止支持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