3.2 Release Note

飞桨框架 3.2 版本在大模型训练推理性能、硬件适配、主流大模型及高性能加速库的支持上进一步提升。

  • 大模型训练方面,飞桨框架在计算、并行策略、容错能力三方面进行了升级:

    • 从基础计算性能层面,提出了存算重叠的稀疏掩码注意力计算 FlashMask V3,极致优化 Attention 的计算效率,同时还实现了高效的 FP8 混合精度效果无损训练技术。

    • 在分布式并行策略层面,提出了动态自适应的显存卸载策略,实现存算最优均衡,再结合创新设计的显存友好的流水线并行调度,进一步降低显存开销。

    • 增强了框架原生的容错能力,实现了大规模集群训练容错系统,可在不影响训练效率的前提下在线监测静默数据损坏等难以察觉的故障,并实现了高可用的检查点容灾方法,降低中断恢复损失。

  • 在硬件适配方面,面向类 CUDA 芯片,全面升级插件式适配方案。

    • 在设备资源的管理调度和高性能集合通讯库方面,针对类 CUDA 芯片做了管理接口升级和通信能力的增强,特别增强了分布式通信能力,使 XCCL 对齐 NCCL 的各结构体和功能。

    • 新增了类 CUDA 算子注册机制。以沐曦适配为例,在复用 GPU 算子内核的基础上,仅需一行代码即可完成算子内核注册。经过统计计算,算子内核的复用率最高可以达到 92%,可大幅降低硬件适配成本。

  • 使用体验方面,重点提升了兼容能力,包括开发接口兼容业界用法、safetensors 模型格式兼容、和第三方高性能加速库的兼容。

    • 新增和修改开发接口兼容业界用法,新增系列 API 和别名,新增参数别名,新增专有和通用的参数。

    • 全面兼容 Safetensors 模型格式。新增 FlexCheckpoint 机制,支持跨分布式策略、跨模型结构间自动实现参数重切分,可显著降低权重转换成本,进而提升大模型端到端的训练与推理研发效率。

    • 系统性增强了接口兼容与算子注册能力,实现了高性能加速库一键导入,无需修改代码直接复用于飞桨的模型训练与推理加速过程中。

1. 用户体验

