手机上也能训练BERT和ResNet了?!

261f7982cdeda563978a3d1304176ac6.jpeg

源 | 机器之心

研究者表示,他们将边缘训练看作一个优化问题,从而发现了在给定内存预算下实现最小能耗的最优调度。

目前,智能手机和嵌入式平台等边缘设备上已经广泛部署深度学习模型来进行推理。其中,训练仍然主要是在具有 GPU 等高通量加速器的大型云服务器上完成。集中式云训练模型需要将照片和按键等敏感数据从边缘设备传输到云端,从而牺牲了用户隐私并导致了额外的数据移动成本。

8f3d62efff3b3cd59f55a7a381d5ac0b.png
▲图注:推特 @Shishir Patil

因此,为了使用户在不牺牲隐私的情况下个性化他们的模型,联邦学习等基于设备的训练方法不需要将数据整合到云端,也能执行本地训练更新。这些方法已被部署在谷歌 Gboard 键盘上以个性化键盘建议,也被 iPhones 手机用来提升自动语音识别。同时,当前基于设备的训练方法不支持训练现代架构和大模型。在边缘设备上训练更大的模型不可行,主要是有限的设备内存无法存储反向传播激活。ResNet-50 的单次训练迭代所需的内存是推理的 200 多倍。

以往工作提出的策略包括分页到辅助内存和重新实现,以减少云端训练的内存占用。但是,这些方法会显著增加整体能耗。与分页方法相关的数据传输通常需要比重计算数据更多的能量。随着内存预算的缩减,重新实现会以 O(n^2 ) 的速度增加能耗。

在 UC 伯克利最近的一篇论文中,几位研究者表明分页和重新实现是高度互补的。通过对简单操作重新实现,同时将复杂操作的结果分页到闪存或 SD 卡等辅助存储器上,他们能够以最小的能耗扩展有效的内存容量。并且,通过这两种方法的结合,研究者还证明了在移动级边缘设备上训练 BERT 等模型是可能的。通过将边缘训练看作一个优化问题,他们发现了在给定内存预算下实现最小能耗的最优调度。

ac3b27d54617fdfb3668ed07de64ad10.png

论文地址:
https://arxiv.org/pdf/2207.07697.pdf

项目主页:
https://poet.cs.berkeley.edu/ GitHub

地址:
https://github.com/shishirpatil/poet

研究者提出了 POET(Private Optimal Energy Training),这是一种在内存受限边缘设备上对现代神经网络进行能量最优训练的算法,其架构如下图 1 所示。鉴于为反向传播缓存所有激活张量的成本极高,POET 对激活进行优化分页和重新实现,因而可以将内存消耗最高减少两倍。他们将边缘训练问题重新表述为整数线性程规划(ILP),发现可以通过求解器在 10 分钟内将其求解到最优。

9a80d89dbc10f64c16759181115aa282.png
▲图注:POET 在边缘设备上对 SOTA 机器学习模型的训练进行优化。

对于部署在真实世界边缘设备上的模型,当边缘设备出现空闲并可以计算周期时就会进行训练,例如谷歌 Gboard 会在手机充电时安排模型更新。因此,POET 也包含了严格的训练限制。给定内存限制和训练 epoch 的数量,POET 生成的解决方案也能满足给定的训练截止期限。此外,研究者还利用 POET 开发了一个全面的成本模型,并证明它在数学上是保值的(即不做近似),适用于现有的开箱即用架构。

论文一作 Shishir Patil 在演示视频中表示,POET 算法可以在智能手机等商用边缘设备上训练任何需要极大内存的 SOTA 模型。他们也成为了首个展示在智能手机和 ARM Cortex-M 设备上训练 BERT 和 ResNet 等 SOTA 机器学习模型的研究团队。

40e94e1e80bd5142eeb087d0c4f1183e.png

集成分页和重新实现

