您现在的位置是:首页 > 文章详情

ncnn 发布 20210507 版本,int8 量化推理大幅优化超 500%

日期:2021-05-09点击:737

ncnn是腾讯开源为手机端极致优化的高性能神经网络前向计算框架。

仰赖ncnn社区开发者的贡献,ncnn在2019年年初便已实现int8模型量化和推理。但因后来失去社区开发者的持续投入,ncnn的int8量化推理效率迟迟没有加速。

ncnn github issue区大家关于int8量化后速度的质疑:

引用zhihu用户John Hexa关于《如何看待国内开源项目的不可持续性?》的一段回答:

“开源的生命力并不在于“开源”,而在于为人类好好的、真正的解决掉一个问题。

不是自己提供一个半成品,指望别人完成成品。

而是自己要提供一个成品,让别人可以完成更好的成品。

不是自己提出一个问题,指望别人给你答案。

而是自己给出一个答案,让别人可以找到更好的答案。”

本以为,ncnn的开发者社区足够活跃,可以等到一位愿意为ncnn优化加速int8计算的贡献者。

这确实是我错了。

本次20210507版本,ncnn的int8量化工具和整个int8推理计算架构被进行了彻底重构,作者删除了老旧的kernel实现,亲自写了大量arm neon汇编,4w+行代码,用上armv8.2 dot指令加速。最终,在int8量化和推理加速上,ncnn提供了一个成品,给出了一个答案。

ncnn 20210507版本下载地址(linux/windows/macos/android/ios/webassembly,cpu+gpu)

https://github.com/Tencent/ncnn/releases/tag/20210507

继续保持优秀的接口稳定性和兼容性

  • API接口完全不变

  • 量化校准table完全不变

  • int8模型量化流程完全不变

ncnn int8量化工具(ncnn2table)新特性

  • 支持 kl aciq easyquant 三种量化策略

  • 支持多输入的模型量化

  • 支持RGB/RGBA/BGR/BGRA/GRAY输入的模型量化

  • 大幅改善多线程效率

  • 离线进行(反量化-激活-量化)->(requantize)融合,实现端到端int8量化推理

ncnn int8量化推理新特性

  • conv/convdw/fc 量化推理支持附带任意激活层

  • int8特征数据自动转换为elempack=8内存布局,提高访存效率

  • 实现全部pack1/pack1to4/pack4/pack8to4等的int8 sgemm kernel优化

  • 实现int8 winograd-f43的kernel优化

  • 运行时检测armv8.2 dot指令支持,并调用优化的kernel

  • 启用fp16/bf16的情况下,遇到非conv/convdw/fc层,自动回退到fp16/bf16而不是fp32计算

ncnn 20210507版本的其他更新

  • 数学函数 log/exp/sin/cos/tanh 的 risc-v v 扩展指令优化

  • 由社区贡献者贡献的 ncnn x86 卷积优化和 FAQ 文档

  • 改善模型转换器兼容性,fp16和vulkan运算bugfix,等等

mobilenet int8模型,ncnn自带的benchncnn评测工具,测试手机:oneplus 7t(qcom855+)

原文链接:https://www.oschina.net/news/140674/ncnn-20210507-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章