想象一下,你有一个由电池供电的微型机器人(微控制器),它生活在森林里。它的任务是聆听鸟鸣,并即时判断出鸟的种类。问题在于:这个机器人的“大脑”非常小(内存有限),电池也很微弱。如果它试图通过每当新音符到来时就将整首歌曲从头到尾“死记硬背”下来,那么它的内存就会耗尽,最终导致“死亡”(电池耗尽)。
本文介绍了一种名为TinyDéjàVu的新软件框架(其名称借用了“既视感”——即感觉曾经经历过某事的体验——这一概念),旨在帮助这些微型机器人在处理长数据流时不会不堪重负。
以下是其工作原理,通过简单的类比来说明:
1. 问题:“重读”陷阱
通常,这些机器人在分析声音时,会将数据划分为称为“滑动窗口”的片段进行处理。想象一下,你通过一个每次只移动一个单词的小窗口来阅读一本书。
- 旧方法: 每当窗口向右移动一个单词,机器人就会停下来,丢弃旧的视图,并从头开始重新阅读整个新的窗口。如果窗口长度为 100 个单词,而机器人移动了 90 次,那么它最终会反复重读相同的 90 个单词。这浪费了巨大的能量和内存。
2. 解决方案:“状态空间”记忆技巧
TinyDéjàVu 改变了规则。它不再重新阅读整个窗口,而是利用一种称为**状态空间模型(SSM)**的数学技巧。
- 类比: 想象你在看电影。每当新场景开始时,你不需要把整部电影倒带重来,你只需要记住故事的“当前状态”。当新的一帧到来时,你只需将这一条新信息更新到你的记忆中。
- 如何起作用: TinyDéjàVu 将复杂的数学运算(如卷积)转化为这种“仅更新”的模式。它意识到,新窗口中 90% 的数据与上一个窗口完全相同。因此,它不存储整个窗口,而只存储更新结果所需的微小“状态”。
3. “既视感”效应
这个名字源于该系统认识到它已经“见过”大部分数据这一事实。
- 隐喻: 想象一条运送箱子的传送带。旧方法要求工人停下传送带,拆包当前视野内的每一个箱子,然后再将视野向前移动。而 TinyDéjàVu 则像是一位工人,他只拿起传送带上刚刚到达的新箱子,并更新他的心理清单。他忽略那些没有变化的箱子。
4. 结果:更小的“大脑”,更快的速度
作者在真实的微控制器(如智能传感器中使用的芯片)上测试了该方法,并与之前的方法进行了比较。
- 内存节省: 他们发现,TinyDéjàVu 可将所需内存减少高达90%。在它们的鸟鸣示例中,原本需要 75 kB 内存(对于某些微型芯片来说太大)的模型被缩减到了仅 1 kB。
- 速度: 由于停止了重复的数学运算,它在处理重叠数据流时的速度提高了高达20 倍。
- 准确性: 尽管工作量减少了,但它并未出错。其答案的准确性与旧有的、庞大的方法一样高。
5. 现实世界的证明
该团队不仅仅是在计算机模拟中测试了这一点。他们实际上在英国部署了传感器,用于监听**黄鹀(Corn Bunting)**的鸣叫。
- 他们成功地在微小的电池供电设备上运行了复杂的 AI 模型,而这些设备此前因内存耗尽而无法处理此类任务。
- 这使得设备能够在野外停留更长时间,而无需更换电池。
总结
TinyDéjàVu 就像是赋予了一个微小的低功耗机器人一个极其高效的“短期记忆”。它不再囤积它看到的每一个数据片段,而只保留严格更新其理解所需的内容。这使得小型设备能够聆听长而连续的数据流(如鸟鸣或心跳),而不会耗尽电池或内存。
技术摘要:TinyD´ej`aVu
问题陈述
在物联网(IoT)设备中,将神经网络部署用于传感器数据时间序列的连续推理面临严重的资源约束。这些设备通常由电池供电,并在具有有限 RAM(例如 128 kB)的微控制器(MCU)上运行,必须对数据流进行实时处理。时间序列建模的一种常见方法是使用重叠滑动窗口来捕捉时间上下文。然而,标准的推理方法会对每个新窗口重新计算整个模型,导致显著冗余。这种冗余会导致用于缓冲中间激活的随机存取存储器(RAM)使用量过大,并产生高计算延迟,往往使得复杂模型无法在资源受限的硬件上部署。
方法论
本文介绍了TinyD´ej`aVu,这是一个通过将时间算子转换为**状态空间模型(SSMs)**来优化传感器数据流神经网络推理的框架。核心方法论包含三个主要组成部分:
SSM 等价性与图变换:
作者形式化了常见时间算子(如一维卷积、池化以及具有时间混合的全连接层)与 SSM 之间的等价性。通过将这些算子表示为递归状态更新(ht=Aht−1+Bxt),该框架消除了存储大型输入窗口或中间特征图的需求。取而代之的是,仅维护一个小型的、固定大小的隐藏状态向量。该框架将神经网络计算图划分为两个区域:
- SSM 子图: 包含局部或因果时间算子,这些算子被转换为高效的 SSM 等价形式。
- GTA 子图(全局时间聚合器): 从第一个具有全局感受野的算子开始(例如,将时间步展平的全连接层或注意力机制)。该部分负责处理已处理流的聚合。
深度滑动窗口优化:
对于重叠滑动窗口,TinyD´ej`aVu 消除了冗余计算。系统不再重新处理整个窗口,而是仅更新对应于步长引入的新数据点的隐藏状态。全局时间聚合器(GTA)也被转换以接受这些更新的隐藏状态,确保仅在有必要的新特征可用时才触发计算。
实现与优化:
- 循环缓冲区: SSM 使用循环缓冲区实现以管理隐藏状态,避免动态内存分配。
- 全局池化: 一种专用算法将全局池化操作转换为较小 SSM 的级联,将 RAM 复杂度从 O(N) 降低至 O(⌈N/s⌉),其中 N 是窗口大小,s 是步长。
- 混合精度: 该框架支持使用BF16(Brain Floating Point)精度存储隐藏状态,与 FP32 相比,RAM 使用量减少 2 倍,且对许多任务的准确性影响极小。
- 工具链: 该系统基于PyTorch构建以进行分析,并基于microTVM进行图重写和 C 代码生成,针对 Arm Cortex-M 系列等 MCU 进行优化。
主要贡献
- 新颖框架: 引入 TinyD´ej`aVu,自动将神经网络中的时间算子转换为 SSM 以用于流式推理。
- 算法创新: 开发了处理重叠滑动窗口的算法,通过消除冗余计算,并针对全局池化进行特定优化,以大幅降低 RAM 占用。
- 开源实现: 发布完整实现,包括图变换逻辑和基准测试,以确保可复现性。
- 全面基准测试: 在常见的 32 位 MCU 硬件(Arm Cortex-M)上,针对多种模型架构(CNN、TCN、Transformer、WaveNet 变体)进行评估。
结果
作者展示了广泛的实验结果,将 TinyD´ej`aVu 与原始模型及先前工作(StreamiNNC)进行了比较:
- RAM 减少: 与原始模型相比,TinyD´ej`aVu 实现了高达90% 的峰值 RAM 使用量减少。在 TinyWaveNet 等特定案例中,减少幅度之大,使得原本需要约 180 MB RAM 的模型能够在 RAM 小于 350 kB 的设备上运行。
- 延迟改进: 在具有重叠窗口的流式输入上,该框架显示出显著的延迟降低。在主机 PC 上,与未变换的模型相比,流式处理阶段的加速比高达6 倍。在 STM32F7 MCU 上,随着重叠率的增加,延迟呈线性下降,在特定配置下观察到高达20 倍的加速。
- 准确性: 该框架保持了数值正确性,原始模型与变换后模型之间的偏差低于 10−8。任务级准确性与 FP32 原始模型相当。使用 BF16 时,观察到轻微的准确性下降(例如,RMSE 增加 1-3%),作者建议可以通过在 BF16 精度下重新训练模型来缓解这一问题。
- 现实世界验证: 在 nRF52840 传感器上进行鸟类声音检测(生物声学监测)的用例表明,与之前的最先进方法(TinyChirp)相比,RAM 使用量减少了75 倍(从约 75 kB 降至约 1 kB),推理延迟降低了60%。
意义
本文声称,TinyD´ej`aVu 解决了TinyML中的一个关键瓶颈:在资源极度受限的设备上运行复杂的长序列时间序列模型的能力。通过基于 SSM 的流式处理将 RAM 使用量与输入序列长度解耦,该框架使得在电池供电的传感器上部署“始终在线”的智能成为可能,而无需专用硬件加速器。作者强调,他们的方法与其他优化技术(如量化或剪枝)是正交的,意味着可以与之结合以实现更高的效率。这项工作提供了一条实用的、开源的途径,使长序列传感器数据处理在标准的低成本微控制器上成为可能。
每周获取最佳 electrical engineering 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。