(部分翻译)AI Benchmark: Running Deep Neural Networks on Android Smartphones

移动端机器学习硬件加速乱象

虽然第一台消费级电脑大多配备了单独的独立CPU,但很快人们就发现它的计算性能对于许多多媒体应用来说太有限了。这导致与主CPU并行工作的特殊协处理器的产生。他们的架构针对许多信号处理任务进行了优化。数字信号处理器(DSP)的时代始于20世纪80年代早期,随着NEC PD7720 ,AT&T DSP1 和TI TMS32010协处理器的推出,他们建立了直到现在使用的DSP架构的一般原理:哈佛架构,硬件块多重累加(MAC)操作,用于并行计算的VLIWandSIMD指令集等。尽管第一个DSP由于其有限的设置而具有相当受限的能力在指令和记忆限制方面,它们被广泛使用直到上个世纪90年代中期。
他们适用于与计算机图形,声音和视频解码相关的应用,作为各种照片编辑软件的数学协处理器和加速器,甚至用于运行1989年设计的第一个深度学习OCR模型。由于高效的矢量和基于矩阵的计算,后一个使用CNN对手写数字进行分类的任务在那时达到了高速(每秒12个图像)。这些是由高度可并行化的DSP架构和MAC操作的硬件实现产生的。在90年代末期,DSP的普及率开始下降,而在消费者的数据库中,大部分用于集成DSP指令的CPU,用于高效并行计算的GPU以及用于各种特定问题的FPGA可以解决。在20世纪90年代初,DSP开始出现在手机中。起初,它们仅用于语音编码和压缩,以及用于某些无线电信号处理。随后,随着摄像机的集成以及移动设备中的音乐和视频播放等多种多媒体功能,集成的DSP开始广泛用于图像,视频和声音处理。与桌面计算机相比,DSP并没有被CPU和GPU取代,因为它通常能提供更好的性能,更低功耗,更具便携性。近年来,移动DSP和其他SoC组件的计算能力急剧增长,现在,由GPU,NPU和专用AI核心补充,共同支持基于深度学习的计算。

  1. 高通芯片组/SNPE SDK
  2. 海思芯片组/华为海思SDK
  3. 联发科芯片组/NeuroPilot SDK
  4. 三星芯片组
  5. 谷歌pixel/pixel visual core
  6. Arm Cortex CPUs/ Mali GPUs/ NN SDK
  7. Android NNAPI

大一统的NNAPI?

虽然存在许多用于访问不同移动平台上的DSP,GPU或NPU的专有SDK,但这并未真正解决使用HA在移动设备上运行深度学习算法的问题,因为所有这些SDK仅提供对某些特定芯片组的访问并且彼此不相容。为了解决这个问题,Google最近推出了一个Android安卓网络API(NNAPI),这是一个Android C API,专为在移动设备上运行计算密集型计算机和深度学习操作而设计。 NNAPI的系统架构如图5所示。应用程序通常不会直接使用NNAPI,而是依赖于更高级别的机器学习框架,而这些框架又可以使用NNAPI在支持的设备上运行硬件加速推理。要使用NNAPI执行计算,应首先将执行的模型表示为定向要执行的计算的有向图。该图与定义模型的数据(例如,从机器学习框架传递的权重和偏差)相结合,形成NNAPI运行时评估的模型。基于应用程序的要求和设备硬件,Android的神经网络运行时可以在可用的设备上处理器(包括专用神经网络芯片,GPU和DSP)上有效地分配计算工作负载。 NNAPI适用于运行Android8.1(APIlevel27)或更高版本的所有设备,但仍需要专门的供应商驱动程序才能访问设备的硬件。对于缺少此驱动程序的设备,NNAPI运行时依赖于优化的代码来执行CPU上的请求。

移动端深度学习框架

随着Android操作系统的广泛使用,许多流行的深度学习框架被移植到这个平台,包括Torch,Deeplearning4j,TensorFlow(Mobile,Lite),Caffe,Caffe2,MXNe,NNabla等。如今,最常用的是三种:TensorflowMobile,Tensorflow Lite和Caffe2

