英语原文共 27 页
人工智能基准:运行在安卓智能手机上的深度神经网络
摘要:在过去的数年时间里,移动设备如手机、平板的运算性能飞速发展,在不久前达到了桌面计算机的性能水平。尽管运行普通的手机应用对他们来说已经不再是个问题,但仍然有一些任务是可以轻易挑战目前最高性能的移动设备,比如运行人工智能算法。在这篇论文中,我们呈现了目前深度学习在安卓生态圈的发展状态的研究,描述了可行的框架,编程模型和在智能手机上运行人工智能的限制。我们对在四大主流手机芯片平台上可行的硬件加速资源做出了总述,他们是高通,海思,联发科和三星。另外,我们展示了目前世界上不同手机芯片的表现结果,这个结果由人工智能基准(http://ai-benchmark.com)提供,包含了目前主流的硬件配置。
关键词:人工智能,基准,神经网络,深度学习,计算机视觉,图像处理,安卓,手机,智能机
1 引言
随着最近移动系统级芯片技术的进步,移动安卓设备的性能在过去几年呈指数级的发展。随着多核处理器,专用的图像处理器,十亿字节级别的随机存取存储器的发展,目前只能手机的性能已经远远超过运行目前标准创建的手机应用或者简单的手机游戏。尽管他们的运算性能已经完全超过绝大部分每日生活中的需求,人工智能算法对目前最高性能的手机平板来说仍是一个挑战。尽管很多机器学习方案在部署到用户终端设备上非常有用,但在移动平台上运行他们需要消耗手机中央处理器大量的运算性能并且手机电池也损耗很快。
最近很多深度学习的发展都是有关移动设备专用的任务。一组值得关注的这类任务是关于计算机视觉的问题,如图像识别[21,33,59],图像增强[25–27],超分辨率[14,38,65],光学字符识别[45],对象跟踪[23,67],视觉场景理解[12,41],面部探测识别[40,51],视线跟踪[68]等。另外一组任务包含各种自然语言处理问题如:自然语言翻译[4,57],句子填空[22,42],句子情感分析[53,56]和互动聊天机器人[52]。另一组研究在线传感器数据处理,这些来自加速器数据[24,34],手势识别[48]睡眠监控[50]等人体活动识别产生的数据。一些其他在手机上的深度学习问题是关于语音识别,虚拟现实和其他各个方面的任务。
图像1.手机系统级芯片对第三方人工智能应用的潜在加速支持
尽管人们对手机应用上的深度学习越来越感兴趣,由于前面描述的手机硬件的限制,目前主流的人工智能算法要么无法提供到智能手机上要么运行在很远的服务器端。后者的选择也不是完美无缺的,有以下缺点:(a)隐私问题;(b)依赖互联网连接(c)与网络传输时间相关的延迟(d)瓶颈问题——潜在的客户数依赖于服务器的运算性能。为了克服这些问题,人们做了一些尝试,用使用了图像处理器或数字信号处理器的硬件加速器将单独的算法或者整个机器学习库移植到移动平台上。在[35]中,作者在高通骁龙数字信号处理器上实现了一个能够感应接口任务的移动神经网络分类引擎。虽然耗电量惊人的大,由于它较小的编程和存储空间,数字信号处理器只能运行一个非常小的卷积神经网络。在[36]中,作者呈现了一个图像处理器加速库的CNNdroid为了在手机图像处理器上进行预训练卷积神经网络的并行运算。这个库是基于RenderScript框架在中央处理器和图像处理器之间进行并行运算。虽然初步推测比基线简单单线程实现要快至40倍,实际上它的速度和
基于CPU依赖于Arm NEON 指令系统的TensorFlow Mobile库速度差不多。Motamedi等人。 [43]利用相同的方法使用RenderScript,但使用了CPU不精确的计算模式来降低执行速度。尽管结果很令人期待,但本文没有深入研究不精确算法对精度的影响,因此这种方法的适用性仍不清楚。RSTensorFlow [2]是另一种尝试为基于GPU的矩阵运算加速演示RenderScript,在这种情况下,它用于直接修改TensorFlow Mobile库。结果表明,虽然矩阵乘法可以快3倍的速度执行,但是不可能加速占总推理时间约75%的卷积运算。此外,实验表明RenderScript并不总是在所有设备上使用GPU - 有时它只在CPU上运行,与原始TF实现相比,导致执行时间更慢。
除此之外,SoC制造商直接提出了一些用于运行计算密集型操作的SDK。2016年,Qualcomm推出了Snapdragon神经处理引擎(SNPE)[55],以加速神经网络的GPU和DSP的执行。第二年HiSilicon提出HiAI平台[20]用于在Kirin的NPU上运行神经网络,后来联发科推出了可以触发GPU的NeuroPilot SDK [39]或APU运行深度学习模型。最大的问题是所有这些SDK都只针对相应的芯片组开发,即依赖HiAI的应用程序无法在Qualcomm SoC上运行,反之亦然,从而迫使开发人员为每个平台创建多个版本的应用程序,或者 放弃其中一些。随着Android神经网络API(NNAPI)[47]的推出,这种情况发生了变化,旨在在移动设备上运行深度学习模型。该API基本上是高级机器学习框架和设备的硬件加速资源之间的中间层,负责它们的通信以及在最合适的硬件上调度任务的执行。NNAPI仍然需要特定的SoC供应商的驱动程序才能在除CPU之外的任何设备上运行计算,因此它在Android 8.1 中的默认存在并不能自动保证硬件加速支持。
虽然存在许多测试移动电话的CPU和GPU性能的通用基准测试,但它们都没有测量由于可用的AI芯片和DSP而可以实现的AI操作的速度和加速度。在本文中,我们提出了一个专门用于测试机器学习性能,可用硬件AI加速器,芯片组驱动程序和当前Android设备内存限制的AI Benchmark。它包含许多计算机视觉AI测试,这些测试直接在手机硬件上执行,涵盖相关的深度学习架构和操作。我们提供了实际芯片组平台和流行的移动机器学习框架的详细描述,并描述了在智能手机上运行深度学习算法的局限性。最后,我们通过我们的AI Benchmark收集了超过10,000款智能手机和平板电脑,展示了大约200款Android设备和主要移动芯片组的性能。
本文的其余部分安排如下。 在第2节中,我们描述了主芯片组平台上可用的硬件加速资源,以及用于访问它们的编程接口。第3节概述了流行的移动深度学习框架。 第4节提供了基准架构,其编程实现以及它包含的计算机视觉测试的详细说明。第5节显示了不同深度学习架构的实验结果和推理时间,适用于各种Android设备和芯片组。 第6节分析了获得的结果。 最后,第7节总结了论文。
2 硬件加速
虽然第一台消费者计算机大多配备了单独的独立CPU,但很快就发现它的计算性能对于许多多媒体应用来说太有限了。 这导致创建了与主CPU并行工作的特殊协处理器。 他们的架构针对许多信号处理任务进行了优化。数字信号处理器(DSP)的时代始于20世纪80年代早期,随着NEC PD7720 [9],AT&T DSP1 [19]和TI TMS32010 [17]协处理器的推出。 他们建立了直到现在使用的DSP架构的一般原理[18]:哈佛架构,用于乘法累加(MAC)操作的硬件块,用于并行计算的VLIW和SIMD指令集等。虽然第一批DSP由于其有限的指令和内存限制而具有相当有限的能力,但它们被广泛使用直到上个世纪90年代中期。 他们是
广泛用于与计算机图形,声音和视频解码相关的应用,作为各种照片编辑软件的数学协处理器和加速器,甚至用于运行1989年设计的第一个深度学习OCR模型[37]。由于有效的矢量和基于矩阵的计算,后一种使用CNN对手写数字进行分类的任务在那时达到了高速(每秒12幅图像)。 这些是由高度可并行化的DSP架构和MAC操作的硬件实现产生的。 在90年代末,DSP的普及开始减少,在消费PC领域,它们在很大程度上被具有集成DSP指令的通用CPU,用于高效并行计算的GPU以及可针对各种特定问题配置的FPGA所取代。
在20世纪90年代初,DSP开始出现在手机中。 起初,它们仅用于语音编码和压缩,以及用于某些无线电信号处理。 后来,随着摄像机的集成以及移动设备中的音乐和视频播放等多种多媒体功能,集成的DSP开始广泛用于图像,视频和声音处理。与桌面计算机相比,DSP并没有被CPU和GPU取代,因为它们通常以较低的功耗提供卓越的性能,因此对便携式设备至关重要。 近年来,移动DSP和其他SoC组件的计算能力急剧增长,现在,由GPU,NPU和专用AI核心补充,它们支持AI和基于深度学习的计算。 当前移动平台(图1)及其硬件加速资源的详细说明如下。
2.1 Qualcomm 芯片组/SNPE SDK
Qualcomm是一家美国半导体和无线电信公司,成立于1985年。它的第一款Snapdragon移动SoC QSD8250于2007年发布,已经推出专用的AMD Z430 GPU和第一代商用QDSP6 Hexagon DSP。2009年,在收购了AMD的移动图形部门之后,相应的GPU系列更名为Adreno(来自Radeon的anagram),其后续产品在所有现有的Snapdragon SoC中以此名称出现。 他们的表现从2.1(Adreno 200)演变为727(Adreno 630)GFLOPS。从第一代(2006年)到现在的第六代,DSP架构也发生了重大变化。现在支持宽向量扩展(HVX),动态多线程,VLIW和SIMD指令集。 它们也可以由用户编程[11]。 主要的Snapdragon CPU内核采用基于Arm的架构,通常采用Qualcomm自定义的内部设计,通常基于Arm Cortex内核开发。这三个组件(带有ARM NEON指令的CPU集合,GPU和DSP)形成Snapdragon的异构计算架构(图2),非常适合运行各种AI算法。 高通芯片组目前占智能手机SoC市场的55%左右,并安装在许多流行的智能手机,平板电脑和可穿戴设备中。
图2。 组件集成在Snapdragon 845(左)和麒麟970(右)SoC中。
高通公司于2015年5月首次解决了Snapdragon 820中的设备上AI推理硬件加速问题,并于2016年5月宣布了其专有的Snapdragon神经处理引擎(SNPE)SDK,它为所有Snapdragon处理组件提供运行时加速。 SDK通过ONNX支持常见的深度学习模型框架,如Caffe / Caffe2, TensorFlow,PyTorch,Chainer,MxNet,CNTK和PaddlePaddle。它旨在使开发人员能够在各种Qualcomm驱动的设备上运行自己的自定义神经网络模型。 17款Snapdragon移动处理器支持SDK,从高级(Snapdragon 845,835,820)开始,较高级(Snapdragon 710,670,660,652,650,653,636,632,630,626和625)以及中级( Snapdragon 450,439,429)。 它还支持Qualcomm Vision Intelligence Platform(QCS603和QCS605),专为在物联网设备上进行高效的机器学习而设计。
高通公司在Hexagon DSP上运行量化神经网络的第一个NNAPI驱动程序在Android O-MR1中引入,虽然它当时没有在任何商业设备中使用,并且首次出现在一加6和小米8的下一个Android版本中。在Android P中,这些驱动程序获得了在Adreno GPU上运行float模型的额外支持。 然而,它们目前还没有进入市场。 所考虑的NNAPI驱动程序通常采用SNPE SDK中使用的硬件加速原理和实现。 差异主要来自当前Android NNAPI规范的限制。高通公司在向其OEM客户提供的软件映像中提供这些驱动程序,然后这些客户又决定何时以及如何将它们包含在终端设备中:首次发布或稍后在后续软件更新中进行无线传输。 因此,他们的存在和实际版本可能会在市场上的手机上有很大差异。
2.2 HiSilicon 芯片组/华为 HiAI SDK
海思是一家中国半导体公司,成立于2004年,是华为的子公司。 它的第一款移动处理器(K3V1)于2008年推出,但是在许多Android设备上使用的第一款商业上成功的产品是2012年发布的下一代SoC系列(K3V2),其中包括四个Arm Cortex-A9 CPU内核和一个Vivante GPU。 2014年,由中端(600系列)和高端(900系列)芯片组组成的新型麒麟SoC系列作为K3系列的后续产品推出,至今仍在华为设备中使用。与Qualcomm不同,HiSilicon不会创建定制的CPU和GPU设计,所有Kirin芯片组都基于现成的A
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。