重新实现和分页是降低大型 SOTA ML 模型内存消耗的两种技术。在重新实现中,一旦不再需要激活张量就会被删除,最常见的是在前向传播期间。从而释放了宝贵的内存,可用于存储后续层的激活。当再次需要删除的张量时,该方法会根据谱系的规定从其他相关的激活中重新计算。而分页,也称为 offloading,是一种减少内存的补充技术。在分页中,不是立即需要的激活张量从主存储器调出到二级存储器,例如闪存或 SD 卡。当再次需要张量时,将其分页。

图 2 显示了一个八层神经网络的执行时间表。沿着 X 轴,每个单元对应神经网络的每一层(共 8 层 L8)。Y 轴表示一个 epoch 内的逻辑时间步长。图中占用的单元(用颜色填充)表示在相应的时间步执行的操作(前向 / 后向传播计算、重新实现或分页)。

例如,我们可以看到 L1 的激活是在第一个时间步 (T1) 计算的。在 T2 和 T3 时刻,分别计算 L2 和 L3 的激活量。假设层 L2 和 L3 恰好是内存密集型但计算成本较低的运算,例如非线性 (tanH、ReLU 等),那么重新实现就成为了最佳选择。我们可以删除激活({T3, L2}, {T4, L3}) 来释放内存,当后向传播过程中需要这些激活时,可以再重新实现它们({T14, L3}, {T16, L2})。

e8aadd6e06fd703b017292bdbb8cc09f.png

假设 L5 和 L6 层是计算密集型运算,例如卷积、密集矩阵乘法等。对于此类运算,重新实现将导致运行时间和能量的增加,并且这种方式是次优的。对于这些层,最好将激活张量分页到辅助存储({T6,L5},{T7,L6}),并在需要时分页到({T10,L6},{T11,L5 })。

分页的一个主要优点是,根据内存总线的占用情况,可以进行 pipelin 处理,以隐藏延迟。这是因为现代系统具有 DMA(直接内存访问)特性,它可以在计算引擎并行运行时将激活张量从辅助存储移动到主内存。例如,在时间步 T7,可以同时将 L6 调出并计算 L7。但是,重新实现是计算密集型的,不能并行化,这导致运行时间增加。例如,我们必须将时间步 T14 用于重新计算 L3,从而延迟其余反向传播执行。

POET

该研究提出了 POET,这是一种用于深度神经网络的图形级编译器,它重写了大型模型的训练 DAG,以适应边缘设备的内存限制,同时保持高能效。

POET 是硬件感知的,它首先跟踪前向和后向传播的执行以及相关的内存分配请求、运行时间以及每次操作的内存和能源消耗。对于给定的硬件,每个工作负载的这种细粒度分析只发生一次,具有自动化、便宜等特性,并且为 POET 提供了最准确的成本模型。POET 然后生成可以有效求解的混合整数线性规划 (MILP)。

POET 优化器搜索有效的重新实现和分页调度,以最大限度地减少受内存限制的端到端能源消耗。然后使用得到的调度生成一个新的 DAG,在边缘设备上执行。

虽然 MILP 是在商用硬件上解决的,但发送到边缘设备的调度表只有几百字节,因此内存效率很高。

对于计算成本低但内存密集型的操作,重新实现是最有效的。然而,分页最适合于计算密集型操作,在这种操作中,重新实现将导致大量的能量开销。POET 在一个集成搜索空间中共同考虑重新实现和分页。

本文方法可扩展到复杂、现实的架构中,POET 优化器算法如下。

785681b7fbe6d2c2ffc2299feca67f6e.png

该研究在优化问题中引入了一个新的目标函数,以最小化计算、page-in 和 page-out 的综合能耗,分页和重新实现能耗结合的新目标函数为:

7d5c20ec572567a919bf1f6cfbbda01c.png

其中Φ_compute、Φ_pagein 和Φ_pageout 分别表示每个节点在计算、page-in 和 page-out 时所消耗的能量。

POET 根据图的哪些节点 (k) 进行了重新实现,以及在每个时间步长 (t) 将哪些节点 page-in 图片或 page-out 图片来输出 DAG 调度。

