ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

MIT 6.5940 | TinyML 与高效 AI 计算 | Fall 2026 | 笔记 | Lecture 10:MCUNet: TinyML on Microcontrollers

MIT 6.5940 | TinyML 与高效 AI 计算 | Fall 2026 | 笔记 | Lecture 10:MCUNet: TinyML on Microcontrollers 目录前言1. Lecture Plan2. What Is TinyML?3. Understanding the TinyML Challenges4. Tiny Neural Network Design4.1 MCUNet: Co-Designing Architecture and Inference Engine4.2 TinyNAS: Search Space Design4.3 Patch-based Inference4.4 The Halo Problem and Receptive-Field Redistribution4.5 MCUNetV2 Results and Insights5. Applications5.1 Tiny Vision5.2 Tiny Audio5.3 Tiny Time Series and Anomaly Detection6. Summary结语参考前言学习 MIT 韩松教授讲授的 MIT 6.5940: Tiny ML and Efficient AI Computing 课程本篇文章记录第十讲MCUNet的学习内容和大家一起分享交流Websitehttps://hanlab.mit.edu/courses/2026-fall-65940Videohttps://www.youtube.com/playlist?listPLH7PIPKvCm381. Lecture Plan今天我们要讲第十讲MCUNet 与 TinyML。我们会通过一个非常详细的例子看看如何为微控制器上的极小规模模型做模型压缩与部署。我们会用到前面几讲讨论过的所有技术比如量化、剪枝、神经架构搜索和蒸馏。这是今天的安排首先讨论什么是 TinyML以及 TinyML 面临的挑战和困难比如如何压缩模型、如何把它塞进微控制器。然后我们会讲神经网络设计结合神经架构搜索技术。最后讲 TinyML 的一些应用比如视觉应用、音频应用还有异常检测。2. What Is TinyML?我们先从一个很简单的问题开始。什么是 TinyML为什么我们要把深度学习网络放到那么小的微控制器上运行这张图我们在第一讲里讨论过今天的 AI 系统可以非常庞大、非常昂贵。模型的参数越来越多、GPU 也在变大但今天的前沿模型远比这还要大。即使在 2020 年发布的 GPT-3也已经有 1750 亿参数训练大约需要超过 300 个 GPU 年估计成本 460 万美元。而 TinyML 的工作点完全不同低能耗、低延迟、低成本还有更好的隐私保护。在传统的云端 AI 模式下设备会把数据上传到远程服务器服务器执行模型推理比如做预测。这样我们能用到强大的云端算力比如这里最新的 GPU但它也带来了通信延迟、额外成本而且你需要把个人数据上传到云服务器这可能引发隐私问题。移动 AI 把一部分计算从云端移到智能手机上把大部分推理负载保留在本地设备、本地计算资源上能更好地保护隐私。不过智能手机仍有数 GB 内存计算资源也比微控制器多得多。那我们的问题是能不能再进一步能不能超越移动 AI能不能在只有几百 KB 片上内存的微型设备上运行有实际意义的神经网络为什么要 Tiny AI为什么要把 AI 模型跑在微控制器上而不是手机或云端 GPU 上一方面是我们讨论过的隐私问题另一方面用微控制器我们可以做到更低的成本、更低的能耗而且几乎可以部署在任何地方比如个人健康监测器、个人检测设备以及各种制造场景。微控制器遍布全世界全球已有数十亿台 IoT 设备在使用微控制器。在这些平台上部署神经网络可以把智能直接带到传感器、不同应用、不同机器和嵌入式系统上。它还能大幅降低成本GPU 可能要几十万到上百万美元而微控制器非常便宜。这种低成本让 AI 能力可以用在那些没有智能手机、服务器或可靠网络、或者部署不实用的场景里。它还能帮我们省电实现“绿色 AI”。微控制器通常功耗很低工作在毫瓦级。这让始终在线的检测与感知成为可能而不会很快耗尽设备电量也支持由小电池或能量采集供电的应用。这些特性打开了广泛的应用场景比如智能家居、制造业的自动化检测、个性化医疗还有精准农业等等。在资源极其受限的场景中引入智能挑战在哪里关键挑战是把有用的模型塞进极小的硬件预算里也就是极低的算力、极低的内存带宽和极低的存储。在这张表里可以看到即使是很老的云端 GPU 比如 Tesla V100也有 32 GB 的显存而且部署在云集群里会有 TB 级的磁盘存储。移动 AI 通常有 4 GB 到 32 GB 的内存存储大约 250 GB 或稍大一些。而 TinyML 的典型微控制器要小得多通常只有大约 300 KB 的片上 SRAM 用于计算、存放激活值存储方面大约 1 MB 的 flash用于存放模型权重和程序。这里有数个数量级的差距激活内存也就是用于深度学习网络激活值的片上内存大约只有云端 AI 的 1/13,000存储大约只有 1/100,000。所以为 GPU 或手机设计的模型不能轻易适配到微控制器这样的 TinyML 设备上。因此我们需要同时减小内存占用减少激活值这样模型才能逐层运行而不撑爆片上内存同时减少模型权重因为 flash 只有 1 MB 存储。如果模型太大比如有 2 MB就没法存到微控制器上。总结一下TinyML 通常受延迟和能耗约束也有内存约束。在这种场景下我们需要同时减小模型的激活值和权重大小才能把它塞进 SRAM 和 flash。面对这种不同的设定我们需要同时改变模型架构设计和系统优化。3. Understanding the TinyML Challenges下面我们先看看卷积神经网络在微控制器上运行时权重内存和激活内存分别用在哪里。考虑一个卷积层它先读入激活值把卷积核作用在上面得到输出激活值。要理解网络的权重在做什么我们需要知道推理过程中激活值和权重分别存在哪里。通常推理运行时我们把输入和输出激活值存放在 SRAM 里而卷积核在推理期间是固定的所以可以存在非易失的 flash 中在需要时读取。如果你还记得像 Arduino Nano 33 BLE Sense 这样的微控制器有 256 KB SRAM 和 1 MB flash。另一个例子是STM32 F746ZG—过去几年非常流行的一款商用微控制器有 320 KB SRAM 和 1 MB flash。我们的任务是设计一个能跑在这些微控制器上的模型输入和输出激活值要小于 SRAM模型权重也要能存进 flash。粗略估算时flash 通常用来存模型所以在评估模型能否存进微控制器时我们要计算静态模型大小而 SRAM 使用量通常按输入激活加输出激活来考虑。它是动态的因为不同层的特征图大小不同我们只关心整个推理过程中的峰值 SRAM。比如在卷积网络的早期层激活图可能非常大所以早期层的 SRAM 消耗更高而后面层的 SRAM 压力会小得多。这是不同网络激活峰值 SRAM 的分析结果。我们有 ResNet-50也有 MobileNet V2。即使 MobileNet V2 是为移动设备部署优化的它的峰值 SRAM、最大激活仍然非常大可能是片上预算的 22 倍。即使做量化最大激活、最大 SRAM 使用量仍然远大于设备 320 KB 的约束。如果我们把 MobileNet V2 和 ResNet-18 比较MobileNet V2 的参数量已经比 ResNet-18 小得多但激活值其实略大峰值激活甚至比 ResNet-18 还高。也就是说它是为移动部署优化的却不是为 TinyML 部署优化的尤其是在微控制器上。这会导致一个很严重的问题SRAM 与 flash 都会成为推理的整体瓶颈。在 MCUNet 中我们会同时处理这两个约束既减小模型大小也设计峰值激活内存更低的网络。TinyML 模型必须同时适配 flash 和 SRAM因为超过任何一个预算模型都无法在微控制器上运行。4. Tiny Neural Network Design带着硬件约束我们来研究如何专门为端侧部署设计网络。MCUNet 是我们研究组之前的工作采用算法-系统协同设计。4.1 MCUNet: Co-Designing Architecture and Inference Engine传统上人们通常只优化神经网络架构或者只优化推理引擎。但在 MCUNet 中模型架构和推理引擎是一起设计的这样能同时利用两边的优势用协同设计的方式演进比只优化一边高效得多。这是对我们讨论过的神经架构搜索的简要回顾。这是一种常见的做法用来优化可部署在资源受限场景中的模型保持软件或者说推理库不变优化模型架构。这里的例子有 ProxylessNAS 和 MnasNet展示了神经架构搜索的有效性。另一条研究路线是给定输入模型如何相应地优化推理引擎一个非常重要的例子是TVM它可以在给定神经网络的情况下调优深度学习库在不改变模型架构的前提下优化推理效率。而MCUNet 把两个方向的优化结合起来它协同设计高效的神经网络架构和高效的编译器、运行时。这样就把设计空间扩展到比以往单纯的模型搜索或推理库、编译器优化更大。MCUNet 框架有两个主要组件第一是 TinyNAS搜索能适配目标硬件的神经架构比如我们今天反复提到的微控制器第二是 TinyEngine它编译搜索得到的模型并在目标设备上高效执行。两个组件互相反馈可以迭代得越来越好。TinyNAS 在评估候选架构时通常使用真实的系统约束TinyEngine 则围绕最终网络用到的算子和内存访问模式做优化。4.2 TinyNAS: Search Space Design本讲我们主要关注 TinyNAS 和神经网络的自动化设计推理引擎会在后面的讲座里讨论。TinyNAS 建立在我们已经很熟悉的神经架构搜索之上。人工设计架构严重依赖人类专业知识而 NAS 会用机器学习和计算以更高效的方式探索不同候选。一个重要的问题是搜索应该在哪里进行或者说TinyML 的搜索空间是什么这张图说明搜索空间的质量在很大程度上决定了最终网络的质量。比如你的搜索空间不好即使有很强的神经架构搜索算法也找不到足够好、令人满意的结果。那如果我们有好的搜索空间也有好的搜索算法就能为精度和效率找到非常好的最终网络。简单地复用移动网络的搜索空间对 TinyML 是行不通的因为资源约束差别非常大手机上几 GB 和微控制器上几百 KB 之间的鸿沟会让整个情形完全不同。甚至最小的移动网络也无法在微控制器上运行因为它的参数太多、激活值太大塞不进微控制器的设备内存。所以我们需要选择不同的搜索空间专门为微控制器、为 IoT 设备设计。挑战在于如何缩放架构让空间里包含足够有能力的模型能够满足 SRAM 和 flash 约束。对于 MobileNet 这类模型家族两个有用的缩放维度是输入分辨率和宽度乘子这里用 R 和 W 表示。R 表示分辨率比如输入是 224×224R 就是 224。W 是施加在模型通道数上的乘子W 越大可以想象模型的宽度、通道数就越大。对于智能手机典型的起点是 R 224、W 1.0。同一个架构家族可以放大到更强的硬件比如云端 GPU那里分辨率更大、宽度乘子也更大。而对于微控制器我们要往相反方向缩放因为希望模型更小、更容易塞进设备内存。不同设备提供的 SRAM 和 flash 约束不同所以微控制器的神经架构设计没有简单的“最优解”。TinyNAS 会针对每个硬件预算独立选择这些取值。这引出了两阶段流程首先在目标内存和存储约束下优化、设计搜索空间然后在特定的搜索空间里搜索出最好的单个网络。第一阶段通常选择较粗的缩放变量比如前面讨论的分辨率和宽度乘子搜索空间缩小之后第二阶段搜索细节架构比如不同的卷积核大小、不同的扩展比以及每个阶段的 block 数量。这就是在给定分辨率和宽度乘子下进行模型架构设计。这里有一个有意思的观察在相同内存约束下我们希望模型有更多的 FLOPs—FLOPs 越大模型容量越大也更有可能取得更高精度。图中这些曲线分别对应不同的搜索空间但都处在相同的内存约束下如果搜索空间好我们就能有更大的 FLOPs也能有更高的精度而搜索空间不好时平均 FLOPs 会低得多精度也会比好的设计低得多。这张网格图展示了不同设计选择之间的另一个关系。可以看到如果 SRAM 大小相同、flash 更大我们就能有更多参数因为模型可以更大如果 flash 大小相同、增大 SRAM就意味着可以有更宽的激活通道模型容量更大。总结一下如图中所示如果 SRAM 固定分辨率可能需要降低以补偿更宽的激活值SRAM 更大则允许更大的激活图所以分辨率可以提高而宽度仍然大致受不变的 flash 容量约束。如果搜索空间已经确定TinyNAS 会使用带权重共享的 once-for-all NAS训练一个超网络采样不同的子网再一起微调。较小的子网络嵌套在较大的子网络中所以一次训练过程就能得到许多硬件专用的网络。比如设备内存较小就选较小的子网部署片上内存更多就可以用更大、参数更多的网络。所有这些网络都能在同一个超网络中一次性训练完成。这是不同子网嵌套在超网络中的演示。与 MobileNetV2 的对比很能说明问题MobileNetV2 的峰值激活内存可能达到平均值的两倍而 TinyNAS 里这个差距小得多各层的峰值内存更均匀—因为搜索出的网络通常会在不同 block 之间更均匀地使用内存。这正是我们想要的因为如果峰值内存远大于平均值就意味着大多数层没有充分利用设备内存。而如果分布更均匀每一层都能最大化利用设备内存模型容量更大、精度更好。结果TinyNAS 取得了更好的精度-效率权衡。在VWW—视觉唤醒词—数据集上任务就是检测给定图像里有没有人MCUNet 相比人工设计和早期 NAS 模型在精度高得多的同时峰值 SRAM 显著更少、实测延迟更低。4.3 Patch-based Inference现在我们更仔细地回顾激活内存SRAM 使用量逐层变化所以正如之前所说决定网络能否跑起来的是峰值而不是平均值。比如这张图里峰值内存大约有 1300 KB塞不进只有 250 KB 或 320 KB 的微控制器。这个峰值对本地部署来说太大了。而到了后面的层SRAM 占用就远低于某些微控制器 256 KB 的约束了。那问题是能不能降低前几层的峰值内存从而把更强的模型塞进微控制器解决方案就是我们针对早期层超大内存消耗所做的这两项优化。在传统卷积中我们用逐层推理即基于给定输入计算完整的输出。比如给定很大的输入特征图你需要在每个位置应用卷积核得到一个很大的输出特征图。不过根据卷积的特性我们可以一块一块地patch by patch做卷积计算。基于 patch 的推理改变了调度方式把大的激活值切分成更小的部分让一个 patch 先穿过前几层再处理下一个 patch。结果就是每次卷积推理时—尤其是早期层—我们只处理原特征图的一部分所以峰值激活小得多。比如这张图里我们把峰值激活降到了原来的约 1/4。再回头看之前的柱状图用了 patch 推理后峰值内存大幅下降可以塞进 256 KB 的约束。我们还可以选择不同的 patch 大小也就是把原始输入特征图切成多少块并优化这个参数让模型能塞进目标内存约束。同样的思路也适用于不同网络架构。这些是在 STM32F746 微控制器上测得的一些峰值 SRAM 使用量。Q AQ把输入特征图切成不同的 patch 或块会增加整体推理延迟吗A对于如今的大规模云端 GPU这种操作肯定会引入大量开销原来每层卷积只做一次前向现在要按 patch 数做很多次还可能有额外的冗余计算。但对微控制器来说设备受峰值内存和算力的严格约束这类额外的控制开销相对原始推理时间不算什么最大的问题反而是它引入的额外计算我们后面会讨论如何解决。这一页最重要的信息是原本无法在本地微控制器上运行的模型现在因为峰值内存降到了设备约束以下就能运行了。我们回来继续讲。之前介绍的那款商用微控制器有 320 KB 片上 SRAM。原来的逐层推理会产生大约 315 KB 的峰值已经非常接近硬性上限。即使是缩小后的 MobileNetV2—我们同时降低了分辨率和宽度—把输入按 2×2 切 patch 来做推理也能大幅降低最大 SRAM 使用量为推理留出更多空间。Q AQpatch 推理时输出激活是怎么处理的多个 patch 的结果在哪里合并A这是个很好的问题。做 patch 推理时我们不仅把输入激活切成不同的 patch也同时切分输出激活因为在做卷积时如果只对左上角那块做卷积输出特征图也只有原来的四分之一。但在几层之后因为 CNN 中有下采样特征图的尺寸会远小于原始尺寸。一旦特征图足够小我们就可以保留这个 patch 的输出开始下一个 patch 的推理。聚合只发生在几层之后的输出层因为那时特征图已经足够小这样输入和输出尺寸都能减小。对不同模型在卷积中应用逐 patch 推理都能带来一致的内存节省尤其是在输入激活图非常大的前几层。4.4 The Halo Problem and Receptive-Field Redistribution这里还有一个 patch 推理的问题我们称之为 halo光环问题。如果按 2×2 切 patch只输入左上角那四分之一就会漏掉边界上的一些元素原始卷积层—比如对于这个输出元素假设有 3×3 卷积核—实际上会用上一些当前 patch 中不存在的元素这就引入了 halo 问题。而且随着传播到更多层卷积的感受野会大得多所需的 halo 更宽重复的卷积计算量也会逐层增加。比如假设卷积核是 3×3要迭代三层每层 halo 会在每条边上向外扩一个元素三层之后特征图的宽和高都会比原始尺寸大 6。这类问题会引入大量冗余计算因为引入 patch 推理时我们不想改变最终输出不想牺牲正确性或精度所以必须考虑第一层输入激活中所有这些感受野。因此把原始特征图切成不同块时不同 patch 之间会有重叠。如果层数太多感受野可能非常大甚至与原始特征图相当这不是我们想要的因为会引入大量冗余计算。halo 区域里的元素会在覆盖它的所有 patch 中被计算多次。所以我们在 MCUNetV2 中引入了另一种优化用来重新分配感受野。标准 MobileNet V2 架构里有很多 3×3 卷积块—这是 MobileNet 的卷积块可以把它理解为一个卷积子网络。核大小为 3×3 时可以想象随着推理层数增加感受野会变得很大。而在 MCUNetV2 中我们重新分配了这种感受野早期层多用 1×1 逐点卷积、少用 3×3 空间卷积包括深度卷积这样模型早期层的感受野不会增长太快而在后面的层我们做更多的空间卷积来增大感受野。因为那里图像大小、激活大小已经很小可以引入更大的卷积核并且可以用逐层推理代替 patch 推理就不会有冗余计算问题同时也补偿了前几层减少的感受野。这种在前几层减小感受野、在后面层补偿的设计能在保持精度的同时让 patch 推理的额外开销小到可以忽略。最后这两个方法—神经架构和推理调度—是联合搜索的。架构搜索的选项包括深度、宽度、卷积核大小等很多设计空间调度则包括 patch 的数量以及前多少层使用 patch 推理。TinyEngine 会贡献额外的系统级选择让推理更高效并且无需太多人工工程开销就能适配微控制器。4.5 MCUNetV2 Results and Insights刚才我们讲了 MCUNetV2 中的优化技术比如 patch 推理也简单提到了推理优化和推理引擎用于把模型部署到微控制器上。现在来看 MCUNetV2 的一些实际应用。首先这张图展示了 MCUNetV2 把内存需求降低了大约 30 KB同时保持 90% 的精度。在固定精度下由于前面讲的优化它的 SRAM 用量大约只有第一代 MCUNet 的 1/4。这种改进不仅限于 VWW 这样的行人检测数据集也提升了在 SRAM 非常有限的设备比如前面说的 256 KB 片上内存上的 ImageNet 分类在同样约束下还在 Pascal VOC 目标检测上带来更大收益。我们可以检视搜索出来的 MCUNetV2 架构理解自动神经架构搜索做出的设计决策。早期层使用基于 patch 的推理因为输入图很大后面的层回到普通的逐层执行因为特征图已经足够小不需要再切成 patch。在早期的 patch 阶段搜索选择了不同的、更小的核尤其是 1×1 卷积和深度卷积核来减小感受野增长从而减少前面提到的 halo 问题带来的重复计算。这也证明了推理与模型架构协同设计的有效性我们知道推理瓶颈是 SRAM 的峰值内存所以引入 patch 推理而 patch 推理有冗余计算、感受野增大的挑战所以我们在早期层引入更小的卷积核让整个优化循环不断演进为特定应用产出更好的模型架构和推理引擎。在中间阶段扩展比保持得很小空间分辨率仍然可观所以在这里激进的扩展通道会重新造成巨大的内存峰值。层名里的 MB4 就表示扩展比很小。在后面的阶段分辨率已经通过大量下采样大幅降低所以网络可以使用更大的扩展比有更多通道来提升模型容量从而带来更多计算量和更好的精度而不会超出 SRAM 预算。由于引入了 patch 推理我们还能使用更大的输入分辨率而不撞上内存墙。这对分辨率敏感的任务很重要比如前面提到的 VWW在低分辨率下如果远处有人人可能非常小低分辨率图像会损害模型检测远处行人的性能。MCUNetV2 使用 160×160 的输入而不是 128×128—后者是之前 MobileNet 版本的配置。所以 patch 推理让我们能用更高的输入分辨率带来更好的模型性能。5. Applications现在我们已经讲完了 MCUNetV2 的主要设计和主要技术。接下来看看不同的应用。我们先讲一些视觉应用然后讲 TinyML 中非常重要的音频场景最后讲时间序列尤其是异常检测。5.1 Tiny Vision在早期的微控制器演示中我们通常分类简单的物体比如苹果、香蕉、橙子等等。而物体的颜色能提供很多信息是分类的强信号。比如看到红色的东西它更可能是苹果而不是香蕉或橙子。有了 MCUNet我们可以超越这些玩具例子在商用微控制器上跑真正 ImageNet 级别的分类。想象一下我们现在能在极小的微控制器上做 ImageNet 级分类—再次强调这个设备的片上内存只有几百 KB、总存储只有 1 MB。在这项对比中MCUNet 是第一个在商用微控制器上实现超过 70% ImageNet top-1 精度的系统。不同设备的 SRAM 和 flash 限制不同所以我们在 MCUNet 中使用的 once-for-all 训练策略可以一次训练、特化出不同的子网络部署到不同目标约束、不同类型的商用微控制器上。这里是针对 VWW 基准的实际微型视觉任务检测是否有人在场。它相当于语音唤醒词的视觉版本。一个小的始终在线模型可以持续监测画面里是否有人进入检测区域而不用昂贵的、始终运行的人脸识别模型这样就能让模型一直在微控制器上运行而不会过快耗光设备电量同时节省能耗、降低设备成本也有助于保护隐私。这是微控制器上的演示画面里是 MIT 36 号楼或 38 号楼的电梯—有人时亮红灯人走了就亮绿灯。目标检测是另一类应用相比分类任务它对输入分辨率更敏感因为需要做稠密的空间预测。降低分辨率会严重损害检测精度正如图中所示分辨率越低精度越低。我们的 patch 推理技术打破了激活内存瓶颈让微控制器能处理大得多的输入从而在目标检测任务上获得更好的精度。这是口罩检测的演示戴口罩的人画绿框不戴口罩的画红框。这是疫情期间一个很有意思的演示。右边还有行人检测演示会用框把摄像头中的人框出来。定量结果说明了分辨率为什么重要与基线相比基于 patch 的推理找回了漏检的人并减少了若干误检。可以看到两个例子里MCUNet 在高分辨率下检测得更好模型在同样的 SRAM 预算内看到了更多细节。看左边这个人因为分辨率低没有被模型检测到而这个检测就好得多。此外我们甚至可以在同样的内存预算下做训练或微调而不只是在微控制器上做推理。想象一下现在我们用 256 KB 内存训练一个模型。这个例子里我们有一个微控制器和一个图像分类模型用微控制器拍摄不同物体的几张照片训练之后模型就能区分两种不同物体—橙子和香蕉。采集过程中红色代表香蕉、绿色代表橙子。经过若干训练样本、若干微调样本后把摄像头对着香蕉屏幕会显示这是香蕉并亮红灯如果是橙子就显示绿色。微型视觉的例子就讲到这里。我们讲了分类、目标检测甚至端侧训练等不同应用。5.2 Tiny Audio接下来讲 TinyML 音频和关键词识别应用。音频是 TinyML 另一个非常重要的工作负载应用包括关键词识别、语音识别和噪声消除。这些任务受益于始终在线、低功耗的处理不需要持续把麦克风数据发到云端你还能获得更好的隐私。关键词识别流水线会把波形切成重叠的帧再把每一帧变换成频域特征。这里有语音波形切成不同帧后转成频谱图。这个频谱图会输入到某个模型中神经网络就可以预测不同关键词的概率比如 yes、no、on、off 等等。全连接 DNN 会忽略这种时频表示中的局部结构而卷积神经网络能利用相邻时间帧、相邻频率之间的相关性还能处理不同说话风格带来的小幅偏移。所以在相近的计算预算下CNN 在这类关键词识别任务上比传统 DNN 效果好得多。MCUNet 进一步把同样的硬件感知约束和协同设计理念推广到语音命令领域在搜索中引入真实的硬件刻画从而在关键词识别任务中在精度、效率和模型大小之间找到更好的权衡。相比 MobileNetV2 等现有网络我们精度更好、延迟更小。5.3 Tiny Time Series and Anomaly Detection最后我们来看 TinyML 在时间序列分析和异常检测中的应用。异常检测在很多应用中非常重要尤其是制造业质检我们也把它用于健康监测、欺诈或攻击检测。目标是学习正常数据的模式把偏离已学习模式的输入标记出来这样当模型收到异常的输入时就能发出警告。这里简要介绍自编码器它包含编码器和解码器。编码器把高维输入压缩成低维的潜在表示解码器再从这个潜在表示重建出输出输出应该与原始输入非常相似—这就是自编码器的目标。借助这个信息瓶颈我们可以训练出一个非常有用的编码器来压缩、编码原始输入。训练时我们最小化正常样本上的重建误差。推理时正常输入能很好地重建而异常输入会产生很大的误差我们就可以用这个误差做异常检测。自编码器如今也被广泛用于不同的领域比如图像生成、视觉语言模型我们会在后面的讲座中讨论。这里我们主要讨论它在异常检测中的应用。它对这个任务有两个有用的性质。首先训练可以是无监督的因为我们不需要引入任何异常样本、异常标签—有时异常样本的标签比正常样本难获得得多。这个例子里我们主要在正常样本上训练自编码器学到一个特定于正常训练分布的表征。最后我们用它在评估任务上做重建如果有不正常的样本最终输出会有很大差异于是我们就能报告异常。这里是运转风扇异常检测的演示。这是微控制器风扇正在运转。如果用螺丝刀去干扰风扇这里就会亮起黄色的警告灯把螺丝刀拿走黄灯就熄灭。摇晃风扇时警告灯也会亮起。现在警告灯是亮的因为风扇在晃。它会熄灭—现在灭了因为它恢复正常状态了。6. Summary今天的课差不多就到这里。总结一下我们把深度学习带到了资源极其受限的设备上这里有很多约束比如计算约束和内存约束。今天的课我们主要讨论如何压缩和部署模型到非常有限的片上内存中比如微控制器的 250 KB SRAM。我们还讲了 MCUNet 的系统-算法协同设计以及 MCUNetV2 的基于 patch 的推理。这些技术让实用的视觉、音频和异常检测应用可以直接跑在微控制器上。你可以让始终在线的微控制器在日常生活中承担各种监测任务。结语第十讲把前面所有的武器—量化、剪枝、NAS、蒸馏—收拢成一个完整的案例MCUNet。它先回答了为什么要 TinyML云端 AI 有通信延迟、成本和隐私问题手机虽然能本地推理但仍有数 GB 内存而微控制器只有约 300 KB SRAM 和 1 MB flash—激活内存只有前者的约 1/13,000、存储约 1/100,000。更麻烦的是这两个预算要同时满足激活值放在 SRAM、权重放在 flash任何一边溢出模型就根本跑不起来。这一讲还用数据戳破了一个幻觉MobileNet V2 虽然是为移动端优化的参数量比 ResNet-18 小得多峰值激活却反而略大其峰值 SRAM 甚至可能是片上预算的 22 倍。于是问题被定义得很清楚既要更小的权重又要更低的峰值激活。MCUNet 的答案是算法-系统协同设计TinyNAS 负责搜架构、TinyEngine 负责编译与执行两者互相反馈。TinyNAS 先解决在哪搜—直接把移动端的搜索空间搬过来是不行的得为微控制器重新设计它用分辨率 R 和宽度乘子 W 做粗缩放两阶段地从粗到细搜索而判断空间好坏的标准很漂亮相同内存约束下 FLOPs 越大模型容量和精度越可能高。再配上 once-for-all 的权重共享一次训练就能给不同 SRAM/flash 预算切出嵌套子网而且搜出来的网络在各 block 间的峰值内存更均匀把设备内存用满。MCUNetV2 则盯住了新的瓶颈—前几层的峰值激活patch 推理把大特征图切块、逐块穿过早期层峰值激活降到约 1/4256 KB 的内存终于放得下代价是 halo 问题—patch 之间要重叠、感受野逐层增长会带来重复计算于是又反过来调整架构早期层改用更小的 1×1 与深度卷积把感受野的补偿留到分辨率已经降下来的后层。架构与调度联合搜索之后同等精度下 SRAM 用量只有原来的约 1/4还能把输入分辨率提到 160×160。这些技术让微控制器真正有了实用价值第一个在商用 MCU 上把 ImageNet top-1 做到 70% 以上的系统VWW 可以一直在线地检测有没有人电梯里有人亮红灯、无人亮绿灯的演示都安排上了目标检测对分辨率敏感patch 推理恰好找回了低分辨率下漏检的行人甚至还能在 256 KB 内存上做端侧训练拍几张照片就能分清橙子和香蕉。音频侧的关键词识别把波形切帧、转成频谱图再喂给 CNNMCUNet 把硬件刻画带进搜索精度更好、延迟更小时间序列侧则用自编码器做无监督异常检测—正常样本重建误差小、异常样本误差大风扇被螺丝刀一干扰就亮起黄灯。回过头看这一讲像一次收网剪枝、量化、NAS、蒸馏各自解决一个维度而只有把它们放进同一个协同设计的循环几百 KB 的芯片才真正装得下智能。下一讲我们将讲解 TinyEngine 和并行处理 。参考https://hanlab.mit.edu/courses/2026-fall-65940https://www.youtube.com/playlist?listPLH7PIPKvCm38
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表