当前位置: 首页 > news >正文

On-Device Training Under 256KB Memory 端侧极端算力设备资源下的模型训练工作研究

实现模型在边缘端非常弱化的算力设备上进行训练是一项极具挑战性的任务,但同时也有着重要的实际应用价值。在边缘计算的背景下,很多物联网(IoT)设备和嵌入式系统都有非常有限的计算资源和存储能力。然而,实时数据处理和智能决策需要模型在边缘设备上高效运行。传统的云端运行和训练模式可能带来传输延迟、隐私泄露等问题,因此在弱算力设备上直接进行模型训练变得日益重要。

在边缘端进行模型训练的主要挑战包括:

  • 计算资源限制:边缘设备通常具有低算力的CPU,少量内存和存储。
  • 能耗限制:边缘设备通常由电池供电,需要优化能耗来延长设备的使用寿命。
  • 带宽限制:边缘设备和云端的通信带宽可能有限,不适合频繁大数据量传输。

2022年5月的世界智能科技创新合作峰会上,高通公司中国区董事长孟樸强调了混合AI重要性。在5G加持下,随着生成式AI的飞速普及和计算需求的日益增长,混合处理的重要性空前凸显。 混合AI架构可以根据模型和查询需要的复杂度等因素,选择不同的方式在云端和边缘终端之间分配并协同处理AI工作负载。 以终端侧AI为中心的混合AI架构中,端侧设备作为锚点,可以运行数十亿参数的模型,复杂的模型则可以跨云端和终端进行运行,根据需要在用户无缝感知的情况下,使用云端计算。

麻省理工的韩松实验室 是端智能系统领域最为著名的研究组之一。这里我们趁着周末的时间来阅读一下该实验在端侧智能方面的最新研究成果,下面是个人的阅读记录,仅供参考,感兴趣的话可以自行阅读该实验室的原文即可。

设备上训练使模型能够通过微调预训练模型来适应从传感器收集的新数据。用户可以从定制的人工智能模型中受益,而无需将数据传输到云端,从而保护隐私。然而,对于具有微小内存资源的物联网设备来说,训练内存消耗是令人望而却步的。我们提出了一种算法系统协同设计框架,使设备上的训练只需256KB的内存即可实现。设备上训练面临两个独特的挑战:(1)由于比特精度低和缺乏归一化,神经网络的量化图难以优化;(2) 有限的硬件资源不允许完全反向传播。为了应对优化困难,我们提出了量化感知缩放来校准梯度尺度并稳定8位量化训练。为了减少内存占用,我们提出稀疏更新来跳过不太重要的层和子张量的梯度计算。该算法创新由轻量级训练系统Tiny training Engine实现,该系统修剪反向计算图以支持稀疏更新,并将运行时的自动微分卸载到编译时。我们的框架是第一个在256KB SRAM和1MB Flash下实现卷积神经网络微小设备上训练的解决方案,无需辅助存储器,使用不到PyTorch和TensorFlow的1/1000的内存,同时与tinyML应用程序VWW的精度相匹配[20]。我们的研究使物联网设备不仅能够进行推理,而且能够不断适应新数据,以实现设备上的终身学习。视频演示可以在这里找到。

1 简介

设备上训练使我们能够在部署后将预训练模型适应新收集的传感数据。通过在边缘进行本地训练和适应,该模型可以学习改进其预测,并进行终身学习和用户定制。例如,微调语言模型可以从用户的打字和写作中不断学习;调整视觉模型能够从移动相机中识别新对象。通过使训练更接近传感器,它还有助于在处理敏感数据(如医疗保健)时保护用户隐私。
然而,在微型边缘设备上进行设备上培训极具挑战性,与云训练有着根本的不同。微型物联网设备(例如微控制器)通常具有有限的SRAM大小,如256KB。如此小的内存预算几乎不足以推断深度学习模型[47,7,11,43,24,44,60],更不用说训练了,训练需要额外的向后计算和额外的内存用于中间激活[18]。另一方面,现代深度训练框架(如PyTorch[56]、TensorFlow[4])通常是为云服务器设计的,即使在训练批量为1的小型模型(如MobileNetV2-w0.35[61])时,也需要占用大量内存(>300MB)(图1)。

