AI Benchmark解读(论文翻译): All About Deep Learning on Smartphones in 2019

摘要

在过去的两年里,移动AI加速器的性能发展迅速,随着每一代soc的推出,性能几乎翻了一番。目前的第四代移动npu已经接近不久前推出的兼容cuda的Nvidia显卡的结果,再加上移动深度学习框架的增强功能,使得在移动设备上运行复杂和深度的人工智能模型成为可能。在本文中,我们评估了高通、海思、三星、联发科和优硕为人工智能推理提供硬件加速的所有芯片组的性能并比较了结果。我们还讨论了Android ML管道的最新变化,并提供了在移动设备上部署深度学习模型的概述。本文提供的所有数值结果都可以在项目官方网站1上找到并定期更新。

1. 引言

在过去的几年里,深度学习和人工智能成为移动行业的主要趋势之一。这是一个自然的契合,因为从90年代末开始,移动设备配备了越来越多的智能数据处理软件——面部和眼睛检测[20]、眼动追踪[53]、语音识别[51]、条形码扫描[84]、基于加速度计的手势识别[48,57]、预测文本识别[74]、手写文本识别[4]、OCR[36]等。一开始,所有提出的方法主要是基于人工设计的特征和非常紧凑的型号,因为它们在单核600 MHz Arm CPU和8-128 MB RAM的设备上运行最好。这种情况在2010年之后发生了变化,移动设备开始获得多核处理器,以及强大的gpu, dsp和npu,非常适合机器和深度学习任务。与此同时,深度学习领域发展迅速,有许多新的方法和模型在许多实际任务中实现了一个全新的性能水平,如图像分类、照片和语音处理、神经语言理解等。从那时起,以前使用的手工制作的解决方案逐渐被更强大和高效的深度学习技术所取代,将我们带到智能手机上的人工智能应用程序的当前状态。

如今,几乎在任何移动设备上都可以找到各种深度学习模型。其中最流行的任务是不同的计算机视觉问题,如图像分类[38,82,23]、图像增强[27,28,32,30]、图像超分辨率[17,42,83]、散景模拟[85]、目标跟踪[87,25]、光学字符识别[56]、人脸检测和识别[44,70]、增强现实[3,16]等。在移动设备上运行的另一组重要任务与各种NLP(自然语言处理)问题有关,如自然语言翻译[80,7]、句子补全[52,24]、句子情感分析[77,72,33]、语音助手[18]和交互式聊天机器人[71]。此外,许多任务涉及时间序列处理,如人类活动识别[39,26]、手势识别[60]、睡眠监测[69]、自适应电源管理[50,47]、音乐跟踪[86]和分类[73]。许多机器和深度学习算法也直接集成到智能手机固件中,并用作估计各种参数和智能数据处理的辅助方法。

在这里插入图片描述

图1:移动AI加速器的性能演变:浮动Inception-V3模型的图像吞吐量。移动设备使用TensorFlow Lite和NNAPI运行FP16模型。在英特尔cpu上使用英特尔MKL-DNN库[45],在Nvidia gpu上使用CUDA[10]和cuDNN[8]实现加速。在Intel和Nvidia硬件上使用标准TensorFlow库[2]运行批量大小为20的FP32模型(这些cpu / gpu目前不支持FP16格式)获得结果。请注意,Inception-V3是一个相对较小的网络,对于较大的模型,Nvidia gpu相对于其他芯片的优势可能更大

虽然在智能手机上运行许多最先进的深度学习模型最初是一个挑战,因为它们通常没有针对移动推理进行优化,但过去几年已经彻底改变了这种情况。早在2015年,TensorFlow Mobile[79]是第一个允许在移动设备上运行标准AI模型而无需任何特殊修改或转换的官方库,尽管也没有任何硬件加速,即仅在CPU上。2017年,TensorFlow Lite (TFLite)[46]框架解除了后一个限制,该框架放弃了对许多重要深度学习操作的支持,但提供了显着减少的二进制大小和针对设备上推理优化的内核。该库还获得了同年推出的Android Neural Networks API (NNAPI)[5]的支持,允许直接通过Android操作系统访问设备的AI硬件加速资源。这是一个重要的里程碑,因为一个成熟的移动机器学习管道终于建立起来了:在一个标准的深度学习库中,无需使用专门的供应商工具或sdk,就可以在移动设备上训练,导出和运行结果模型。然而,一开始,这种方法也有许多与NNAPI和TensorFlow Lite本身相关的缺陷,因此对于许多用例来说是不切实际的。最值得注意的问题是,在大多数Android设备中缺乏有效的NNAPI驱动程序(截至2018年9月,只有4种商业型号具有它们[19]),以及TFLite缺乏对许多流行的ML模型的支持。这两个问题在过去一年中基本上得到了解决。自2019年春季以来,几乎所有采用高通、海思、三星和联发科系统的芯片(soc)和专用人工智能硬件的新设备都配备了NNAPI驱动程序,允许在嵌入式人工智能加速器上运行机器学习工作负载。在Android 10中,Neural Networks API升级到1.2版本,实现了60个新操作[1],并扩展了支持模型的范围。从构建1.14和1.15开始,TensorFlow Lite中也添加了许多这些操作。另一个重要的变化是引入了TFLite委托[12]。这些委托可以由硬件供应商直接编写,然后用于在过时或缺乏NNAPI驱动程序的设备上加速AI推理。谷歌今年早些时候已经发布了一款用于在移动gpu(基于OpenGL ES、OpenCL或Metal)上加速深度学习模型的通用代理[43]。所有这些变化为与标准机器学习(ML)环境紧密相连的新型移动AI基础设施奠定了基础,从而使机器学习模型在智能手机上的部署变得简单方便。上述变化将在第3节中详细描述。

最新一代的中高端移动soc配备了人工智能硬件,其性能正在接近过去几年发布的支持cuda的英伟达台式机gpu的结果。在本文中,我们展示并分析了高通、海思、三星、联发科和优硕各代移动AI加速器的性能结果,从2017年发布的第一款移动npu开始。我们将结果与桌面gpu和cpu进行比较,从而评估移动设备与传统机器学习芯片的性能。为此,我们使用了一个专业的AI Benchmark应用程序[31],该应用程序由21个深度学习测试组成,测量了AI性能的50多个不同方面,包括速度、准确性、初始化时间、稳定性等。该基准自去年以来进行了重大更新,以反映机器学习生态系统的最新变化。第4节描述了这些更新。最后,我们概述了Android ML推理工具和库的性能、功能和使用情况,并展示了使用AI Benchmark应用程序收集的200多台Android设备和100多台移动soc的性能。

