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

本文作者:关注前沿科技

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

相关文章
|
9月前
|
机器学习/深度学习 存储 监控
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
本项目基于深度学习的YOLO框架,成功实现了城市道路损伤的自动检测与评估。通过YOLOv8模型,我们能够高效地识别和分类路面裂缝、井盖移位、坑洼路面等常见的道路损伤类型。系统的核心优势在于其高效性和实时性,能够实时监控城市道路,自动标注损伤类型,并生成损伤评估报告。
506 0
基于深度学习YOLO框架的城市道路损伤检测与评估项目系统【附完整源码+数据集】
|
9月前
|
机器学习/深度学习 自动驾驶 算法
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
在智慧交通和智能驾驶日益普及的今天,准确识别复杂交通场景中的关键元素已成为自动驾驶系统的核心能力之一。传统的图像处理技术难以适应高动态、复杂天气、多目标密集的交通环境,而基于深度学习的目标检测算法,尤其是YOLO(You Only Look Once)系列,因其检测速度快、精度高、可部署性强等特点,在交通场景识别中占据了重要地位。
1053 0
基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
704 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1180 0
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1250 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
机器学习/深度学习 存储 人工智能
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
MNN 是阿里巴巴开源的轻量级深度学习推理框架,支持多种设备和主流模型格式,具备高性能和易用性,适用于移动端、服务器和嵌入式设备。
3466 18
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
687 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
1121 5
|
机器学习/深度学习 算法 数据挖掘
基于特征工程完成对贷款数据集Lending Club的预处理
基于特征工程完成对贷款数据集Lending Club的预处理
499 0
基于特征工程完成对贷款数据集Lending Club的预处理
|
机器学习/深度学习 缓存 搜索推荐
【推荐系统论文精读系列】(四)--Practical Lessons from Predicting Clicks on Ads at Facebook
点击预测系统大多是以在线广告系统维中心,每天7亿的日常活跃用户和超过1百万的活跃广告,因此预测FaceBook上的广告点击率是一项具有挑战的机器学习任务。本片论文中我们介绍了一个模型采用决策树和逻辑回归结合的模式,融合模型的表现胜过它们自己单独建模的效果3%,这个一个重大的影响对于整个系统的表现。
353 0

热门文章

最新文章

下一篇
开通oss服务