Skip to content

Latest commit

 

History

History
191 lines (166 loc) · 55 KB

File metadata and controls

191 lines (166 loc) · 55 KB

重要更新

飞桨框架 3.3 版本在大模型训练效率、开发体验及国产硬件适配等关键领域持续突破创新,在计算显存高效利用、训推衔接转换、生态兼容性、调试效率、国产硬件适配等方面带来多项重要升级,全面提升大模型训推能力。

训练效率突破

  • FlashMaskV3 升级:深度优化稀疏注意力掩码计算 FlashMaskV3 计算内核,性能全面超越 FlexAttention,算子性能最高领先 2.1 倍;原生支持上下文并行并引入计算负载均衡机制,分布式场景算子性能相比 Megatron-LM 快 80%,全面强化长文训练能力。
  • FlexCheckpoint 参数自动切分重组系统:基于首创的轻量级描述语言 AOA (All in One Arrow),支持从单卡视角灵活描述复杂的权重转换关系,并自动推导分片映射;通过跨机通信的高并发与负载均衡调度,在大参数规模下权重转换性能相比 Megatron-LM 领先 1.2 倍以上,有效解决大模型训推不同阶段参数转换的成本与效率难题。
  • 虚拟内存动态碎片整理:引入基于虚拟内存技术的显存分配机制,可根据运行时显存占用情况动态进行碎片整理。在主流 MoE 模型训练中,显存碎片率从超过 10%降至最低 3%,显著提升显存利用率。

开发体验优化

  • 生态兼容:通过框架 API、算子注册、执行调度等关键链路的兼容设计,实现无缝衔接使用外部生态算子,支持 FlashInfer、FlashMLA、DeepGEMM、DeepEP、TorchCodec 和 SonicMoE 等社区高性能模块的高效集成应用。
  • 动态图调试能力升级:新增动态图前反向计算图可视化功能,支持导出算子调用栈与张量 MD5 校验信息;系统优化关键路径日志,新增局部日志打印功能,提升调试信息丰富度与获取便捷性。
  • 显存观测工具:新增显存观测功能,可视化显存池中内存块分布,支持追踪特定代码段的显存申请/释放与全局状态,助力大模型显存异常的精准定位与处置。

国产硬件深度适配

  • 昆仑芯 XPU:系统完善 MoE 场景适配,为相关算子新增 bool、bfloat16、complex64 数据类型支持,并对 FlashAttention、DeepEP、Profiler 等模块进行深度适配。
  • 海光 DCU:支持 Hygon 数学库后端,进一步优化海光芯片推理性能。

1. 执行调度机制

针对大模型预训练、后训练与推理阶段中,因分布式策略及组网差异导致的权重转换困难,飞桨 FlexCheckpoint 机制创新提出高效的权重重组方法与灵活的模型编辑原语 AOA,为模型研发到生产全流程提供高效、统一的分布式参数转换与重组支持。该机制全面适配训推衔接、跨策略断点续训、生态兼容格式加载导出、强化学习参数同步等多种场景下的权重转换需求,并在大参数规模场景下实现超越 Megatron-LM 1.2 倍以上的转换性能,从根本上解决了分布式参数转换成本高、效率低的难题。 在显存管理方面,针对 MoE 模型因专家路由动态性导致的显存碎片率高、资源浪费严重等问题,本版本推出了基于虚拟内存管理技术的高性能 VMM Allocator。该分配器可在模型运行期间根据系统显存使用情况,动态自适应执行碎片整理,显著提升显存利用效率。 飞桨 3.3 版本持续深耕自动并行与 AI 编译器技术。在自动并行架构中新增对 FSDP 等策略的支持,并增强了动态 Shape 流水线并行功能;面向科学计算场景,实现了对高阶导数的支持,并拓展了相关算子切分推导规则的覆盖范围,进一步提升了自动并行架构的通用性与易用性。此外,围绕推理场景,优化了 AI 编译器 CINN 及动转静 SOT 功能,显著提升易用性与执行调度性能。