本文的其余部分安排如下。在第2节中,我们描述了主要芯片组平台上可用的硬件加速资源和访问它们的编程接口。第3节概述了移动机器学习生态系统的最新变化。第4节详细描述了我们的AI基准架构的最新修改,其编程实现和深度学习测试。第5节展示了各种移动设备和芯片组的实验性能结果,并将其与桌面cpu和gpu的性能进行了比较。第6节分析了结果。最后,第七部分对全文进行总结。

2. 硬件加速

尽管早在20世纪90年代就提出了许多深度学习算法[40,41,22],但由于缺乏合适(且价格合理)的硬件来训练这些模型,直到2009年,研究社区才开始广泛使用这些算法,当时可以使用通用消费类gpu有效地加速它们的训练[65]。随着2011-2012年Max-Pooling cnn[9,55]和AlexNet[38]的引入,以及随后深度学习在许多实际任务中的成功,深度神经网络在移动设备上运行只是时间问题。与之前部署在智能手机上的简单统计方法相比,深度学习模型需要大量的计算资源,因此从性能和能效的角度来看,在Arm cpu上运行它们几乎是不可行的。2015年,高通[89]、Arm[58]和其他SoC供应商首次尝试在移动gpu和dsp上加速AI模型,尽管一开始主要是通过使深度学习模型适应现有硬件。专门的人工智能芯片开始出现在移动soc中,包括搭载针对人工智能推理进行优化的Hexagon V6 68x DSP系列的骁龙820 / 835、搭载由Cambricon设计的专用NPU单元的麒麟970、搭载独立视觉处理单元的Exynos 8895、搭载AI处理单元的联发科Helio P60以及搭载独立Pixel视觉核心的谷歌Pixel 2。在过去三年中,移动AI加速器的性能发展非常迅速(图1),越来越接近桌面硬件的结果。我们现在可以根据AI性能、功能和发布日期来区分四代移动soc:

第一代:所有不能通过Android操作系统提供AI加速的传统芯片组,但仍然可以使用特殊的sdk或基于gpu的库来加速机器学习推理。所有采用Hexagon 682及以下DSP的高通soc,以及海思、三星和联发科的大部分芯片组都属于这一类。值得一提的是,几乎所有的计算机视觉模型都主要基于向量和矩阵乘法,因此从技术上讲,几乎可以在任何支持OpenGL ES或OpenCL的移动GPU上运行。然而,这种方法实际上可能会导致许多带有低端或老一代gpu的soc的显著性能下降。

第二代:2017年以后发布的支持Android NNAPI的移动soc。它们可能只为一种类型的模型(浮动或量化)提供加速,并且是2018年人工智能性能的典型代表。

• Qualcomm: Snapdragon 845 (Hex. 685 + Adreno 630);
					Snapdragon 710 (Hexagon 685);
					Snapdragon 670 (Hexagon 685);
• HiSilicon: Kirin 970 (NPU, Cambricon);
• Samsung: Exynos 9810 (Mali-G72 MP18);
					Exynos 9610 (Mali-G72 MP3);
					Exynos 9609 (Mali-G72 MP3);
• MediaTek: Helio P70 (APU 1.0 + Mali-G72 MP3);
					Helio P60 (APU 1.0 + Mali-G72 MP3);
					Helio P65 (Mali-G52 MP2).

第三代:2018年以后发布的支持Android NNAPI的移动soc。它们为所有模型类型提供硬件加速,其AI性能在2019年相应的SoC细分市场中是典型的。

• Qualcomm: Snapdragon 855+ (Hex. 690 + Adreno 640);
					Snapdragon 855 (Hex. 690 + Adreno 640);
					Snapdragon 730 (Hex. 688 + Adreno 618);
					Snapdragon 675 (Hex. 685 + Adreno 612);
					Snapdragon 665 (Hex. 686 + Adreno 610);
• HiSilicon: Kirin 980 (NPU×2, Cambricon);
• Samsung: Exynos 9825 (NPU + Mali-G76 MP12);
					Exynos 9820 (NPU + Mali-G76 MP12);
• MediaTek: Helio P90 (APU 2.0);
					Helio G90 (APU 1.0 + Mali-G76 MP4).

第4代:最近推出的带有下一代AI加速器的芯片组(图1)。目前只有海思麒麟990、海思麒麟810和优硕Tiger T710 soc属于这一类别。其他厂商将在今年年底推出更多芯片组。下面,我们将详细介绍过去一年发布的移动平台和相关sdk。关于之前介绍的具有AI加速支持的soc的更多信息,可以在我们之前的论文[31]中找到。

2.1. 三星芯片组/ EDEN SDK

Exynos 9820是第一款在技术上与Android NNAPI兼容的三星SoC,其驱动程序将在Android Q升级后发布。该芯片组包含两个定制的Mongoose M4 CPU内核,两个CortexA75,四个Cortex-A55内核和Mali-G76 MP12图形。Exynos 9820的NPU仅支持量化推理,由控制器和两个具有1024个MAC单元的内核(图2)组成[78]。NPU控制器有一个CPU,一个直接存储器访问(DMA)单元,代码SRAM和一个网络控制器。CPU负责与SoC的主机系统通信,并为网络控制器定义网络规模。控制器自动配置两个核心的所有模块,并遍历网络。为了有效地利用外部内存带宽和刮擦板,对网络的权重进行了压缩,网络编译器还将网络划分为子网络,并在多个网络层上进行遍历。DMA单元管理内核的每个512KB刮擦板中的压缩权重和特征映射。在运行计算时,NPU还可以跳过为零的权重,以提高卷积效率。关于Exynos NPU的更详细的描述可以在[78]中找到。我们强烈建议对npu的一般功能感兴趣的人阅读这篇文章,因为它对所有网络/数据处理阶段和可能的瓶颈提供了很好的概述。

在这里插入图片描述

Exynos 9820的NPU占地5.5mm2,采用8nm CMOS技术制造,时钟频率为67- 933mhz。NPU的性能在很大程度上取决于内核大小和零权重的比例。对于大小为5×5的核,当零权值为0%和75%时,其性能分别为2.1 TOPS和6.9 TOPS;两种情况下的能效分别为3.6 TOPS/W和11.5 TOPS/W。图4:集成到麒麟990芯片中的SoC组件。模型中,根据网络稀疏度不同,能量效率介于2 TOPS/W和3.4 TOPS/W之间[78]。

