大数跨境
0
0

NeurIPS 2022|仅用256KB就实现单片机上的神经网络训练

NeurIPS 2022|仅用256KB就实现单片机上的神经网络训练 极市平台
2022-12-14
1
↑ 点击蓝字 关注极市平台

作者丨Lyken@知乎
来源丨https://www.zhihu.com/question/565161486/answer/2779305863
编辑丨极市平台

极市导读

 

仅用256KB就实现单片机上的神经网络训练(training,notinference),从此终端智能不再是单纯的推理,而是能持续的自我学习自我进化。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

来宣传一下我们组最近的工作:仅用256KB就实现单片机上的神经网络训练(training,notinference),从此终端智能不再是单纯的推理,而是能持续的自我学习自我进化。

On-Device Training under 256KB Memory 说到神经网络训练,大家的第一印象都是 GPU + 服务器 + 云平台。传统的训练由于其巨大的内存开销,往往是云端进行训练而边缘平台仅负责推理。然而,这样的设计使得 AI 模型很难适应新的数据:毕竟现实世界是一个动态的,变化的,发展的场景,一次训练怎么能覆盖所有场景呢?

为了使得模型能够不断的适应新数据,我们能否在边缘进行训练(on-device training),使设备不断的自我学习?在这项工作中,我们仅用了不到 256KB 内存就实现了设备上的训练,开销不到 PyTorch 的 1/1000,同时在视觉唤醒词任务上(VWW)达到了云端训练的准确率。该项技术使得模型能够适应新传感器数据。用户在享受定制的服务的同时而无需将数据上传到云端,从而保护隐私。

网站链接: https://tinytraining.mit.edu/

论文链接: https://arxiv.org/abs/2206.15472

Demo: https://www.bilibili.com/video/BV1qv4y1d7MV

代码链接: https://github.com/mit-han-lab/tiny-training

背景

设备上的训练(On-device Training)允许预训练的模型在部署后适应新环境。通过在移动端进行本地训练和适应,模型可以不断改进其结果并为用户定制模型。通过让训练更在终端进行而不是云端,我们能有效在提升模型质量的同时保护用户隐私,尤其是在处理医疗数据、输入历史记录这类隐私信息时。

然而,在小型的 IoT 设备进行训练与云训练有着本质的区别,非常具有挑战性,首先, AIoT 设备(MCU)的 SRAM 大小通常有限(256KB)。这种级别的内存做推理都十分勉强,更不用说训练了。再者,现有的低成本高效转移学习算法,例如只训练最后一层分类器 (last FC),只进行学习 bias 项,往往准确率都不尽如人意,无法用于实践,更不用说现有的深度学习框架无法将这些算法的理论数字转化为实测的节省。

最后,现代深度训练框架(PyTorch,TensorFlow)通常是为云服务器设计的,即便把 batch-size 设置为 1,训练小模型(MobileNetV2-w0.35)也需要大量的内存占用。因此,我们需要协同设计算法和系统,以实现智能终端设备上的训练。

▲ 传统框架训练需要的内存大大超过了智能终端设备的资源,我们所提出的协同设计,有效的将内存开销从几百 MB 降低至 256KB 以内。

方法

我们发现设备上训练有两个独特的挑战:(1)模型在边缘设备上是量化的。一个真正的量化图(如下图所示)由于低精度的张量和缺乏批量归一化层而难以优化;(2)小型硬件的有限硬件资源(内存和计算)不允许完全反向传播,其内存用量很容易超过微控制器的 SRAM 的限制(一个数量级以上),但如果只更新最后一层,最后的精度又难免差强人意。

为了应对优化的困难,我们提出了 Quantization-Aware Scaling(QAS)来自动缩放不同位精度的张量的梯度(如下左图所示)。QAS 在不需要额外超参数的同时,可以自动匹配梯度和参数 scale 并稳定训练。在 8 个数据集上,QAS 均可以达到与浮点训练一致的性能(如下右图)。

为了减少反向传播所需要的内存占用,我们提出了 Sparse Update,以跳过不太重要的层和子张的梯度计算。我们开发了一种基于贡献分析的自动方法来寻找最佳更新方案。对比以往的 bias-only, last-k layers update, 我们搜索到的 sparse update 方案拥有 4.5 倍到 7.5 倍的内存节省,在 8 个下游数据集上的平均精度甚至更高。

为了将算法中的理论减少转换为实际数值,我们设计了 Tiny Training Engine(TTE):它将自动微分的工作转到编译时,并使用 codegen 来减少运行时开销。它还支持 graph pruning 和 reordering,以实现真正的节省与加速。

与 Full Update 相比,Sparse Update 有效地减少了 7-9 倍的峰值内存,并且可以通过 reorder 进一步提升至 20-21 倍的总内存节省。相比于 TF-Lite,TTE 里经过优化的内核和 sparse update 使整体训练速度提高了23-25倍。

结论

在本文中,我们提出了第一个在单片机上实现训练的解决方案(仅用 256KB 内存和 1MB 闪存)。我们的算法系统协同设计(System-Algorithm Co-design)大大减少了训练所需内存(1000倍 vs PyTorch)和训练耗时(20 倍 vs TF-Lite),并在下游任务上达到较高的准确率。

TinyTraining 可以赋能许多有趣的应用,例如手机可以根据用户的邮件/输入历史来定制语言模型,智能相机可以不断地识别新的面孔/物体,一些无法联网的 AI 场景也能持续学习(例如农业,海洋,工业流水线)。

通过我们的工作,小型终端设备不仅可以进行推理,还可以进行训练。在这过程中个人数据永远不会上传到云端,从而没有隐私风险,同时 AI 模型也可以不断自我学习,以适应一个动态变化的世界!

公众号后台回复“极市直播”,获取极市直播第106期【阿里达摩院:兼顾速度与精度的高效目标检测框架DAMO-YOLO】回放以及PPT

极市干货

技术干货数据可视化必须注意的30个小技巧总结如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门

实操教程Nvidia Jetson TX2使用TensorRT部署yolov5s模型基于YOLOV5的数据集标注&训练,Windows/Linux/Jetson Nano多平台部署全流程

极市原创作者激励计划 #


极市平台深耕CV开发者领域近5年,拥有一大批优质CV开发者受众,覆盖微信、知乎、B站、微博等多个渠道。通过极市平台,您的文章的观点和看法能分享至更多CV开发者,既能体现文章的价值,又能让文章在视觉圈内得到更大程度上的推广,并且极市还将给予优质的作者可观的稿酬!

我们欢迎领域内的各位来进行投稿或者是宣传自己/团队的工作,让知识成为最为流通的干货!

对于优质内容开发者,极市可推荐至国内优秀出版社合作出书,同时为开发者引荐行业大牛,组织个人分享交流会,推荐名企就业机会等。


投稿须知:
1.作者保证投稿作品为自己的原创作品。
2.极市平台尊重原作者署名权,并支付相应稿费。文章发布后,版权仍属于原作者。
3.原作者可以将文章发在其他平台的个人账号,但需要在文章顶部标明首发于极市平台

投稿方式:
添加小编微信Fengcall(微信号:fengcall19),备注:姓名-投稿
△长按添加极市平台小编
点击阅读原文进入CV社区
获取更多技术干货

【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读3.2k
粉丝0
内容8.2k