v2.13-rc
hong19860320
released this
27 Mar 09:45
·
16 commits
to release/v2.13
since this release
Release Notes
重要更新
- 易用性提升: Windows、Linux、macOS 新增支持 Python 3.9/3.10,提供 x86 平台 Python 3.7/3.8/3.9/3.10 wheel 包,利用 pip install paddlelite==2.13rc0 安装使用;新增 Linux、macOS aarch64 架构的 opt 工具。
- 性能优化:优化 Transformer 类模型在 Arm CPU 的性能,ERNIE 3.0-Medium,ERNIE 3.0-Mini,ERNIE 3.0-Micro,ERNIE 3.0-Nano INT8 模型在多种机型性能提升 30%~100%。
- 新硬件支持:MTK APU 新增支持 MT8188 芯片,适配 Picodet 与 TinyPose FP32 模型。
框架升级
- Windows、Linux、macOS 等系统下支持并提供 Python 3.7/3.8/3.9/3.10 wheel 包。
- 新增支持外部 API 用于设置自定义 Allocator。 #10013
- 优化 config.set_model_from_buffer(const char *buffer, size_t length) 实现,buffer 的生命周期由用户侧管理,不再额外拷贝一份,减少内存开销。#10026
- 支持新量化格式 weight 不量化的算子,如conv2d、conv2d_transpose 等算子如果 weight 没有量化则仍运行浮点后端。 #10093
- 修复新量化格式对 weight 进行 per-layer 量化的支持。 #10097
- 简化性能 Profiler 工具输出,增加一键式模型性能 Profile 工具。 #10047 #10064
- 常量折叠 pass 支持更多数据类型。#9940
性能优化
- 优化 Arm CPU MaxPoolings1 通用实现和 Conv3x3s1p1在 INT8 精度实现。#9806 #9833
- 优化 Transformer 类模型在 Arm CPU 的性能。
硬件支持
-
CPU
- 特性
- 新增 Arm Android 端硬件浮点性能评估工具。#10075
- 算子、模型
- Arm 端新增 viterbi_decode 算子。 #10066 #10101
- 新增 Armv7 后端 FP16 精度 elementwise div kernel,修复 FP16 类型转换代码错误。 #10050
- Arm 端新增 Linear_interp/Linear_interp_v2 实现。 #9983
- Host 端新增 Pad 算子。 #10081
- Host 端新增 unique 算子。 #9819 #9908 #9928
- Host 端新增 empty、ceil 算子。 #10092
- Host 端新增 bitwise_and、bitwise_or、bitwise_xor、bitwise_not 算子。 #10062
- Host 端新增 temporal_shift 算子。 #10010
- Host 端新增 atan2、log1p 算子。 #10114
- BUG 修复
- 特性
-
OpenCL
-
昆仑芯 XPU
- 特性
- 重构了 XPU thread_local 的实现。 #9817
- 算子、模型
- 新增 spatial_transformer 融合算子。 #10054
- 新增 GEGLU 融合算子。 #10038
- 新增 multi-head self/cross attention 融合算子。 #10037
- silu/sin/cos/slice 算子支持 FP16 数据类型。 #10025
- 新增 group_norm + silu 融合算子。 #10022
- 优化 D2H/H2D 性能。 #9987
- 新增 mask_adaptive 算子以及相关融合 pass。 #9970
- 新增 conv2d_scale 融合 pass。 #9946
- vitstr/maskocr 支持 dynamic reshape的图 pattern,bn 支持 FP16,conv2d 融合支持 gelu 激活。 #9942
- 昆仑2、昆仑3 平台上使能 __xpu__conv2d_transpose_fuse_pass 融合 pass。 #9890
- 更换 multiclass_nms 绑定的 xdnn 算子,放宽了部分参数的限制。 #9862
- 优化 PPYOLO_dcn_2x 模型性能。 #9849 #9850
- roformer 模型的 squeeze2/reshape2 算子融合优化。 #9810
- 修改昆仑1上 gru_unit 算子以支持 pre_hidden 参数。 #9797
- matmul 增加 int8 数据类型支持。 #9764
- 新增 __xpu__quick_gelu 算子支持,并且会与 __xpu__multi_encoder 算子进行融合,优化针对 ViT 模型。 #9755
- multi_encoder 算子支持没有 mask 输入的实现。 #9712
- 新增 select_input kernel 实现,修复 box_coder 算子计算错误。 #9711
- 新增 adaptive_seqlen_v2_fuse_pass ,并增加对 mask datatype 的支持。 #9710
- sequence_mask kernel 新增 INT64 类型支持。 #9650
- BUG 修复
- 特性
-
昇腾 NPU
- 特性
- 算子、模型
- BUG 修复
- 文档
- 修复昇腾部署文档关于硬件支持和容器创建命令的描述错误。 #9995
-
高通 QNN
- 特性
- 新增适配高通 QNN 2.5。
- 支持设置 VTCM 大小以提升性能。
- 算子、模型
- 新增 where、sum、square、sqrt、lookup_table、gather、logical_and、logical_not、pow、strided_slice 等算子。
- 新增 ERNIE 3.0 全量化模型、ViT 模型。
- BUG 修复
- 解决模型 5-D 算子不支持的问题,通过 pass 实现 5-D 到 4-D 算子等价转换。
- 修复 matmul + elementwise_add + softmax 融合的内存越界问题。
- 特性
-
芯原 TIM-VX
- 特性
- 新增支持 YOLOv8、PP-LiteSeg、PP-HumanSeg-Lite 常量折叠。
- 算子、模型
- 新增 abs、argmax、argmin、cast、exp、instance_norm、layer_norm、log、prelu、gelu、equal、not_equal、expand_v2、greater_than、greater_equal、less_than、less_equal、stack、calib、gather、floor、square、unstack、pow、strided_slice、fill_constant、fill_any_like、norm、logical_not、logical_and、sum、where、softplus、logsoftmax、assign、floor_div、sin、lookup_table、lookup_table_v2、meshgrid 等算子。
- 新增模型(全量化模型)
- 检测:YOLOv6、YOLOv7、YOLOv8、PP-YOLOE-Plus
- 分类:PPLCNetV2、PPHGNet_tiny、EfficientNetB0
- 分割:PP-LiteSeg、PP-HumanSeg-Lite
- 特性
-
联发科 APU
- 特性
- 新增支持 MT8188 芯片,适配 Neuron Adapter 6.0。
- 新增支持 FP32 模型使用 FP16 计算。
- 算子、模型
- 新增 channel_shuffle、hard_swish、resize_linear、resize_nearest、split、sigmoid 算子。
- 新增 Picodet、TinyPose 模型。
输入尺寸 耗时(ms) Picodet FP32 1,3,192,192 11 1,3,320,320 15 TinyPose FP32 1,3,128,96 4.95 1,3,256,192 18.5
- 特性