另外两款支持Android NNAPI的三星soc是Exynos 9609 / 9610,尽管它们依赖于Mali-G72 MP3 GPU和Arm NN驱动程序[6]来加速AI模型。与Note10系列一同亮相的Exynos 9825是采用7nm技术生产的Exynos 9820的稍微超频版本,采用了相同的NPU设计。

今年,三星发布了Exynos深度神经网络(EDEN) SDK,该SDK为深度学习模型提供NPU、GPU和CPU加速,并利用数据和模型并行性。它由模型转换工具、NPU编译器和定制的TFLite生成器组成,可作为桌面工具以及Android和Linux的运行时。EDEN运行时提供了用于初始化、打开/关闭模型以及使用各种配置执行模型的api。不幸的是,它还没有公开可用

2.2. 海思芯片组/ HiAI SDK

虽然麒麟970 / 980 soc使用的是最初由寒武纪设计的npu,但今年华为改用其内部开发的达芬奇架构(图3),为Ascend系列人工智能加速器提供动力,并使用3D Cube计算引擎加速矩阵计算。第一个带有达芬奇NPU的SoC是中程麒麟810,包含两个Cortex-A76和六个Cortex-A55 CPU内核,以及Mali-G52 MP6 GPU。后来,在麒麟990 5G芯片中出现了一个显着放大的AI加速器,该芯片拥有四个Cortex-A76、四个Cortex-A55 cpu和Mali-G76 MP16图形。该SoC具有三核达芬奇NPU,其中包含两个用于重型计算场景的大(达芬奇Lite)内核和一个用于低功耗AI计算的小(达芬奇Tiny)内核。据华为称,在运行人脸识别模型时,小内核的功耗是大内核的24倍。此外,还展示了简化版麒麟990(不带“5G”前缀),采用双核NPU(一核大+一核小),不应与标准版混淆(图4)。

在这里插入图片描述
在这里插入图片描述
2018年底,华为推出了HiAI 2.0 SDK,增加了对麒麟980芯片组的支持和新的深度学习操作。华为还发布了IDE工具和Android Studio插件,提供了基于HiAI Engine运行深度学习模型的开发工具集。随着HiAI的最新更新,它支持300多个深度学习操作和最新的麒麟810 / 990 (5G) soc。

2.3. 高通芯片组/ SNPE SDK

与之前一样,高通依靠其AI引擎(由Hexagon DSP, Adreno GPU和Kryo CPU内核组成)来加速AI推理。在所有支持Android NNAPI的高通soc中,Adreno GPU用于浮点深度学习模型,而Hexagon DSP负责量化推理。值得注意的是,虽然Hexagon 68x/69x芯片仍然作为dsp销售,但它们的架构针对深度学习工作负载进行了优化,并且它们包括专用的AI芯片,如张量加速器单元,因此与其他供应商提出的npu和tpu没有太大不同。Hexagon dsp的唯一主要弱点是缺乏对浮点模型的支持(与Google Pixel TPU,联发科APU 1.0和Exynos NPU相同),因此后者被委托给Adreno gpu。

2018年底,高通发布了其旗舰SoC Snapdragon 855,包含8个定制的Kryo 485 CPU内核(三个不同频率的集群,源自Cortex-A76),一个Adreno 640 GPU和Hexagon 690 DSP(图5)。与SDM845中使用的Hexagon 685相比,新的DSP获得了一个1024位SIMD,管道数量增加了一倍,并增加了一个张量加速器单元。它的GPU也从上一代升级,与Adreno 630相比,alu增加了一倍,预期性能提高了20%。骁龙855 Plus于2019年7月发布,是标准SDM855 SoC的超频版本,具有相同的DSP和GPU,工作频率更高。去年推出的其他三款中档soc(骁龙730、665和675)分别包括Hexagon 688、686和685 dsp(前两款是Hexagon 685的衍生产品)。以上提到的SoC都支持Android NNAPI 1.1,并为浮动和量化模型提供加速。高通表示,所有支持NNAPI的芯片组(骁龙855、845、730、710、675、670和665)都将在Android Q中支持NNAPI 1.2。

在这里插入图片描述

高通的神经处理SDK (SNPE)[76]在过去一年中也经历了几次更新。它目前提供了用于神经网络模型执行的Android和Linux运行时,用于控制运行时的加载/执行/调度的api,用于模型转换的桌面工具和用于瓶颈识别的性能基准。它目前支持Caffe、Caffe2、ONNX和TensorFlow机器学习框架。

2.4. 联发科芯片 / NeuroPilot SDK

联发科在过去一年中发布的关键产品之一是Helio P90,它配备了新的AI处理单元(APU 2.0),可以产生高达1.1 tmac /秒的计算能力(比之前的Helio P60 / P70系列高4倍)。该SoC采用12nm工艺制造,结合了一对Arm Cortex-A75和六个Cortex-A55 CPU内核,IMG PowerVR GM 9446 GPU和高达1866MHz的双通道LPDDR4x RAM。针对深度神经网络中大量使用的操作,对APU进行了优化设计。首先,它的并行处理引擎能够加速繁重的计算操作,如卷积、全连接层、激活函数、2D操作(如池化或双线性插值)和其他张量操作。任务控制系统和数据缓冲区的设计是为了最小化内存带宽的使用,最大化数据重用和处理引擎的利用率。最后,APU支持所有流行的推理模式,包括FP16、INT16和INT8,允许在硬件加速下运行所有常见的AI模型。以人脸检测为例,APU的运行速度比Helio的CPU提高了20倍,功耗降低了55倍。

至于联发科今年推出的其他芯片组,Helio G90和Helio P65也为浮动和量化人工智能模型提供硬件加速。前者使用一个单独的APU(第一代),其架构与Helio P60 / P70芯片组中的APU相似[31]。Helio P65没有专用的APU模块,在Mali-G52 MP2 GPU上运行所有型号。

