v2.6.3
v2.6.3
功能加强
-
支持subblock的图优化,即pass支持对 while/conditional_block 等 Op 的 subblock的优化,例如对subblock的Op Fuse、Kernel选择等,目前已在ARM和华为NPU上支持transformer模型 PR3947
-
支持内部处理错误时向应用层抛出异常,防止程序出现 abort (暂时不支持android+armv7+gcc 脚本开关编译选项) PR3947
-
新增 Op,支持RetinaNet模型 PR4157
-
新增Paddle-Lite 手机端训练功能(仅用于技术预览)
- ARM CPU上新增一系列反向传导和优化算子;
- 在“波士顿房价预测”任务中,给出了基于安卓的端上训练,详情参考文档;
文档更新
- 针对2.6.1 中的问题做了修复,丰富了文档
- 增加了基于安卓的端上训练文档,完善了模型量化压缩文档、benchmark文档;
- 增加并完善了 模型支持文档 和 算子支持文档,方便快速查找模型和算子在相应硬件平台上的支持状态
- 完善了 源码编译文档 并增加了 编译选项说明,更容易在文档中找到相应硬件平台的源码编译方法
- 完善了 快速开始 章节,并相应更新了 C++完整示例和应用开发说明,Java完整示例和应用开发说明 和 Python完整示例和应用开发说明
硬件能力
ARM CPU
- 增加
conv_winograd int8
实现,PR3767;
NPU
- 增加NPU模型缓存机制(支持内存和文件两种缓存方式),支持 dynamic shape,避免每次进行NPU模型的在线生成,缩短第一次推理耗时,同时降低内存的消耗 PR3947
- 支持NPU内存共享,增加 zero copy 优化,大幅提高 CPU+NPU hybrid的推理性能 PR3947
OpenCL
- 增加 OpenCL 预判API
IsOpenclBackendValid
,对于优先选择执行GPU的用户,可基于该API预判手机是否支持OPENCL,否则加载CPU模型,PR3951 PR4003 - 优化OPENCL Conv和depthwise Conv执行流程,去除冗余计算,PR3924
- 增加OPENCL auto tuning API,应用场景是对于长时跑的GPU模型,首次执行先做kernel tuning,对执行性能有一定提升,在mali gpu如kirin990/980/970上,针对mobilenetv1/v2有20~50%左右的GPU性能提升,PR4016
Bug fix
- 增加
2x2s1p1_pooling
实现及修复3x3s2p0 pooling
随机crash问题,PR3705; - 修复
softmax
随机crash及计算错误问题,PR3834; - 修复
gemm_prepack_oth_int8
函数随机crash问题,PR3906; - 修复
opencl
加载int16模型的fc权重异常问题,PR3900; - 修复了模型优化工具(opt) 转换模型后,出现模型参数大小膨胀的问题;
- 修复了sequence_conv算子在batch size>1时计算错误的问题;
- 修复android armv8的静态库编译出现undef pad问题 PR3977
- 修复ARM CPU LSTM kernel注册问题 PR4007
- 修复ARM CPU非对称的pooling计算结果不对的问题PR4013