论文笔记(5)MCUNet

551 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

本文是MCUNet: Tiny Deep Learning on IoT Devices的学习笔记。

MCUNet

问题

image.png 如何在如此小的存储环境运行 ImageNet 这种大小的深度学习模型?

解决方案

System-Algorithm Co-Design

即同时进行深度学习模型设计(Algorithm)和推理引擎(System)的优化。

下图 a、b 表示传统的解决方案。a 代表基于存在的推理引擎进行 NAS 从而优化网络模型,b 代表通过调节推理引擎从而最大化给定模型的推理速度。

c 代表本文提出的 Co - Design,网络模型和推理引擎协同设计从而达到最优内存使用。

image.png

NAS

对于深度学习说,超参数主要可为两类:一类是训练参数(如learning rate,batch size,weight decay等);另一类是定义网络结构的参数(比如有几层,每层是啥算子,卷积中的filter size等),它具有维度高,离散且相互依赖等特点。前者的自动调优仍是HO(Hyperparameter optimization)的范畴,而后者的自动调优一般称为网络架构搜索(Neural Architecture Search,NAS)。

推理

推理是指模型训练完之后,将其应用部署用来处理实际新数据,即拿出去溜溜。

TinyNAS

分为两个阶段。

第一个阶段是粗粒度的搜索空间的优化,通过限定一组分辨率和网络宽度的取值,来缩小搜索空间的数量。

如何挑选搜索空间?

方法:从每个搜索空间中随机抽取 m 个网络,随后比较满意网络的分布。为了避免巨大的训练开销,这里采用 FLOPs 的分布函数作为替代(直觉:模型精准度和计算能力相关),平均计算能力强的搜索空间即被选中作为优化的结果。

image.png

第二个阶段是在优化的搜索空间上进行 NAS。

为了减少搜索开销,通过权值共享训练了一个 super network,它包含了全部可能的子网络。

TinyEngine

From interpretation to code generation

image.png

image.png

之前的推理库在运行时进行模型解释等操作,需要计算、内外存开销。TinyEngine 将上述操作提前至编译阶段,根据模型自适应生成代码供运行时推理使用。

In-place depth-wise convolution

image.png

深度可分离卷积(Depth-wise convolution)是分通道分别计算卷积,最后再合起来,可以减少乘法计算次数。

因此,一个通道计算完后,其输入矩阵所占的内存就可以被卷积输出内容覆盖,使 2N 的空间降为 N+1

相关工作

  • MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning (NeurIPS 2021)
  • On-Device Training Under 256KB Memory (MCUNetV3)(NeurIPS 2022)