与Helio P90一起,联发科还推出了NeuroPilot v2.0 SDK(图6)。在其第二版中,NeuroPilot支持自动网络量化和修剪。SDK的APU驱动程序支持FP16/INT16/INT8数据类型,而CPU和GPU驱动程序可以用于一些自定义操作和FP32/FP16模型。NeuroPilot SDK旨在利用联发科的异构硬件,将工作负载分配给最合适的处理器,并同时利用所有可用的计算资源来实现最佳性能和能源效率。该SDK仅支持与联发科neuropilot兼容的芯片组,适用于智能手机和电视等产品。在Helio P90的演示中,联发科展示了NeuroPilot v2.0允许实时实现许多人工智能应用(例如多人姿态跟踪,3D姿态跟踪,多目标识别,AR / MR,语义分割,场景识别和图像增强)。

2.5. Unisoc芯片/ UNIAI SDK

优硕是一家成立于2001年的中国无晶圆厂半导体公司(前身为展讯)。该公司最初为GSM手机生产芯片,主要在中国知名,但从2010-2011年开始,它开始将业务扩展到全球市场。2011年,优硕的首款智能手机soc (SC8805G和SC6810)出现在入门级Android设备上,采用ARM-9 600MHz处理器和2D图形。随着基于四核Cortex-A7的SC773x, SC883x和SC983x SoC系列的推出,Unisoc芯片组被用于许多低端,全球出货的Android设备。在今年早些时候发布的SC9863 SoC和Tiger T310平台上,优硕的预算芯片的性能得到了显著提高。为了瞄准中端市场,Unisoc推出了Tiger T710 SoC平台,该平台具有四个Cortex-A75 +四个Cortex-A55 CPU内核和IMG PowerVR GM 9446图形。这是uniisoc的第一个芯片组,具有用于加速人工智能计算的专用NPU模块。T710的NPU由两个不同的计算加速器内核组成:一个用于整数型号,支持INT4、INT8和INT16格式,INT8的峰值性能为3.2 TOPS;另一个用于FP16型号,性能为0.5 TFLOPS。这两个核心既可以同时加速不同的AI任务,也可以用其中一个加速任务,而第二个核心可以完全关闭,以降低SoC的整体功耗。Tiger T710支持Android NNAPI,实现Android NN Unosic HIDL服务,支持INT8 / FP16型号。根据不同的场景,T710的NPU板的整体能效大于等于2.5 TOPS/W。

uniisoc还开发了UNIAI SDK 7,它由两部分组成:离线模型转换工具,可以将训练好的模型编译成可以在NPU上执行的文件;加载并执行编译后的模型。离线模型转换工具支持多种神经网络框架格式,包括Tensorflow, Tensorflow Lite, Caffe和ONNX。为了提高灵活性,NPU Core还包括可编程的单元,以支持用户定义的操作,从而可以在NPU上运行带有此类操作的整个模型,从而显着减少运行时间。

2.6. 谷歌Pixel 3 / Pixel视觉核心

至于Pixel 2系列,第三代谷歌手机包含一个独立的张量处理单元(Pixel Visual Core),能够加速深度学习操作。与以前的版本相比,这个TPU没有经历重大的设计变化。尽管谷歌最初的声明[66],无论是SDK还是NNAPI驱动程序都不会为这个TPU系列发布,这使得除了谷歌之外的任何人都无法访问它。因此,它对深度学习开发人员的重要性是有限的。在Pixel手机中,它被用于一些与HDR摄影和实时传感器数据处理相关的任务。

3. 智能手机上的深度学习

在之前的一篇论文([31],第3节)中,我们描述了截至2018年9月的深度学习移动生态系统的状态。过去一年的变化与预期一致。TensorFlow Mobile[79]框架已被Google完全弃用,转而支持TensorFlow Lite,后者的CPU后端得到了显著改进,并支持许多新操作。然而,TFLite仍然缺乏一些重要的深度学习算子,特别是那些用于许多NLP模型的算子。因此,TensorFlow Mobile仍然适用于复杂的架构。另一个最近为不受支持的模型添加的选项是使用TensorFlow Lite插件,其中包含尚未添加到TFLite的标准TensorFlow操作符[63]。也就是说,这个插件的大小(40MB)甚至比TensorFlow移动库的大小(20MB)还要大。至于Caffe2 / PyTorch库,虽然在过去的12个月里出现了一些非官方的Android移植[64,13],但仍然没有对Android的官方支持(除了2个两年以前的相机演示[15,14]),因此对于普通开发人员来说并不那么有趣。

虽然去年提到的一些TensorFlow Lite问题[31]在当前版本中得到了解决,但我们仍然建议谨慎使用它。例如,在其最新的官方版本(1.14)中,与NNAPI的交互被完全破坏,导致在前两次推断期间产生巨大的损失和随机输出。这个问题可以通过在TFLite-GPU委托库中使用独立的NNAPI委托替换setUseNNAPI方法来解决[11]。在夜间构建中出现的另一个问题是某些型号(例如,SRCNN, Inception-ResNet-V1, VGG-19)的RAM消耗显着增加,即使在具有4GB以上RAM的设备上也会崩溃。虽然这些问题应该在下一个官方TFLite版本(1.15)中得到解决,但我们建议开发人员在每次更改TFLite构建时在所有可用设备上广泛测试他们的模型。另一个推荐的选择是转向自定义SoC供应商的TensorFlow Lite委托,这样可以忽略这些问题,并可能在他们的硬件上获得更好的结果。

Android深度学习生态系统的另外两个主要变化是TensorFlow Lite委托和神经网络API 1.2的引入。我们将在下面详细描述它们。

3.1 Android NNAPI 1.2

最新版本的NN API提供了对56个新算子的访问,大大扩展了可以支持硬件加速的模型范围。此外,支持的数据类型范围也有所增加,增加了对权重和IEEE Float 16的per channel量化的支持。这种对数据类型的广泛支持使开发人员和硬件制造商能够为其特定的模型需求确定最高性能的选项。

对API表面的一个重要补充是能够在运行时查询底层硬件加速器,并显式指定在何处运行模型。这使得开发人员想要限制资源之间争用的用例成为可能,例如,增强现实开发人员可以选择通过将他们的ML工作负载定向到可用的替代加速器来确保GPU对视觉处理需求是空闲的。

神经网络API 1.2引入了爆发执行的概念。爆发执行是在快速连续中发生的相同准备模型的一系列执行,例如对相机捕获帧或连续音频样本的操作。突发对象用于控制一组突发执行,并在执行之间保留资源,从而使执行具有较低的开销。从Android 10开始,NNAPI提供了支持编译构件缓存的函数,这减少了应用程序启动时用于编译的时间。使用这种缓存功能,驱动程序不需要管理或清理缓存的文件。在Android 10中引入的神经网络API (NNAPI)供应商扩展是供应商定义的操作和数据类型的集合。在运行NN HAL 1.2或更高版本的设备上,驱动程序可以通过支持相应的供应商扩展来提供定制的硬件加速操作。供应商扩展不修改现有操作的行为。供应商扩展为OEM操作和数据类型提供了更结构化的替代方案,这些在Android 10中已被弃用。