3a96f2b7b986f149c24fee917e9d7d13.png

实验结果

在对 POET 的评估中,研究者试图回答三个关键问题。首先,POET 在不同的模型和平台上能够减少多少能耗?其次,POET 如何从混合分页和重新实现策略中获益?最后,POET 如何适应不同的运行时预算?

研究者在下表 2 中列出四种不同的硬件设备,分别为 ARM Cortex M0 MKR1000、ARM Cortex M4F nrf52840、A72 Raspberry Pi 4B + 和 Nvidia Jetson TX2。POET 是完全硬件感知的,依赖于细粒度的分析。

548fae4fdb2dc8e74570c51f9a0b6bce.png

下图 3 显示了单次训练 epoch 的能耗,每列分别对应不同的硬件平台。研究者发现,POET 在所有平台上生成节能耗最优的调度(Y 轴),同时减少峰值内存消耗(X 轴)并符合时间预算。

c1ddfafd6d53a6f959150626dccdb0dc.png

在下图 5 中,研究者在 A72 上训练 ResNet-18 时对 POET 和 Capuchin 进行了基准测试。随着 RAM 预算的减少,Capuchin 比具有完整内存的基线多了 73% 到 141% 的能耗。相比之下,POET 产生的能耗不到 1%。这种趋势适用于测试的所有架构和平台。

c5e3de8e4b7a4de4592ff13820878370.png

表 3 中,该研究在 Nvidia 的 Jetson TX2 上训练 ResNet-18 时对 POET 和 POFO 进行了基准测试。研究发现 POET 找到了一个集成的重新实现和分页调度,可将峰值内存消耗降低 8.3%,并将吞吐量提高 13%。这展示了 POET 的 MILP 求解器的优势,它能够在更大的搜索空间上进行优化。虽然 POFO 仅支持线性模型,但 POET 可以推广到非线性模型,如图 3 所示。

293d4e35e2a85516e196ebbae763d34d.png

图 4 强调了 POET 在不同时间约束下采用集成策略的好处。对于每个运行时,下图绘制了总能耗图。

e52354e755901752ac62004c1b3b8ade.png

49cbabc7925edee68e5c8e88679c63a8.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LintCode 125. 背包问题 II(DP)

1. 题目 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? 样例 1: 输入: m 10, A [2, 3, 5, 7], V [1, 5, 2, 4] 输出: 9 解释: 装入 A[1] 和 A[3] 可以得到最大价值, V[1] V[3] 9 样例…

大众点评App的短视频耗电量优化实战

前言 美团测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试。现在大家对手机越来越依赖,而上面各App的耗电量,直接影响了手机的待机时间,是用户非常关心的一点。本文主要通过一个典…

解决CNN固有缺陷!通用 CNN 架构CCNN来了| ICML2022

文 | David W. Romero等源丨机器之心在 VGG、U-Net、TCN 网络中... CNN 虽然功能强大,但必须针对特定问题、数据类型、长度和分辨率进行定制,才能发挥其作用。我们不禁会问,可以设计出一个在所有这些网络中都运行良好的单一 CNN 吗&#xff1…

境外业务性能优化实践

本文根据第16期美团技术线上沙龙OnLine演讲内容整理而成。 前言 性能问题简介 应用性能是产品用户体验的基石,性能优化的终极目标是优化用户体验。当我们谈及性能,最直观能想到的一个词是“快”,Strangeloop在对众多的网站做性能分析之后得出…

LeetCode 第 21 场双周赛(779/1913,前40.7%)

文章目录1. 比赛结果2. 题目LeetCode 5336. 上升下降字符串 easyLeetCode 5337. 每个元音包含偶数次的最长子字符串 mediumLeetCode 5338. 二叉树中的最长交错路径 mediumLeetCode 5339. 二叉搜索子树的最大键值和 hard1. 比赛结果 只做出来了第1题,第3题有一个例子…

算法工程师的三观测试

