Skip to content

PaddlePaddle 2.6.0 Release Note

Compare
Choose a tag to compare
@XiaoguangHu01 XiaoguangHu01 released this 08 Jan 06:43
· 62 commits to release/2.6 since this release
e032331

1. 重要更新

  • 新一代中间表示 PIR:为了进一步提升飞桨框架的可扩展性,研制了新一代中间表示 PIR(Paddle Intermediate Representation)。实现系统性的抽象飞桨框架底层核心概念,如:Operation、Attribute 和 Type 等,为开发者提供了灵活、高效的基础组件。通过引入 Dialect 机制,可以全面、分层次地满足各模块对中间表示的需求,从而极大地提升了框架的扩展性。PIR 严格遵循 SSA(Static Single Assignment)原则,在实现了顶层结构的统一的同时,还确保了“算子顺序性”与“计算图语义”的和谐共存。此外,PIR 提供了更为简洁、低成本的 Pass 开发流程,内置了一系列丰富且功能完备的 Pass 优化策略,为大型模型的极致性能优化提供了技术支撑。
  • 动转静编译优化架构:为了进一步提升框架的模型开发性能,飞桨动转静训练能力全面升级,支持自适应的图构建能力,在 700 多个飞桨产业级模型上验证,一键动转静训练成功率达到 100%。同时,飞桨框架的神经网络编译器 CINN 整合入飞桨主 Repo,使得编译器与飞桨更加融为一体。CINN 完成了架构的梳理和扩展能力的完善,提升系统稳定性。基于 PIR 完成动转静、组合算子、执行器和编译器的紧密联动,为飞桨框架整体性能的提升提供了更大的空间。
  • 增强动态图分布式能力:大模型对框架的分布式训练性能提出了更高的需求。飞桨在通信库、图分析、分布式策略和任务启停等维度进行了全面优化,增强了飞桨动态图的分布式计算能力,为大型模型高效训练提供了支持。在性能方面,通过减少流水线 GPU 显存占用、采用 TensorFusion 技术、实现通信计算 overlap 以及减少非必要的数据同步拷贝等方式,进一步提升了训练性能。同时,通过环境变量控制 Optimizer 等方式提高了混合并行调试的灵活性。此外,通过相关 Bug 的修复,显著提升了系统的稳定性。
  • 动静统一自动并行架构:为了进一步降低大模型编程和优化难度,飞桨对动静统一的半自动并行(Auto Parallel)编程范式进行了全面的优化,简化了开发者的编程复杂度。开发者无需深入了解手动并行编程范式下的复杂概念和 API 接口,如行切分、列切分等,仅需通过少量的张量切分标注即可完成混合并行模型的构建,框架便能够自动推导出所有张量和算子的分布式切分状态,并添加合适的通信算子。同时支持一键动转静进行分布式训练,使开发者能够高效地实现任意混合并行策略,大幅简化了混合并行训练代码的开发过程。
  • 硬件适配方案(CustomDevice):大模型场景下新硬件并行训练需求增加,飞桨新增了对分布式高级策略、自定义算子和自定义融合策略的支持。升级了分布式通信库,新增了对 MP、GroupShared、PP、SP 和 MOE 等多项高级分布式策略的支持。同时,支持厂商灵活接入不同颗粒度的 Transformer 算子库并通过融合 Pass 修改计算图进行性能加速。
  • 安装和开发体验:采用模块化编译的方式优化了 CMake 代码的逻辑,提升了飞桨全量编译和增量编译的效率,提升了 RD 开发效率,同时支持了 Python3.12,CUDA12,Hopper 架构编译,并引入 Clang 等工具全面优化了代码格式。此外,将 C++单测从链接静态库的方式转变为链接动态库,减小编译体积。这些改进措施为用户提供更加流畅、高效的安装和开发体验。