3.2. TensorFlow Lite Delegates

在最新版本中,TensorFlow Lite提供了将**神经网络子图的执行委托给外部库(称为委托)**的api[12]。给定一个神经网络模型,TFLite首先检查模型中的哪些操作符可以使用提供的委托执行。然后TFLite将图划分为若干子图,用虚拟的“委托节点”代替委托子图所支持的[43]。从这一点开始,委托负责执行相应节点中的所有子图。默认情况下,不支持的操作符由CPU计算,尽管这可能会显著增加推理时间,因为将结果从子图传递到主图会增加开销。上面的逻辑已经被下一节描述的TensorFlow Lite GPU后端所使用。

TensorFlow Lite GPU Delegate

虽然各大厂商已经发布了许多不同的npu,但由于缺少通用接口或API,它们仍然非常分散。虽然NNAPI是为了解决这个问题而设计的,但它自身的设计缺陷减慢了NNAPI的采用和使用增长:

  • 更新周期长:NNAPI更新仍然与操作系统更新捆绑在一起。因此,可能需要一年的时间才能找到新的驱动。
  • 自定义操作支持:当一个模型有一个尚未被NNAPI支持的操作时,它几乎不可能与NNAPI一起运行。在最坏的情况下,通过NNAPI加速图的两个部分,而在上下文之外实现的单个操作由CPU计算,这会破坏性能。

我的笔记:这里想说明的应该是NNAPI出现的初衷,本来全部的测试都应该依托于NNAPI delegate,但是由于上面的一些问题(当然我还认为通过NNAPI这一层不如直接对接TFLite更快速),所以有了厂商直接通过SDK对接TFLite delegate的方式

Vulkan ML小组还尝试引入由供应商实现的通用编程语言。该语言类似于TensorFlow或ONNX库中的模型图表示。该提案仍处于早期阶段,如果被接受,将需要几年时间才能进入消费者设备。

除了上述问题,移动硬件平台也存在着巨大的碎片化。例如,最流行的30种SoC设计现在只占市场份额的51%,而225种SoC仍然只覆盖了95%的市场。数千种设计的长尾效应导致这些soc中的大多数将永远不会获得NNAPI驱动程序。尽管应该提到的是,其中约23%的gpu的性能至少是相应cpu的2倍,因此它们可以用于加速ML推理。这个数字明显大于当前具有npu或有效NNAPI驱动程序的芯片组的市场份额。为了在这样的平台上使用GPU加速,引入了TensorFlow GPU委托

GPU委托的推理阶段包括以下步骤。如果输入张量的通道大小不等于4,则首先将其重塑为PHWC4格式。对于每个操作符,着色器程序通过绑定资源(如操作符的输入/输出张量,权重等)链接并分派,即插入命令队列。然后GPU驱动程序负责调度和执行队列中的所有着色程序,并通过CPU / GPU同步将结果提供给CPU。在GPU推理引擎中,运算符以着色程序的形式存在。着色器程序最终被编译并插入到命令队列中,GPU从这个队列中执行程序,而不与CPU同步。在每个程序的源代码生成之后,每个着色器被编译。此编译步骤可能需要一段时间,从几毫秒到几秒钟不等。通常,应用程序开发人员可以在加载模型或第一次启动应用程序时隐藏这种延迟。一旦所有着色器程序被编译,GPU后端就准备好进行推理了。关于TFlite GPU委托的更详细的描述可以在[43]中找到。

3.4. 浮点与量化推理

在智能手机上部署深度学习模型最具争议的话题之一是浮点和量化模型在移动设备上的适用性。在移动产业中,这两种类型存在许多混淆,包括许多不正确的陈述和无效的比较。因此,我们决定用一个单独的章节来讨论它们,并描述和比较它们的优缺点。我们将讨论分为三个部分:前两个部分分别描述每种推断类型,而最后一个部分直接比较它们并就它们的应用提出建议。

3.4.1. 浮点推理

优点:该模型以与最初在服务器或桌面使用标准机器学习库进行训练相同的格式运行在移动设备上。无需特别转换、更改或再培训;因此,可以获得与桌面或服务器环境相同的准确性和性能。

缺点:许多最新的最先进的深度学习模型,特别是那些用于高分辨率图像转换的模型,需要超过6-8千兆字节的RAM和巨大的计算资源来进行数据处理,即使在最新的高端智能手机上也无法使用。因此,以原始格式运行这些模型是不可行的,应该首先对它们进行修改,以满足移动设备上可用的硬件资源。

3.4.2. 量化推理

优点:该模型首先从16位浮点类型转换为int-8格式。这将其大小和RAM消耗减少了4倍,并可能将其执行速度提高2-3倍。由于整数计算在许多平台上消耗更少的能量,这也使得推断更节能,这在智能手机和其他便携式电子产品的情况下至关重要。

存疑:fp16位转换为int-8,大小应该是减少2倍?

缺点:减少网络权重的位宽(从16位到8位)会导致精度损失:在某些情况下,转换后的模型可能只会显示出很小的性能下降,而对于其他一些任务,结果精度将接近于零。尽管Qualcomm[49,54]和Google[34,37]发表了许多关于网络量化的研究论文,它们都显示了许多图像分类模型的良好精度结果,但对于任意深度学习架构的量化并没有通用的方法。因此,量化仍然更多地是一个研究课题,对于许多与人工智能相关的任务(例如,图像到图像映射或各种NLP问题)没有有效的解决方案。此外,许多量化方法需要从头开始重新训练模型,这使得开发人员无法使用与所有主要研究论文一起提供的可用预训练模型。

3.4.3. 比较

可以看到,在使用一种模型类型或另一种模型类型之间总是存在权衡:浮点模型总是显示出更好的准确性(因为它们可以简单地使用量化模型的权重进行初始化,并进一步训练以获得更高的准确性),而整数模型产生更快的推理。这里的进步来自双方:用于浮点模型的AI加速器越来越快,正在缩小INT-8和FP16推理速度的差距,同时各种网络量化方法的精度也在迅速提高。因此,每种方法的适用性将取决于特定的任务和相应的硬件/能耗限制:对于复杂模型和高性能设备,浮动模型是优选的(由于部署的便利性和更好的准确性),而量化推理是优选的在低功耗和低内存设备和量化友好模型的情况下显然是有益的,这些模型可以从原始浮点格式转换为INT-8,性能下降最小。