新特性

功能增强

  • FlexCheckpoint 优化 AOA 宏展开功能,为 fuse 类宏支持传入 axis 属性。#75282
  • FlexCheckpoint AOA 解析功能增强,支持优化器状态与模型状态共用一套 AOA 标记,切分信息传递、模型加载与存储共用一套 AOA 标记。#75613, #76013, #76437
  • FlexCheckpoint 支持 ShardingStage2 和 ShardingStage3 策略。#76309, #76538
  • 优化 FlexCheckpoint 报错信息。 #76813, #77266
  • 自动并行中层 API 流水线 Hook 支持处理元组对象。#75081
  • 自动并行流水线并行策略支持动态 shape。#75724
  • 支持自动并行场景下的 FlexCheckpoint 机制及优化器状态字典的分片处理。#76240, #76305
  • 升级 DLPack 到 v1.2 版本,全面支持 TVM FFI,支持 C 函数交换协议、DataType 交换协议、Device 交换协议等新特性。#75193, #75205, #75650, #75854, #75973, #76828, #76673
  • 将 ComparePriority 函数返回类型从 bool 升级为 int,以满足 std::sort 的严格弱序要求,并引入 SortComparePriority 包装函数确保排序算法正确性。#76027
  • 动转静支持禁用编译超时自动回退功能。#76386
  • 统一 EqualAllOpInferSymbolicShape 函数与 InferMeta 逻辑,提升编译器与框架动态图调度结果的一致性。#76477
  • 为 all_reduce,c_allreduce_sum,c_concat,c_identity,flash_attn_unpadded,mp_allreduce_sum 等算子添加 infer_symbolic_shape 接口,支持符号化形状推导。#76783, #76836

性能优化

  • 将 FlexCheckpoint 保存阶段重组摊平权重的通信操作延后至加载阶段执行,减少高频保存操作的耗时。#75613
  • FlexCheckpoint 支持使用 Grouped Send Recv 进行参数重切分通信。#76779, #76810
  • FlexCheckpoint 支持权重冗余存储,减少热启时权重重切分时间。#76857
  • CINN 支持编译 Kernel 缓存功能,节省编译耗时开销。 #75989, #76825, #76853
  • 优化动转静子图打断率,提升整体转静性能。#76104, #76354, #76641, #76862
  • CINN 化简过长的 shape 表达式以减少符号推导耗时。#76969

Bug 修复

2. 算子优化完善

为突破大模型注意力掩码计算复杂度高、存储占用大导致的训练效率瓶颈,飞桨持续优化并打磨自主创新的列式稀疏注意力掩码计算技术 FlashMask。Paddle 3.3 新升级的 FlashMask V3 版本首次提出前向持久化抢占式 Tile 调度器(Persistent Preemptive Tile Scheduler,PPT),实现 GPU 流式多处理器(SM)间的计算负载均衡,并原生支持长文本上下文并行下的复杂掩码注意力计算,全面强化长文训练能力,在多种掩码模式下实现训练性能质的飞跃:相比上一版本性能最高提升超过 1.4 倍,全面超越 FlexAttention,单卡性能最高领先 FlexAttention 达 2.1 倍,分布式性能最高领先 Megatron-LM 分布式实现版本 80%。除 FlashMask 外,Paddle 3.3 版本对主流 MoE 模型的高频算子 kernel 进行了专项精度优化,并增强 stride、超大 Tensor 等场景的支持能力,大幅改进框架算子在超大规模模型训练场景的数值精度、稳定性和健壮性。

新特性

  • 新增 API: paddle.compat.nn.functional.linear,paddle.dot,paddle.is_floating_point,paddle.is_tensor,paddle.isin。 #76144, #75150, #75032
  • 新增 Flashinfer 支持。#75075
  • FlashMask V3 实现 block mask,支持稀疏 Attention 计算。#76407

功能增强

性能优化

  • FlashMask v3 通过引入 PPT 负载均衡调度器、TileSize 调优及 kernel 控制流优化等多项技术手段,提升 kernel 整体性能。#75984, #76003, #76216
  • 优化 FusedRope 内核,提升计算性能。#76824