2. 不兼容升级

  • 为了避免误用,去除了 0 维 Tensor 兼容态开关,实现 API 行为和业界主流习惯一致。在上一个版本中,我们已经支持 0 维 Tensor,但是考虑到尽量避免部分模型的报错,添加了兼容态开关。即在一些模型套件使用较多且没有修改完成的场景中还是默认使用只有 1 个元素的 1 维 Tensor 来替代 0 维 Tensor。这个版本去除了兼容态开关,在任何场景中都不会再使用只有 1 个元素的 1 维 Tensor 来替代 0 维 Tensor,应该支持 0 维 Tensor 的 376 个 API 的行为都完成了修正和统一,彻底完成对 0 维 Tensor 的支持。#57036, #54581, #54500
  • 为了提升 API 易用性,将 paddle.nn.functional.diag_embed 精简为 paddle.diag_embed,并支持 Tensor.diag_embed 方式使用。 #58223
  • 为了解决在静态图下 Tensor 索引写(如 tensor[0] = 10)导致的微分计算错误问题,并符合静态图的规范,本版本引入了 paddle.static.setitem API。在静态图环境中,更推荐使用此 API 来支持 tensor 的索引写操作,而非下标运算符。这一变化并不影响动态图环境,其中仍允许使用下标运算符进行索引写操作。#53682
  • 本版本中 paddle.fluid API 全面退出历史舞台。在本次更新中,我们彻底移除了所有 paddle.fluid API,并删除了 fluid 目录。同时,飞桨底层的少量公共组件已被整合至 paddle.base 目录中。使得飞桨用户无需再关注 fluid 相关概念和接口,进一步简化了飞桨 API 体系,提升可读性。#56576, #54424, #54829, #53992, #54806, #55754, #55986, #55345, #56099, #51717, #54152, #55522, #55757, #58521, #54936, #55007, #55661, #55970

3. 训练框架(含分布式)

Python API

升级 Tensor 索引机制

本版本全面优化了 Tensor 的基础索引、高级索引以及联合索引功能,以更好地符合业界标准与用户习惯。具体包括:在基础索引中增加了对 view 的支持,修正了高级索引中的一些错误行为,并实现了联合索引的读取功能。此外,我们还将索引解析下沉到 C++层面,改进了高级索引算子的性能,并移除了 bool 索引中的冗余计算。通过这些优化措施,Tensor 的基础索引、高级索引和联合索引性能得到了全面提升。#56893, #58643, #57986, #56272, #58856, #55211, #57023, #56613, #55602, #59281, #57737

升级 Inplace 机制

在之前的版本中,为了确保反向微分计算的正确性,当某个 API 的反向计算依赖于其前向输入数据时,飞桨会避免使用 Inplace 操作方式,因为这种方法可能会覆盖原始输入数据。虽然这种机制简化了实现过程,但也限制了许多 API 实现 Inplace 功能,从而影响了用户体验。
在本版本中,飞桨对 Inplace 机制进行了全面升级。实现自动检测反向计算对前向输入的依赖关系,并在需要时保存这些输入数据,从而支持更多的 Inplace 操作。这一改进不仅提升了内存使用效率,还增强了 API 的功能性。
此外,我们新增了 109 个支持 Inplace 操作的 API,包括 paddle.abs_、paddle.sin_/cos_/tan_、比较操作如 paddle.greater_than_/less_than_/equal_、逻辑操作如 paddle.logical_and_/logical_or_/logical_not_,以及 paddle.neg_和 paddle.log_等。在丰富飞桨的功能集同时,提升了用户在数值计算和深度学习任务中的效率与便捷性。#54683, #55078, #55576, #56888, #55509, #57093

其他新增 API

  • 新增 paddle.nn.functional.scaled_dot_product_attention,显著提升大模型中注意力(attention)机制的计算效率,更好地满足大规模深度学习模型对高性能计算的需求。。#55242
  • 新增了一系列科学计算相关 API,包括 paddle.cummax 和 paddle.cummin 用于累积最大值和最小值的计算,paddle.index_fill 和 paddle.masked_fill 用于按索引或掩码填充张量,paddle.linalg.pca_lowrank 用于低秩主成分分析,paddle.hypot 用于计算直角三角形的斜边长,以及 paddle.atleast_1d、paddle.atleast_2d 和 paddle.atleast_3d 用于确保张量至少有一维、二维或三维。同时,我们还提供了 paddle.select_scatter 和 paddle.diagonal_scatter 用于更灵活地选择和散列张量数据,以及 paddle.multigammaln 用于计算多伽马函数的自然对数。此外,本版本新增优化器相关 API,包括:paddle.optimizer.lr.LinearLR 和 paddle.optimizer.lr.CosineAnnealingWarmRestarts 学习率调度策略;引入了 paddle.io.SubsetRandomSampler 以支持从数据子集中进行随机采样。这些新增 API 将进一步提升飞桨在各类应用场景中的灵活性和高效性。。 #57416, #53546, #53743, #57295, #57726, #58764, #58323, #57720, #58209, #58214, #57792, #51395, #57724, #57355, #57744, #58244, #57599, #59343, #57879