巨大的差距(>1000×)使得使用当前的框架和算法在微型物联网设备上运行变得不可能。目前的深度学习训练系统,如PyTorch[56]、TensorFlow[4]、JAX[10],以及TVM[17]、TF Lite[3]、NCNN[2]等框架,虽然运行时间很短,但缺乏对反向传播的支持。尽管有低成本高效的迁移学习算法,如仅训练最终分类器层、仅偏差更新[12]等,但准确率下降显著(图9),现有的训练系统无法实现理论节约到测量节约。此外,像微控制器这样的设备是裸机,没有现有训练框架所需的操作系统和运行时支持。因此,我们需要共同设计算法和系统,以实现微小的设备上训练。
本文旨在通过算法系统协同设计,弥合这一差距,实现微小的设备上训练。我们研究了微小的设备上训练,发现了两个独特的挑战:(1)模型在边缘设备上被量化。由于低精度张量和缺乏批量归一化层,真正的量化图很难优化[33];(2) 微型硬件的有限硬件资源(内存和计算)不允许完全反向传播,其内存使用量很容易超过微控制器的SRAM一个数量级以上。仅更新最后一层会导致精度差(图9)。为了应对优化困难,我们提出了量化感知缩放(QAS)来自动缩放具有不同比特精度的张量梯度,这有效地稳定了训练并与浮点对应物的精度相匹配(第2.1节)。QAS是无超参数的,不需要调整。为了减少全反向计算的内存占用,我们提出稀疏更新来跳过不太重要的层和子张量的梯度计算。我们开发了一种基于贡献分析的自动化方法,以在不同内存预算下找到最佳更新方案(第2.2节)。最后,我们提出了一个轻量级的训练系统Tiny training Engine(TTE)来实现算法创新(第2.3节)。TTE基于代码生成;它将自动微分卸载到编译时,大大降低了运行时开销。它还支持高级图优化,如图修剪和重新排序,以支持稀疏更新,实现可测量的内存节省和加速。
我们的框架是第一个在256KB SRAM和1MB Flash下无需辅助存储器即可对卷积神经网络进行微小设备上训练的解决方案。(1) 我们的解决方案不仅可以为分类器更新权重,还可以为骨干网更新权重,从而提供了很高的迁移学习精度(图9)。对于tinyML应用程序VWW[20],我们的设备上微调模型与云训练+边缘部署的准确性相匹配,比tinyML(MLPerf Tiny[8])的常见要求高出9%。(2) 我们的系统算法协同设计方案有效地减少了内存占用。如图1所示,与PyTorch和Tensorflow相比,所提出的技术大大减少了1000多倍的内存使用。(3) 我们的框架还大大加快了训练速度,与密集更新和香草系统设计相比,每次迭代时间减少了20倍以上(图10)。(4) 我们将我们的训练系统部署到Cortex M7微控制器STM32F746上,以证明其可行性,这表明微型物联网设备不仅可以进行推理,还可以进行训练以适应新数据。我们的研究为终身设备学习铺平了道路,并为隐私保护设备个性化开辟了新的可能性。

2 方法

准备工作。神经网络通常需要量化,以适应边缘设备的有限内存进行推理[47,34]。对于fp32线性层yfp32=Wfp32xfp32+bfp32,int8量化对应物为:
'yint8=cast2int8[sfp32·(W'int8'xint8+b'int32)],(1)