TensorFlowMobile

Tensorflow是Google于2015年发布的用于研究和开发的开源机器学习库.TensorFlow的编程模型可以描述为定向图,它定义了输入和输出(目标)变量之间的关系。该图本身由一组节点组成,这些节点表示顺序应用于输入数据的各种运算符(例如,卷积,汇集,LSTMlayers等),其定义了相应数据流计算的加权模式。模型训练完成后,可以将其导出为.pb图形,并使用TensorFlow Mobile库在移动设备上执行,该库可在Android和iOS平台上使用。请注意,无需在实际应用程序代码中指定模型体系结构:它已与预先训练的权重一起存储在.pb图中,开发人员只需提供此文件的位置和输入数据。 TensorFlow Mobile库的主要优点是支持大多数可用于TF版本的操作,因此几乎任何TensorFlow模型都可以在移动设备上转换和执行。此外,来自SoC制造商的所有当前SDK(SNPE,HiAI,NeuroPilot和ArmNN)都为该库提供(部分)硬件加速支持。这就是说,TensorFlow Mobile的发展即将结束,因为谷歌宣布逐步转向TensorFlow Lite库。特别的,TF Mobile不会获得Android NNAPI支持,因此如果不使用特定的SDK,所有型号仍将仅在CPU上执行。

TensorFlowLite

TensorFlow Lite于2017年底推出,作为TF Mobile库的继承者。根据Google的说法,它提供了更好的性能和更小的二进制大小dueto优化内核,预融合激活和更少的依赖。与TF Mobile类似,一般的TensorFlow预训练模型理论上可以转换为.tflite格式,之后用于Android或iOS平台上的使用。文件格式(.tflite而不是.pb)的更改是由于使用新的FlatBuffers序列化库引起的,该库允许在没有解析/解包步骤的情况下访问已保存的模型,通常与每个对象的内存分配相结合。最后,新库与Android NNAPI兼容,默认情况下可以在具有适当芯片组和驱动程序的设备上运行硬件加速。然而,应该注意的是,TensorFlow Lite目前处于开发者预览版中,并且存在许多实质性限制。首先,它仅支持一组有限的运算符,缺乏对图像大小调整,批处理和实例规范化,LSTM单元,某些统计函数或甚至简单的数学运算(如取幂或argmax)的完全支持。最重要的是,谷歌只保证三种型号可以工作:Inception-V3,MobileNet和Smart Reply SSL算法,虽然有一些修改,但可以运行许多其他深度学习模型。第二个问题涉及推理时间和消耗的RAM量。由于网络输出不支持ByteBuffer格式,因此与TF Mobile相比,这两个值可高达2倍,用于图像到图像的转换问题。最后,稳定性是另一个问题 - 尽管有些问题已经解决了明显的TFLiteversion问题,但目前正在进行的文件转换可能无法实现模型和移动设备的数量。虽然很多这些问题可能会在未来的库中发布,但目前他们使用TensorFlow Lite复杂化了许多现有的深度学习问题。

Caffe2

Caffe是另一个开源深度学习框架,最初由杨庆佳在加州大学伯克利分校开发并于2013年发布。在2017年,随着Facebook发布Caffe2,其iOS和Android平台的移动版本也被提出。Caffe2使用类似于TensorFlow的编程模型,静态计算图和表示各种运算符的节点。根据Caffe2 github存储库,其移动库的速度通常与TensorFlow Lite的速度相当(Snapdragon 821 SoC上的SqueezeNet模型为175ms与158ms)。报告还声称在使用OpenGL后端进行基于GPU的计算时,速度提高了6倍,但目前的Caffe2版本尚未提供此功能。与TensorFlow类似,所有专有SDK(SNPE,HiAI,NeuroPilot和ArmNN)也支持Caffe2模型的加速,但NNAPI支持仍在开发中,尚未完全集成。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值