Paddle Versions Save

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)

v2.6.1

3 weeks ago

发版说明

此版本在新功能方面,引入了对Fake GroupWise Quant的支持,有助于用户更好地进行模型量化。同时新增了图神经网络训练引擎PGLBox,支持超大规模图模型GPU多机多卡高效训练。此外,增加了对自定义设备的支持,进一步扩展PaddlePaddle的功能范围。在bug方面,解决了一些核心功能、数据加载以及网络通信等方面的问题。修复了多个安全问题,包括一些潜在的安全漏洞,进一步提高框架代码安全性,并更新了安全公告。

新特性

  • 支持Fake GroupWise量化(#61900):新增对一种量化方法的支持,可以提高模型的性能效率。
  • 支持图神经网络GPU训练(#60495,#62111):新增图神经网络训练引擎PGLBox,支持超大规模图模型GPU多机多卡高效训练。
  • 其他改进:支持tile op int8模式推理,并添加vlog语句 (#60261),repeat_interleave支持bfloat16数据类型的Tensor输入 (#61854),自定义设备支持动态图模式的c_embedding算子 (#60774),在CINN(自定义中间网络)框架中,将IntrinsicOps添加到ir_codes_collector中。

Bug修复

  • 修复权重量化内核错误(#60184):解决了在权重量化内核中当n不能被64整除时的问题。
  • 修复量化感知测试问题(#61211):修复了量化感知训练(QAT)测试中的问题,以确保其正常运行。
  • 修复Paddle-TRT集成问题(#61806, #61605, #61966):对Paddle-TRT集成进行了多项修复,包括缓存键值(KV)量化和单元测试失败问题。
  • 禁用LLM_INT8 UT(#62282):禁用了大型语言模型(LLM)INT8精度的单元测试,以避免不必要的运行时。
  • 修复test_benchmark单测编译失败问题(#61427):修复了test_benchmark单测编译失败的问题#60092。
  • 修复工具包的数据加载器(#61867):对工具包的数据加载器进行了必要的更正。
  • 修复put_along_axis系列问题(#62065):对reduce参数新增支持min/max/mean三种可选值,修复了reduce=add/mul下的反向梯度计算Bug, 修复了reduce=mul下的GPU前向计算Bug,修复了size过大时的前向计算Bug。
  • 修复Windows平台下的编译Bug(#60308):修复windows平台下的编译找不到common库的bug。
  • 修复OpenSSL-CPU编译错误(#62079):修复cpu-openblas编译场景中未正确链接 Python 库导致的编译bug。

安全修复

  • 修复安全问题(#61161, #61294, #61032, #61285, #61162, #61389, #61356, #61827):修复了涉及绘图功能、解压缩和命令执行的多个安全问题,以确保框架的安全性和完整性。
  • 禁用特定测试(#60173, #60662, #60786):禁用了某些未通过或不适用于特定配置或版本的测试。
  • 修复框架不同组件Bug(#61631, #62117, #60840, #62104, #60217, #60930, #61380):在框架的不同组件中修复了各种Bug。
  • 修复自定义设备功能(#60616):打开自定义设备中生成器偏移量的编译控制。
  • 内存和分配检查(#60208, #60545, #61847, #62111, #62057, #62278):实施了与内存分配和管理相关的检查和修复,以防止崩溃并提高稳定性。

文档

  • 文档风格改进(#61688):改进了文档的样式和格式。
  • 安全公告更新(#60532, #60649):更新了2023年的安全公告,以通知用户潜在的安全问题。

v2.6.0

3 months ago

v2.5.0

9 months ago

v2.4.2

11 months ago

2.4.2 Release Note

版本修复了已知问题,并新增了少量功能。

训练框架(含分布式)

  • 修复 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

部署方向(Paddle Inference)

  • 完善混合精度推理功能,提高混合精度推理稳定性。重构二阶段式 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

2.4.2 Release Note

V2.4.2 fixed known bugs, and added a tiny set of features.

Training Framework (distributed included)

  • 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

Deployment Direction (Paddle Inference)

  • 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

v2.4.1

1 year ago

去除飞桨对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.

v2.4.0

1 year ago

v2.3.2

1 year ago

2.3.2 Release Note

2.3.2 版本修复了已知问题,并新增了少量功能。

训练框架(含分布式)

  • 性能分析器增加对静态图和动态图的算子的输入张量的input shape的采集。(#44245#44384#44654
  • 修复部分单测在CUDA 11.7环境失败的问题。(#44785#44796
  • 修复量化后训练与量化感知训练时,部分 scale 命名不统一问题。(#44903
  • 修复在外部基于paddle开放的PHI C++ API,编写C++程序并且编译为可执行文件使用的场景中,因为PHI中ContextPool没有初始化而报错的问题。(#43910
  • 修复paddle编译产出的core_(no)avx.so动态库so name与实际文件名不一致,导致外部链接的时候报错找不到 libpaddle_pybind.so的问题。(#43977
  • 修复自定义算子中调用Tensor.stream()获取的stream与实际运行时stream不一致的问题。(#44500
  • 修复在新动态图模式下执行自定义算子出现输入属性类型解析错误的问题。(#44938
  • 修复性能数据采集器因为线程局部变量被释放而丢失数据的问题。(#44384
  • 修复PACT感知量化训练中支持量化新格式的问题;增强量化新格式C++ kernel计算逻辑;支持Reduce Max算子量化。(#44876

部署方向(Paddle Inference)

  • FusedMultiTransformer 新增 normalize_before=False 功能,支持 layer_norm 计算在 attention 和 feed forward 后的 Transformer 结构。(#44931
  • 新增 NVCC_LAZY 算子按需加载选项,通过 export CUDA_MODULE_LOADING=LAZY,即可实现算子按需加载。(#44957 #44997
  • ONNX Runtime后端新增支持partial_sum、partial_concat、bilinear_interp、conv3d、pool3d、multiclass_nms convert。(#44791
  • 优化ONNX Runtime后端:支持Clone接口、支持获取输入mutable data,降低内存消耗。(#44766
  • 新增 squeeze2、unsqueeze2、cast、slice TensorRT convert 支持。(#44887#44837#44757
  • 修复skip layernorm fp16 kernel计算错误的问题。(#45041

2.3.2 Release Note

V2.3.2 fixed known bugs, and added a tiny set of features.

Training Framework (distributed included)

  • Profiler collects input tensors' shape for static graph and dynamic graph operators. (#44245, #44384, #44654)
  • Fixed failed unit tests in CUDA 11.7. (#44785, #44796)
  • Fixed scale name incosistency issue when being used in post training quantization and quantization aware training. (#44903)
  • Fixed ContextPool in PHI uninitialized issue when PHI's C++ APIs are being used to compile a standalone executable. (#43910)
  • Fixed the compiled output core_(no)avx.so's so name is not consistent with the actual file name issue, so libpaddle_pybind.so could be linked correctly. (#43977)
  • Fixed the issue that Tensor.stream() is not returning the correct stream when being used in a customized operator. (#44500)
  • Fixed iniput attribute type parsing error when customized operator is being executed in new dynamic graph mode. (#44938)
  • Fixed the issue that profiler's performence data collector is missing data caused by thread local variables not being freed correctly. (#44384)
  • Fixed issue of supporting new format of PACT context aware training; Improved quatization new format C++ kernel computation logic; support Reduce Max operator quatization. (#44876)

Deployment Direction (Paddle Inference)

  • FusedMultiTransformer added normalize_before=False, which supports layer_norm to compute the Transformer structure after attention and feed forward. (#44931)
  • Added NVCC_LAZY operators loaded by demand option, which could be enabled by setting export CUDA_MODULE_LOADING=LAZY. (#44957, #44997)
  • ONNX Runtime backends added support for partial_sum, partial_concat, bilinear_interp, conv3d, pool3d, multiclass_nms convert. (#44791)
  • Optimized ONNX Runtime backend support: support Clone interface, support getting input mutable data, reduce memory consumption. (#44766)
  • Added squeeze2, unsqueeze2, cast, slice TensorRT convert. (#44887, #44837, #44757)
  • Fixed skip layernorm fp16 kernel computation error. (#45041)

v2.3.1

1 year ago

2.3.1 Release Note

1. 重要更新

  • 2.3.1 版本是在 2.3 版本的基础上修复了已知问题,并且发布了支持 CUDA 11.6 的安装包。

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

(1)功能优化

API

  • 修改paddle.nn.initializer.KaimingUniformpaddle.nn.initializer.KaimingNormal 两种初始化方式,使其支持多种类型的激活函数。(#43721, #43827)
  • 优化 paddle.io.DataLoader 的数据预读取功能,使其支持设置了 prefetch_factor 设定的预读取数据的缓存数量,避免在读取大块数据时出现 IO 阻塞。(#43674 )

新动态图执行机制

  • 修改新动态图 API 逻辑中 optional 类型 Tensor 的初始化方法,防止被提前析构导致数据异常。(#42561)

全新静态图执行器

  • 延迟初始化执行器中的线程池,避免只执行一轮的 program(如 save、load、startup_program等)创建线程池。(#43768)

混合精度训练

  • 设置 paddle.nn.Layerset_state_dict中禁用 state_dict hook。(#43407)

分布式训练

  • 使 paddle.incubate.nn.functional.fused_attentionpaddle.incubate.nn.functional.fused_feedforward支持张量模型并行。(#43505)

其他

  • 调整框架算子内核打印字符串的格式,便于进行自动化拆分解析。(#42931)
  • 更新模型量化 API,支持rounding to nearest ties to even的四舍五入方式,支持量化取值范围 [-128, 127]。(#43829)
  • 量化感知训练适配支持 AMP 混合精度训练。(#43689)
  • 量化感知训练在启动时新增 progress bar,便于查看量化初始化进度,统计 out_threshold 时跳过 scale op,加速初始化过程。(#43454)
  • 动态图量化训练支持 convbn 融合,静态图离线量化支持设置 skip_tensor_list 来跳过某些层不做量化。(#43301)

(2)性能优化

  • 优化paddle.incubate.nn.functional.fused_attentionpaddle.incubate.nn.functional.fused_feedforward算子,增加add_residual属性,用以控制最后一步是否进行加residual操作,CAE 模型性能提升 7.7%。(#43719)
  • 优化 linspace 算子,将 startstopnum三个输入 Tensor 初始化在 CPU 上,避免在算子中进行 GPU -> CPU 拷贝,SOLOv2 模型性能提升6%。(#43746)

(3)问题修复

API

  • 修复 paddle.io.DataLoaderreturn_list=True 时因多线程冲突小概率报错问题。(#43691)
  • 修复 paddle.nn.Layer的参数存在 None类型参数时 to方法报 NoneType 不存在 device 属性的错误。(#43597)
  • 修复 cumsum op 在某些 shape下计算结果出错的问题。 (#42500, #43777)
  • 修复静态图下 Tensor.__getitem__在使用 bool索引时组网阶段输出结果维度为 0 的问题。 (#43246)
  • 修复 paddle.slicepaddle.strided_slice 处理参数为负数时出现异常的问题。(#43432)
  • 修复 set_value op 在处理切片 step为负数时赋值结果异常的问题。 (#43694)
  • 修复 C++ 端 copy接口不能在多卡设备间拷贝的问题。(#43728)
  • 修改 paddle.incubate.nn.functional.fused_attentionpaddle.incubate.nn.functional.fused_feedforward 中属性命名引发的推理时的问题。(#43505)
  • 修复 ConditionalBlockGrad op 处理不需要 grad的 Tensor 时异常的问题。(#43034)
  • 解决 C++ 的 einsum op 反向速度优化引起的显存增加问题,并将反向优化默认打开。(#43397)
  • 修复单卡下 paddle.io.DataLoader多进程数据读取在固定随机种子时数据无法固定的问题。(#43702)
  • 修复 softmax op 在 Tensor 元素超过 2G 时,触发 CUDNN_STATUS_NOT_SUPPORT 的错误。(#43719)
  • 修复 trace op Event 字符串在不同算子无区分,导致性能分析不便利的问题。(#42789)

其他

  • 修复动转静多次 deepcopy 并保存导致的显存溢出问题。(#43141)
  • 修复自定义算子中使用的 PlaceType 类型升级引入的 device id 在多卡场景中出错的问题。(#43830)
  • 优化 paddle.profiler.Profiler timeline 可视化逻辑,将在 python 脚本中自定义的事件从 C++ 折叠层显示移动至 python 折叠层显示。(#42790)

3. 部署方向(Paddle Inference)

(1)新增特性

新增功能

  • CPU 上 ONNX Runtime 后端新增 PaddleSlim 量化模型支持。 (#43774, #43796)

(2)底层优化

CPU性能优化

  • EnableMkldnn 配置中移除 gpu_cpu_reshape2_matmul_fuse_pass,修复 ResNet50 性能下降的问题。 (#43750)

GPU 性能优化

  • 添加 bilinear_interp_v2 TensorRT convert 支持。 (#43618)
  • 添加 matmul_scale_fuse_passmultihead_matmul_fuse_pass_v3到 GPU pass,并添加单测。(#43765)
  • 添加 GPU handle 延迟初始化支持。 (#43661)

(3)问题修复

框架及API修复

  • 修复联编 Paddle-Lite XPU 时的编译报错问题。(#43178)
  • 修复 ERNIE 3.0 pass误触发的问题。(#43948)
  • 修复 multihead op 中 int8 量化属性读不到的问题。(#43020)

后端能力修复

  • 修复 MKLDNN 中 elementwise_mul 和 matmul 两个 op 在运行量化推理过程中崩溃的问题。 (#43725)
  • 修复同一模型在推理时 TensorRT 子图序列化文件反复生成的问题。(#42945, #42633)
  • 修复 ONNX Runtime 后端与外部使用的 protobuf 冲突问题。(#43159, #43742)
  • 修复 python 预测库 ONNX Runtime 后端在多输入情况下推理报错问题。 (#43621)

4. 环境适配

编译安装

  • 完成对 CUDA 11.6 的验证和适配,并在官网发布 CUDA 11.6 的安装包。(#43935, #44005)
  • 修复在 Windows 上使用 CUDA 11.6 编译时的 cub 报错问题。(#43935, #44005)
  • 修复 elementwise、reduce op 编译时间较长的问题。(#43202, #42779, #43205)

新硬件适配

  • 寒武纪 MLU 支持飞桨 Profiler。(#42115)
  • GraphCore IPU 支持显示编译进度。(#42078)

2.3.1 Release Note

1. Important Updates

  • V2.3.1 is built on V2.3 by fixing known issues and releasing precompiled binary that supports CUDA 11.6.

2. Training Framework (distributed included)

(1) Function Optimization

API

  • Modify two initialization modes of paddle.nn.initializer.KaimingUniform and paddle.nn.initializer.KaimingNormal, to support multiple types of activation functions. (#43721, #43827)
  • Optimize the data pre-fetching function of 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)

New dynamic graph execution mechanism

  • Modify the initialization method of optional type Tensor in the new dynamic graph API logic to prevent data exceptions caused by early destruction. (#42561)

New static graph executor

  • Defer initialization of the thread pools in the executor, to avoid creating thread pools for programs that execute only once (e.g.,save, load, startup_program, etc.). (#43768)

Mixed precision training

  • Disabling state_dict hook in set_state_dict in paddle.nn.Layer. (#43407)

Distributed training

  • Enabling tensor parallelism in paddle.incubate.nn.functional.fused_attention and paddle.incubate.nn.functional.fused_feedforward. (#43505)

Others

  • Adjust print format of the framework operator kernels to facilitate automated splitting and parsing. (#42931)
  • Update the model quantization API to support the round-off in rounding to nearest ties to even, and support quantization in the range [-128, 127]. (#43829)
  • Support AMP mixed precision training in quantization-aware training. (#43689)
  • Add the 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)
  • Support 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)

(2) Performance Optimization

  • Optimizepaddle.incubate.nn.functional.fused_attention and paddle.incubate.nn.functional.fused_feedforwardoperators. 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)
  • Optimize 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)

(3) Bug Fix

API

  • Fix the error reported by paddle.io.DataLoader when return_list=True due to multi-thread conflict. (#43691)
  • Fix the error that the to method reports NoneType does not have the device attribute when the paddle.nn.Layer parameter has the None type parameter. (#43597)
  • Fix the bug that the calculation result of cumsum op is wrong in some shape settings. (#42500, #43777)
  • Fix the bug that the output result dimension of Tensor.__getitem__ is 0 in the networking stage when using bool index in the static graph.(#43246)
  • Fix the bug occurred when paddle.slice and paddle.strided_slice handle negative parameters. (#43432)
  • Fix the bug that the assignment result of set_value op is abnormal when the processing slice step is negative. (#43694)
  • Fix the bug that the copy interface in C++ cannot copy between multiple cards. (#43728)
  • Fix the bug in inference stage caused by attribute naming in paddle.incubate.nn.functional.fused_attentionand paddle.incubate.nn.functional.fused_feedforward . (#43505)
  • Fix an exception in ConditionalBlockGrad op when processing Tensor that does not require grad. (#43034)
  • Fix the bug of device memory increase caused by einsum op in the speed optimization of backward computation. By default, this optimization is enabled. (#43397)
  • Fix the bug that data fails to be fixed when paddle.io.DataLoader multi-process data reads the fixing random seeds under a single card. (#43702)
  • Fix the bug that softmax op triggers CUDNN_STATUS_NOT_SUPPORT when the Tensor exceeds 2G. (#43719)
  • Fix the bug that the trace op Event string is indistinguishable among different operators that cause the inconvenient performance analysis. (#42789)

Others

  • Fix the bug of overflowing device memory caused by multiple deepcopy and saving in case of dynamic-to-static. (#43141)
  • Fix the bug that the device id introduced by the upgrade of PlaceType used in the custom operator is wrong in the multi-card scenario.(#43830)
  • Optimize the paddle.profiler.Profiler timeline visualization logic, move events customized in python scripts from C++ folding display to python folding display. (#42790)

3. Deployment Direction (Paddle Inference)

(1) New Features

New functions

  • Add the support of the PaddleSlim quantization model for ONNX Runtime backends on CPUs. (#43774, #43796)

(2) Underlying Optimization

CPU performance optimization

  • Remove gpu_cpu_reshape2_matmul_fuse_pass from EnableMkldnn configuration to fix the bug of ResNet50 performance degradation. (#43750)

GPU performance optimization

  • Add the support of bilinear_interp_v2 TensorRT convert. (#43618)
  • Add matmul_scale_fuse_pass and multihead_matmul_fuse_pass_v3 to GPU pass. (#43765)
  • Add the support of the GPU handle deferred initialization. (#43661)

(3) Bug Fixing

Framework and API fixing

  • Fix the compile error problem when binding Paddle-Lite XPU. (#43178)
  • Fix the bug of false trigger of ERNIE 3.0 pass. (#43948)
  • Fix the bug that int8 quantization attribute in multihead op cannot be read. (#43020)

Backend capability fixing

  • Fix the bug that two ops of elementwise_mul and matmul in MKLDNN are crashed during quantitative inference. (#43725)
  • Fix a bug where TensorRT subgraph serialization files are repeatedly generated for the same model during inference. (#42945, #42633)
  • Fix a conflict between the ONNX Runtime backend and the externally use of protobuf. (#43159, #43742)
  • Fix an error reported by python prediction library when using ONNX Runtime backend in case of multiple inputs. (#43621)

4. Environment Adaptation

Compile and install

  • Complete verification and adaptation of CUDA 11.6, and release CUDA 11.6 precompiled binary. (#43935, #44005)
  • Fix a cub error when compiling with CUDA 11.6 on Windows. (#43935, #44005)
  • Fix the bug of long compilation time for elementwise and reduce op. (#43202, #42779, #43205)

New hardware adaptation

  • Cambricon MLU supports PaddlePaddle Profiler. (#42115)
  • GraphCore IPU supports visualization of compilation progress. (#42078)

v2.3.0

1 year ago

我们很高兴地发布飞桨框架 2.3.0 版本,本版本包含如下重要更新。

API

  • 新增 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等骨干网络,实现快速组网。

飞桨高可复用算子库 PHI

  • 发布飞桨高可复用算子库 PHI (Paddle HIgh reusability operator library),支持组合式算子功能复用、Primitive算子内核复用、插件式硬件加速库复用。针对飞桨框架原算子库存在的算子接口不清晰、算子复用成本较高、调用性能不够快的问题,我们重构了飞桨框架的算子库,设计了灵活、高效的函数式算子库 Phi,可以通过对函数式算子接口组合调用的方式实现新算子。新算子库提供了 200 余个跟 python 开发接口保持一致的 C++ 运算类 API,以及近500个可供组合调用的前、反向函数式算子内核 Kernel,可大幅降低框架原生算子和自定义算子的开发成本。新算子库支持Primitive API方式开发算子内核,可支持不同硬件(比如GPU和XPU)的算子内核复用。新算子库支持以插件方式接入硬件(比如NPU)的加速库,实现低成本复用硬件加速库。

分布式训练

  • 全面升级自适应分布式训练架构,含弹性扩缩容、异步流水执行器、异构通信、自动并行等多个模块,支持了多种异构硬件下自动感知的分布式训练及分布式推理。

  • 动态图混合并行下新增MoE并行策略、GroupSharded 并行策略、Pure FP16 等,进一步支持了动态图下大模型的高效并行训练。

  • 全面升级优化了通用异构参数服务器架构,进行各模块的抽象简化,如通信、存储等,提升了参数服务器的二次开发体验;GPU 参数服务器在千亿参数百亿数据分钟级流式训练下性能提升2.38倍。

编译安装

  • 从 2.3.0-rc0 版本开始,飞桨对框架支持的 GPU 架构种类进行了调整和升级。

推理部署

  • 新增 Java API 和 ONNX Runtime CPU 后端。

  • 支持 TensorRT 8.0 / 8.2 和结构化稀疏,针对 ERNIE 类结构模型性能深度优化。

硬件适配

  • 新增自定义新硬件接入:提供一种插件式扩展 PaddlePaddle 硬件后端的方式。

  • 新增对华为昇腾910 / GraphCore IPU / 寒武纪MLU / 昆仑芯2代多种异构芯片的训练/推理支持。

框架架构

Thanks to our Contributors

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

v2.3.0-rc0

2 years ago

我们很高兴地发布飞桨框架 2.3.0-rc0 版本,本版本包含如下重要更新。

API

  • 新增 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等骨干网络,实现快速组网。

飞桨高可复用算子库 PHI

  • 发布飞桨高可复用算子库 PHI (Paddle HIgh reusability operator library),支持组合式算子功能复用、Primitive算子内核复用、插件式硬件加速库复用。针对飞桨框架原算子库存在的算子接口不清晰、算子复用成本较高、调用性能不够快的问题,我们重构了飞桨框架的算子库,设计了灵活、高效的函数式算子库 Phi,可以通过对函数式算子接口组合调用的方式实现新算子。新算子库提供了 200 余个跟 python 开发接口保持一致的 C++ 运算类 API,以及近500个可供组合调用的前、反向函数式算子内核 Kernel,可大幅降低框架原生算子和自定义算子的开发成本。新算子库支持Primitive API方式开发算子内核,可支持不同硬件(比如GPU和XPU)的算子内核复用。新算子库支持以插件方式接入硬件(比如NPU)的加速库,实现低成本复用硬件加速库。

分布式训练

  • 全面升级自适应分布式训练架构,含弹性扩缩容、异步流水执行器、异构通信、自动并行等多个模块,支持了多种异构硬件下自动感知的分布式训练及分布式推理。

  • 动态图混合并行下新增MoE并行策略、GroupSharded 并行策略、Pure FP16 等,进一步支持了动态图下大模型的高效并行训练。

  • 全面升级优化了通用异构参数服务器架构,进行各模块的抽象简化,如通信、存储等,提升了参数服务器的二次开发体验;GPU 参数服务器在千亿参数百亿数据分钟级流式训练下性能提升2.38倍。

编译安装

  • 从 2.3.0-rc0 版本开始,飞桨对框架支持的 GPU 架构种类进行了调整和升级。

推理部署

  • 新增 Java API 和 ONNX Runtime CPU 后端。

  • 支持 TensorRT 8.0 / 8.2 和结构化稀疏,针对 ERNIE 类结构模型性能深度优化。

硬件适配

  • 新增自定义新硬件接入:提供一种插件式扩展 PaddlePaddle 硬件后端的方式。

  • 新增对华为昇腾910 / GraphCore IPU / 寒武纪MLU / 昆仑芯2代多种异构芯片的训练/推理支持。

框架架构

Thanks to our Contributors

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