文 | 小戏编 | 小轶如果我在谷歌输入“How to improve my machine learning models”,我会得到形形色色花样繁多的提升模型性能的方法。从调参到特征工程,从集成模型到数据增强,琳琅满目,不胜枚举。可是如果我在这个问题上加一点限…

领域驱动设计在互联网业务开发中的实践

至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大…

LeetCode 1377. T 秒后青蛙的位置(BFS)

1. 题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。青蛙无法跳回已经访问过的顶点。…

已删除

7.12更新:部分基金赎回的钱已经到账小金库了,今日从小金库提现时又提示银行卡已删除,不过这次可以点击重新绑定,重新绑定时会报错“绑定的卡与原卡一致”,流程没法走完。但这时候再退回去却发现“银行卡已删除”的提示没有了。于是…

即时配送的ETA问题之亿级样本特征构造实践

ETA(Estimated time of Arrival,预计送达时间)是外卖配送场景中最重要的变量之一(如图1)。 我们对ETA预估的准确度和合理度会对上亿外卖用户的订单体验造成深远影响,这关系到用户的后续行为和留存&#xff…

LeetCode 1376. 通知所有员工所需的时间(DFS)

1. 题目 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人…

华为天才少年稚晖君做了一把模块化机械键盘,引起极客圈地震,网友:这才是真正的客制化...

作者 | 王玥、李梅,陈彩娴(编辑)来源 | AI科技评论他来了他来了,一人顶一个团队的稚晖君又一次带着一项硬核(虽然他强调是“软核”)黑科技来了!稚晖君,真名彭志辉,三次元…

iPhone X 刘海打理指北

iPhone X 刘海机于9月13日发布,给科技小春晚带来一波高潮。作为开发人员却多出来一份忧虑,iPhone X 怎么适配?我们 App 的脑袋会不会也长一刘海出来?Tabbar 会不会被圆角?先来看一下美团 App 的表现: 图 1.…

大厂们终于无法忍受“加一秒”了,微软谷歌Meta等公司提议废除闰秒

文 | 萧箫 发自 凹非寺源 | 量子位 , 公众号 QbitAI大厂们再也无法忍受闰秒带来的一堆bug了。现在,谷歌Meta微软亚马逊等一众科技巨头发起了一项倡议:废除闰秒!闰秒这玩意,说白了就是通过给“世界标准时间”加_(或减&a…

LeetCode 1374. 生成每种字符都是奇数个的字符串

1. 题目 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 示例 1: 输入&…

Redux从设计到源码

本文主要讲述三方面内容: Redux 背后的设计思想源码分析以及自定义中间件开发中的最佳实践在讲设计思想前,先简单讲下Redux是什么?我们为什么要用Redux? Redux是什么? Redux是JavaScript状态容器,能提供可预…

LeetCode 1375. 灯泡开关 III

1. 题目 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着的。 在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。 灯的颜色要想 变成蓝色 就必须同时满足下…

MIT指出公开预训练模型不能乱用

文 | 林锐众所周知,用 Imagenet 预训练模型做 backbone,再接个下游任务的头去微调,是个简单有效的迁移学习方法。基本上,炼丹师用这种方法就能成功获得一个优秀的模型(水一个实验室的项目)。但是近些年一些…

从0到1:构建强大且易用的规则引擎

引言 2016年07月恰逢美团点评的业务进入“下半场”,需要我们在各个环节优化体验、提升效率、降低成本。技术团队需要怎么做来适应这个变化?这个问题直接影响着之后的工作思路。 美团外卖的CRM业务步入成熟期,规则类需求几乎撑起了这个业务所有…

LintCode 563. 背包问题 V(DP)

1. 题目 给出 n 个物品, 以及一个数组, nums[i] 代表第i个物品的大小, 保证大小均为正数, 正整数 target 表示背包的大小, 找到能填满背包的方案数。 每一个物品只能使用一次 样例 给出候选物品集合 [1,2,3,3,7] 以及 target 7 结果的集合为: [7] [1,3,3] 返回 22. 解题 dp[…