在物联网设备上运行的神经网路的架构探索方法。
三个要点
✔️ 探索在物联网设备上运行的神经网络的架构
✔️ 在架构的评估功能中增加一个关于计算资源的术语
✔️ 我们能够探索以较少的计算资源实现高精确度的架构。
μNAS: Constrained Neural Architecture Search for Microcontrollers
written by Edgar Liberis, Łukasz Dudziak, Nicholas D. Lane
(Submitted on 27 Oct 2020 (v1), last revised 8 Dec 2020 (this version, v3))
Comments: EuroMLSys '21
Subjects: Machine Learning (cs.LG); Hardware Architecture (cs.AR)
code:![]()
![]()
本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。
概述
物联网设备的微控制器单元(MCU)资源非常匮乏;要在物联网设备上运行一个神经网络有必要设计一个可以在MCU上运行的轻量级神经网络,这是很难手动找到的。在这项研究中,我们建立了一个搜索这种神经网络的系统,称为μNAS。μNAS是一个可以用来解决MCU中资源稀缺的三个主要方面,即。内存、存储和处理器速度,都是明确的目标。
前提知识
本文考虑了一个具有64KB的SRAM和64KB的可用存储空间的中级MCU。
正在解决模型压缩领域的问题,以便用较少的计算量设计神经网络。诸如修剪和量化的方法,以最小化分类方案损失的方式压缩大型网络。然而,大多数压缩方法不适合于创建MCU大小的网络。这是因为许多方法针对的是计算资源明显多于MCU的平台(如移动设备),或者专注于减少网络层中的参数或浮点运算的数量,同时保持整体架构不变。即使是在MobileNet和其他公司的倡议下设计的资源效率高的模型,也超过了预期资源预算的10倍。这就需要研究在MCU上进行深度学习的专门方法。
在MCU上运行神经网络的局限性包括以下几点
- 网络产生的临时数据必须适合MCU的SRAM
- 静态数据,如神经网络参数和程序代码必须适合于MCU的ROM和闪存。
- 为了在低功耗的处理器上运行推理过程,需要提高网络的执行速度。
为了设计在满足这些约束条件的同时实现高精确度的神经网络,作者转向了神经架构搜索(NAS),在给定合适的条件下,它可以生成架构以同时实现一组特定的约束条件或多个目标。架构的产生是为了在某些约束条件下或同时实现一组特定的目标。由于目前大多数NAS系统不是为本文所针对的那种计算机设计的,而是为更大的GPU等设计的,所以很难按原样使用。本文提出了μNAS,一个针对MCU的NAS系统。μNAS可以在低内存的情况下快速运行,并通过准确识别资源需求并与模型压缩相结合来设计高精度的模型。
建议的方法
建议的方法(μNAS)的主要特点如下
- 使搜索空间适应MCU。
- 对计算资源设置限制
- 峰值内存使用限制
- 模型尺寸(存储容量限制)
- 推理的执行时间限制。
µNAS将这些元素纳入了NAS系统。现在将对其中的每一项进行详细解释。
使搜索空间适应MCU。
针对一般GPU的神经网络架构的搜索空间和针对MCU的神经网络架构的搜索空间在颗粒度上有所不同。例如,在针对一般GPU的神经网络架构中,在172通道和192通道的卷积层之间进行选择对最终性能几乎没有影响。因此,搜索空间的设计不是以这种粒度为基础的,而是更广泛的,这样更大的模型也可以包括在搜索空间中。然而,在MCU中,这些差异带来了一个重要的区别。这是因为MCU有非常严格的内存限制,所以选择一个稍大的层会对整个系统产生重大影响。一般来说,在GPU的架构搜索中,搜索空间被划分为小的架构单元,称为单元,以粗化搜索空间的粒度,但对于MCU来说,不是使用这种基于单元的方法,而是可以自由选择通道的数量和层连接。有必要采取一个允许用户自由选择通道和层连接数量的搜索空间。在本文中,搜索空间的取值如下表所示。
在搜索中,一个随机生成的架构被用作父网络,子网络通过执行诸如Morphisms所代表的操作来生成和探索。
计算资源的限制
在一般的GPU的神经网络架构探索中,没有必要确切知道计算资源的限制。这是因为与MCU相比,它们的资源不那么紧张。然而,MCU有非常严格的资源限制,所以有必要知道生成的架构是否具有可以在MCU上执行的规模。在这一节中,我们重点讨论MCU的主要计算资源限制:内存使用限制、存储使用限制和执行时间限制。
内存使用限制
至少,需要放在内存中的信息是操作者被执行之前和之后的信息。此外,如果有剩余连接,计算结果需要保留在内存中,即使该层的运算器执行完毕。考虑到这些限制,作者在(https://www.arxiv-vanity.com/papers/1910.05110/)中开发了一种算法,以计算执行计算过程中的峰值内存用量。作者用这种算法来计算所探索的架构的峰值内存使用率。
存储容量限制
神经网络代码和网络的权重被存储在存储器中。传统上,每个参数被表示为32位浮点,但现在可以通过量化来减少。作者将每个参数量化为一个8位整数。因此,μNAS将所需的存储容量计算为参数数x1字节。
推理的执行时间限制。
作为估计推理执行时间长短的指标,作者使用了乘法-累加操作(MAC)计数。为了检查这个值是否真的是估计推理时间的合适指标,将模型的执行时间和MAC值与从搜索空间中随机选择的1000个架构作对比,以便绘制和检查。结果如下图所示。
图中显示,MAC值与推理时间(延迟)之间存在着显著的相关性。
搜索方法
在MCU上运行的神经网络的设计需要考虑以下因素,如上所述。
- 模型性能(验证精度)
- 峰值内存使用量
- 模型尺寸(存储限制)
- MAC值(推理运行时间)
为了将所有这些都包括在架构的评价函数中,用系数λ来设置评价函数,如下所示。
系数λ代表了每个术语的相对重要性。
老龄化进化算法(AE)被用来优化这个评价函数:它在每一轮搜索中从群体中抽取架构,并选择评价函数最小的一个。然后,对这个选定的架构进行变形,以产生后代,这些后代被添加到待探索的群体中。当一个新的架构被添加时,最老的架构被排除。这是一种通过使用Morphisms更新要搜索的人口的搜索方法。
模型压缩也被用来减少模型的大小:在通过AE确定模型的基本架构后,修剪被用来丢弃训练中被认为不重要的通道和单元。
实验
修剪决定
为了确定剪枝是否能找到资源使用率低的模型,μNAS在有剪枝和没有剪枝的情况下运行。结果显示如下。
该图显示了两个数据集(Chars74K,MNIST)的模型大小和发现的模型的错误率。结果表明,在进行修剪时,较小的模型规模可以达到较低的错误率。
探讨的架构的性能。
上表总结了μNAS为每个数据集探索的架构的性能,以及它们与其他模型的比较。该表显示,μNAS探索的架构不仅在准确性方面优于其他模型,而且在模型大小和RAM使用方面也优于其他模型。
摘要
本文提出了一种在紧张的计算资源下运行的神经网络架构探索方法。该方法通过运行Aging Evolution来探索架构,并在架构评估功能中加入计算资源的条款。探索的架构被发现在计算资源和准确性方面表现良好。
与本文相关的类别