Bug 修复

3. 用户体验升级

全面提升生态兼容性,支持在 paddle 框架中无缝衔接和使用外部生态算子,并推出 paddle.compat 系列 API,包含 paddle.compat.nn.Linear、paddle.compat.nn.MultiheadAttention 等近 10 个功能模块,降低飞桨模型接入外部生态模块的成本。优化动态图调试体验,新增前反向计算图可视化功能,构建了 API、Tensor 与 GradNode 的统一命名关联体系并支持导出调用栈与 MD5 校验信息,同时对关键路径日志进行治理并新增局部日志打印功能,特别针对 PyLayer 嵌套场景显著提升报错信息精准度与日志层级可读性,实现调试信息的丰富度和获取便捷性的提升。新增显存观测功能,直观展示显存池中各个内存块的分布情况,并支持追踪特定代码段的显存申请/释放与全局状态,实现对大模型显存异常的精准定位与高效治理。

新特性

功能增强

Bug 修复

  • 修复 paddle.Tensor 构造时的 place 相关问题。#75017
  • 修复装饰器中缺失泛型参数导致类型传播中断的问题。#75162
  • 修复动态 shape 处理中除法操作问题。#75526
  • 修复设备类 API、model.to(device=tensor.place)相关问题。#75308, #75530, #75867
  • 修复 Tensor.__eq__和 Tensor.__ne__对不支持类型的处理。#76118
  • 修复 to_sparse_coo,to_sparse_csr 问题。#76076
  • 修复 CTCLoss 的 zero_infinity 参数位置和文档。#76156,#76188
  • 修复 Embedding 的 weight[padding_idx]初始化问题。#76204
  • 修复 XPU pin_memory 问题。#76147
  • 修复张量打印问题。#76380
  • 修复 Windows 编译错误。#76322
  • 修复 paddle.nn.Parameter 的 kwargs 参数传入问题。#76476
  • 修复 Layer.zero_grad,normalize,uniform_,unfold 问题。#76494, #76600
  • 修复窗函数的 dtype 相关问题。#76623
  • 修复 view 梯度在 out_grad 不连续时的问题。#76679
  • 修复 custom_device 中的.cuda 问题。#76755
  • 修复 SDPA 在分布式上运行的错误。#76782
  • 修复 paddle.compat.equal 问题。#76658
  • 修复 MultiHeadAttention 中 GQA 中的 head 为 0 问题。#76761
  • 修复 Dy2St 因字典顺序触发的重新编译问题。#76944
  • 修复 SDPA 的 attn_mask 扩展问题和变量名问题。#76959
  • 修复 Tensor.data 相关问题。#76818, #76933

4. 国产硬件适配

对 XPU 算子能力进行了系统性增强,针对 MoE 相关算子新增 bool、bfloat16、complex64 等数据类型支持,并完善 FlashAttention、DeepEP、Profiler 等关键模块,显著提升了大模型训练场景的昆仑芯适配能力。此外,通过引入 Hygon 数学库后端,进一步优化了海光 DCU 芯片推理性能。

新特性

  • 系统增强 XPU 硬件上 assign,assign_value,concat,fill_any,multiply,scatter_nd 等关键算子在 bool、bf16、complex64 等数据类型的支持能力。#75249, #76893, #76903, #76904, #76912
  • 新增 XPU 硬件的 index_elementwise_get 和 masked_fill 算子支持。
  • aarch64 架构支持 XCCL。#75797
  • 支持 XPU DeepEP。#76284, #76362, #76594, #76869
  • 支持 XPU moe_gate_dispatch 算子。#75230
  • 自定义设备支持 mixvector。#75182

功能增强

  • profiler 功能支持 XPU Nvtx 和 CUPTI 事件采集。#76385
  • FlashAttention 重构,支持 float16 的 fa_taccum。#76737
  • 升级 XHPC 至 20251014 版本。#75872
  • pool2d 和 pool2d_grad 算子底层升级 xpudnn 实现。
  • CUDAExtension 支持 Custom Device。#76876
  • 将 asin 升级为 arcsin 以支持 NumPy 1.x。#76485

