当前位置:首页 > 中国芯 > 端侧AI
[导读]把模型部署到设备上,事情只做了一半。训练时的数据分布和上线后遇到的不一样,光照变了、天气变了、拍摄角度变了,精度掉得比预期快。云端可以重新训练,端侧设备付不起反向传播的算力和时间。

编译自 MDPI Sensors 2025, 25(12), 3574 · 开放获取 CC BY 4.0

把模型部署到设备上,事情只做了一半。训练时的数据分布和上线后遇到的不一样,光照变了、天气变了、拍摄角度变了,精度掉得比预期快。云端可以重新训练,端侧设备付不起反向传播的算力和时间。

纽约州立大学宾汉姆顿分校的 Rahim Hossain、Md Tawheedul Islam Bhuian 与 Kyoung-Don Kang 在 Sensors 上给出了一个折中方案。他们的出发点是前作提出的免训练动态适配器,这次在其上叠了一层低秩变换,把推理时的内存占用与延迟同时压下来,代价是精度让掉一点点。

免训练自适应是怎么做的

思路是不动模型权重,只维护一份动态键值缓存。每处理一张图,先算出特征与预测,再按类别把特征和损失存进缓存,用预测熵作为不确定性的代理指标,每类只保留损失最低也就是最有把握的那些样本。推理时拿当前特征去比对缓存里的样本,用相似度反过来修正预测。整个过程没有梯度,也没有反向传播。

为了压住伪标签噪声,这套方法还配了一份负缓存。判断不确定的样本不硬塞进某个正类,而是记进负类,让后续相似样本的预测被往下压,而不是被往上抬。正缓存每类留 3 条,负缓存每类留 2 条。到 ImageNet 一千个类这个量级,正缓存 3000 条、负缓存 2000 条,上限是类别数乘以每类条目数。

这套机制的内存开销藏在缓存内容里。原方法每条缓存要存特征、损失,再加一个维度等于类别数的 softmax 向量。ImageNet 上一千维的浮点向量乘上 3000 条正缓存,占用相当可观。

把特征先做一次低秩变换

新方案在两个地方动手。第一处是在特征进入缓存之前做一次低秩变换:用两个小矩阵相乘去近似一个完整的线性映射,变换后的特征再归一化。低秩意味着参数量只有特征维度的两倍乘秩,秩取 1 也能用。第二处是把缓存里那条 softmax 向量直接删掉,并把特征从单精度换成半精度存储。

低秩矩阵的离线训练借用了适配低秩微调的思路:两个矩阵从一个很小的正态分布初始化,标准差约 0.01,用 Adam 优化器,学习率 0.0001,损失里加一项对两个矩阵的弗罗贝尼乌斯范数平方的正则。微调数据从每个数据集里随机抽一成,剩下九成留作测试,所以测试时见到的分布偏移是真实存在的,不是人为构造的。

这里有个容易被忽略的细节。低秩变换并不是为了压缩模型,模型本身没动,它改变的是缓存里存什么。把一千维的类别向量删掉、把特征降到半精度,省下来的是推理时反复读写的缓存带宽,而端侧推理的瓶颈常常就在这里。

图1 缓存内容的前后对比与低秩变换插入的位置(依据原文第 3 节绘制)

精度让出去多少

测试覆盖七个基准:ImageNet,它的三个偏移版本 ImageNet-A、ImageNet-R、ImageNet-S,重新标注的 ImageNet-V2,以及 Caltech101 与 UCF101。对照组包括零样本的 CLIP、Tip-Adapter、CoOp,以及未加低秩变换的原方法。

基准的构造方式决定了这组数字的参考价值。Caltech101 有 9146 张图、101 个类,UCF101 有 13320 段视频、101 个类,规模都不大,单次运行就能跑完;ImageNet-A 是从 ImageNet 里挑出的对抗样本,模型在它上面的准确率普遍跌到三成以下,正好用来检验自适应机制在困难样本上的表现。

