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,#74592paddle.Tensor新增支持多种初始化方式,支持灵活的创建 Tensor。#74619,#75022,#75065API 新增一些专有参数,增强原有功能。包括
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, 周周周, 正在学习, 苍天荒