在比较浮点和量化推理时,一个很好的类比是在移动设备上使用FullHD和4K视频。在其他条件相同的情况下,由于分辨率更高,后者总是具有更好的质量,但也需要更多的磁盘空间或互联网带宽和硬件资源来解码它们。除此之外,在一些屏幕上,1080P和4K之间的区别可能看不出来。但这并不意味着两项决议中的一项应该被完全抛弃。相反,应该在每种情况下使用最合适的解决方案。

最后但并非最不重要的一点是,应该绝对避免通过在一个设备上运行浮点模型而在另一个设备上运行量化模型来比较两个不同设备的性能。由于它们具有不同的属性并显示不同的精度结果,所获得的数字将没有意义(就像在两个不同分辨率的设备上运行的视频游戏中测量FPS一样)。但是,这并不是指为了演示两种推理类型的比较性能而这样做的情况,如果伴随着相应的准确性结果。

AI Benchmark 3.0

目前(2024年),软件版本已经更新到5.1.1,这过程中有一些变化,之后会追踪更新

人工智能基准应用程序于2018年5月首次发布,旨在衡量各种移动设备的人工智能性能。第一个版本(1.0.0)包含了许多典型的AI任务和深度学习架构,并测量了相应AI模型的执行时间和内存消耗。自项目开始以来,AI Benchmark应用程序总共发布了12个公开版本。第二代(2.0.0)在上一篇文章中有详细的描述[31]。下面我们简要总结了随后的基准测试版本中引入的关键变化:

  • 2.1.0(发布日期:13.10.2018)—该版本为AI基准测试带来了许多重大变化。测试总数从9个增加到11个。在测试1中,将MobileNetV1改为MobileNet-V2,运行在CPU上的浮点模型、带NNAPI的浮点模型和带NNAPI的量化模型三个不同推理类型的子测试中。分别对试验3和试验5的Inception-ResNet-V1和VGG-19模型进行量化并使用NNAPI执行。在测试7中,ICNet模型在CPU上的两个独立线程中并行运行。引入了一个更稳定、更可靠的基于分类的评分系统。需要Android 4.1及以上版本。

这里需要追踪一下以后的版本中,有没有对一个模型的子测试做更改,否则,cpu的运行分数也是重要的依据

  • 2.1.1(发布日期:2018年11月15日)-评分系统中使用的归一化系数已更新为基于实际soc一代(Snapdragon 845,麒麟970,Helio P60和Exynos 9810)的最佳结果。这个版本还引入了几个bug修复和更新的排名表。需要Android 4.1及以上版本。

  • 2.1.2(发布日期:08.01.2019)-包含对上次内存测试的错误修复(在某些设备上,它在实际RAM耗尽之前被终止)。

  • 3.0.0(发布日期:27.03.2019)- AI基准的第三个版本,具有新的基于模块化的架构和一些主要更新。测试次数从11次增加到21次。介绍了准确性检查,新的任务和网络,PRO模式和更新的评分系统,将在本节进一步描述。

  • 3.0.1(发布日期:2019年5月21日)和3.0.2(发布日期:2019年6月13日)-修复了几个错误,并在PRO模式中引入了新功能。

由于AI Benchmark 2.0在[31]中有详细的技术描述,我们在这里主要关注最新版本所带来的更新和变化。

4.1. 深度学习测试

实际的基准测试版本(3.0.2)包含11个测试部分和21个测试。在这些测试中运行的网络代表了目前可以部署在智能手机上的最流行和最常用的深度学习架构。
在这里插入图片描述
测试配置的描述如下所示。

  • Test Section 1: Image Classification
    Model: MobileNet-V2 [68],
    Inference modes: CPU (FP16/32) and NNAPI (INT8 + FP16)
    Image resolution: 224×224 px, Test time limit: 20 seconds
  • Test Section 2: Image Classification
    Model: Inception-V3 [82]
    Inference modes: CPU (FP16/32) and NNAPI (INT8 + FP16)
    Image resolution: 346×346 px, Test time limit: 30 seconds
  • Test Section 3: Face Recognition
    Model: Inception-ResNet-V1 [81]
    Inference modes: CPU (INT8) and NNAPI (INT8 + FP16)
    Image resolution: 512×512 px, Test time limit: 30 seconds
  • Test Section 4: Playing Atari
    Model: LSTM [22]
    Inference modes: CPU (FP16/32)
    Image resolution: 84×84 px, Test time limit: 20 seconds
  • Test Section 5: Image Deblurring
    Model: SRCNN 9-5-5 [17]
    Inference modes: NNAPI (INT8 + FP16)
    Image resolution: 384×384 px, Test time limit: 30 seconds
  • Test Section 6: Image Super-Resolution
    Model: VGG-19 (VDSR) [35]
    Inference modes: NNAPI (INT8 + FP16)
    Image resolution: 256×256 px, Test time limit: 30 seconds
  • Test Section 7: Image Super-Resolution
    Model: SRGAN [42]
    Inference modes: CPU (INT8 + FP16/32)
    Image resolution: 512×512 px, Test time limit: 40 seconds
  • Test Section 8: Bokeh Simulation
    Model: U-Net [67]
    Inference modes: CPU (FP16/32)
    Image resolution: 128×128 px, Test time limit: 20 seconds
  • Test Section 9: Image Segmentation
    Model: ICNet [90]
    Inference modes: NNAPI (2 × FP32 models in parallel)
    Image resolution: 768×1152 px, Test time limit: 20 seconds
  • Test Section 10: Image Enhancement
    Model: DPED-ResNet [27, 29]
    Inference modes: NNAPI (FP16 + FP32)
    Image resolution: 128×192 px, Test time limit: 20 seconds
  • Test Section 11: Memory Test
    Model: SRCNN 9-5-5 [17]
    Inference modes: NNAPI (FP16)
    Image resolution: from 200×200 px to 2000×2000 px