其中,·表示被量化为定点数的张量,s是一个浮点缩放因子,用于将结果投影回int8范围。我们称之为实量化图(图2(a)),因为张量是int8格式的。为了保持内存效率,我们在微控制器上部署和更新真实的量化图,并将更新的权重保持为int8。更新公式为:
W′int8=cast2int8(W′int8--α·GW′),
其中α是学习率,GW是权重的梯度。为了提高计算效率,梯度计算也在int8中执行。我们更新了用于训练的真实量化图,这与量化感知训练(QAT)有着根本的不同,在QAT中,一个伪量化图(图2(b))在云端进行训练,并转换为真实图进行部署。如图2(b)所示,伪量化图使用fp32,导致没有内存或计算节省。真实的量化图是为了提高效率,而虚假的量化图则是为了模拟。

2.1优化实数量化图

与云端的浮点模型微调不同,使用真实的量化图进行训练是困难的:量化图具有不同比特精度的张量(如方程1所示的int8、int32、fp32),并且缺乏Batch Normalization[33]层(融合),导致梯度更新不稳定。

渐变比例不匹配。当优化量化图时,与浮点对应物相比,精度较低。我们假设量化过程会扭曲梯度更新。为了验证这一想法,我们在图3中的CIFAR数据集[40]上绘制了训练开始时每个张量的权重范数和梯度范数之间的比率(即∥W \8741]/\8741 G \8741》)。量化后的比率曲线非常不同:(1)比率要大得多(可以通过调整学习率来解决);(2) 量化后,该比率具有不同的模式。以突出显示的区域(红框)为例,量化比率具有锯齿形模式,与浮点曲线不同。
如果我们对所有张量使用固定的学习率,那么与浮点情况相比,每个张量的更新速度将非常不同,导致精度较低。我们实证发现,像Adam[36]这样的自适应学习率优化器无法完全解决这个问题(第3.2节)。

2.2内存高效的备件更新

尽管QAS使优化量化模型成为可能,但更新整个模型(甚至最后几个块)需要大量内存,这对于tinyML设置来说是负担不起的。我们建议稀疏地更新层和张量。稀疏层/张量更新。修剪技术被证明在实现稀疏性和减小模型大小方面非常成功[29,30,48,31,50,49]。我们在反向传播过程中“修剪”梯度,并稀疏地更新模型,而不是修剪用于推理的权重。

在内存预算紧张的情况下,我们跳过不太重要的参数的更新,以减少内存使用和计算成本。我们考虑更新线性层y=Wx+b(类似的分析适用于卷积)。给定后一层的输出梯度Gy,我们可以通过GW=f1(Gy,x)和Gb=f2(Gy)来计算梯度更新。请注意,更新偏差不需要保存中间激活x,从而减少内存占用[12]†;而更新权重需要更多的内存,但也更具表现力。对于微控制器等硬件,我们还需要一个额外的更新参数副本,因为原始参数存储在只读闪存中[47]。鉴于更新规则的不同性质,我们从三个方面考虑稀疏更新规则(图4):
(1) 偏差更新:我们应该反向传播多少层并更新偏差(偏差更新很便宜,如果我们反向传播到一层,我们总是会更新偏差)。
(2) 稀疏层更新:选择一个子层来更新相应的权重。
(3) 稀疏张量更新:我们还允许更新权重通道的子集以降低成本。
然而,由于组合空间较大,在内存预算下找到正确的稀疏更新方案具有挑战性。对于具有43个卷积层和{0,1/8,1/4,1/2,1}的权重更新比的MCUNet[47]模型,组合约为1030,使得穷举搜索不可能。

自动选择并进行贡献分析。我们建议通过贡献分析自动推导稀疏更新方案。我们发现每个参数(权重/偏差)对下游精度的贡献。给定一个具有l层的卷积神经网络,我们从(1)个偏差中衡量精度的提高:更新最后k个偏差bl,bl-1,…的改进。。。,bl-k+1(仅偏差更新)与仅更新分类器相比,定义为∆accb[:k];(2) 权重:与仅偏差更新(定义为∆accWi,r)相比,更新一个额外层Wi的权重(信道更新比r)的改进。贡献分析的一个例子可以在图5中找到(MCUNet on Cars[39]数据集;请在附录F节中找到更多结果)。在我们找到∆accb[:k]和\8710》accWi(1≤k,i≤l)之后,我们解决一个优化问题,得出:

