Facebook开源移动端深度学习加速框架,比TensorFlow Lite快一倍

标签: geek | 发表时间:2018-12-29 00:00 | 作者:
出处:http://itindex.net/relian
方栗子 发自 凹非寺
量子位 出品 | 公众号 QbitAI

640?wx_fmt=png

Facebook发布了一个开源框架,叫 QNNPACK,是手机端神经网络计算的加速包。

官方表示,它可以 成倍提升神经网络的推理效率,几乎比 TensorFlow Lite快一倍。

这个框架,能够为很多运算加速,比如 DW卷积 (Depthwise Convolution) ,许多先进的架构里面都用得到。

目前,QNNPACK已经是 PyTorch 1.0的一部分,在Caffe2里就能直接使用。

其实,Facebook手机应用里面,已经部署了这个QNNPACK。也就是说,数以亿计的手机都在用了。

从哪个角度加速?

QNNPACK,这个名字眼熟么?

两年前,Facebook就推出过一个加速包,叫做 NNPACK,Caffe2Go用的就是它。

基于Winograd变换和傅里叶变换,有效减少卷积计算里的乘加运算 ( Multiply-Add) 。这样一来,3x3卷积可以只比1x1慢一倍,而不会慢8倍。

不过,世界变化很快。现在的计算机视觉 (CV) 神经网络里,用到的很多卷积类型, 已经沾不到NNPACK的光

比如,1x1卷积,分组卷积 (Grouped Convolution) ,Strided Convolution,扩张卷积 (Dilated Convolution) ,DW卷积 (DepthWise Convolution) ,适用于精度/存储带宽受到限制的 (移动端等) 场景。

而CV神经网络,大部分推理时间,都花在卷积和全连接运算上。

640?wx_fmt=png

这样的运算,和 矩阵乘法密切相关:

大内核的卷积,可以分解成im2col和一个矩阵乘法。

所以,有高效的矩阵乘法,才能有高效的卷积网络。

于是,QNNPACK出世了。

怎样加速矩阵乘法?

640?wx_fmt=jpeg

矩阵乘法,A x B = C。C里面的每一个元素,都可以看成 A中某行B中某列的点乘。

但直接在点乘基础上计算的话,一点也不快,会受到存储带宽的限制。

640?wx_fmt=png

如果,能同时计算 A中多行B中多列的点乘,即 MRxNR,就能给运算速度带来猛烈的提升。

不需要太多,这样细小的改变就够了。

节省内存和缓存

模型训练,可能更需要高精度。但在训练完成后, 推理部分对精度的需求可能就没有那么高了。

低精度的计算,有时对推理的 准确性不会产生明显的影响。

而这样的运算,不需要太大存储,并节省能源,有助于把AI部署在移动端。

QNNPACK用的线性量化 (Linear Quantization) 方案,与安卓的神经网络API兼容。

它假设量化值q[i]是用8比特的无符号整数 (Unsigned Integers) 来表示的,以及q[i]与真实值r[i]相关,关系如下:

640?wx_fmt=png

与其他库不同,QNNPACK把矩阵A、B都放进一级缓存 (L1 Cache) ,目标是把所有对运算过程并不非常必要的内存转换 (Memory Transformations) 都删掉。

QNNPACK可以在一次微内核调用 (Microkernel Call) 里,处理A和B。

不需要在微内核之外,累积32位的中间结果,QNNPACK把32位的中间值融合进微内核,然后写出8位值,节省了存储带宽和缓存。

赢了TensorFlow Lite

开发团队用谷歌的视觉框架MobileNetV2里面的 图像分类模型来测试。

TensorFlow Lite做对手,和 QNNPACK比了一场。

640?wx_fmt=png

结果是,QNNPACK比TensorFlow Lite几乎快一倍,不论是在高端智能机,还是普通智能机身上。

所以,各位也去试一下?

GitHub项目页:
https://github.com/pytorch/QNNPACK

博客原文:
https://code.fb.com/ml-applications/qnnpack/

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;