表1总结了基准测试中包含的所有深度学习架构的详细信息。当使用多个推理模式时,用所有相应的模式依次处理每个图像。在最后一次内存测试中,将处理图像,直到抛出out - memory - error或成功处理所有分辨率。在图像分割测试(第9节)中,两个TFLite ICNet模型在两个单独的线程中初始化,并在这两个线程中并行(异步)处理图像。每个测试的运行时间计算为在指定时间内处理的一组图像的平均值。当处理两个以上的图像时,为了避免考虑初始化时间(单独估计),丢弃前两个结果,计算其余结果的平均值。如果处理的图像少于三个(这种情况只发生在低端设备上),则使用最后一个推断时间。基准对网络输出的可视化如图8所示。
在这里插入图片描述
从3.0.0版本开始,AI Benchmark在测试部分1、2、3、5和6中检查浮点和量化模型在加速(NNAPI)下运行的输出的准确性。对于每个相应的测试,L1损失是在目标和深度学习模型产生的实际输出之间计算的。对浮动模型和量化模型分别进行了精度估计。

疑问:浮点的准确值如何得出?量化模型的准确值如何得出?

4.2. 评分系统

AI Benchmark正在测量几个测试类别的性能,包括int-8、float-16、float-32、并行、CPU (int-8和float-16/32)、内存测试和测量模型初始化时间的测试。版本3.0.0 - 3.0.2中使用的评分系统是相同的。测试类别的贡献如下:

• 48% - float-16 tests;
• 24% - int-8 tests;
• 12% - CPU, float-16/32 tests;
• 6% - CPU, int-8 tests;
• 4% - float-32 tests;
• 3% - parallel execution of the models;
• 2% - initialization time, float models;
• 1% - initialization time, quantized models;

每个类别的分数是作为属于该类别的测试结果的几何平均值计算的。计算的L1误差用于惩罚使用NNAPI运行的相应网络的运行时(应用指数为1.5的指数惩罚)。内存测试的结果对最终分数有一个乘法贡献,在测试结束时显示(图9)。每个测试的归一化系数是根据当前SoC (Snapdragon 855、麒麟980、Exynos 9820和Helio P90)的最佳结果计算的。
在这里插入图片描述

4.3. PRO模式

AI Benchmark 3.0.0中引入了PRO模式(图10),为开发人员和经验丰富的用户提供了获得更详细和准确的加速运行测试结果的能力,并比较基于CPU和nnapi的所有推理类型的执行结果
在这里插入图片描述

它只适用于浮点和量化模型都与NNAPI兼容的任务(测试部分1,2,3,5,6)。在这种模式下,可以运行五种推理类型(CPU-float, CPU-quantized, float-16-NNAPI, float-32-NNAPI和int-8-NNAPI)中的每一种,得到以下结果:

• Average inference time for a single-image inference;
• Average inference time for a throughput(吞吐量) inference;
• Standard deviation of the results;
• The accuracy of the produced outputs (L1 error);
• Model’s initialization time

一些额外的选项被添加到PRO模式在版本3.0.1,可在“设置”选项卡下:

  1. 所有PRO模式测试都可以在自动模式下运行;图10:在PRO模式中显示的测试、结果和选项。
  2. 基准测试结果可以导出到存储在设备内存中的JSON / TXT文件;
  3. TensorFlow Lite CPU后端可以在所有测试中启用,用于调试目的;
  4. 可在所有测试中使用持续性能模式。

4.4 桌面AI基准测试

除了Android版本,2019年6月还发布了一个单独的开源桌面AI基准构建。

它旨在评估常见桌面硬件平台(包括cpu, gpu和tpu)的AI性能,并测量几个关键深度学习模型的推理和训练速度。该基准测试依赖于TensorFlow[2]机器学习库,并作为Python pip包3分发,可以安装在任何运行Windows, Linux或macOS的系统上。当前版本0.1.1包含42个测试和19个部分,如下所示:

[略]

使用该基准版本获得的结果可在项目网页上获得。即将发布的版本将提供一个统一的排名系统,允许直接比较移动设备(通过Android AI Benchmark获得)和桌面设备上的结果。目前的限制和移动推理的特殊性不允许我们现在合并这两个AI基准版本,但是,它们将逐渐整合到一个具有全球排名表的AI基准套件中。下一节中显示的桌面gpu和cpu的数量是通过修改版本的桌面AI Benchmark构建获得的。

5. 基准测试结果

由于移动AI加速器的性能在过去一年中有了显著的增长,我们决定将用于训练/运行深度学习模型的桌面cpu和gpu也加入到比较中。这将帮助我们了解到目前为止移动人工智能芯片的进展。它还将帮助开发人员估计其模型在智能手机和台式机上的运行时间之间的关系。在本节中,我们提供了从超过20,000个在野外测试的移动设备(包括许多原型)中获得的定量基准测试结果,并详细讨论了为浮点或量化模型提供硬件加速的所有可用移动芯片组的性能。在移动soc上获得的浮点和量化推理结果分别显示在表2和表3中。表4显示了智能手机的详细性能结果。

[图太大, 且没有时效性, 略, 推荐前往官网查看]

  • 表2:在为fp-16型号提供硬件加速的移动soc上获得的浮点网络的推理时间(每张图像)。给出了骁龙835、Intel cpu和Nvidia gpu的测试结果,供参考。在英特尔cpu上使用英特尔MKL-DNN库[45],在Nvidia gpu上使用CUDA[10]和cuDNN[8]实现加速。在Intel和Nvidia硬件上使用标准TensorFlow库[2]运行批处理大小为10的浮点模型获得结果。完整的名单可在:http://ai-benchmark.com/ranking_processors

  • 表3:在为int-8定点模型提供硬件加速的移动soc上获得的量化网络的推理时间。提供骁龙835的测试结果,供参考。完整的列表可在<http://ai-benchmark.com/ ranking_processors>找到

  • 表4:几种Android设备的基准测试结果,完整列表可在:http://ai-benchmark.com/ranking上获得

5.1 浮点性能

