资讯详情

【文献阅读】MCUNet: Tiny Deep Learning on IoT Devices

题目:MCUNet: Tiny Deep Learning on IoT Devices 时间:2020 会议/期刊:NeurIPS 2020 研究机构:MIT韩松团队

MCUNet: Tiny Deep Learning on IoT Devices

摘要

基于微控制器单元 (microcontroller units, MCU) 微型物联网设备 (tiny IoT devices)上的机器学习具有吸引力但具有挑战性:微控制器的内存比手机小 2-3 个数量级。我们提出了 MCUNet,这是高效神经架构的联合设计 (TinyNAS) 轻量级推理引擎 (TinyEngine) 微控制器上可以实现框架 ImageNet 规模推理。 TinyNAS 搜索两阶段神经架构 (neural architecture search)方法,first optimizes the search space to fit the resource constraints, then specializes the network architecture in the optimized search space. TinyNAS 各种约束可以在低搜索成本下自动处理(即)device, latency, energy, memory)。 TinyNAS 与 TinyEngine 共同设计,TinyEngine 是一种 memory-efficient 推理引擎可以扩展搜索空间,适应更大的模型。 TinyEngine根据整体网络拓扑而不是整体网络拓扑 layer-wise optimization与内存调度相比,适应内存调度TF-Lite Micro [3]和CMSIS-NN,内存使用减少3:4倍,推理加速1.7-3.3倍[28]。与量化的 MobileNetV2 和 ResNet-18 相比,MCUNet 是第一个在现成的商用微控制器上实现的 > 70% ImageNet top1 准确度的 SRAM 和 5.7 倍的闪存。在视觉和音频唤醒词的任务中,MCUNet 达到最先进的精度,运行速度比 MobileNetV2 和基于 ProxylessNAS 解决方案快 2.4-3.4 倍,峰值 SRAM 小 3.7-4.1 倍。Our study suggests that the era of has arrived.

1. Introduction

基于永久在线微控制器的物联网设备数量正以历史速度快速增长 250B [2]实现了智能制造、个性化医疗保健、精准农业、自动化零售等诸多应用。这些低成本、低成本的能源微控制器 tiny machine learning (TinyML) 带来全新的机遇。通过在这些微型设备上运行深度学习模型,我们可以直接在传感器附近进行数据分析,从而大大扩大人工智能的应用范围。

然而,微控制器的资源预算非常有限,特别是内存 (SRAM) 和存储 (Flash)。电影上的内存比移动设备小三个数量级,比云小GPU小5-6个数量级,深度学习部署极其困难。如表 1 最先进的 ARM Cortex-M7 MCU 只有 320kB SRAM 和 1MB 现成的深度学习模型闪存无法运行:ResNet-50 [21] 超过存储限制 100 倍,MobileNetV2 [44] 超过峰值内存限制 22 倍。即使是 int8 量化版本的 MobileNetV2 仍然超过内存限制 5:3×*,显示所需硬件容量与可用硬件容量之间存在较大差距。 在这里插入图片描述 Tiny AI is fundamentally different from cloud AI and mobile AI. 微控制器是没有操作系统的裸机设备,也没有 DRAM。因此,为了有效管理小资源,适应紧张的内存和存储预算,需要联合设计深度学习模型和推理库。现有的高效网络设计efficient network design [25, 44, 49] 和神经架构搜索neural architecture search方法 [45, 6, 48, 5] 专注于丰富的内存和存储。 GPU 或智能手机。因此,它们只优化减少 FLOP 或延迟,生成的模型不适合微控制器。事实上,我们发现类似的 ImageNet 在精度(70%)下,与 ResNet-18 [21] 相比,MobileNetV2 [44] 减少了模型的大小 4.6 倍(图 1),但 peak activation size 增加了 1.8 倍,使得将 SRAM 更难安装在微控制器上。研究微控制器机器学习文献 [16, 31, 43, 29] 有限。然而,由于缺乏系统算法协同设计,他们要么研究远离现实用例的小规模数据集(例如,CIFAR 或亚 CIFAR 级别),要么使用无法获得良好性能的弱神经网络。 我们提出了 MCUNet,这是一种 system-model co-design framework,它可以在现成的微控制器上实现 ImageNet 深度学习规模。为了处理微控制器上稀缺的片上内存,我们共同优化了深度学习模型设计(TinyNAS)和推理库(TinyEngine)减少内存使用。 TinyNAS 两阶段神经架构搜索 (NAS) 方法,可以处理。 NAS 性能高度依赖于搜索空间[39],但很少有关于小规模搜索空间设计的启发性文献。 TinyNAS 先自动优化搜索空间,适应小资源约束,然后在优化空间中进行神经架构搜索。具体来说,TinyNAS 通过缩放输入分辨率和模型宽度 (scaling the input resolution and the model width)生成不同的搜索空间,然后 collects the computation FLOPs distribution of satisfying networks within the search space to evaluate its priority. TinyNAS 依靠这样的观点,也就是说, a search space that can accommodate higher FLOPs under memory constraint can produce better model。实验表明,优化后的空间可以改善 NAS 搜索模型的准确性。为了处理微控制器上极其紧张的资源限制,我们还需要一个,为了适应更大的模型容量和更高的精度,我们可以扩展搜索空间。TinyNAS 与 TinyEngine 共同设计,以改进the ceiling for hosting deep learning models。TinyEngine 使用 code generator-based compilation method为了消除内存费用,改进了现有的推理库。还支持模型自适应内存调度:TinyEngine不是逐层优化,而是根据整体网络拓扑优化内存调度,以获得更好的策略。最后,它针对不同的层执行专门的计算内核优化(例如loop tiling, loop unrolling, op fusion运算融合等),从而进一步加速推理。