新一代中间表示(PIR)

PIR(Paddle Intermediate Representation)对底层的核心概念如 Operation、Attribute 和 Type 等进行了系统性的抽象,为开发者构建了一套灵活且强大的基础组件。此外,通过引入 Dialect 这一概念,飞桨框架能够全面且分层次地管理各模块对中间表示(IR)的需求,并支持开发者根据特定需求定制化扩展 Dialect,从而显著提升了框架的扩展性和适应性。在设计上,PIR 严格遵循 SSA(Static Single Assignment)原则,统一了顶层结构,实现了“算子顺序性”与“计算图语义”的兼容表示,为复杂的计算流程提供了清晰且一致的视图。为了进一步优化大模型的性能,PIR 还提供了一套更加简洁、低成本的 Pass 开发流程,包括 DRR(Declarative Rewrite Rule)和模式重写器(Pattern Rewriter)。同时,内置了一系列丰富且功能完备的 Pass 优化策略,这些策略能够针对大模型的特点进行深度优化,从而为大模型的极致性能提供了强有力支撑。通过这些创新设计和优化手段,PIR 为飞桨框架的高效运行和持续扩展奠定了坚实基础。

新功能

功能优化

性能优化

  1. 新增 fused_attention,fused_dropout_add,fused_gemm_epilogue_pass,fused_linear_param_grad_add_pass,fused_weight_only_linear_pass,fused_softmax_mask_upper_triangle 等优化算子融合类 Pass,提升训练和推理性能。#57557,#58272,#58188,#58401,#59366,#57655,#57360,#56672,#58537,#56247,#59391,#58897,#54933

动转静能力增强

动态图到静态图的转换是深度学习框架中的一项关键技术,它允许开发者在灵活性和训练效率之间找到最佳平衡。本版本飞桨对动转静核心功能进行了全面升级,在飞桨产业级模型库的 700 多个模型中,动转静训练的成功率高达 100%。

新功能

  • 采用 Python Eval Frame 和虚拟机模拟执行技术,创新性地实现了自适应的 Graph Break 机制。这一机制特别针对控制流场景,通过引入 CallLayer 机制,充分利用飞桨动静统一的优势,支持 AST(抽象语法树)与字节码模拟的混合模式,有效捕获控制流算子,从而大幅度提高了计算图的静态化能力。在缓存优化层面,融合了公共子表达式消除等高级优化技术,显著提升了 Guard 的执行效率。这些优化措施不仅减少了冗余计算,还提高了整体系统的运行速度。为了增强系统的鲁棒性,设计了一个简洁高效的数据中间层结构。这一结构支持 SideEffects 的正确性恢复,确保了系统在复杂环境下的稳定性和可靠性。此外,广泛兼容 Python 3.8 至 3.11 的主流解释器版本,为用户提供了广泛的适用性。#57824,#55887,#58155,#56107,#57490,#58829,#57240,#57588,#58117,#59823,#56077,#58956,#57653,#59855,#59017,#58424,#58187,#57793,#59698,#59747,#59710,#59297,#58423,#56262,#58103,#58538,#58771,#59191,#57754,#59439,#59816,#59035
  • 新增对 PyLayer 功能的动转静语法转写解析,使得 PyLayer 在动态图与静态图之间的转换更加顺畅。现在,用户可以在 PyLayer 下无缝地进行动转静的训练,并轻松导出推理模型。#56108,#56531,#57066,#57633

Bug Fix

  • 修复了动转静在 is_test=True 模式部分场景下出现显存异常的问题。#58350
  • 修复了被@to_static 装饰的函数在类似 foo(x,x,y) 场景下 jit.save 模型导出的问题。#55963
  • 修复了部分 API 行为动静逻辑不统一问题,提升了动转静整图转换成功率和使用体验。#56092

