PaddlePaddle 3.1.1 现已发布。3.1.1版本围绕大模型训练全流程进行了系统性强化,通过体系化修复大模型场景下算子数值精度和功能等底层稳定性问题,结合API的日志系统规范化与单元测试全覆盖,显著提升大模型训练的正确性和稳定性;性能层面,在提高部分关键框架API和FP8场景下的量化计算效率的同时增强分布式训练场景下FP8量化和流水线并行效率,大幅提升训练吞吐。
扩展自动并行架构的切分推导覆盖范围;推理部署提高兼容性的同时进一步增强EP并行推理能力;整体上在保持API兼容性的基础上构建出更稳健、高效的大模型研发技术底座。
- 算子与执行体系正确性、稳定性增强:系统化修复0-size、大shape Tensor、CPU/GPU 精度一致性问题,保障大模型训练正确性、稳定性。
- FP8相关算子优化: 进一步提升FP8相关量化和计算融合算子的性能,并调整了部分算子的sm使用量,提升FP8混合精度训练效率
- 大模型训练更稳更快:系统性优化了Slice相关场景的执行效率,大幅提升Slice相关操作性能;修复流水线场景下的参数同步问题、新增Sharding场景的FP8参数量化能力和DualPipe下的极致通信计算重叠能力,保障并行训练稳定高效。同时增强自动并行架构下的切分推导能力增强自动并行切分效率。
- 推理部署:新增支持safetensors加载功能,EP并行方面对internode_ll_two_stage进行了功能增强助力进一步提升推理效率。
1. 用户体验升级
在3.1版本中,主要对大模型场景下常用的的多个API进行了补充,并且系统化修复了API日志以及部分代码实现问题。
新特性
- 新增API
paddle.device.device_guard
,动态图的设备切换上下文管理器。#73964 - 新增API
paddle.Tensor.bool
、paddle.Tensor.float16
、paddle.Tensor.half
、paddle.Tensor.bfloat16
、paddle.Tensor.float32
、paddle.Tensor.float
、paddle.Tensor.float64
、paddle.Tensor.double
、paddle.Tensor.int8
、paddle.Tensor.char
、paddle.Tensor.uint8
、paddle.Tensor.byte
、paddle.Tensor.int16
、paddle.Tensor.short
、paddle.Tensor.int32
、paddle.Tensor.int
、paddle.Tensor.int64
、paddle.Tensor.long
、paddle.Tensor.complex64
、paddle.Tensor.complex128
、paddle.Tensor.cfloat
、paddle.Tensor.cdouble
,支持灵活的数据类型切换。#74416 - 新增API
paddle.msort
,支持多维数组的排序。#74421 - 新增API
paddle.ravel
、paddle.Tensor.ravel
,支持对Tensor进行拉平。#74439,#74454 - 新增API
F.dropout1d
,支持对Tensor沿指定维度进行随机丢弃。#74444 - 新增API
paddle.Tensor.type_as
。#74459 - 新增API
paddle.Tensor.mul_
、paddle.autograd.Function
、paddle.argwhere
。#74493 - 新增API
paddle.nn.MultiLabelMarginLoss
。#73538 - 新增API
paddle.is_autocast_enabled
、paddle.get_autocast_gpu_dtype
。#74441 - 新增Tensor属性
paddle.Tensor.requires_grad
。#74491
问题修复
- 修复
Tensor.place
之间比较的问题。#73532 - 修复
F.adaptive_log_softmax_with_loss
的问题。#73554 - 修复
Tensor.__radd__
、Tensor.__rmul__
相关问题。#73833 - 修复API的 0-size 相关问题。#73874
- 修复
_DataLoaderIterMultiProcess
、_DataLoaderIterSingleProcess
的问题。#73931 - 修复
paddle.nanmedian
的问题。#74263 - 修复
paddle.eigh
的问题。#73349 - 修复
paddle.arange
的问题。#74159
功能增强
paddle.cumprod
支持设置dim为None。#74106paddle.zeros/zeros_like/ones/ones_like/eye/empty/empty_like/full/full_like
支持device、dtype、requires_grad等更多参数。#74477paddle.ones
支持shape为可变参数的用法。#74494F.gelu
的approximate参数支持字符串格式。#74485F.scaled_dot_product_attention
支持输入为3D。#73804
文档
- 修复文档相关的问题。#73640,#74356
其他
-
代码风格相关的优化。#73659,#73661,#73660,#74001,#74145,#73863,#73655,#73724,#73764,#73849
-
代码实现相关的优化,文件命名优化,typo修复,MKLDNN相关的优化。#74132,#73626,#73641,#73587,#73801,#73812,#73827,#73845,#73841,#73859,#73858,#73840,#73826,#73825,#73824,#73887,#73949,#73823,#73218,#73948,#74479,#74233,#74513,#74518,#74516,#74178,#74166,#74165,#74163,#74174,#74164,#74162,#74208,#74180,#74205,#74288,#74232,#74299,#74244,#74230,#74314,#74392,#74424,#74417,#74536,#74473,#74135,#74245,#74327,#74325,#74326,#74315,#74385,#74395,#74398,#74393,#74367,#74391,#74436,#74410,#74475,#74517
-
单测相关的优化,单测问题修复。#73664,#73723,#73725,#73728,#73731,#73726,#73786,#73727,#73721,#73798,#73791,#73784,#73788,#73794,#73822,#73839,#73843,#73790,#73905,#73903,#73902,#73900,#73909,#73917,#73906,#73904,#73947,#73944,#73945,#73969,#74068,#74082,#74399,#74423,#74458,#74501,#74487,#74502,#74507,#74504,#74505,#74509,#74535,#74503,#74142,#74287
-
编译与CI问题修复,编译warning优化。#73581,#73984,#74104,#74376,#74468
-
优化调试与打印信息,优化报错信息。#73783,#73886,#74188,#73720,#73857,#74519,#74520,#74384,#74386,#74387,#74383,#74381,#73830,#74128,#74203
-
增加pybind层的接口
get_event_handle_from_custom_stream
。#73918 -
执行机制相关。#74015
2. 并行策略优化
在3.1版本中,对并行策略进行了多项优化,包括新增VPP流水线的前向状态标注和空泡hook支持,修复了流水线并行的共享参数未同步问题、Sharding通信的维度冲突导致的训练hang问题以及DualPipe的event管理错误,同时提升了Sharding策略下的FP8量化支持和DualPipe的通信计算overlap能力,显著提升了并行训练的稳定性和性能。
功能新增
- 支持在VPP流水线调度下,标注当前是否为前向状态。#74187
- 支持在VPP均衡显存下的空泡hook。#74100
Bug修复
- 修复流水线并行下,共享参数的无法同步的问题。#74047, #74087, #73913
- 修复sharding通信下,ep维度和sharding维度相同时,训练hang的问题。#74268
- 修复dual pipeline调度下,event管理的bug。#74158
性能提升
- 在sharding策略下,支持fp8 量化参数。#73690
- 支持dual pipeline调度下,通信计算overlap。#73690, #74527
3. 通信库
在3.1版本中,我们对通信库进行了功能增强和性能优化,新增了stream接口支持,修复了初始化后额外comm context导致的显存浪费问题,并通过新增通信库初始化配置开关、为DeepEP算子支持multicast=2功能以及实现TMA优化的internode能力,显著提升了通信效率和计算性能。
功能新增
- 增加通信库stream 接口。#74016
Bug修复
- 去除初始化后额外的comm context,节约显存。#73297
性能提升
- 新增通信库初始化配置开关。#73297
- 对于DeepEP算子,支持multicast=2功能。#74144
- DeepEP支持TMA优化的internode。#74284
4. 推理部署
在3.1版本中,推理新增支持safetensors加载功能,修复了一些算子问题,对internode_ll_two_stage实现了一些功能增强,支持通过环境变量启动stream_k,支持使用wint8算法加载int8权重等。
功能新增
- 使用MmapStorage加速safetensors格式模型文件加载。#73820
Bug修复
- 修复当输入数据类型大小小于输出数据类型大小时的view算子问题#73769
- 更新dynamic_loader.cc文件 #73577
- 修复非截断top_p_sampling问题 #73852
- 修复moe_gemm中的stream_k问题 #74351
- 修复使用.json模型时的GetInputTypes()和GetOutputTypes()问题#74358
- 修改Layout断言#74415
- 修复编译问题#74492
- 修复deep_ep st_release问题#73578
功能增强
- 删除hidden_size的冗余缓冲区和循环#74167
- 在internode_ll_two_stage中实现缓冲区间插#74276
- 使internode_ll_two_stage支持异步和hook模式#74405
性能提升
- 支持通过环境变量启用stream_k功能#74317
其他
- 支持使用wint8算法加载int8权重#73689
- 添加num_experts和num_rdma_ranks的调度#74078
5. 基础执行架构
3.1版本中,我们主要针对Slice相关的算子和操作进行了系统化的升级,大幅提升了Slice操作的效率。同时针对一些大模型训练中遇到的问题进行了修复。
问题修复
-
修复大 tensor 相关 api。 #73283,#74120,#73657,#73654,#73559
-
修复动转静遗留问题。 #71520
-
修复cuda多流问题。 #74011
-
其他重要修复。 #74378
功能增强
- 支持slice相关功能。 #74038,#74147,#74344
6. 自动并行架构
在3.1版本中,我们主要针对自动并行架构的切分推导规则进一步进行了完善,增强了自动并行的切分推导效率,同时修复了之前功能中一些易用性和正确性问题。
功能改进
- 优化
reshape
算子的切分推导规则,以支持分布式张量的同一纬度被多个mesh维度切分的场景。#74352 - 支持分布式张量的同一维度被多个mesh维度切分时的默认切分推导规则。#74396
新增以下算子的切分推导规则
take_along_axis
#72063index_put
,index_put_grad
#73486conv3d
,conv3d_grad
#72882depthwise_conv2d
,depthwise_conv2d_grad
#73134conv2d_transpose
,conv2d_transpose_grad
#73188einsum
#73753moe_combine
,moe_combine_grad
,moe_gate_dispatch
,moe_gate_dispatch_grad
#74215
问题修复
- 修复长文并行策略的bug。#73735
- 修复save/load在开启流水线并行策略下的bug。(#73749)
- 修复分组切片并行的overlap优化策略的bug。#73717
- 修复reshape算子在inplace机制下的bug。#73836
- 修复 MoE 场景下 all2all 的bug。#73894
- 修复分组切片并行场景下通信融合的bug。#73997
- 修复动态图模式下重计算策略的bug。#74075
- 修复
group_norm
和layer_norm
算子切分推导bug。#74139 - 修复调用
ProcessMesh
的get_group
方法时重复创建通信组的bug。#73099 - 修复流水线并行场景下梯度裁剪的精度bug。#74409
- 修复流水线并行策略的bug。#73615
- 修复流水线并行场景下不同stage间无法传递stop_grad=True参数的bug。#73459
性能优化
- 支持流水线并行场景下的参数共享及通信优化。#73733
其他
- 清理废弃代码,以便于维护代码。#73967, #73744
- 支持dataloader手动并行和自动并行的精度对齐。#73941
7. 算子机制
在3.1版本中,我们重点针对大模型训练中遇到的大shape tensor、0 size tensor、以及一些关键kernel的精度问题进行了系统化修复,为大模型训练的稳定性和正确性提供了更好的保障。
新特性
- MoE(混合专家系统)优化。 #73592,#73763
- 复数运算支持。 #73674
- 动态图与自动微分增强。 #73622,#73601,#73737,#73747,#73761,#74137
- 组合算子优化。 #73923
- API兼容性提升。 #74449
- 增加 pd.rint 算子。 #74012
问题修复
-
修复算子 0-size 相关问题。 #73680,#73715,#73702,#73550,#73736,#72986,#73740,#73821,#73889,#73882,#73962,#73998,#73040,#73853,#74046,#74006,#73848,#73806,#74022,#73933,#74057,#74042,#73832,#73844,#73854,#74153,#74131,#74129,#74119,#74143,#74152,#74175,#74112,#74185,#74184,#74200,#74150,#74157,#74229,#73986,#74261,#74259,#74295,#74305,#74323,#74354
-
修复算子大 tensor 相关问题。 #73380,#73635,#73706,#73712,#73745,#73738,#73802,#73899,#73895,#74019,#73996,#73979,#74063,#74213,#74061,#74070,#74155,#74062,#74089,#74134,#74058,#74183,#74196,#74223,#74252,#74060,#74273,#74211,#74055,#74242,#74058,#74293,#74289,#74172,#74330,#74329,#74342,#74369,#74279,#74370,#74404,#74451,#74537,#74324,#74254,#74360
-
Paddle CPU/GPU Kernel 精度问题推全。 #73562,#73739,#74009,#74081,#74160,#74077,#74102,#74219,#74257,#74198,#74182
-
其他重要修复。 #73670,#73774,#73877,#73993,#74032,#74034,#74073,#74096,#74065,#74002,#74282,#74313,#74303,#74306,#74298,#74044,#74149,#74290,#74348,#74364,#74332,#74224,#74382,#74406,#74434,#74448,#74457,#74322,#74530,#74442,#74123,#73892,#74025
功能增强
-
fp8 运算相关算子性能优化。 #73564,#73370,#73881,#73644,#73639,#73777,#74173,#74471
-
linalg.lu算子功能支持。 #73885,#74130,#74258,#74456
-
Paddle API 兼容性提升。 #74480,#74523,#74490,#74548
-
其他重要优化。 #73815,#74372
性能优化
- 显存优化。 #73803
其他
- 算子 CPU 支持。 #73872
8. 框架性能优化
功能增强
- 提升 slice 性能。 #73247,#73628,#73834,#73971
其他
- 添加 slice 相关检查。 #74103
9. 编译器
功能增强
- 支持float8e4m3数据类型(#74111)
- 新增支持rint算子,优化arange算子性能 (#74013, #74209)
- 增强表达式化简能力 (#74292)
Bug修复
修复各类场景下的一些处理逻辑 Bug。 (#73940, #74050, #73929, #74040, #74240, #74316, #74328, #74412, #74432, #74450, #74461, #74462)
10. 硬件适配
新特性
- XPU上concat_grad OP增加zero dim支持 #73808
- XPU上weight_only_linear支持fp16 weight_scale #73963
- XPU上python memory api 升级 #73189
- XPU上python streams api 升级 #73924
问题修复
- 修复XPU上FFT算子 #73785
- 修复XPU strided_copy data_size param #74225
其他
- 升级XHPC版本到20250722。 #74277
11. 安装环境
问题修复
- 修复macOS-x64在使用-DONNXRUNTIME=ON时编译失败的问题。#73631
- 更新昆仑镜像。#73669
详情可查看:https://github.com/PaddlePaddle/Paddle/releases/tag/v3.1.1