0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

能否在边缘进行训练(on-device training),使设备不断的自我学习?

OpenCV学堂 来源:机器之心 作者:机器之心 2022-12-05 15:06 次阅读

该研究提出了第一个在单片机上实现训练的解决方案,并且系统协同设计(System-Algorithm Co-design)大大减少了训练所需内存。

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

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

bc68a0d6-73e2-11ed-8abf-dac502259ad0.png

网站: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) 也需要大量的内存占用。因此,我们需要协同设计算法和系统,以实现智能终端设备上的训练。

bc7fe14c-73e2-11ed-8abf-dac502259ad0.png

方法与结果

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

bc95c3f4-73e2-11ed-8abf-dac502259ad0.png

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

bcae282c-73e2-11ed-8abf-dac502259ad0.png

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

bcc3e6ee-73e2-11ed-8abf-dac502259ad0.png

为了将算法中的理论减少转换为实际数值,我们设计了 Tiny Training Engine(TTE):它将自动微分的工作转到编译时,并使用 codegen 来减少运行时开销。它还支持 graph pruning 和 reordering,以实现真正的节省与加速。与 Full Update 相比,Sparse Update 有效地减少了 7-9 倍的峰值内存,并且可以通过 reorder 进一步提升至 20-21 倍的总内存节省。相比于 TF-Lite,TTE 里经过优化的内核和 sparse update 使整体训练速度提高了 23-25 倍。

bcdce52c-73e2-11ed-8abf-dac502259ad0.png

bcef21d8-73e2-11ed-8abf-dac502259ad0.png

结论

本文中,我们提出了第一个在单片机上实现训练的解决方案(仅用 256KB 内存和 1MB 闪存)。我们的算法系统协同设计(System-Algorithm Co-design)大大减少了训练所需内存(1000 倍 vs PyTorch)和训练耗时(20 倍 vs TF-Lite),并在下游任务上达到较高的准确率。Tiny Training 可以赋能许多有趣的应用,例如手机可以根据用户的邮件 / 输入历史来定制语言模型,智能相机可以不断地识别新的面孔 / 物体,一些无法联网的 AI 场景也能持续学习(例如农业,海洋,工业流水线)。通过我们的工作,小型终端设备不仅可以进行推理,还可以进行训练。在这过程中个人数据永远不会上传到云端,从而没有隐私风险,同时 AI 模型也可以不断自我学习,以适应一个动态变化的世界

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2990

    浏览量

    73836
  • IOT
    IOT
    +关注

    关注

    186

    文章

    4166

    浏览量

    196071

原文标题:用少于256KB内存实现边缘训练,开销不到PyTorch千分之一

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LLM和传统机器学习的区别

    训练方法 LLM: 预训练和微调: LLM通常采用预训练(Pre-training)和微调(Fine-tuning)的方法。预训练阶段,模
    的头像 发表于 11-08 09:25 226次阅读

    PyTorch GPU 加速训练模型方法

    深度学习领域,GPU加速训练模型已经成为提高训练效率和缩短训练时间的重要手段。PyTorch作为一个流行的深度
    的头像 发表于 11-05 17:43 419次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练
    的头像 发表于 10-28 14:05 128次阅读
    Pytorch深度<b class='flag-5'>学习</b><b class='flag-5'>训练</b>的方法

    边缘计算与边缘设备的关系

    边缘计算与边缘设备之间存在着密切的关系,它们是相互依存、相互促进的。以下是对这两者关系的介绍: 一、定义与功能 边缘计算 边缘计算是一种分布
    的头像 发表于 10-24 14:33 239次阅读

    FPGA做深度学习能走多远?

    电子领域,FPGA 可能需要在性能、成本和功耗之间进行更精细的平衡,以满足市场需求。 • 市场竞争:随着深度学习市场的不断发展,其他技术(如 GPU、ASIC 等)也
    发表于 09-27 20:53

    如何使物联网边缘设备高效节能?

    电源效率对于物联网的成功至关重要。设备的效率越高,其功能寿命就越长,用户体验就越好。您是否组织中实施了物联网解决方案,以提高物联网边缘设备的能源效率?本文重点介绍了您应该考虑的15个
    的头像 发表于 09-24 15:18 496次阅读
    如何<b class='flag-5'>使</b>物联网<b class='flag-5'>边缘</b><b class='flag-5'>设备</b>高效节能?

    如何利用AI进行提升自我呢?

    支持,包括稀疏计算、图学习和语音处理等。选择适合你学习目标和项目需求的框架。 预训练模型 :如文心ERNIE 3.0 Tiny v2,它是一个开源的小模型,适用于端侧等低资源场景,可以用于各种自然语言处理任务。 理解并应用AI技
    的头像 发表于 07-19 10:46 477次阅读

    训练和迁移学习的区别和联系

    训练和迁移学习是深度学习和机器学习领域中的两个重要概念,它们提高模型性能、减少训练时间和降低
    的头像 发表于 07-11 10:12 771次阅读

    深度学习模型训练过程详解

    深度学习模型训练是一个复杂且关键的过程,它涉及大量的数据、计算资源和精心设计的算法。训练一个深度学习模型,本质上是通过优化算法调整模型参数,使
    的头像 发表于 07-01 16:13 1044次阅读

    部署边缘设备上的轻量级模型

    电子发烧友网报道(文/李弯弯)边缘AI算法是一种将人工智能(AI)算法和计算能力放置接近数据源的终端设备中的策略。这种算法通常被部署边缘
    的头像 发表于 05-11 00:17 2533次阅读

    【大语言模型:原理与工程实践】大语言模型的预训练

    函数,位置编码以及其他关键模块。这些模块和设计选型都是大语言模型处理各种自然语言处理任务时的基础,影响模型的学习能力,泛化性和运行效率。 大语言模型通过最常用的训练任务进行
    发表于 05-07 17:10

    ChatGPT边缘设备的应用探索

    这要求更接近数据源的地方大幅提高性能,但仍然只能使用非常少的功耗,并且价格便宜。虽然训练将继续云中进行,但长距离移动大量数据的成本很高,所以边缘
    的头像 发表于 04-07 12:40 530次阅读

    FPGA深度学习应用中或将取代GPU

    上涨,因为事实表明,它们的 GPU 训练和运行 深度学习模型 方面效果明显。实际上,英伟达也已经对自己的业务进行了转型,之前它是一家纯粹做 GPU 和游戏的公司,现在除了作为一家云
    发表于 03-21 15:19

    如何使用Python进行图像识别的自动学习自动训练

    如何使用Python进行图像识别的自动学习自动训练? 使用Python进行图像识别的自动学习和自动训练
    的头像 发表于 01-12 16:06 527次阅读

    深度学习如何训练出好的模型

    和足够的计算资源,还需要根据任务和数据的特点进行合理的超参数调整、数据增强和模型微调。本文中,我们将会详细介绍深度学习模型的训练流程,探讨超参数设置、数据增强技
    的头像 发表于 12-07 12:38 1046次阅读
    深度<b class='flag-5'>学习</b>如何<b class='flag-5'>训练</b>出好的模型