漏洞修复

  • 修复了动转静语法转写模块使用 eval()存在的潜在安全漏洞问题。#60100

动态图分布式能力增强

为了满足大型模型的需求,本版本重点提升了飞桨动态图的分布式计算能力。在通信库、图分析、分布式策略和任务启停等方面进行了多方面的改进,为大型模型训练提供了全面的支持。在性能方面,我们通过减少流水并行 GPU 显存占用、采用 TensorFusion 技术、实现通信计算 overlap 以及减少非必要的数据同步拷贝等方式,进一步提升了训练性能。同时,通过环境变量控制 Optimizer 等方式提高了混合并行调试的灵活性。此外,通过修复相关 Bug,进一步提升了系统的稳定性。

新功能

  • 通信库新增 TraceHang 功能,当集群训练出现 Hang 的问题时,能够快速的定位到出现问题的节点。#59217
  • 为了提升训练效率和降低显存,动态图支持 stride 机制。#55156,#54762,#55850,#59190,#57005,#57005,#57331,#58033,#58033,#58303,#57835,#57189
  • 为了方便计算图的分析,增强 paddleviz 功能。#56837,#57626
  • 分布式 Sharding 策略(Stage1,2,3)新增 main_grad 功能,以支持更高精度的梯度累加,减少低精度累加带来的精度损失。#57972,#57934,#57473,#57537,#59611,#57960
  • Sharding Stage1 策略新增开关变量,可以控制是否对 Optimizer 进行 fusion 计算。#58790
  • Recompute 功能新增对 Tuple 输入参数的支持,增强了 Recompute 接口的调用能力。#56793
  • 增强 Launch 功能,动态图下无需指定 endpoints 也可以进行分布式训练。 #54636

功能优化

性能优化

  • 实现 PP 策略的最后一层及时释放 output,以节约显存。#54505
  • MP 策略 Tensor fusion 支持传入 params group,增强 Tensor fusion 功能;增加 allreduce 异步通信性能,通过计算和通信的 overlap 提升训练性能。#57690,#55662
  • Sharding 策略反向计算和梯度通信进行 overlap 以提升训练性能。Sharding stage1 新增 Tensor fusion 和 fuse grad clip,optimizer 等优化提高计算效率。支持 VPP 与 DP/Sharding Stage1 的 overlap,提升通信计算并行度。优化 Sharding Stage1 在 FP16 下的性能,在 check finite 阶段只对本 sharding rank 负责的梯度进行检查,降低计算开销;增加环境变量,控制是否进行 Optimize,以节约显存支持,实现使用更少的资源进行模型训练调试。#55598,#55427,#56063,#55766,#59848
  • 混合并行策略将 PP/VPP 下的 Tensor fusion 提到运行前,解决运行时 fuse 对显存额外开销的问题。通过减少非必需的同步 memcpy,以提升模型训练性能。#54403,#57215

Bug Fix

自动并行

本版本对动静统一自动并行(Auto Parallel)编程范式进行了全面的优化,简化了开发者的编程复杂度。开发者无需深入了解手动并行编程范式下的复杂概念和 API 接口,如行切分、列切分等。仅需通过少量的张量切分标注即可完成混合并行模型的构建。框架能够自动推导出所有张量和算子的分布式切分状态,并添加合适的通信算子。同时支持一键动转静进行分布式训练,使开发者能够高效轻松地实现任意混合并行策略,大幅降低了混合并行训练代码的开发成本。

完善了自动并行核心功能

增强动态图半自动并行能力

