PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
此版本在新功能方面,引入了对Fake GroupWise Quant的支持,有助于用户更好地进行模型量化。同时新增了图神经网络训练引擎PGLBox,支持超大规模图模型GPU多机多卡高效训练。此外,增加了对自定义设备的支持,进一步扩展PaddlePaddle的功能范围。在bug方面,解决了一些核心功能、数据加载以及网络通信等方面的问题。修复了多个安全问题,包括一些潜在的安全漏洞,进一步提高框架代码安全性,并更新了安全公告。
ir_codes_collector
中。n
不能被64整除时的问题。版本修复了已知问题,并新增了少量功能。
修复 paddle.utils.dlpack.to_dlpack 在 for 循环里 API 多次创建 dlpack 对象的报错问题,修复引用对象计数错误导致 dlpack 实际指向内容被析构的问题。 #50138
修复 paddle.multiplex API 在多维 Input Tensor 场景下访存越界的问题并添加 check 机制。 #49368
引入 cutlass,实现 gemm+gather+scatter 的融合;优化 sparse conv 的训练和推理性能;优化 batch_norm 在 1D 输入数据下的推理性能。 #50118
修复因使用 constexpr 导致 gcc54 环境下编译失败的问题。 #50421
将 sum op 的 Kernel 迁移到 PHI 算子库,并且修复 infermeta 中 SelectedRows 无法获取正确 dim 的 bug。 #49342
修复 eigen 头文件错误引用导致的偶发编译错误。 #48157
修复 fold 算子在大 bs 输入下访存越界的问题。 #49491
通过增加类型判别,解决发送张量时,维度不统一,造成流水线并行 hang 住的问题。 #50337
修复了自定义算子输出梯度的参数顺序不连续时,反向算子的输出值可能为 None 的 bug。 #48656
修复 paddle.queeze_ API 在 inplace 操作时 shape 重复修改导致结果错误 bug。 #49903
修复动转静模式下无参数 Layer 无法调用 backward 的问题。 #49812
修复 CUDA11.8 在 windows 的编译问题。 #50205
修复 FusedDropoutActBiasGrad
在 H100 上不支持的错误。 #47285
新增 debug_graphviz_path
选项至 build_strategy
。 #46531
修复未关闭的 popen
物件。 #47053
完善混合精度推理功能,提高混合精度推理稳定性。重构二阶段式 convert_to_mixed_precision 接口底层实现, enable_use_gpu 新增 precision 参数支持一阶段式。 #49077、#49239、#49477
支持 jetson ampere 架构下编译。 #49364
修复 fc kernel 低精度模式下的精度问题。 #49781
修复 CAPI 下, trt workspace 参数类型的错误。 #48350
修复 Paddle 1.x 版本下 arg_max arg_min 没有 flatten dtype 参数,推理时会报错的问题。 #49771
修复 split infermeta 重构后关于 lod 逻辑信息缺失问题。 #49745
修复常量折叠 pass 不正确设置,导致 conv2d 权重经折叠后为非 persistable 而没有进入 TensorRT engine 问题。 #50105
V2.4.2 fixed known bugs, and added a tiny set of features.
Fix the problem while using paddle.utils.dlpack.to_dlpack API to create dlpack objects multiple times in the for loop, and fix the bug that the reference counting error causes the memory actually pointed by dlpack to be destructed unexpectedly. #50138
Fixed the issue of out-of-bounds memory access when the input tensor is multi-dimensional in paddle.multiplex API. #49368
Fix the occasional compilation error caused by incorrect referencing of the Eigen header file. #48157
Fixed the bug that the output value of the backward operator may be None when the output gradient parameter order of the custom operator is not continuous.#48656
Add cutlass and implement the fusion kernel of gather+gemm+scatter; Optimize training and inference performance of sparse convolution; Optimize inference performance of batch_norm under 1D input data.#50118
Fix compilation failure in gcc54 environment caused by using constexpr. #50421
Move sum op kernel to PHI and fix bug that can't get correct SelectedRows' dims when run infermeta.#49342
Fixed the issue that the fold operator accesses memory out of bounds under large bs input.#49491
Fix the problem that no parameter Layer cannot call backward under dynamic to static mode.#49812
Fix the compile problem of CUDA11.8 on windows platform.#50205
Fix the unsupported error for FusedDropoutActBiasGrad
on H100.#47285
Add debug_graphviz_path
option into build_strategy
.#46531
Fix the not closed popen
object.#47053
Improve the functionality and stability of mixed-precision inference. Reconstruct the implementation of interface convert_to_mixed_precision and add parameter precision to interface enable_use_gpu.#49077、#49239、#49477
Support compilation under jetson ampere architecture.#49364
Fixed fc kernel diff.#49781
Fixed the error of trt workspace parameter type under CAPI. #48350
Fixed the error caused by arg_max/arg_min without flatten dtype parameter in Paddle 1.x version. #49771
Fixed the bug of missing information about lod logic after split infermeta's refactoring. #49745
Fixed the bug of the constant-folding pass, which causes the conv2d weight to be non-persistent after folding and not enter the TensorRT engine. #50105
去除飞桨对python.so的依赖,修复在包括conda在内的特定的环境下,因无法找到python.so而造成运行失败的Bug。
Remove the dependence of the Paddle on python.so, and fix the bug that fails to execute due to the inability to find python.so in specific environments, including conda.
2.3.2 版本修复了已知问题,并新增了少量功能。
Tensor.stream()
获取的stream与实际运行时stream不一致的问题。(#44500)export CUDA_MODULE_LOADING=LAZY
,即可实现算子按需加载。(#44957 #44997)V2.3.2 fixed known bugs, and added a tiny set of features.
Tensor.stream()
is not returning the correct stream when being used in a customized operator. (#44500)export CUDA_MODULE_LOADING=LAZY
. (#44957, #44997)paddle.nn.initializer.KaimingUniform
和paddle.nn.initializer.KaimingNormal
两种初始化方式,使其支持多种类型的激活函数。(#43721, #43827)paddle.io.DataLoader
的数据预读取功能,使其支持设置了 prefetch_factor
设定的预读取数据的缓存数量,避免在读取大块数据时出现 IO 阻塞。(#43674 )program
(如 save、load、startup_program
等)创建线程池。(#43768)paddle.nn.Layer
中 set_state_dict
中禁用 state_dict
hook。(#43407)paddle.incubate.nn.functional.fused_attention
和 paddle.incubate.nn.functional.fused_feedforward
支持张量模型并行。(#43505)rounding to nearest ties to even
的四舍五入方式,支持量化取值范围 [-128, 127]。(#43829)progress bar
,便于查看量化初始化进度,统计 out_threshold 时跳过 scale op,加速初始化过程。(#43454)conv
和 bn
融合,静态图离线量化支持设置 skip_tensor_list
来跳过某些层不做量化。(#43301)paddle.incubate.nn.functional.fused_attention
和paddle.incubate.nn.functional.fused_feedforward
算子,增加add_residual
属性,用以控制最后一步是否进行加residual
操作,CAE 模型性能提升 7.7%。(#43719)linspace
算子,将 start
、stop
、num
三个输入 Tensor 初始化在 CPU 上,避免在算子中进行 GPU -> CPU 拷贝,SOLOv2 模型性能提升6%。(#43746)paddle.io.DataLoader
在 return_list=True
时因多线程冲突小概率报错问题。(#43691)paddle.nn.Layer
的参数存在 None
类型参数时 to
方法报 NoneType 不存在 device 属性的错误。(#43597)shape
下计算结果出错的问题。 (#42500, #43777)Tensor.__getitem__
在使用 bool
索引时组网阶段输出结果维度为 0 的问题。 (#43246)paddle.slice
和 paddle.strided_slice
处理参数为负数时出现异常的问题。(#43432)step
为负数时赋值结果异常的问题。 (#43694)copy
接口不能在多卡设备间拷贝的问题。(#43728)paddle.incubate.nn.functional.fused_attention
和 paddle.incubate.nn.functional.fused_feedforward
中属性命名引发的推理时的问题。(#43505)grad
的 Tensor 时异常的问题。(#43034)paddle.io.DataLoader
多进程数据读取在固定随机种子时数据无法固定的问题。(#43702)Event
字符串在不同算子无区分,导致性能分析不便利的问题。(#42789)paddle.profiler.Profiler
timeline 可视化逻辑,将在 python 脚本中自定义的事件从 C++ 折叠层显示移动至 python 折叠层显示。(#42790)gpu_cpu_reshape2_matmul_fuse_pass
,修复 ResNet50 性能下降的问题。 (#43750)bilinear_interp_v2
TensorRT convert 支持。 (#43618)matmul_scale_fuse_pass
、multihead_matmul_fuse_pass_v3
到 GPU pass,并添加单测。(#43765)paddle.nn.initializer.KaimingUniform
and paddle.nn.initializer.KaimingNormal
, to support multiple types of activation functions. (#43721, #43827)paddle.io.DataLoader
, so that it can support the setting of the prefetch_factor
to set the cache size of pre-fetched data. This can avoid IO blocking when reading large blocks of data. (#43674)programs
that execute only once (e.g.,save, load, startup_program
, etc.). (#43768)state_dict
hook in set_state_dict
in paddle.nn.Layer
. (#43407)paddle.incubate.nn.functional.fused_attention
and paddle.incubate.nn.functional.fused_feedforward
. (#43505)rounding to nearest ties to even
, and support quantization in the range [-128, 127]. (#43829)progress bar
at the beginning of quantization-aware training, so that it is easy to check the progress of quantization initialization. Skip the scale op when counting out_threshold to speed up the initialization process. (#43454)conv
and bn
fusion in the dynamic graph quantization training. Support the settings of skip_tensor_list in the static graph offline quantization, to skip some layers without quantization. (#43301)paddle.incubate.nn.functional.fused_attention
and paddle.incubate.nn.functional.fused_feedforward
operators. Add add_residual
property to control whether to perform add-residual
operation in the last step. The performance of CAE model is improved by 7.7%. (#43719)linspace
operator. Initialize three input Tensor of start
,stop
and num
on CPU, to avoid GPU->CPU copy in the operator. This can speed up SOLOv2 model performance by 6%. (#43746)paddle.io.DataLoader
when return_list=True
due to multi-thread conflict. (#43691)to
method reports NoneType does not have the device attribute when the paddle.nn.Layer
parameter has the None
type parameter. (#43597)shape
settings. (#42500, #43777)Tensor.__getitem__
is 0 in the networking stage when using bool
index in the static graph.(#43246)paddle.slice
and paddle.strided_slice
handle negative parameters. (#43432)step
is negative. (#43694)copy
interface in C++ cannot copy between multiple cards. (#43728)paddle.incubate.nn.functional.fused_attention
and paddle.incubate.nn.functional.fused_feedforward
. (#43505)grad
. (#43034)paddle.io.DataLoader
multi-process data reads the fixing random seeds under a single card. (#43702)Event
string is indistinguishable among different operators that cause the inconvenient performance analysis. (#42789)paddle.profiler.Profiler
timeline visualization logic, move events customized in python scripts from C++ folding display to python folding display. (#42790)gpu_cpu_reshape2_matmul_fuse_pass
from EnableMkldnn configuration to fix the bug of ResNet50 performance degradation. (#43750)bilinear_interp_v2
TensorRT convert. (#43618)matmul_scale_fuse_pass
and multihead_matmul_fuse_pass_v3
to GPU pass. (#43765)我们很高兴地发布飞桨框架 2.3.0 版本,本版本包含如下重要更新。
新增 100 多个 API,覆盖自动微分、线性代数、概率分布、稀疏张量、框架性能分析、硬件设备管理、视觉领域等方面。
新增 4 个自动微分 API,11 个线性代数 API,21 个概率分布类 API,更好地支持科学计算、强化学习等场景。
新增 11 个 稀疏张量计算 API,支持创建 COO、CRS 格式的 Sparse Tensor 以及与 Tensor 互相转换等基础功能。
新增 9 个框架性能分析 API,以paddle.profiler.Profiler
为核心,提供对训练、推理过程中性能数据的收集、导出和统计的功能。
新增 7 个硬件设备管理 API,更好支持硬件相关信息获取。
新增多个视觉、文本领域 API,方便复用 MobileNetV3, ResNeXt等骨干网络,实现快速组网。
全面升级自适应分布式训练架构,含弹性扩缩容、异步流水执行器、异构通信、自动并行等多个模块,支持了多种异构硬件下自动感知的分布式训练及分布式推理。
动态图混合并行下新增MoE并行策略、GroupSharded 并行策略、Pure FP16 等,进一步支持了动态图下大模型的高效并行训练。
全面升级优化了通用异构参数服务器架构,进行各模块的抽象简化,如通信、存储等,提升了参数服务器的二次开发体验;GPU 参数服务器在千亿参数百亿数据分钟级流式训练下性能提升2.38倍。
新增 Java API 和 ONNX Runtime CPU 后端。
支持 TensorRT 8.0 / 8.2 和结构化稀疏,针对 ERNIE 类结构模型性能深度优化。
新增自定义新硬件接入:提供一种插件式扩展 PaddlePaddle 硬件后端的方式。
新增对华为昇腾910 / GraphCore IPU / 寒武纪MLU / 昆仑芯2代多种异构芯片的训练/推理支持。
This release contains contributions from the project core team as well as :
Adam Osewski, Allen Guo, arlesniak, chenenquan, chenyanlann, fengkuangxiaxia, fuqianya, fwenguang, guguguzi, helen88, houj04, Jacek Czaja, jakpiase, jianghaicheng, joanna.wozna.intel, joeqiao12, Leo Chen, Leo Guo, Li-fAngyU, lidanqing, Liyulingyue, Matsumoto GAO, maxhuiy, Ming-Xu Huang, Nyakku Shigure, piotrekobi, piotrekobiIntel, QingshuChen, qipengh, Skr Bang, Sylwester Fraczek, Sławomir Siwek, taixiurong, tanzhipeng, Tomasz Socha, TTerror, Webbley, yaozhixin, ykkk2333, yujun, Zhangjingyu06, zhangxiaoci, zhangyikun02, zhangyk0314, zlsh80826, zn, Zuza
我们很高兴地发布飞桨框架 2.3.0-rc0 版本,本版本包含如下重要更新。
新增 100 多个 API,覆盖自动微分、线性代数、概率分布、稀疏张量、框架性能分析、硬件设备管理、视觉领域等方面。
新增 4 个自动微分 API,11 个线性代数 API,21 个概率分布类 API,更好地支持科学计算、强化学习等场景。
新增 11 个 稀疏张量计算 API,支持创建 COO、CRS 格式的 Sparse Tensor 以及与 Tensor 互相转换等基础功能。
新增 9 个框架性能分析 API,以paddle.profiler.Profiler
为核心,提供对训练、推理过程中性能数据的收集、导出和统计的功能。
新增 7 个硬件设备管理 API,更好支持硬件相关信息获取。
新增多个视觉、文本领域 API,方便复用 MobileNetV3, ResNeXt等骨干网络,实现快速组网。
全面升级自适应分布式训练架构,含弹性扩缩容、异步流水执行器、异构通信、自动并行等多个模块,支持了多种异构硬件下自动感知的分布式训练及分布式推理。
动态图混合并行下新增MoE并行策略、GroupSharded 并行策略、Pure FP16 等,进一步支持了动态图下大模型的高效并行训练。
全面升级优化了通用异构参数服务器架构,进行各模块的抽象简化,如通信、存储等,提升了参数服务器的二次开发体验;GPU 参数服务器在千亿参数百亿数据分钟级流式训练下性能提升2.38倍。
新增 Java API 和 ONNX Runtime CPU 后端。
支持 TensorRT 8.0 / 8.2 和结构化稀疏,针对 ERNIE 类结构模型性能深度优化。
新增自定义新硬件接入:提供一种插件式扩展 PaddlePaddle 硬件后端的方式。
新增对华为昇腾910 / GraphCore IPU / 寒武纪MLU / 昆仑芯2代多种异构芯片的训练/推理支持。
This release contains contributions from the project core team as well as :
Adam Osewski, Allen Guo, arlesniak, chenenquan, chenyanlann, fengkuangxiaxia, fuqianya, fwenguang, guguguzi, helen88, houj04, Jacek Czaja, jakpiase, jianghaicheng, joanna.wozna.intel, joeqiao12, Leo Chen, Leo Guo, Li-fAngyU, lidanqing, Liyulingyue, Matsumoto GAO, maxhuiy, Ming-Xu Huang, Nyakku Shigure, piotrekobi, piotrekobiIntel, QingshuChen, qipengh, Skr Bang, Sylwester Fraczek, Sławomir Siwek, taixiurong, tanzhipeng, Tomasz Socha, TTerror, Webbley, yaozhixin, ykkk2333, yujun, Zhangjingyu06, zhangxiaoci, zhangyikun02, zhangyk0314, zlsh80826, zn, Zuza