ncnn 发布 20210507 版本,int8 量化推理大幅优化超 500%
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+)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Netbox 2.11.3 发布,IP 地址与数据中心管理工具
NetBox 是一个 IP 地址管理(IP address management,IPAM)和数据中心基础设施管理(data center infrastructure management,DCIM)工具。 Netbox2.11.3 现已完成发布,具体更新内容如下: Enhancements #6197-引入了SESSION_COOKIE_NAME配置参数 #6318-添加 OM5 MMF cable 类型 #6351-将聚合计数添加到 tenant 视图 #6359-为组织和嵌套组模型启用自定义链接 Bug 修复 #6240-修复了 VLAN 组视图下可用 VLAN 范围的显示 #6308-修复 VLAN 组视图中可用 VLAN 的链接 #6309-将 parent VM 接口分配限制在 parentVM上 #6312-接口设备过滤器仅在设备为主设备时才应返回所有虚拟机箱接口 #6313-在 manufacturer 视图下修复设备类型实例计数 #6321-恢复prefixIP 视图下的“add an IP”按钮 #6333-通过主键修复对电路终端的过滤 #6339-在查看虚拟机箱...
- 下一篇
smart-socket v1.5.7 发布,高性能国产 AIO 通信框架
smart-socket 是一个 AIO 通信框架,可以快速、轻松地开发 Client/Server 网络应用程序。它大大简化了网络编程难度和复杂度,可广泛应用与各类TCP/UDP的通信场景。 smart-socket 是从许多协议(Http、WebSocket、MQTT、二进制私有协议)的实践中积累了大量宝贵经验,从而凝练成了一款极简、易用、高性能的通信框架。 极简 支持各种传输类型、协议,且仅围绕着两大核心接口(MessageProcessor、Protocol)编程开发。 灵活且可扩展的状态机设计,可以清晰地分离关注点。 核心包代码1478 行,编译后的 jar 包仅 41 KB(如果对此无明显感触,可以比较其他同类项目)。 易用 文档丰富的 Javadoc 、用户指南和示例。 没有额外的依赖,只要求JDK 8及以上版本。 高度可定制化的插件。已内置一些非常实用且开箱即用的插件:SSL/TLS通信、心跳、断链重连、服务指标统计、黑名单、内存池监测。 高性能 更好的吞吐量,更低的延迟 更少的资源消耗 最尽肯能减少不必要的内存拷贝 更新内容 优化:移除共享内存页,简化内存池设计。 优...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库