3.2 Release Note
飞桨框架3.2版本在大模型训练推理性能、硬件适配、主流大模型及高性能加速库的支持上进一步提升。
大模型训练方面,飞桨框架在计算、并行策略、容错能力三方面进行了升级:
从基础计算性能层面,提出了存算重叠的稀疏掩码注意力计算FlashMask V3,极致优化Attention的计算效率,同时还实现了高效的FP8混合精度效果无损训练技术。
在分布式并行策略层面,提出了动态自适应的显存卸载策略,实现存算最优均衡,再结合创新设计的显存友好的流水线并行调度,进一步降低显存开销。
增强了框架原生的容错能力,实现了大规模集群训练容错系统,可在不影响训练效率的前提下在线监测静默数据损坏等难以察觉的故障,并实现了高可用的检查点容灾方法,降低中断恢复损失。
在硬件适配方面,面向类CUDA芯片,全面升级插件式适配方案。
在设备资源的管理调度和高性能集合通讯库方面,针对类CUDA芯片做了管理接口升级和通信能力的增强,特别增强了分布式通信能力,使XCCL对齐NCCL的各结构体和功能。
新增了类CUDA算子注册机制。以沐曦适配为例,在复用GPU算子内核的基础上,仅需一行代码即可完成算子内核注册。经过统计计算,算子内核的复用率最高可以达到92%,可大幅降低硬件适配成本。
使用体验方面,重点提升了兼容能力,包括开发接口兼容业界用法、safetensors模型格式兼容、和第三方高性能加速库的兼容。
新增和修改开发接口兼容业界用法,新增系列API和别名,新增参数别名,新增专有和通用的参数。
全面兼容 Safetensors 模型格式。新增 FlexCheckpoint 机制,支持跨分布式策略、跨模型结构间自动实现参数重切分,可显著降低权重转换成本,进而提升大模型端到端的训练与推理研发效率。
系统性增强了接口兼容与算子注册能力,实现了高性能加速库一键导入,无需修改代码直接复用于飞桨的模型训练与推理加速过程中。
1. 用户体验
新特性
新增API:
paddle.msort
、paddle.ravel
、paddle.nn.functional.dropout1d
、paddle.Tensor.type_as
、paddle.Tensor.requires_grad
、paddle.view_as_complex
、paddle.view_as_real
、paddle.nn.Parameter
、paddle.broadcast_shapes
、paddle.range
、paddle.as_tensor
、paddle.scatter_reduce/scatter_reduce_
、paddle.scatter_add
、paddle.tensor
、paddle.softmax
、paddle.Tensor.softmax
、paddle.rand_like
、paddle.is_autocast_enabled
、paddle.get_autocast_gpu_dtype
、paddle.Tensor.repeat
、paddle.permute
。#74421,#74439,#74444,#74454,#74459,#74491、#74466,#74438,#74594,#74542,#74694,#74564,#74540,#74586,#74651,#74807,#74632,#74834,#74952,#74772,#74441,#74561,#74525新增
paddle.compat.*
一系列API,支持业界的通用用法,便于迁移代码,包括paddle.compat.median
、paddle.compat.nanmedian
、paddle.compat.softmax
、paddle.compat.sort
、paddle.compat.split
、paddle.compat.min/max
、paddle.compat.Unfold
。#74865,#74874新增初始化一系列API,支持业界通用的参数初始化方式,包括
paddle.nn.init.kaiming_uniform_
、paddle.nn.init.xavier_uniform_
、paddle.nn.init.uniform_
、paddle.nn.init.kaiming_normal_
、paddle.nn.init.xavier_normal_
、paddle.nn.init.normal_
、paddle.nn.init.calculate_gain
、paddle.nn.init.constant_
、paddle.nn.init.dirac_
、paddle.nn.init.eye_
、paddle.nn.init.ones_
、paddle.nn.init.orthogonal_
、paddle.nn.init.trunc_normal_
、paddle.nn.init.zeros_
。#74478API新增参数别名用法,例如既可以输入
x
,也可以输入input
,用法更为灵活。包括paddle.maximum
、paddle.minimum
、paddle.sqrt
、paddle.topk
、paddle.polar
、paddle.stack
、paddle.cos
、paddle.floor
、paddle.log
、paddle.pow
、paddle.rsqrt
、paddle.sign
、paddle.sin
、paddle.multiply
、paddle.where
等。#74683,#74795,#74887,#74592API新增一些专有参数,增强原有功能。包括
paddle.nn.functional.gelu
、paddle.divide/div/div_
、paddle.add
、paddle.Tensor.copy_
、paddle.norm
、paddle.linalg.norm
、paddle.nn.functional.silu
、paddle.repeat_interleave
。#74485,#74562,#74420,#74768,#74855,#74903,#74788,#74631,#74947API新增一些通用参数:
out
、device
、dtype
、requires_grad
、pin_memory
、bias
,增强原有功能。包括paddle.zeros
、paddle.zeros_like
、paddle.ones
、paddle.ones_like
、paddle.arange
、paddle.eye
、paddle.empty
、paddle.empty_like
、paddle.full
、paddle.full_like
、paddle.randn
、paddle.Tensor.new_full
、paddle.Tensor.new_empty
、paddle.Tensor.new_ones
、paddle.Tensor.new_zeros
、paddle.tril/triu
、paddle.bmm
、paddle.nn.Conv1D/Conv2D/Conv3D/Embedding
、paddle.diff
、paddle.cumsum
、paddle.var
、paddle.multinomial
、paddle.mean
等。#74477,#74526,#74711,#74582,#74624,#74849,#74612,#74875,#74641,#74949,#74918,#74914,#74934,#74920,#74955,#74226,#74946API新增别名,支持更多调用方式。包括
paddle.Tensor.mul_/mul
、paddle.autograd.Function
、paddle.argwhere
、paddle.cat
、paddle.clamp
、paddle.ger
、paddle.take_along_dim
、paddle.linalg.matmul
、paddle.special.logsumexp
、paddle.concatenate
、paddle.eq/gt、
paddle.Tensor.take_along_dim、
paddle.nn.Conv1d/Conv2d/Conv3d`等。#74493,#74569,#74870
Bug修复
其他
代码风格相关的优化。#74654,#74655,#74665,#74660,#74667,#74664,#74662,#74661,#74658,#74657,#74666,#74659,#74663,#74656,#74673,#74672,#74671,#74674,#74675,#74670,#74669,#74677,#74709,#74714,#74712,#74713,#74704,#74746,#74748,#74743,#74742,#74744,#74745,#74747,#74794,#74789,#74793,#74786,#74791,#74787,#74827,#74608,#74288,#74287,#74385,#74395,#74475,#74647
MKLDNN/ONEDNN相关的优化。#74299,#74244,#74230,#74314,#74327,#74325,#74326,#74315,#74399,#74398,#74393,#74392,#74367,#74391,#74423,#74424,#74436,#74417,#74410,#74473,#74458,#74501,#74487,#74502,#74513,#74518,#74516,#74507,#74504,#74505,#74509,#74535,#74536,#74517,#74503,#74557,#74550,#74575,#74587,#74576,#74588,#74549,#74581,#74583,#74628,#74630,#74635,#74679,#74648,#74127,#74636,#74552,#74551,#74678,#74680,#74730,#74751,#74895,#74821,#74897,#74734
代码实现相关的优化,变量与文件重命名。#74309,#74597,#74613,#74376,#74479,#74960,#74968,#74977
单测相关的优化,单测问题修复。#74595
优化调试与打印信息,优化报错信息。#74765,#74381,#74384,#74386,#74387,#74383,#74519,#74520,#74468
自定义算子相关优化。#74402
3. 分布式&自动并行
并行策略
在3.2版本中,我们对流水线并行功能进行了多项增强,包括实现了字典参数传递的支持,并扩展了Pipeline Layer和SharedLayerDesc对非流水线并行的兼容性;同时修复了多个关键问题,包括大尺寸张量的IPC API异常、流水线并行中的评估批次和非计算损失问题、MoE模型的梯度释放错误、PP场景下NCCL通信重建导致的hang问题,以及双流水线并行的event管理错误;此外还进行了多项性能优化,改进了双流水线并行的计算重叠效率以提升训练性能,并升级了clear_param_storage方法使其支持sharding模式下多color集合的清除和重置操作。
功能新增
Bug 修复
4. 算子机制
新特性
Bug修复
大 Tensor 相关修复。 #74242, #74293, #74289, #74279, #74330, #74329, #74342, #74369, #74370, #74404, #74537, #74451, #74172, #74324, #74964, #74360, #74379, #74377, #74380, #74362, #74197
【开源任务】Paddle CPU/GPU Kernel 精度问题推全。 #74149, #74598, #74719, #74625, #74555
其他重要修复。 #74282, #74313, #74303, #74306, #74298, #74044, #74290, #74348, #74364, #74332, #74224, #74382, #74406, #74434, #74448, #74457, #74322, #74530, #74716, #74839, #74842, #74854, #74919, #74767, #75003
功能增强
API 兼容能力提升。 #74456, #74480, #74523, #74490, #74548, #74596, #74568, #74559, #74629, #74623, #74700, #74643, #74602, #74783, #74781, #74735, #74725, #74815, #74856, #74925, #74545, #74932, #74784
slice/stride 相关优化。 #74731, #74740, #74769, #74810, #74841, #74954, #74888, #74944, #74312, #74291, #74271, #74320, #74344, #74727, #74637
性能优化
6. 安装环境
Bug 修复
修复flashattent编译缓存的bug。#74388
修复site.USER_SITE为None的bug。 #74373
修复多架构 Linux 系统下gtest的编译bug。 #74723
修复在 WITH_GPU=ON 情况下 DEBUG 模式编译多个报错。 #74401
修复Windows下CUDA12.6编译bug。 #74990
修复api-benchmark基线流水线bug。 #74770
修复api-benchmark基线流水线bug。 #74778
修复api-benchmark基线流水线bug。 #74779
修复api-benchmark基线流水线bug。 #74780
修复api-benchmark基线流水线bug。 #74800
修复api-benchmark基线流水线bug。 #74803
其他
禁用test_custom_contiguous单测。 #74337
支持录取slice 流水线基线任务定时触发。 #74419
支持slice录基线添加手动指定pr。 #74445
检查代码中是否带有中问题。 #74460
支持CI PaddleX在XPU上的任务。 #74426
支持slice流水线豁免机制。 #74482
更新paddle基础镜像。 #73423
windows 固定ninja版本1.11。 #74590
支持添加关闭pr取消CI。 #74604
支持快速跳过所有CI。 #74696
增加api-benchmark基线流水线。 #74690
更新nccl版本。 #74809
更新approve流水线RD名单。 #74838
更新approve流水线RD名单。 #74902
更新safetensor到镜像中。 #74904
添加flashatten的编译flag。 #74959
临时禁用win-inference流水线。 #74980
支持windows编译phi动态库。 #74950
7. 贡献者名单
AIbin, Ayakouji, baiyue, baoqiwen, Chang Lu, Chen Zhiyang, co63oc, cyberslack_lee, cyy536, datutu-L, Deng Haodong, Difer, Eddie-Wang, enzodechine, fangfangssj, feri, fxyfxy777, ggggxm, GoldPancake, gouzil, Gu Shiwei, Haze188 灏喆, hohdiy, hong, HU Shenwei, huangjiyi, HydrogenSulfate, kjagsdq, LCStayingdullCircuit, Leo Guo, lightbrother, liufengwei0103, liuruyan, LiYuRio, LLSGYN, Lucas, Luckycheng222, lzy, Nana, Nyakku Shigure, ooo oo, Qianyue He, risemeup1, Ruibiao Chen, Ryan, Shuhao Liang, sneaxiy, Starrysea996, SUN Dong, Tao Luo, Tian, tianhaodongbd, tianshuo78520a, umiswing, waliwali777, wanghuancoder, Wenhao.Dai, wyw, XiaoguangHu, xiaoguoguo626807, xingmingyyj, Yichen Zhang, Yohanna, yongqiangma, Yuan Xiaolan, YUNSHEN XIE, Yuntao Nie, Yuqiang Ge, Yutian Rao, Zero Rains, Zhan Rongrui, Zhang Ting, zhanghonggeng, Zhaowu Pan, zhengshengning, ZhenxingLi, Zhou Xin, zhupengyang, zhwesky2010, Zichao, zty-king, Zx, zyfncg, zzm, 周周周, 正在学习, 苍天荒