此外,量子位专业细分群( 自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

活动策划招聘

量子位正在招聘活动策划,将负责不同领域维度的线上线下相关活动策划、执行。欢迎聪明靠谱的小伙伴加入,并希望你能有一些活动策划或运营的相关经验。相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

640?wx_fmt=jpeg

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


相关 [facebook 开源 移动] 推荐:

Facebook 开源 Detectron

- - 最新更新 – Solidot
Facebook 在 Apache 2.0 许可证下 开源了它的目标识别平台 Detectron, 源代码托管在 GitHub 上. Detectron 用 Python 开发,基于 Caffe2 深度学习框架. Facebook 同时公开了超过 70 个预先训练的模型. Detectron 项目始于 2016 年,实现了一系列最新的目标识别算法如 Mask R-CNN,该软件平台在社交巨人的视觉感知系统的进步上扮演了重要角色.

Facebook开源移动端深度学习加速框架,比TensorFlow Lite快一倍

- - IT瘾-geek
方栗子 发自 凹非寺. 量子位 出品 | 公众号 QbitAI. Facebook发布了一个开源框架,叫 QNNPACK,是手机端神经网络计算的加速包. 官方表示,它可以 成倍提升神经网络的推理效率,几乎比 TensorFlow Lite快一倍. 这个框架,能够为很多运算加速,比如 DW卷积 (Depthwise Convolution) ,许多先进的架构里面都用得到.

Facebook开源闪存数据库RocksDB

- - IT经理网
本周四Facebook宣布开源其嵌入式数据库 RocksDB(一种嵌入式Key-value存储系统),该数据库能够充分利用闪存的性能,大大提升应用服务器的速度. Facebook用RocksDB来驱动一些面向用户的应用,这些应用由于需要通过网络访问外部存储而性能低下,此外Facebook还用RocksDB来解决固态硬盘IO利用率不高相关的一些问题.

Facebook开源的真正原因

- - 外刊IT评论
在OSCON的第三天,来自Facebook的James Pearce带来了一场主题演讲,我也有幸在场. Pearce解释了Facebook为何大规模开源其软件. 他告诉我们,Facebook每个月都会发布数个开源项目,并且有数百个工程师会持续地支持这些项目——他们参与全世界的各个开源社区,改进软件的体验.

Facebook网站所使用的开源软件一览表

- dylan - ITeye资讯频道
Facebook是全球首屈一指的社交网络平台,该网站采用了很多开源软件,Facebook采用的编程语言包括:Java, Ruby, PHP, Python, Objective-C. 下面是Facebook正在使用或者贡献的开源软件详细列表和介绍:. Apache Cassandra是一套开源分布式Key-Value存储系统.

红帽CEO:没有开源就没有谷歌和Facebook

- 幻幽 or A書 - cnBeta.COM
美国科技博客BusinessInsider近日对红帽CEO吉姆・怀特赫斯特(Jim Whitehurst)进行了采访,怀特赫斯特称,如今开源应用几乎无处不在,科技公司、银行和股票交易所等都是使用. 没有开源,谷歌和Facebook根本不可能继续存在.

2013 年 Facebook 在开源方面的工作回顾

- - 博客 - 伯乐在线
自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句,开源就已经是我们工程哲学中的一个重要的部分. 现在,我们使用、维护并为大量的主要项目做出了贡献——涉及多种领域如手机工具、大数据系统、客户端的web库、后端的运行库和基础架构,也涉及到开放计算项目,服务器和存储硬件.

Presto 来自Facebook的开源分布式查询引擎

- - 标点符
PrestoDB 来自Facebook的开源分布式查询引擎. Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析. 它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions). 下图中展现了简化的Presto系统架构.

2015年,Facebook排名前5的开源项目

- - CSDN博客推荐文章
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/01/facebook-open-source-projects. Facebook坚信开源的力量. 当社区集合起来编写代码时,其好处是不可估量的. 有人能指出问题所在,同时解决方案也会很快跟进.

[转][转]Facebook 开源的快速文本分类器 FastText

- - heiyeluren的blog(黑夜路人的开源世界)
比深度学习快几个数量级,详解Facebook最新开源工具——fastText. 导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇”,特别是与深度模型对比,fastText能将训练时间由数天缩短到几秒钟. Facebook FAIR实验室在最新博客中宣布将开源资料库fastText,声称相比深度模型,fastText能将训练时间由数天缩短到几秒钟.