v2.9
Release Notes
重要更新
- 推理库体积大幅压缩及提升opt转换工具易用性
- 大幅提升Windows编译效率
- 增加ARM CPU armv8.2 fp16指令支持
- 大幅优化opencl性能
- 新增支持基于Intel FPGA海云捷迅开发板
框架升级
-
重点Feature:
-
支持
FP16
低精度运行- 推理速度提升30%、内存消耗降低30%
- 当前只支持部分高端Android机型(高通865、高通835、kirin990)
-
根据模型压缩库
功能: 使用说明 -
模型支持Embedding量化
-
-
opt 工具易用性升级
- 自动识别模型格式(可识别以下几种格式)
- [格式1]
__model__ + var1 + var2 + etc.
- [格式2]
model + var1 + var2 + etc.
- [格式3]
model.pdmodel + model.pdiparam
- [格式4]
model + params
- [格式5]
model + weights
- [格式1]
- 简化提示信息
- 可查看优化后模型结构:
opt --optimize_out_type=protobuf
- 用netron 查看转化后的模型结构
- 自动识别模型格式(可识别以下几种格式)
-
源码编译
- 支持更多的NDK版本: 支持 r16b ~ r20c
- windows编译:编译耗时大幅降低,减少约60%
- Docker : 更新Docker镜像(TODO)、Docker镜像体积降低30%
-
其他
- 输入格式检查:自动检查模型输入
shape\precision
信息是否正确 - 支持获得int64类型的输出 #5832
- 输入格式检查:自动检查模型输入
新增算子
- correlation
- polygon_box_transform
- roi_perspective_transform
- scatter_nd_add
硬件&性能增强
ARM CPU
- 新增OP
- FP16 特性支持
- 仅在armv8.2 架构手机(如小米8、小米9等)上支持ARMv8 FP16模型推理
- 新增10+ FP16 OP算子,如:GEMM、Convolution、Pooling、Softmax、Fc 等
- 已跑通分类模型如mobilenetv1、mobilenetv2、resentv1等模型;
详细性能数据如下图:
- FP32性能优化:
- GEMM V8性能优化,对mobilenetv1 性能有5%左右提升; PR5957
详细性能数据如下图:
OpenCL
- 新增 op:
sqrt
,square
,rsqrt
,matmul
#5791 - 增强 conv2d_1x1,通过在线预计算选择最优分块方式,大部分模型普遍有10%-25%的性能提升 #6067 #5904
- 增强 conv2d_3x3,通过对 filter 数据重排,resnet50 在大部分手机上有 5%-60% 的性能提升 #5618
- 新增 5 个 pass:
- 通过 pass 精简模型结构,提高了 SSD 模型速度,adreno gpu 加速明显(855、865上有 1 倍加速),mali gpu 加速效果稍小(kirin990 和 rk3399 上分别有 25% 和 14% 的加速)#5930 #5965
- 新增 flatten_contiguous_range + fc 融合 pass,Paddle2.0 模型 mobilenetv1 在大部分手机上有 5%-10% 的性能提升 #6057
- 新增 conv + prelu 融合 pass,mtcnn_det3 模型在骁龙 865 上有 20% 的性能提升 #5461
- 新增 fc + prelu 融合 pass #5468
- 开启 elementwise + act pass #5791
- 实现
layout_cast
对 5 维 tensor 的支持 #5777 - 新增定期刷新命令队列接口,默认关闭 #5905
X86
- 新增elementwise_mod #5472
- 支持bool/int32为输入的cast,支持int32 slice #5511
- 新增reduce_max #5633
- 新增reduce_prod #5692
- 新增gru_unit #5739
- 支持int32/int64 elementwise_mul #5852
- 新增instance_norm#5860
- 新增 elementwise_max, elementwise_min #5862
- 修复var_conv2d缺少COLUMN/ROW输入注册的问题 #5880
- 支持int32/int64 concat #5887
- 新增 grid_sample #5895
- 支持int32/int64 slice;新增elementwise_div #5898
- 修复concat在axis<0时的计算问题 #5917
- 新增elementwise_pow, sqrt #5928
Host
- 新增increment #5472
- 新增tril_triu #5507
- 新增polygon_box_transform #5627
- 新增beam_search_decoder #5670
- 新增roi_perspective_transform #5680
- 新增sequence_expand #5685
- 新增pad2d #5694
- 新增lod_reset #5710
- 新增distribute_fpn_proposals,collect_fpn_proposals #5760
- 新增topk #5758
- 新增beam_search #5759
- multiclass_nms支持PolyIoU #5773
- 新增split #5796
- 新增assign_value#5828
- 新增correlation #5865
- 新增sequence_pad #5867
- 新增sequence_mask #5871
昆仑 XPU
- 支持int32 slice #5488
- 支持int32/int64为输入的reshape2 #5511
- 支持int32 elementwise_add #5539
- 支持带sub_block的模型预测 #5725
- 支持CxxConfig支持预测带sub_block的模型 #5776
- 支持tensor_array类型 #5815
- 修复L3 cache可能分配不正确的问题 #5868
- elementwise类算子支持x的维度数小于y的维度数 #5906
- 修复arm下编译问题 #5997
RK NPU
- 新增norm op bridge #5926
- 新增ssd模型prior_box离线处理pass,针对SSD系列模型,Rockchip NPU、HuaweiKirinNPU、OpenCL均能获得性能提升 #5788
- 新增支持全量化模型的异构计算 #5591
硬件支持
- 新增支持基于Intel FPGA的海云捷迅开发板,目前仅支持conv2d算子的加速(其它算子均可运行在ARM核),支持SSD-MobileNetV1模型。#5742
Bug fix
- 修复 OpenCL conv+prelu 融合带来结果异常的问题 #5793
- 修复 OpenCL bilinear_interp结果错误问题 #5482
- 修复 kirin970 armv7 OpenCL运行报错问题 #5791
- 修复 armlinux 编译mobile_full demo报错问题 #6068
- 修复expand的输入为ExpandTimes和expand_times_tensor时dim错误的bug #5488
- 修复opt打印支持算子的格式问题 #5600
- 修复从内存加载模型的问题 #6004
- 修复不支持UInt8类型变量的问题#6032
- 修复int8 GEMM LeakyRelu和Relu6计算错误;#5986
- 修复group_norm不对齐paddlepaddle API的计算错误;#5683
文档更新
- 新增Paddle Lite使用Intel FPGA预测部署教程 文档和Demo
- 新增ARM CPU预测库部署和单测使用文档