新特性

  • 新增 API:paddle.msortpaddle.ravelpaddle.nn.functional.dropout1dpaddle.Tensor.type_aspaddle.Tensor.requires_gradpaddle.view_as_complexpaddle.view_as_realpaddle.nn.Parameterpaddle.broadcast_shapespaddle.rangepaddle.as_tensorpaddle.scatter_reduce/scatter_reduce_paddle.scatter_addpaddle.tensorpaddle.softmaxpaddle.Tensor.softmaxpaddle.rand_likepaddle.is_autocast_enabledpaddle.get_autocast_gpu_dtypepaddle.Tensor.repeatpaddle.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.medianpaddle.compat.nanmedianpaddle.compat.softmaxpaddle.compat.sortpaddle.compat.splitpaddle.compat.min/maxpaddle.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_gainpaddle.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_#74478

  • API 新增参数别名用法,例如既可以输入x,也可以输入input,用法更为灵活。包括 paddle.maximumpaddle.minimumpaddle.sqrtpaddle.topkpaddle.polarpaddle.stackpaddle.cospaddle.floorpaddle.logpaddle.powpaddle.rsqrtpaddle.signpaddle.sinpaddle.multiplypaddle.where等。#74683,#74795,#74887,#74592

  • paddle.Tensor新增支持多种初始化方式,支持灵活的创建 Tensor。#74619,#75022,#75065

  • API 新增一些专有参数,增强原有功能。包括 paddle.nn.functional.gelupaddle.divide/div/div_paddle.addpaddle.Tensor.copy_paddle.normpaddle.linalg.normpaddle.nn.functional.silupaddle.repeat_interleave#74485,#74562,#74420,#74768,#74855,#74903,#74788,#74631,#74947

  • API 新增一些通用参数:outdevicedtyperequires_gradpin_memorybias,增强原有功能。包括 paddle.zerospaddle.zeros_likepaddle.onespaddle.ones_likepaddle.arangepaddle.eyepaddle.emptypaddle.empty_likepaddle.fullpaddle.full_likepaddle.randnpaddle.Tensor.new_fullpaddle.Tensor.new_emptypaddle.Tensor.new_onespaddle.Tensor.new_zerospaddle.tril/triupaddle.bmmpaddle.nn.Conv1D/Conv2D/Conv3D/Embeddingpaddle.diffpaddle.cumsumpaddle.varpaddle.multinomialpaddle.mean等。#74477,#74526,#74711,#74582,#74624,#74849,#74612,#74875,#74641,#74949,#74918,#74914,#74934,#74920,#74955,#74226,#74946

  • API 新增别名,支持更多调用方式。包括 paddle.Tensor.mul_/mulpaddle.autograd.Functionpaddle.argwherepaddle.catpaddle.clamppaddle.gerpaddle.take_along_dimpaddle.linalg.matmulpaddle.special.logsumexppaddle.concatenatepaddle.eq/gt、paddle.Tensor.take_along_dimpaddle.nn.Conv1d/Conv2d/Conv3d`等。#74493,#74569,#74870

Bug 修复

  • 修复 paddle.nanmedian 精度问题。#74263

  • 修复 paddle.distributed.fleet.utils.hybrid_parallel_util.fused_allreduce_gradients 在 0-D 下的问题。#74957

  • 修复 paddle.matmul 在分布式下的问题。#74989

功能增强

  • 针对返回多个 Tensor 的情况,通过 paddle 数据结构来封装,优化体验。包括 paddle.topk#74931

  • 创建类 API 支持 size 为可变参数的用法。#74494

文档

2. 基础执行架构

新功能

  • 动态图支持。#74484

  • 支持 safetensors。#74642, #74609, #75049

  • 添加 offloader 优化计算效率。 #74837

  • 为 conv_transpose 前向计算添加 API 支持。 #74431

  • 添加 offloader 优化计算效率。 #74837

  • 推理部署增加了 w4afp8 量化推理,支持 w4afp8 量化权重纯排及 all2all 通信#74270

Bug 修复

功能增强

废弃

其他

  • 更改补丁版本。 #74940

3. 分布式&自动并行

并行策略

在 3.2 版本中,我们对流水线并行功能进行了多项增强,包括实现了字典参数传递的支持,并扩展了 Pipeline Layer 和 SharedLayerDesc 对非流水线并行的兼容性;同时修复了多个关键问题,包括大尺寸张量的 IPC API 异常、流水线并行中的评估批次和非计算损失问题、MoE 模型的梯度释放错误、PP 场景下 NCCL 通信重建导致的 hang 问题,以及双流水线并行的 event 管理错误;此外还进行了多项性能优化,改进了双流水线并行的计算重叠效率以提升训练性能,并升级了 clear_param_storage 方法使其支持 sharding 模式下多 color 集合的清除和重置操作。

功能新增

  • 实现流水线并行(Pipeline Parallel)中字典参数传递的支持。#74574,#74867

  • Pipeline Layer 和 SharedLayerDesc 支持非流水线并行(nonpp parallel)。#74573

Bug 修复

  • 修复大尺寸张量的 IPC API 问题。#74472

  • 修复流水线并行中的评估批次(eval batch)及非计算损失(non-compute_loss)问题。#74170

  • 修复 MoE 模型上的梯度释放问题。#74972

  • 修复在 pp 的场景下重建 NCCL comm 存在 hang 的问题。#73625

  • 修复双流水线并行(dual pp)的 event 管理错误。#74158

优化改进

  • 优化双流水线并行的计算重叠(overlap)效率,提升训练性能。#74527

  • 升级 clear_param_storage 方法,支持 sharding 下多个 color 集合清除和重置。#74741

自动并行

功能改进

  • 支持分布式张量的同一维度被多个 mesh 维度切分时的默认切分推导规则。#74396

  • 改进 reshape 算子的切分推导规则,以支持分布式张量的同一维度被多个 mesh 维度切分的场景。#74352,#74579, #74565

  • 支持在不改变分布式张量数据的情况下改变张量的 mesh。#74248

Bug 修复

  • 修复调用 ProcessMeshget_group 方法时重复创建通信组的 bug。#73099

  • 修复 MoE 场景下get_local_slices 方法的 bug。#74705

  • 修复 MoE 场景下梯度裁剪的 bug。#74916

  • 修复流水线并行场景下不同 stage 间无法传递stop_gradient参数的 bug。#73459

  • 修复流水线并行场景下梯度裁剪的精度 bug。#74409

  • 修复动态图流水线并行场景下产生冗余输出的 bug。#74913

  • 修复算子moe_combinemoe_gate_dispatch在 MoE 场景下跑不通的 bug。#74645

其他

  • 支持 dataloader 手动并行和自动并行的精度对齐。#73941

  • 优化动态图流水并行调度逻辑。#74720

通信库

在 3.2 版本中,我们修复了 DeepEP 支持 sm90 编译的一个报错,同时对 DeepEP 申请的显存分配添加了预分配功能,并升级了其 intranode 和 internode 计算 kernel,进一步优化了性能和稳定性。

Bug 修复

  • 修复 DeepEP 支持 sm90 编译的一个报错。#74762

功能改进

  • 对 DeepEP 申请的显存分配添加预分配功能。#74465

  • 升级 DeepEP 的 intranode 和 internode 计算 kernel。#74284

4. 算子机制

新特性

Bug 修复

功能增强

性能优化

文档

  • 修复英文文档问题以及版权年份问题。 #74737

其他

  • 在 XPU 硬件上默认开启 WITH_XPU_FFT 选项。 #74699

5. 硬件适配

类 CUDA 硬件接入方案完善

主仓单测支持多硬件

新增 Custom Device API 支持

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, 周周周, 正在学习, 苍天荒