平均准确率上,原方法 55.38% 最高,低秩版本在 54.21% 到 54.62% 之间,差距随秩变化,秩 16 时最高。三个零样本对照分别是 52.10%、52.61% 和 52.09%。低秩版本比它们高出 2.77 到 3.29 个百分点,说明缓存机制本身带来的收益远大于低秩近似带来的损失。

分数据集看,差异并不均匀。在 ImageNet-A 这种对抗样本集上,原方法 30.85%,低秩版本 30.02% 到 30.28%;在 UCF101 动作识别上,原方法 64.02%,低秩版本 61.27% 到 62.33%,这是差距最大的一项。反过来在 ImageNet-V2 上,CLIP 只有 52.91%,低秩版本拿到 55.32%。

效率侧的账更直观。每张图的平均延迟从 41.39 毫秒降到 37.09 毫秒,降幅 6.4% 到 10.4%,秩越小越快,但秩从 4 降到 1 只再快 0.5 毫秒,说明低秩的收益很快见顶。

和需要反向传播的传统做法比,路线差别不在参数多少,而在有没有梯度。基于梯度的方法每来一批新数据都要更新权重,端侧设备的功耗预算吃不消,还容易带来灾难性遗忘。这份缓存方案把适应能力放在数据侧而不是权重侧,改的是样本库,模型权重从头到尾没被碰过。

图2 七个数据集上的准确率与单图延迟对比(依据原文表 1、表 2 绘制)

还没落到真正的端侧

在五万张 ImageNet 图片的验证跑里,原方法的显示内存占用 3108 MB、吞吐 50.6 张每秒;低秩版本内存降 18% 到 20%、吞吐升 17% 到 22%,图形处理器利用率降 13.5% 到 29%。

需要说清楚实验平台:英特尔 i7-7820X 处理器、64 GB 内存、RTX 3080 Ti 显卡,软件是 PyTorch 2.4.1 搭配 CUDA 12.1。作者把它定位成低成本边缘服务器的模拟,它本质上仍是一台带独立显卡的台式机。真正的端侧设备没有这个余量,缓存读写要落在内存和闪存上,那时低秩变换能省多少,需要重新测。

文章也留了几处没交底。特征维度、正则系数、缓存相似度的缩放因子都没有给出取值,复现要靠作者公开的代码仓库。秩的选择是手动指定的,没有自动搜索机制。这些空白不影响结论的方向,但会影响别人能不能照着做。

还有一处值得留意:缓存的容量上限意味着它记住的永远是最近的、最有把握的样本,环境缓慢漂移时它跟着漂移,环境来回跳变时它会来回覆盖。这对断电重启、长时间离线运行的设备意味着什么,文章没有展开。

把这条路线放回端侧 AI 的整体取舍里看,位置会更清楚。压缩与量化动的是模型本身,属于上线之前的一次性工作;推理时自适应动的是数据侧,属于上线之后的持续工作。前者省下固定的算力与内存,后者用运行时的开销换取对分布漂移的容忍度。两者并不冲突,但预算要放在一起算。这篇文章的账本只记到带独立显卡的台式机,真正落到手机或者微控制器上,缓存、低秩矩阵与相似度计算要挤进同一份内存预算,取舍会比现在紧得多。

内容来源:MDPI Sensors 2025, 25(12), 3574
原文标题:TDA-L: Reducing Latency and Memory Consumption of Test-Time Adaptation for Real-Time Intelligent Sensing
作者:Rahim Hossain, Md Tawheedul Islam Bhuian, Kyoung-Don Kang
原文链接:https://doi.org/10.3390/s25123574
许可协议:CC BY 4.0(https://creativecommons.org/licenses/by/4.0/)
配图说明:图1、图2 为本文依据原文献数据自行绘制。
改动声明:本文在其基础上进行了中文编译与删节,未改变技术结论与原始数据。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