静态图半自动并行能力增强

  • 新增 Sequence Parallel 并行策略;流水线并行新增: FThenB、Interleaved 1F1B、Eager 1F1B、VPP 等调度模式,支持流水线调度的可视化,并支持上述策略与原有并行策略的混合并行;升级梯度同步机制,支持数据在任意 broadcast 维度后需要的梯度同步。#57605,#54727,#54409,#54787,#58313,#59179,#59416,#59719,#59822,#59057,#59522,#57061
  • 执行体系与 PIR 进一步适配,打通 PIR 的优化 Pass,分布式场景下支持了 fuse_linear fuse 优化,实现性能提升。#58459,#58528,#55555,#59757,#59102,#57917
  • 底层架构升级: 执行器升级支持图依赖信息复用和静态化 kernel 选择;整图切分补全机制升级,切换新切分推导规则并支持更多长尾 cases 的正确切分补全;优化了静态图分布式下对控制流的支持,适配更多场景;优化了整图编译速度、日志信息格式等提升用户体验。 #55389,#55650,#54938,#57447,#57751,#57742,#59524,#59526,#58669,#57616,#56511,#55727,#58906,#56016,#54897
  • 优化静态图显存管理,新增精细化重计算策略;优化混合精度适配,支持用户手动指定 cast 范围等场景;支持 Cross Entropy 的并行计算;支持 scaled_dot_product_attention、fuse_rope 等融合算子;执行调度优化,支持张量并行、流水线并行中通信计算间更好地 Overlap。#58421,#58533,#59498,#59498,#59187,#59188,#58172,#58628,#56185,#56696,#59497,#58304,#58977

AutoTuner

本版本实现基于 Profiling 的并行策略自动搜索和调优工具 AutoTuner,能够在给定模型和硬件资源的条件下,自动将并行策略和优化策略进行组合,并选取有效的组合配置运行实验,从而搜索出大模型训练和推理的最佳配置。此外,AutoTuner 实现了多种剪枝优化策略,包括显存建模等,能够大幅度减少搜索空间和搜索时间。#54460,#54668,#59794,#59727,#59782,#54834,#58127,#56968,#55466,#56939,#58183,#58314,#55499,#59748

算子库

不兼容升级

为了提升飞桨框架的可维护性,删除框架中部分废弃的算子(如 diag_v1, isfinite_v1, pad2d_v1 等),通过飞桨 1.x 版本训练所保存的使用到这些算子的模型将无法在飞桨新版本上进行推理。#57895,#57892,#57898,#57730,#57732,#57810,#57884,#57794,#57926,#57925,#57807,#57808

算子库功能增强

Bug 修复

CUDA