2018年9月底,Kirin 970展示了公开可用的最佳浮点推理结果[31]。从那时起,移动芯片性能的提升是惊人的:即使不考虑各种软件优化,浮点执行的速度也增加了7.5倍以上(从14%到100%,表2)。去年秋天推出的骁龙855、海思麒麟980、联发科Helio P90和Exynos 9820显著改善了浮点模型的推理运行时,并且已经接近了几款八核英特尔cpu(例如英特尔酷睿i7-7700K / i7-4790K)和入门级英伟达gpu的结果。而今年夏天发布的第四代AI加速器(uniisoc Tiger T710、海思麒麟810和990)带来了更高的性能提升。有了这样的硬件,麒麟990的性能接近了GeForce GTX 950——英伟达2015年推出的一款中端桌面显卡,并显著超过了目前英特尔的旗舰产品之一——八核英特尔酷睿i7-9700K CPU(咖啡湖系列,工作频率从3.60 GHz到4.90 GHz)。这是一个重要的里程碑,因为移动设备开始提供足以运行许多标准深度学习模型的性能,甚至不需要任何特殊的调整或修改。虽然这在简单的图像分类网络中可能不那么明显(即使在Exynos 8890上,MobileNet-V2也可以展示10+ FPS),但对于通常消耗过多计算资源的各种图像和视频处理模型来说,这一点尤为重要。

一个有趣的话题是比较基于GPU和npu的方法的结果。然而,目前尚不清楚未来是否会出现同样的情况:要达到第四代npu的性能水平,gpu上的AI推理速度需要提高2-3倍。要做到这一点,必须对其微架构进行重大修改,这也会影响到整个图像管道。因此,所有主要芯片供应商很可能会在下一代SoC中转向专用神经处理单元

使用中端(例如Mali-G72 / G52, Adreno 610 / 612)或老一代(例如Mali-T880) gpu加速深度学习推理在生成速度方面不是很有效。入门级gpu会得到更糟糕的结果,因为它们有额外的计算限制。然而,应该注意到GPU推理的功耗通常比CPU低2到4倍。因此,就整体能源效率而言,这种方法可能仍然是有利的。

这里应该提到的最后一件事是默认Arm NN OpenCL驱动程序的性能。不幸的是,它们不能释放Mali gpu的全部潜力,这导致与具有类似GFLOPS性能的gpu(例如,带有Arm NN OpenCL的Exynos 9820, 9810或8895)相比,非典型的高推断时间。通过切换到他们的定制供应商实现,人们可以在许多深度学习架构中实现高达10倍的加速:例如,当使用三星自己的OpenCL驱动程序时,带有MaliG76 MP12的Exynos 9820的整体性能从6%提高到26%。这同样适用于骁龙soc,其NNAPI驱动程序基于高通修改的OpenCL实现。

5.2. 量化性能

今年,量化推理的性能排名(表3)由六边形驱动的高通骁龙855 Plus芯片组以及带有独立NPU的uniisoc Tiger T710领跑。这两款soc在所有int-8测试中显示出几乎相同的结果,并且比麒麟990,Helio P90和标准骁龙855略快(15-20%)。高通公司声称,Hexagon 690 DSP的性能比上一代Hexagon 685提高了大约一倍。后者及其衍生产品(Hexagon 686和688)目前出现在高通的中档芯片组中。应该注意的是,Hexagon 685存在多个版本,以及它的驱动程序的几个版本。因此,使用该DSP的终端设备和soc的性能可能会有很大差异(例如,骁龙675与骁龙845)。

由于移动gpu主要是为浮点计算而设计的,在很多情况下,用它们来加速量化AI模型的效率不是很高。使用Mali-G76 MP12显卡和定制的三星OpenCL驱动程序的Exynos 9825取得了最好的结果。它显示出与Hexagon 685 DSP(在Snapdragon 710中)相似的整体性能,尽管两种芯片的推理结果严重依赖于运行模型。配备Mali-G72 MP3 GPU的Exynos中端soc的性能无法超过骁龙835芯片组的CPU,类似于配备Mali-T880 MP12图形的Exynos 8890。从最近的移动soc来看,cpu的差异甚至更大。因此,在中低端设备上使用gpu进行量化推理可能只是为了实现更高的功率效率

6. 讨论

自去年以来,移动AI硬件的巨大进步[31]是不可否认的。与第二代npu(例如骁龙845和麒麟970 soc中的npu)相比,浮点和量化推理的速度分别提高了7.5倍和3.5倍以上,使智能手机的人工智能能力大大提高。过去12个月推出的所有旗舰级soc的性能都相当于或高于支持cuda的入门级桌面gpu和高端cpu。第四代移动AI芯片的效果甚至更好。这意味着在未来两到三年内,所有中档和高端芯片组都将获得足够的能力来运行研究界和工业界开发的绝大多数标准深度学习模型。反过来,这将导致更多的人工智能项目将移动设备作为机器学习模型部署的主要平台。

当涉及到在智能手机上运行人工智能算法所需的软件堆栈时,这里的进步是渐进的,而不是革命性的。目前仍然只有一个主要的移动深度学习库TensorFlow Lite,它提供了相当高的功能,并且易于在智能手机上部署深度学习模型,同时也有一个庞大的开发人员社区。也就是说,新版本中引入的严重错误和问题的数量使我们无法将其推荐给任何商业项目或处理非标准AI模型的项目。最近提出的TensorFlow Lite委托可以潜在地用于克服现有的问题,并且允许SoC供应商为过时或缺乏NNAPI驱动程序的设备提供AI加速支持。我们还强烈建议研究人员将自己的AI引擎设计为TFLite委托,因为这是让所有TensorFlow开发人员都可以使用它们的最简单方法,同时也可以与当前TFLite的CPU和GPU后端进行直接比较。我们希望明年会有更多可行的解决方案和移动库发布,让深度学习模型在智能手机上的部署成为一件小事。

和以前一样,我们计划定期发布基准报告,描述移动设备上AI加速的实际状态,以及机器学习领域的变化和在基准中做出的相应调整来反映这些变化。人工智能基准测试获得的最新结果和实际测试的描述每月在项目网站上更新:<http: // AI -benchmark.com>。此外,如果有任何技术问题或其他问题,您可以随时联系本文的前两位作者。

7. 结论

在本文中,我们讨论了Android生态系统中机器和深度学习领域的最新进展。首先,我们概述了最近发布的移动芯片组,这些芯片组可能用于加速智能手机和其他便携式设备上神经网络的执行,并概述了Android机器学习管道的最新变化。我们描述了当前AI Benchmark版本中引入的变化,并讨论了从高通、海思、三星、联发科和优硕生产的芯片组中获得的浮点和量化推理结果,这些芯片组为AI推理提供硬件加速。我们将获得的数字与桌面cpu和gpu的结果进行比较,以了解这些硬件平台之间的关系。最后,我们讨论了与该领域相关的软件和硬件开发的未来前景,并就智能手机上部署深度学习模型提出了建议。

参考文献

[略]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值