其中i是权重被更新的层索引的集合,r是相应的更新比率(1/8,1/4,1/2,1)。直观地说,通过解决这个优化问题,我们找到了(#层用于偏差更新,要更新的权重子集)的组合,使得总贡献最大化,同时内存开销不超过约束。进化搜索可以有效地解决这个问题(见D节)。这里我们假设每个张量(∆acc)的精度贡献可以求和。这种近似非常有效(图5(c))。

2.3微型训练引擎(TTE)

由于冗余的运行时间和缺乏图修剪,实际量化训练和稀疏更新的理论节省并不能转化为现有深度学习框架中的测量内存节省。我们共同设计了一个高效的训练系统,Tiny training Engine(TTE),将上述算法转换为细长的二进制代码(图6)。
编译时微分和代码生成。TTE将自动微分从运行时卸载到编译时,生成一个静态反向图,可以对其进行修剪和优化(见下文),以减少内存和计算。TTE基于代码生成:它将优化后的图编译为目标硬件上的可执行二进制文件,这最大限度地减少了运行时库的大小,并消除了对Python等宿主语言的需求(通常使用兆字节的内存)。

反向图修剪以实现稀疏更新。在将反向图编译为二进制代码之前,我们修剪了反向图中的冗余节点。对于稀疏层更新,我们修剪掉冻结权重的梯度节点,只保留用于偏差更新的节点。之后,我们遍历图以查找由于修剪而未使用的中间节点(例如,保存的输入激活),并应用死代码消除(DCE)来消除冗余。对于稀疏张量更新,我们引入了一个子算子切片机制,将层的权重拆分为可训练和冻结的部分;删除冻结子集的后向图。我们的编译器将稀疏更新算法转化为可测量的内存节省,在不损失准确性的情况下将训练内存减少7-9倍(图10(a),蓝色vs.黄色)。操作员重新排序和就地更新。不同操作的执行顺序会影响张量的生命周期和整体内存占用。这在推理[6,44]中得到了很好的研究,但由于额外的复杂性,在训练中没有得到很好的应用。传统的训练框架通常在应用更新之前推导出所有可训练参数的梯度。这种做法会导致存储梯度的大量内存浪费。通过重新排序运算符,我们可以在反向传播到较早的层之前立即将梯度更新应用于特定的张量(就地更新),以便释放梯度。因此,我们追踪所有张量(权重、梯度、激活)的依赖关系,并对运算符进行重新排序,以便可以融合一些运算符以减少内存占用(2.4-3.2×,图10(a),黄色vs.红色)。图7中的内存生命周期分析反映了就地梯度更新和运算符融合带来的内存节省。

3 实验

3.1设置

训练。我们在实验中使用了三种流行的tinyML模型:MobileNetV2[61](宽度乘数0.35,骨干17M MAC,0.25M参数),ProxylessNAS[13](宽度倍数0.3,骨干19M MAC,0.33M参数)和MCUNet[47](5FPS ImageNet模型,骨干23M MAC,0.48M参数)。我们在ImageNet上对模型进行了预训练[22],并进行了训练后量化[34]。量化模型在下游数据集上进行微调,以评估迁移学习能力。我们使用单个批量在微控制器STM32F746(320KB SRAM,1MB Flash)上执行训练和内存/延迟测量。为了更快地获得多个下游数据集的精度统计数据,我们在GPU上模拟了训练结果,并验证了与微控制器上的训练相比,模拟获得了相同的精度水平。有关详细的训练超参数,请参阅附录(第C节)。我们还在附录(a节)中提供了在微控制器上部署我们的培训系统的视频演示。

数据集。我们在多个下游数据集上测量迁移学习的准确性,并报告平均准确性[37]。我们按照[12]使用一组视觉数据集,包括汽车[39]、CIFAR-10[40]、CIFAR-100[40]、CUB[68]、花卉[54]、食物[9]和宠物[55]。在[12]之后的50个时期内,我们对所有这些数据集上的模型进行了微调。我们还包括VWW数据集[20],a为了进行公平比较,我们对所有数据集和模型都使用了分辨率128。

内存估计。计算图的内存使用与其实现有关[6,44,47,46]。我们提供两种内存测量设置:
(1) 分析分析:我们计算反向计算所需的额外张量的大小,包括保存的中间激活、二进制截断任务和更新的权重。大小与实现无关。它用于快速分析;
(2) 设备分析:我们测量在STM32F746 MCU(320KB SRAM,1MB Flash)上运行模型训练时的实际内存使用情况。我们使用TinyEngineV2[46]作为后端,在初始阶段使用2×2基于补丁的推理[46]来减少前向峰值内存。
测量的内存决定了解决方案是否可以部署在硬件上。

3.2 实验结果

量化感知缩放(QAS)解决了优化难题。我们将MCUNet的最后两个块(模拟低成本微调)微调到各种下游数据集(表1)。使用动量SGD,由于优化困难,量化模型(int8)的训练精度落后于浮点模型。Adam[36]等自适应学习率优化器可以提高精度,但仍低于fp32微调结果;由于二阶动量,它还消耗了3倍的内存,这对于tinyML设置来说是不理想的。尽管进行了广泛的超参数调整(在学习率和“信任系数”上),LARS[69]在大多数数据集上都不能很好地收敛。我们假设LARS的激进梯度缩放规则使训练不稳定。当我们应用QAS时,精度差距被缩小,在不增加额外内存成本的情况下与浮点训练的精度相匹配。图8中还提供了MCUNet在带和不带QAS的Cars数据集上的学习曲线(微调)。因此,QAS有效地帮助优化。稀疏更新在较低内存下获得更好的准确性。我们将搜索到的稀疏更新方案的性能与两种基线方法进行了比较:仅微调最后k层的偏差;微调最后k层的权重和偏差(包括当k等于总层数时微调整个模型)。对于每种配置,我们测量了8个下游数据集的平均精度和分析额外内存的使用情况。我们还通过仅微调分类器与简单的基线进行了比较。如图9所示,由于学习能力有限,仅更新分类器的准确性较低。仅更新分类器是不够的;我们还需要更新主干。仅偏差更新优于仅分类器更新,但准确性很快就会趋于平稳,即使调整了更多的偏差,也不会改善。对于更新最后k层,随着更多层的调整,精度通常会更高;然而,它的内存占用非常大。以MCUNet为例,更新最后两个块会导致额外内存超过256KB,这使得物联网设备/微控制器无法实现。我们的稀疏更新方案可以在更低的内存成本下实现更高的下游精度:与更新最后k层相比,稀疏更新可以在更小的内存占用下实现更大的下游精度。我们还将最后k层(包括微调整个模型§)更新为基线上限(表示为“上限”)来衡量可实现的最高精度。有趣的是,与基线最佳统计数据相比,我们的稀疏更新实现了更好的下游精度。我们假设稀疏更新方案减轻了过拟合或使无动量优化更容易。匹配tinyML的云训练精度。值得注意的是,我们的设备上训练的下游准确性与tinyML应用程序VWW上的云训练结果的准确性相当,甚至超过了后者[20]。我们的框架使用206KB的测量SRAM,同时实现了89.1%的设备上训练top-1精度(我们对VWW数据集使用了梯度累积;详见附录C节)。结果高于最先进的解决方案MCUNet报告的相同模型的准确性(88.7%,在云端训练并部署到MCU)。这两种设置都将ImageNet预训练模型转移到VWW。设备上的精度远高于tinyML的常见要求(MLPerf Tiny[8]的>80%),并超过了行业解决方案TF Lite Micro+MobileNetV2的结果(256KB以下的86.2%[47],仅推理,无训练支持)。

微型训练引擎:节省内存。我们在STM32F746 MCU上测量了三种型号的训练内存,以比较TTE节省的内存。我们在三种设置下测量SRAM的峰值使用率:一般完全更新、稀疏更新和带TTE图重新排序的稀疏更新(图10(a))。得益于图修剪机制,稀疏更新有效地将峰值内存减少了7-9倍,同时实现了相同或更高的迁移学习精度(比较图9中箭头连接的数据点)。通过运算符重新排序进一步减少了内存,从而节省了20-21倍的总内存。使用这两种技术,所有3个模型的训练都适合256KB SRAM。我们还比较了MCUNet上不同更新方案下重新排序的内存节省情况(图9(b),由不同的精度级别表示)。对于不同学习能力的不同稀疏更新方案,重新排序会持续减少峰值内存。
微型训练引擎:训练速度更快。我们在STM32F746 MCU上进一步测量了每个图像的训练延迟,有

三个设置:使用TF-Lite Micro内核的完全更新、使用TF-Lite-Micro内核的稀疏更新和使用TTE内核的稀疏升级(图10(c))。请注意,TF-Lite不支持培训;我们只是使用内核实现来测量延迟。通过图优化和利用多种编译器优化方法(如循环展开和平铺),我们的稀疏更新+TTE内核与完整更新+TF Lite Micro内核相比,可以将训练速度显著提高23-25倍,从而节省能源并使训练实用。请注意,TF-Lite完全更新会导致OOM,因此我们根据每种操作类型的平均速度(用虚线列标记)报告预计的延迟。

3.3 消融研究和分析

剖析更新时间表。我们将MCUNet[47]模型的更新时间表可视化
在图11中搜索了100KB的额外内存(分析)(下部子图(b),有10个类)。

它更新了最后22层的偏差,并稀疏地更新了6层的权重(有些是子张量更新)。最初的20层被冻结,只能向前运行。为了理解为什么这个方案是有意义的,我们还绘制了更新上层子图(a)中每一层时激活和权重的内存成本。我们看到一个明显的模式:初始层的激活成本很高;末端层的重量成本很高;而当我们更新中间层(层索引18-30)时,总内存成本较低。更新方案与记忆模式相匹配:为了跳过高激活记忆的初始阶段,我们只更新网络后期的偏差;由于整体内存成本低,我们更新了4个中间层的权重;我们还更新了两个后续层(1/8和1/4权重)的部分权重,因为它们对下游精度的贡献很大(图5)。有趣的是,所有更新的权重都来自每个反向残差块中的第一个逐点卷积[61],因为它们通常对精度有更高的贡献(图5(b)中锯齿曲线上的峰值点)。
贡献分析的有效性。我们验证了基于贡献分析的更新方案搜索是否有效。我们在搜索过程中收集了几个数据点(更新方案和搜索标准,即∆acc的总和)。我们使用每个更新方案训练模型,以获得下游数据集(真正的优化目标)的平均精度,并在图5(c)中绘制比较图。我们观察到正相关,表明搜索的有效性。子频道选择。与权重修剪类似,我们需要选择通道的子集进行子张量更新。我们更新了MCUNet[47]模型的最后两个块,每层只有1/4的权重,以比较不同信道选择方法(较大幅度、较小幅度和随机)的准确性。结果非常相似(误差在0.2%以内)。通道选择对于迁移学习不是很重要(与修剪不同)。我们选择用更大的权重幅度更新通道,因为它的精度略高。

4 相关工作

高效的迁移学习。与微调完整模型相比,有几种方法可以降低迁移学习成本[38,21,37]。最直接的方法是只更新分类器层[15,23,26,62],但当域偏移较大时,准确性较低[12]。后来的研究调查了其他调优方法,包括更新偏差[12,71]、更新归一化层参数[53,25]、更新小并行分支[12,32]等。这些方法只减少了可训练的参数数量,但缺乏对系统协同设计的研究,以实现真正的内存节省。
它们中的大多数不适合tinyML设置(无法处理量化图,也缺乏BatchNorm[33])。深度学习系统。深度学习的成功建立在流行的训练框架之上,如PyTorch[56]、TensorFlow[5]、MXNet[16]、JAX[10]等。这些系统通常依赖于宿主语言(如Python)和各种运行时,这带来了巨大的开销(>300MB),不适合小型边缘设备。TVM[17]、TF-Lite[3]、NCNN[1]、TensorRT[2]和OpenVino[66]等推理库提供轻量级运行时环境,但不支持训练;MNN[35]初步支持全模型训练,但无法适应小型物联网设备。最近,POET[57]利用再串行化和分页在微控制器上进行训练,但它依赖于大型外部存储器。
微控制器上的微型深度学习。微控制器上的微型深度学习具有挑战性。现有的工作探索了模型压缩(修剪[29,30,48,31,50,70,45],量化[29,58,67,19,60,42,47,34])和神经架构搜索[72,73,65,47,43,24,51,47,46],以减少深度学习模型所需的资源。tinyML有几种深度学习系统(TF Micro[5]、CMIS-NN[41]、TinyEngine[47]、MicroTVM[17]、CMix NN[14]等)。然而,上述算法和系统仅用于推理,而不是训练。有几次初步尝试探索微控制器培训[59,28,64,63]。然而,由于缺乏有效的算法和系统支持,他们只能调整一层或一个非常小的模型,而我们的工作支持为现实生活中的应用调整现代CNN。

5 结论

在这篇论文中,我们提出了第一种解决方案,在256KB和1MB闪存的紧张内存预算下,无需辅助内存,即可在微控制器上进行微小的设备上训练。我们的算法系统协同设计解决方案显著减少了训练内存(与PyTorch和TensorFlow相比,减少了1000倍以上)和每次迭代的延迟(比TensorFlow Lite Micro加速了20倍以上),使我们能够获得更高的下游精度。我们的研究表明,微型物联网设备不仅可以进行推理,还可以不断适应新的数据,以实现终身学习。限制和社会影响。我们的工作实现了在微型微控制器上进行迁移学习的第一个实用解决方案。然而,我们目前的研究仅限于使用CNN进行视觉识别。在未来,我们希望扩展到更多的模式(如音频)和更多的模型(如RNN、Transformer)。我们的研究改进了微小的设备学习,这有助于保护敏感数据(如医疗保健)的隐私。然而,为了设计和基准测试我们的方法,我们在许多下游数据集上进行了实验,导致了相当多的电力消耗。


http://www.mrgr.cn/news/55245.html

相关文章:

  • 如何计算表格中重复项有多少?
  • Vue脚手架学习 vue脚手架配置代理、插槽、Vuex使用、路由、ElementUi插件库的使用
  • 05,hive
  • 边缘计算网关助力煤矿安全远程监控系统
  • idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.
  • 【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』
  • 使用mvn命令导出依赖包
  • @Component 和 @Bean 的区别与联系
  • C++ 异步执行任务async()(补充)
  • 基于Java+SpringBoot+Vue的IT技术交流和分享平台
  • Linux中部署Mysql保姆级教程
  • Django中的ModelForm组件
  • 自动求导实现
  • C++ 新特性 | C++ 11 | tuple 模版
  • 跟风考的PMP帮我拿到了offer
  • Unity3D功耗和发热分析与优化详解
  • Android中使用bottomnavigation实现底部导航栏
  • CST软件如何验证“平面波+探针”的频域结果
  • 怎么用六西格玛增强解决问题的逻辑性?
  • ATTCK 框架讲解
  • 建议使用requestAnimationFrame替代定时器setInterval、setTimeout完成页面动画
  • SAP MDG —— MDG on S/4HANA 2023 FPS02 创新汇总 AI功能首次发布!
  • 七天入门LLM大模型 |提示词工程-Prompt Engineering
  • Django
  • sentinel原理源码分析系列(八)-熔断
  • JVS逻辑引擎,API接入数据加解密操作详解