性能优化

  • 引入 Hygon 数学库后端以提升海光设备推理性能。#76266

Bug 修复

  • 修复 pinned memory 在 Custom Device 上的误用问题。#75593
  • 修复 arange,beam_search_decode,binomial_kernel,combine,dispatch,expand,fused_layernorm,mask_select,mp_allreduce_sum,multiclass_nms3,nonzero,psroi_pool_grad,quantize_linear,top_p_sampling 等一系列算子问题。#75532, #75938, #76238, #76487, #76547, #76548, #76561, #76651, #76666, #76690, #76792, #76901, #76906, #77025
  • 修复 iluvatar_gpu 和 metax_gpu 相关编译问题。#75969
  • 更新 xhpc 以修复 strided_copy 参数检查问题。#76213
  • 修复在启用编译选项-DWITH_XPTI=ON 时的构建失败问题。#76577
  • 修复 XPU 下 AddGradKernel,SoftmaxWithCrossEntropy,view 等算子问题。 #76631

5. 贡献者名单

ADchampion3, ALGO1832, AlAuAu, Android zhang, Ayakouji, Bvicii, Chang Lu, Chen Zhiyang, Difer, Echo-Nie, Eddie-Wang, Fang Chengjie, Felix Schladt, Frank Lee, GoldPancake, Gu Shiwei, HU Shenwei, Haco, Hammer, Haonan Luo, Haze188 灏喆, HydrogenSulfate, Jia Ningyu, Jianbang Yang, Jiaxin Sui, Jingzong Liu, Kunbo Ding, LLSGYN, Leo Guo, LiaoYFBH, LixinGuo, Lucas, Luckycheng222, Ma Xiaolong, MayYouBeProsperous, MingkunZhang, Nyakku Shigure, Pan Zhichen, Patrisam, Qianyue He, Ricardo-shuo-liu, Rockway, Ruibiao Chen, Runming Xie, Ryan, SUN Dong, SZTULDH, Shuhao Liang, SidusAntares, Sunday019, Sunny-bot1, Tao Luo, Tianyu Zheng, Tofu, Wang Jiabao, Wenfei (Charles) Qi, Wennie396, Xiangrui Yu, XiangzheWang, XiaoguangHu, YUNSHEN XIE, Yami, Yiqun Liu, Yohanna, Yuan Xiaolan, YuanRisheng, Yuang Liu, Yufei Liao, Yuntao Nie, Yuqiang Ge, Yutian Rao, Z784555, Zero Rains, Zhan Rongrui, Zhang Ting, Zhaowu Pan, ZhenxingLi, Zhou Xin, ZhouDuan, ZhouMinhao98, Zx, baiyue, baoqiwen, bigwhite37, blacksheep-Aristotle, bukejiyu, chen, chen2016013, co63oc, cyberslack_lee, cyy536, dakelong, ddchenhao66, dongzezhao, fangfangssj, fanhaoxuee, feri, fxyfxy777, gouzil, huangjiyi, ice, jzhang533, lijialin03, lijin23, liufengwei0103, liuruyan, lzy, megemini, mikethegoblin, ooo oo, paddle-xpu-bot, qjyyy77, qw86972190, sneaxiy, starcrown001, tianhaodongbd, tianlef, tianshuo78520a, umiswing, waliwali777, wanghuancoder, wanrui, xiaoguoguo626807, xingmingyyj, xinruiM, xuanyuanminzheng, xxiu1, yangjianfengo1, yongqiangma, yunruoxi, zccjjj, zhangbo9674, zhanghonggeng, zhangyikun02, zhangyuqin1998, zhengshengning, zhupengyang, zhwesky2010, zoeczy, zyfncg, zzm, 周周周, 苍天荒, 椿下湫咚, 正在学习, 学习中的牛马