MCUNet 极大地促进了微控制器深度网络性能的极限。 与 TFLite 和 CMSIS-NN 相比,TinyEngine 降低峰值内存的使用量 3.4 倍,提高了推理速度 1.7-3.3 倍,让我们运行更大的模型。 协同设计系统算法,MCUNet (TinyNAS TinyEngine) 在现成的商用微控制器上创纪录 70.7% 的 ImageNet top-1 准确率。 在视觉和音频唤醒词的任务中,MCUNet 实现最先进的精度,运行速度比现有解决方案快 2.4-3.4 倍,峰值 SRAM 小 3.7-4.1 倍。 我们的解决方案是交互式应用程序 Speech Commands 数据集上以 91% 的 top-1 实现了准确性 10 FPS。 我们的研究表明,物联网设备上的微机学习时代已经到来。

2. Background

微控制器内存有限:例如,流行 ARM Cortex-M7 MCU STM32F746 只有 320kB SRAM 和 1MB 闪存。因此,为了适应严格的内存限制,我们必须仔细设计推理库和深度学习模型。在深度学习场景中,SRAM constrains the activation size (read&write); Flash constrains the model size (read-only).

深度学习推理在微控制器上是一个快速发展的领域。 TensorFlow Lite Micro [3]、CMSIS-NN [28]、CMix-NN [8] 和 MicroTVM [9] 现有框架有几个缺点: 1. 大多数框架在运行过程中依赖于 interpreter 解释网络图,这将消耗大量 SRAM 和闪存(高达峰值内存) 65%)并增加 22% 的延迟。 2. 层次优化,未能利用整体网络架构信息进一步减少内存使用。

深度学习系统的整体性能对网络效率非常重要。一种方法是修剪 [20, 23, 32, 35, 22, 34] 和量化 [19, 51, 40, 50, 13, 11, 46] 压缩现成的网络,消除冗余,降低复杂性。张量分解 [30, 17, 26] 也是一种有效的压缩方法。另一种方法是直接设计高效友好的移动设备络[25、44、37、49、37]。

NAS 的性能高度依赖于搜索空间的质量[39]。传统上,人们遵循手动设计启发式进行 NAS 搜索空间设计。例如,广泛使用的 mobile-setting search space [45, 6, 48] 源自 MobileNetV2 [44]:它们都使用 224 输入分辨率和类似的基本通道数配置,同时搜索内核大小、块深度和扩展比率。然而,对于内存有限的微控制器,缺乏标准的模型设计和搜索空间设计。一种可能的方法是手动调整每个微控制器的搜索空间。但是通过反复试验进行手动调整是劳动密集型的,因此对于大量部署限制(例如,STM32F746 具有 320kB SRAM/1MB 闪存,STM32H743 具有 512kB SRAM/2MB 闪存,延迟要求 5FPS/10FPS)来说,是非常费力的。因此,我们

3. MCUNet: System-Algorithm Co-Design

我们提出了 MCUNet,这是一个 system-algorithm co-design framework that (Figure 2)。传统的方法要么 (a) 使用基于给定深度学习库(例如 TensorFlow、PyTorch)[45、6、48] 的神经架构搜索优化神经网络,要么 (b) 对于给定的网络,调整库以最大化推理 [9, 10];而 MCUNet 则可以通过 system-algorithm co-design 更好地利用资源。

3.1 TinyNAS: Two-Stage NAS for Tiny Memory Constraints

3.2 TinyEngine: A Memory-Efficient Inference Library

标签: opb620传感器opb615传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台