新功能

  • 新增调试类 API paddle.amp.debugging.check_check_numerics,计算并返回这个 Tensor 数值中异常值(NaN、Inf)和零元素的数量。#54301
  • 新增 fused_rope 融合算子,加速 LLaMA 类大模型训练。#54351
  • 更新 CUDNN Frontend API 版本到 v0.9.1,并新增加速 ResNet 网络的 fused_scale_bias_add_relu 融合算子。注意该功能处于实验期,默认不开启。#58367, #54949, #58504
  • 基于 Flash-Attention v2,添加 Tensor 类似 Mask 功能支持,反向算子支持确定性计算,便于调试。#57276, #56363
  • 修改稀疏 conv3d 后端实现以支持 2d 形状,避免前端 reshape 的开销。#54707
  • 新增 matmul_int8 算子。(#55228)

功能优化

  • 优化 CUDA Graph 对随机数算子的支持。#58310
  • 自动混合精度训练默认功能加强,包括:
    • 优化自动混合精度训练接口的使用体验。#58152,#55364,#57903
    • 将 fused_attention、fused_feedforward、fused_gemm_epilogue 等矩阵计算类算子加入框架默认的白名单,并统一动静态图默认黑白名单设置。#55373, #55713
    • argsort、dist、erfinv、nanmedian、poisson 算子和 lamb 优化器算子支持 FP16、BF16 低精度计算。#51662, #55105, #55287, #55824, #56056, #56184, #55641
    • 修复 elementwise_max 算子低精度实现,改成使用 FP32 类型进行数值计算,减少精度损失。#54799
    • 将 Reduce 类算子计算需要的临时结果 Tensor 改成 FP32 类型,避免将中间结果转换成低精度带来的精度损失。#55709)
  • flip、roll & roll_grad、index_put & index_put_grad 等算子 GPU 代码实现优化,在性能不下降的前提下移除不必要的 C++模板,优化算子编译耗时并减少编译生成的二进制体积。#57309, #57525
  • bernoulli 算子增加对输入概率合法性的检查。#59174

性能优化

  • 优化 BroadcastKernel 对大 Tensor 的支持,改成对大 Tensor 切片多次调用 INT32 版本实现的方式,算子性能提升 7.27x。#57313, #57996
  • 优化 Tensor 保存接口的性能,通过先将 Tensor 拷贝到 CPU 再转 numpy,避免 Tensor 不连续时自动转换成连续 Tensor 的开销。#57040

Bug Fix

  • 修复 memmory_efficient_attention 算子对 sm_90 的支持。#58070
  • 修复 softmax 算子,当 axis=-1 且长度大于 100000 的实现出现的 NaN 问题。#57851
  • 修复 set_constant 算子在一些情况下出现 GPU 访存错误问题。#59905
  • 修复 layer_norm 算子快速实现版本中出现的 GPU 存储读写竞争问题。#56435

拓展神经网络编译器 CINN 架构能力

在本次更新中,飞桨神经网络编译器 CINN 的重点在于架构的梳理和能力的全面扩展。鉴于大模型对动态 Shape 的需求日益增长,初步探索并实现了在动态 shape 下编译器的有效运行和优化策略。
在架构层面,引入了 Python DSL,这一举措显著提升了 CINN 的开发便捷性和 Debug 能力,使得开发者能够更高效地编写和调试代码。同时,对 Schedule 的逻辑进行了重构,以 GroupSchedule 为主导,从而在算子 Group 层面实现更加通用且稳定的优化策略。为了增强 CINN 的稳定性,探索并引入了强约束组件,这一组件能够有效减少系统中的不确定性和潜在错误。此外,对 CINN 的历史工具类和软件结构进行了系统性的整理、优化和改进,进一步提升了代码的可读性和可维护性。在与飞桨其他组件的整合方面,进一步加强了 CINN 与 PIR、Paddle 的紧密结合,使得编译器与飞桨整体框架更加协调一致。这一改进不仅提升了编译器的性能,还为开发者提供了更加流畅和统一的开发体验。

兼容性升级

  • 更新存储读取接口至兼容 Paddle 2.0。 #55836
  • 更新 relu6 Op Mapper 的兼容性。 #55611

改造废弃

  • 删除旧的 Schedule 形式。 #55566,#55391
  • 删除一些过时测试。 #56245,#57987
  • 删除不再适用的 remove_nested_block Visitor 工具。 #56972
  • 删除其他无用代码。 #55413

新功能

功能优化

性能优化

  • 对 vit attention 进行融合。 #54139
  • 优化 block reduce。 #58196

bug 修复

文档

  • 增加 README 文件。 #58349

4. 部署方向(Paddle Inference)

通用推理优化

本版本升级提升了推理引擎在 GPU 和 CPU 上性能和易用性,降低了用户使用成本和线上推理的应用成本。在 GPU 上支持了高性能的多线程异步执行器,各模型推理性能提升 5%~10%;同时支持新版本 TensorRT 和 BF16 推理能力,TensorRT 推理性能和易用性进一步提升;在 CPU 上,支持最新版本的 OneDNN 高性能推理,在 SwinTransformer、FastRCNN 等系列模型上性能大幅提升。

大模型推理优化

实现了生成式大模型的细粒度融合推理优化,该优化方案既保证了高性能的推理能力,又具备良好的可拓展性。用户可以根据需要,灵活运用各种细粒度融合算子和飞桨原生算子,自由组合构建生成式大模型的网络结构,从而实现高效且低成本的推理。此外,我们的方案还支持主流的生成式大模型结构,显著降低了这类模型的推理部署成本,为生成式大模型的高效、低成本落地提供了有力支持。

Paddle-TensorRT 推理优化

改造废弃

  • OneDNN 中删除 fc_elementwise_add 融合。#55504
  • 删除 redunant op。 #54442

Bug Fix

5. 硬件适配

硬件适配方案 (Custom Device)

在本次更新中,新增了对分布式高级策略、自定义算子和自定义融合策略的支持。通过升级分布式通信库,新增了对 MP、GroupShared、PP、SP 和 MOE 等多项高级分布式策略的支持。同时支持厂商灵活接入不同颗粒度的 Transformer 算子库并通过融合 Pass 修改计算图进行性能加速。

新功能

  • CustomDevice 升级对 Paddle 最新分布式通信库 CommContext 的支持,并新增了多种高级分布式策略 GroupShared 和 MOE 等策略。#56301,#54671,#57957,#56669,#54384,#54572,#54573,#54676
  • 新增 CustomDevice 对 CustomOP 的支持,并可注册 Paddle PHI 算子库中尚未定义的算子,同时新增 CustomDevice 通过 CAPI 支持 CustomOP。#57038,#55532,#56755,#55532,#55533,#55659
  • 新增 CustomDevice 对 CustomPass 功能的功能,支持通过 Python API 修改计算图 IR。#55511,#55728
  • 新增 CustomDevice 对 Paddle run_check 健康功能检查的支持。#56318
  • 新增 CustomDevice 对 StreamSafeAllocator 的支持。#55393,#56380,#56536,#58035
  • 新增 CustomDevice 对 DataTransform 的支持。#56627

功能优化

  • 新增 CustomDevice,支持飞桨更多的接口,包括 Variable.set_value,adamw,share_external_data,mp_allreduce_sum,tensor.numpy,get_paddle_place, GeneratorState。#55272, #56386, #57253, #56927,#56189,#55225,#55247
  • 修改 CustomDevice 动态库加载方式,从 RTLD_NOW 改为 RTLD_LAZY,方便后续检查 Custom Device 相关软件栈版本的兼容性。 #57544
  • 新增 CustomDevice 在混合精度训练下对 FP16 算子的检测功能。#56053,#56176

Bug Fix

昆仑 XPU

新功能

  • 新增 XPTI (XPU Profiling Tool Interface) 支持运行时性能数据的采集和分析功能。#54685,#54690,#54800
  • 完成对 Paddle 最新分布式通信库 CommContext 的支持。#59418
  • 新增 XPU 融合算子包括 fast_where。#55628
  • 新增 XPU Plugin 功能支持,方便用户可通过 XTDK 编程方式开发 XPU 自定义算子。#55101,#59326
  • 新增 XPU 对 AutoGrowthAllocator 的支持。#54121
  • 新增昆仑 3 的算子支持列表。#57683

功能优化

  • 对 XPU Inference API 进行升级。#54342
  • 优化部分 XPU 算子性能和新增部分 XPU 算子对 bf16 的的支持,包括 unique/index_put,squeeze/unsqueeze kernels,swish/swish_grad,scatter_nd_add_grad/slice,rsqrt/bitwise_or/arange_tensor,where,collective 算子等。#56582,#58161,#58440,#58580,#58950,#58616,#59273
  • 优化 XPU 内存管理,避免内存泄漏。#59334,#54847
  • 支持 INT8 推理。#57258
  • 新增 FP16 系列推理算子支持。#55642,#54410
  • 支持 share_external_memory 接口传入输入输出。#55170
  • 开源量化模型 XPU 推理支持。#58568
  • 新增 context_gm_size 配置代替在 Pass 中分配 global memory。#54674
  • 新增 embedding、fast_gather_nd plugin。#56488,#56103
  • 支持 fast_layternorm + leaky_relu 融合。#57113
  • KL1 和 KL2 精度下 elementwise_min/max/floordiv/where 推理支持。#58422
  • 支持 fc 和 conv2d 算子 autotune 配置。#58801
  • 支持 conv 和 fc 动态量化。#59307
  • fc + act 融合支持 sigmoid, swish and relu6。#54486
  • elementwise_sub/elementwise_div 支持 int 数据类型。#55920

Bug Fix

海光 DCU

Bug Fix

6. 环境适配

采用模块化编译的方式优化了 CMake 代码的逻辑,提升了飞桨全量编译和增量编译的效率,提升了 RD 本地开发效率,同时支持了 Python3.12,CUDA12,Hopper 架构编译,并引入 Clang 等工具全面优化了代码格式。此外,将 C++单测从链接静态库的方式转变为链接动态库,减小编译体积。这些改进措施为用户提供更加流畅、高效地安装和开发体验。

Thanks to Our Contributors

Azure-Tang, zhaoyinglia, From00, JZ-LIANG, xysheng-baidu, SylarTiaNII, kuizhiqing, zhiqiu, FeixLiu, liuzhenhai93, GhostScreaming, pangengzheng, xiaoyewww, wanghuancoder, ForFishes, hitywt, danleifeng, tianshuo78520a, ykkk2333, houj04, lj970926, XiaociZhang, HarperCy, cqulilujia, runzhech, RuohengMa, Caozhou1995, kangguangli, heavyrain-lzy, zyfncg, SigureMo, YuanRisheng, lchdl, LiYuRio, AndSonder, Wennie396, zhangbo9674, liudongxue01, risemeup1, phlrain, winter-wang, yuanlehome, NALLEIN, Liujie0926, yuguo-Jack, gitliuyf, zh794390558, Aurelius84, 6clc, GGBond8488, xiaoguoguo626807, Wong4j, iosmers, xiaoxiaohehe001, LielinJiang, carryyu, Difers, yangxiaoyu14, xuxinyi389, cxxly, gongshaotian, jjyaoao, lijialin03, lxd-cumt, cyber-pioneer, HydrogenSulfate, MayYouBeProsperous, Charles-hit, Patrick-Star125, ScottWong98, huangjiyi, DrRyanHuang, jinyouzhi, BeingGod, Wanglongzhi2001, yangguohao, zyt1024, longranger2, 2742195759, megemini, thisjiang, kevincheng2, zhoutianzi666, Wangzheee, ming1753, tianhaodongbd, freeliuzc, zhenyun-li, MARD1NO, RichardWooSJTU, eee4017, leo0519, csy0225, wwbitejotunn, bukejiyu, jiweibo, iamsonderr, ckl117, ronny1996, zhanglirong1999, LLee233, ZHUI, wangxn12138, zhwesky2010, Courtesy-Xs, zoooo0820, llyyxx0413, Asthestarsfalll, zxcd, pkuzyc, idontkonwher, sneaxiy, hong19860320, ZibinGuo, leolishaohao, MuShangCC, zhupengyang, shentanyue, Travis-Lee, wz1qqx, frank-oops, newway, QingshuChen, zhangyk0314, HandSomeLEEw, Shixiaowei02, zhangyuqin1998, Xing-lil, zhhsplendid, jiahy0825, xinyu-intel, MarioLulab, 0x45f, Tom-Zheng, xingmingyyj, zhangbopd, gouzil, zeroRains, BiynXu, WintersMontagne10335, wuhuachaocoding, GreatV, chenwhql, deepllz, parap1uie-s, ozogxyz, FisherWY, changeyoung98, zhiboniu, YangQun1 dynamicheart, Xreki, liugddx, Lylinnnnn, YSF-A, zzjjay, YanhuiDua, lishicheng1996, USTCKAY, abenmao, cocoshe, HermitSun, ccsuzzh, sanbuphy, enkilee, RedContritio, Liyulingyue, zrr1999, chen2016013, Galaxy1458, chalsliu, mrcangye, XieYunshen, zhiheng-liu, haohongxiang, ZzSean, JamesLim-sy, yuehuayingxueluo, niuliling123, umiswing, sijunhe, littsk, SecretXV, zhurou603, zhangjun, caizejun, yangjianfengo1, vivienfanghuagood, Xinyu302, lizexu123, yghstill, Li-fAngyU, VigiZhang, co63oc, dhanush-2501, ooooo-create, PommesPeter, zeus2x7, akshatvishu, jzhang533, Sekiro-x, gumblex, BernieHuang2008, YibinLiu666, qiuwenbogdut, XavierZXY, MqLeet, zhangting2020, mingxu1067, Ainavo, SSKlearns, yuchen202, silverling, zade23, wenxiaohahaha, NKNaN, Tsaiyue, fsczz, Tomoko-hjf, rhmaaa, zbt78, Hhankyangg, wangzhen38, zhengqiwen1997, engineer1109, onepick, qili93, Rane2021, nemonameless, DesmonDay, RachelXu7, ceci3, lyuwenyu, liuruyan, LokeZhou, shiyutang, lanxianghit, feifei-111, Sahala08, sunzhongkai588, Kaedeharai, Candy2Tang, liyongchao911, whisky-12, InsaneOnion, yoyoIcy, KongAKun, linzeyang, MuhammadNizamani, eltociear, Ligoml, LUZY0726, Windfarer, FlyingQianMM, jeng1220, junelotus, zlsh80826, Vvsmile, Frida-a, TonibMw, guoshengCS, zhink, ZhangYulongg, AlbertVan, fengxin-hello, mjp9527, entired, DanGuge.