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

简介:
+关注继续查看

6f3e6630572df5cc05cec25df3d0cc6daf2d164a

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神经网络,大部分推理时间,都花在卷积和全连接运算上。

3ac625337e9398d23c5e866cf5b16cf6dbc6588c

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

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

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

于是,QNNPACK出世了。

怎样加速矩阵乘法?

f78e2d65484631589c9e95af1e7624b4fab76adc

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

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

e0da76ddb1383e680bdd880f651fa650ce8b2d7b

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

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

节省内存和缓存

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

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

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

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

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

df5fe848154f8a7ffe638febc874efd11178b49b

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

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

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

赢了TensorFlow Lite

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

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


03f267a9d99ce9bd8d058096dff4b8d2d74ebced

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


原文发布时间为:2018-10-30

本文作者:关注前沿科技

本文来自云栖社区合作伙伴“量子位”,了解相关信息可以关注“量子位”。

相关文章
|
7月前
|
人工智能 安全 Cloud Native
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
338 0
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
|
机器学习/深度学习 人工智能 算法
在家搭建了一套TensorFlow开源机器学习平台
在家搭建了一套TensorFlow开源机器学习平台
310 0
在家搭建了一套TensorFlow开源机器学习平台
|
机器学习/深度学习 人工智能 算法
2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)
2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)
295 0
2019 年 11 月最新《TensorFlow 2.0 深度学习算法实战》中文版教材免费开源(附随书代码+pdf)
|
机器学习/深度学习 Web App开发 Kubernetes
谷歌云大会最后一天解读开放性:从TensorFlow开源到开放云平台
当地时间 3 月 10 日,Google Cloud Next '17 在美国旧金山顺利闭幕。机器之心作为受邀媒体对这场为期 3 天的会议进行了现场报道,参阅《现场直击 | 李飞飞首度亮相谷歌云大会:发布全新 API,解读 AI 民主化》和《谷歌云官方正式宣布收购数据科学社区 Kaggle》。谷歌云大会的最后一天,Google Cloud 产品开发、计算 & 开发者服务副总裁 Sam Ramji、谷歌大脑 TensorFlow 负责人 Rajat Monga 和 Google Senior Fellow Jeff Dean 等演讲者和受邀嘉宾重点围绕 Kubernetes、TensorFlow
125 0
谷歌云大会最后一天解读开放性:从TensorFlow开源到开放云平台
|
机器学习/深度学习 人工智能 自然语言处理
TensorFlow开源一周年:这可能是一份最完整的盘点
TensorFlow 宣布开源已经过去一年时间了。在谷歌的支持下,TensorFlow 成为了 GitHub 上今年最受欢迎的机器学习开源项目(据 GitHub 开源报告)。今天,Google Research Blog 上发表了一篇 TensorFlow 开源一周年的介绍文章,我们也对之前谷歌在 TensorFlow 框架上展开的项目进行了盘点(谷歌所公开的)。
145 0
|
人工智能 自然语言处理 机器人
谷歌发布 AI 语言模型 ELECTRA,将作为 TensorFlow 上的开源模型
谷歌发布 AI 语言模型 ELECTRA,将作为 TensorFlow 上的开源模型
谷歌发布 AI 语言模型 ELECTRA,将作为 TensorFlow 上的开源模型
|
机器学习/深度学习 SQL JSON
简化TensorFlow和Spark互操作性:LinkedIn开源Spark-TFRecord
TensorFlow 是市场上最流行的深度学习框架,而 Apache Spark 仍然是被广泛采用的数据计算平台之一,从大型企业到初创公司都能见到它们的身影。很自然会有公司尝试将这两者结合起来。
|
机器学习/深度学习 SQL JSON
简化 TensorFlow 和 Spark 互操作性的问题:LinkedIn 开源 Spark-TFRecord
TensorFlow 和 Apache Spark 的互操作问题是现实世界机器学习场景中常见的挑战。可以说,TensorFlow 是市场上最流行的深度学习框架,而 Apache Spark 仍然是被广泛采用的数据计算平台之一,从大型企业到初创公司都能见到它们的身影。
|
算法框架/工具 TensorFlow 机器学习/深度学习
ElasticDL:蚂蚁金服开源基于TensorFlow的弹性分布式深度学习系统
“ElasticDL”,基于 Eager Execution 模式的开源项目,它是一个 Kubernetes 原生深度学习框架,根据介绍,ElasticDL 主要有四大特点:容错性、弹性调度、易用性、高效,其中又以容错与弹性调度特性最具特色。
1248 0
ElasticDL:蚂蚁金服开源基于TensorFlow的弹性分布式深度学习系统
|
机器学习/深度学习 算法 PyTorch
阿里深度学习框架开源了!无缝对接TensorFlow、PyTorch
阿里巴巴将于12月开源其内部深度学习框架 X-DeepLearning,面向广告、推荐、搜索等高维稀疏数据场景,以填补TensorFlow、PyTorch等现有开源深度学习框架主要面向图像、语音等低维稠密数据的不足。
3090 0
热门文章
最新文章
推荐文章
更多