【大模型服务】01EdgeFM: Leveraging Foundation Model for Open-set Learning on the Edge

该文发表在 SenSys’23(CCF B) 上,作者是来自港中文的鄢振宇。这是一篇关于云端协同的文章,主要解决边缘设备深度模型的泛化性不足问题,实现 Open-set Learning。

文章目录

  • 背景
  • Open-Set Recognition 的挑战
  • EdgeFM 整体架构图
    • 云端:Knowledge Query and Customization
      • Heterogeneous Feature Mapping
      • Knowledge Query from the Foundation Model
      • Semantic-driven Distillation Loss
    • 边缘端:Dynamic Edge Update
    • 推理侧:EdgeFM Inference Engine
      • 选取最佳阈值
  • 系统评估
  • 评价

背景

随着深度学习以及芯片的发展,越来越多的深度模型选择在边缘端部署。由于边缘设备资源有限(无论是内存资源,还是计算资源),并不能发挥出模型 100% 的能力。当前大多数边缘 AI 模型都是基于特定任务的,仅仅识别训练中出现的类别,对于未知类别的输入数据,模型的精度会大幅降低。

而大模型并不会出现这种问题。如图一所示,大模型具有零样本学习能力,对于未知类别的输入,也会很好地完成分类。而且大模型可以处理多个不同下游任务,比如我们可以只使用 GPT-4 就可以完成中英文翻译、知识问答、作诗等多种不同任务。

在这里插入图片描述

当前工作都是基于闭集识别(仅可识别训练中出现的类)的研究,对于 Open-set Recognition 方面,并没有人涉及到。

Open-Set Recognition 的挑战

  • 资源有限
    一旦涉及到边缘设备,资源问题永远是一大痛点,对于大模型更是如此。我们不可能直接在边缘端直接应用大模型(FMs),那如何利用大模型增强边缘 AI 模型的泛化性成为一个比较大的挑战。
  • 在动态环境中保持泛化性
    真实环境并不是静态的,网络带宽变化、场景突变都有可能发生。这更加考验系统的鲁棒性。
  • 实时性
    多数任务都有实时性要求,不可能前朝事今朝判。

EdgeFM 整体架构图

这个系统包括两个主要功能:选择式上传未知数据以及为边缘端定制专有小模型。

  • Edge 端收集 Applications(任务、精度和时延)和 Resources (内存,计算资源)数据并进行分析。Model Selection使用该分析结果在 Model Pool 中选取最合适的模型架构。之后该模型架构结合边缘端上传的未知数据进行语义定制。最后把定制好了的小模型部署在 Edge 端。
  • 未知数据通过定制小模型生成 Sensor embeding数据,之后进行不确定性量化,最后根据不确定性量化结果决定是否上传 Cloud 端。
  • 在推理过程中,Inference Engine 采用 Dynamic Network Apaptation 来检测网络状况并更新阈值搜索表(该表用来查询最优阈值的)。同时,Inference Engine会根据网络带宽和不确定性度量来决定是否在本地运行。

在这里插入图片描述

云端:Knowledge Query and Customization

我将重点讲解 Semantic-driven Customization 的做法,其他部分不详细讲述(比较简单QAQ)

Heterogeneous Feature Mapping

由于边缘 AI 模型和大模型的架构不同,所产生的embedding数据维度也有可能不同。为了小模型可以更简单学习到大模型的知识,因此使用投影网络使得二者embeding维度相同:
v i = ψ ( S ( x i ) ) \mathbf{v}_{i}=\psi\left(\mathcal{S}\left(\mathbf{x}_{i}\right)\right) vi=ψ(S(xi))

在这里插入图片描述

Knowledge Query from the Foundation Model

这一 part 解决对未知类别样本进行分类问题。中心思想也很简单就是在文本池中选取置信度最高的文本作为该数据标签。
t i ′ = argmax ⁡ ( ⟨ T v ( x i ) , t k ⟩ ) , t k ∈ T \mathbf{t}_{i}^{\prime}=\operatorname{argmax}\left(\left\langle\mathcal{T}_{v}\left(\mathbf{x}_{i}\right), \mathbf{t}_{k}\right\rangle\right), \mathbf{t}_{k} \in \mathbf{T} ti=argmax(Tv(xi),tk),tkT

Semantic-driven Distillation Loss

大模型的泛化能力很强,因此小模型要学习大模型的输出,尽量达到大模型效果。在这里,本文采用的是双向对比学习方式进行学习。

LOSS:

  • 从文本到图像:
    L i v → t ′ = − l o g e x p { < Ψ i , t ^ k > / τ } ∑ k = 1 b S e x p { < < Ψ i , t ^ k > / τ } \mathcal{L}_{i}^{v\rightarrow t^{\prime}}=-l o g\frac{e x p\ \left\{\left<\Psi_{i},\hat{\bf t}_{k}\right>/{\tau}\right\}}{\sum_{k=1}^{b_{S}}e x p\ \mathrm{\left\{\left<\left<\Psi_{i},\hat{\bf t}_{k}\right>\right./{\tau}\right\}}} Livt=logk=1bSexp {Ψi,t^k/τ}exp {Ψi,t^k/τ}

  • 从图像到文本:

L i t ′ → v = − l o g e x p { < t ^ i , v k > / τ } ∑ k = 1 b S e x p { < < t ^ i , v k > / τ } \mathcal{L}_{i}^{t^{\prime}\rightarrow v}=-l o g\frac{e x p\ \big\{\left<\hat{\bf t}_{i},\mathbf{v}_{k}\right>\big/\tau\big\}}{\sum_{k=1}^{b_{S}}e x p\ \mathrm{\left\{\left<\left<\hat{t}_{i},\mathbf{v}_{k}\right>\right.\big/\tau\right\}}} Litv=logk=1bSexp {t^i,vk/τ}exp {t^i,vk/τ}

  • 交叉熵loss
    L t e x t = 1 b s ∑ i = 1 b s w i { λ L i v → t ′ + ( 1 − λ ) L i t ′ → v } \mathcal{L}_{t e x t}=\frac{1}{b s}\sum_{i=1}^{b s}w_{i}\left\{\lambda\mathcal{L}_{i}^{v\to t^{\prime}}+(1-\lambda)\mathcal{L}_{i}^{t^{\prime}\to v}\right\} Ltext=bs1i=1bswi{λLivt+(1λ)Litv}

    其中 w i w_i wi 表示预测置信度,代表未知类别输入成功预测几率有多大(注意置信度有可能大于1)。bs表示 batch 大小。

边缘端:Dynamic Edge Update

前面提到:未知数据会有选择地上传云端。下面我们来探讨一下如何选择未知数据到云端。

对于一个样本来说,如果对于某一类别标签的置信度非常高,而对于其他类别标签的置信度很低,那这个样本还用上传云端吗?显然不用,该样本预测正确的概率极大。因此,我们得到一个经验结论:只要第一置信度很高,其他类别置信度很低,那用边缘小模型处理该样本最优。在这里,我们用余弦相似度来表示置信度:
s i m ( x i ) = ⟨ V i , t k ⟩ sim({\bf x}_{i})\;{{{=}}}\;\langle\mathrm{V}_{i},\mathrm{t}_{k}\rangle sim(xi)=Vi,tk

不确定性度量,这里用第一置信度与第二置信度的差值表示:
U n c ( x i ) = s i m 1 ( x i ) − s i m 2 ( x i ) U n c({\bf x}_{i})\,=\,s i m_{1}({\bf x}_{i})-s i m_{2}({\bf x}_{i}) Unc(xi)=sim1(xi)sim2(xi)

当 Unc 小于阈值时,代表本地模型无法进行可靠分类,因此发送到云端进行处理。反之,使用本地模型进行处理。
U n c ( x i ) < V t h r e U n c({\bf x}_{i})\,<\,V_{t h r e} Unc(xi)<Vthre

推理侧:EdgeFM Inference Engine

在推理过程中,EdgeFM会自适应性选择最合适的运行方式(cloud or edge)。EdgeFM 还是基于置信度作为衡量指标。(置信度这么好用????)

和上面相同,Unc小于阈值时上传云端,大于阈值时在本地执行。

r ( x i ) = { U n c ( x i ) ≥ t h r e ( t ) } r({\bf x_i}) = \{Unc({\bf x_i}) \ge thre(t)\} r(xi)={Unc(xi)thre(t)}

从上面这个公式可以看出, t h r e ( t ) thre(t) thre(t) 的取值直接影响 EdgeFM 的决策。因此我们需要动态调整阈值大小,确保 EdgeFM 做出正确决策。

选取最佳阈值

  • 定义系统时延公式:
    t ^ e 2 e ( t h r e ) = r ( t h r e ) ⋅ t e d g e + ( 1 − r ( t h r e ) ) ⋅ ( t t r a n s + t c l o u d ) \hat{t}_{e2e}(t h r e)=r(t h r e)\cdot t_{e d g e}+(1-r(t h r e))\cdot(t_{t r a n s}+t_{c l o u d}) t^e2e(thre)=r(thre)tedge+(1r(thre))(ttrans+tcloud)

  • 在满足时延要求的情况下,thre 越大越好:
    max ⁡ t h r e ∈ ( 0 , 1 ) t h r e s . t . t ^ e 2 e ( t h r e ) ≤ L a p p \operatorname*{max}_{t h r e\in(0,1)}\ t h r e\quad\mathrm{s.t.}\quad\hat{t}_{e2e}(t h r e)\le L_{a p p} thre(0,1)max thres.t.t^e2e(thre)Lapp

系统评估

  • 系统具有泛化性
    在这里插入图片描述

  • 在不降低精度的情况下,时延大幅降低(实时性)
    在这里插入图片描述

评价

ing…

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

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

相关文章

CAPL如何使用socket套接字实现TCP通信(建立连接)

socket套接字相关的文章我们已经写过太多,这里就不再展开。CAPL使用socket实现TCP活UDP通信,在文章《【CANoe示例分析】TCP/UDP Server/Client》也有过介绍,但主要介绍的是工程示例,代码分析比较粗略,今天重点介绍下CAPL代码如何实现socket套接字在TCP通信中的使用。 首先…

21---EEPROM电路设计

视频链接 EEPROM电路设计01_哔哩哔哩_bilibili EEPROM电路设计 1、存储器的分类 一般根据掉电丢失来划分的存储器。可分为易失性存储器和非易失性储存器。 ROM在系统停止供电的时候仍然可以保持数据&#xff0c;而RAM通常都是在掉电之后就丢失数据。 1.1、易失性存储器-R…

383.赎金信

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 思路&#xff1a;将magazine 中字…

升级 HarmonyOS 4 版本,腕上智慧更进一步

HUAWEI WATCH GT 3 系列升级 HarmonyOS 4 新版本后&#xff0c;手表体验更进一步&#xff0c;快来看看有哪些变化吧~

如何进行端口映射端口转发?

在互联网时代&#xff0c;网络安全成为一项重要的任务。端口映射端口转发是一种常用的网络安全技术&#xff0c;它可以实现远程访问内部网络资源的需求。本文将介绍端口映射端口转发的基本原理和应用场景&#xff0c;以及一种名为"天联"的解决方案。 基本原理 端口映…

种植新革命:科技赋能绿色未来

《种植新革命&#xff1a;科技赋能绿色未来》 一、种植技术的颠覆式创新 随着科技的飞速发展&#xff0c;种植技术也在经历一场颠覆式的创新。传统的种植方式&#xff0c;虽然历史悠久&#xff0c;经验丰富&#xff0c;但在面对现代化、大规模、高效的需求时&#xff0c;逐渐…

LeetCode每日一题——最后一个单词的长度

最后一个单词的长度OJ链接&#xff1a;58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路 &#xff1a; 统计字符串中最后一个单词的长度&#xff0c;那么我们可以定一一个指针&#xff0c;从后向前开始统计&#xff0c;当指针指向的元素…

Nest.js Sequelize ORM到数据库(MySQL PostgreSQL)示例

Nest.js Sequelize ORM到数据库(MySQL & PostgreSQL)示例 目录 Nest.js Sequelize ORM到数据库(MySQL & PostgreSQL)示例您将学到什么先决条件步骤1:创建您的第一个NestJS Sequelize ORM应用步骤2:使用NestJS与MySQL或PostgreSQL构建Sequelize模型步骤3:使用Nes…

【LabVIEW FPGA入门】局部变量和全局变量

局部变量 无法访问某前面板对象或需要在程序框图节点之间传递数据时&#xff0c;可创建前面板对象的局部变量。创建局部变量后&#xff0c;局部变量仅仅出现在程序框图上&#xff0c;而不在前面板上。 局部变量可对前面板上的输入控件或显示件进行数据读写。写入局部变量相当于…

汇编语言中的start有什么用

一 START END 开头有个START 结尾有个END 1.汇编语言中的start有什么用&#xff1f; start就是一个标号,标志程序的入口而已,程序加载到内存之后CS:IP会指向这个标号,从START指向的指令开始运行 这个标号不一定是START,你也可以用MAIN,但在程序的最后要用END MAIN来提示程序…

流畅的 Python 第二版(GPT 重译)(十三)

第二十四章&#xff1a;类元编程 每个人都知道调试比一开始编写程序要困难两倍。所以如果你在编写时尽可能聪明&#xff0c;那么你将如何调试呢&#xff1f; Brian W. Kernighan 和 P. J. Plauger&#xff0c;《编程风格的要素》 类元编程是在运行时创建或自定义类的艺术。在 P…

Spring Data访问Elasticsearch----查询方法

Spring Data访问Elasticsearch----查询方法 一、查询lookup策略1.1 声明的查询 二、创建查询三、方法返回类型四、使用Query注解 一、查询lookup策略 Elasticsearch模块支持所有基本的查询构建功能&#xff0c;如字符串查询、native搜索查询、基于条件的查询和从方法名派生的查…

vue3+vite+Electron构建跨平台应用

1.搭建第一个 electron-vite 项目 electron-vite 是一个新型构建工具,旨在为 Electron 提供更快、更精简的开发体验。它主要由五部分组成: 一套构建指令,它使用 Vite 打包你的代码,并且它能够处理 Electron 的独特环境,包括 Node.js 和浏览器环境。 集中配置主进程、渲染…

局域网内怎么控制另一台电脑

局域网内怎么控制另一台电脑 在局域网内控制另一台电脑是一个相对高级的操作&#xff0c;通常用于远程管理、技术支持或资源共享等场景。要实现这一功能&#xff0c;需要确保两台电脑都连接到同一个局域网&#xff0c;并且已进行适当的配置。以下是几种常见的方法&#xff1a;…

【蓝桥杯选拔赛真题42】C++切蛋糕 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解析

目录 C切蛋糕 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C切蛋糕 第十四届蓝桥杯青少年创意编程大赛C选拔赛真题 一、题目要求 1、编程实现 有一块矩形蛋糕&#xff0c;小明从蛋糕…

汽车信息安全--密钥管理系统初探(2)

目录 1.HSM中的密钥管理 1.1 密钥生成 1.2 密钥分发 1.3 密钥使用 1.4 密钥存储 <

GCN-Align论文翻译

GCN-Align翻译 Cross-lingual Knowledge Graph Alignment via Graph Convolutional Networks 基于图卷积网络的跨语言知识图谱对齐 Abstract 多语言知识图&#xff08;KGs&#xff09;&#xff0c;如DBpedia和YAGO&#xff0c;包含几种不同语言的实体结构化知识&#xff0c…

linux arm64 opencv 使用MJPG获取摄像头图片

先上代码 #include <opencv2/opencv.hpp>cv::VideoCapture capture(9, cv::CAP_V4L2);if (!capture.isOpened()){qDebug() << "打开摄像头失败";return -1;}if(1){// 设置为 MJPG (Motion-JPEG, compressed)qDebug() << "MJPEG:" <…

墨菲安全在软件供应链安全领域阶段性总结及思考

向外看&#xff1a;墨菲安全在软件供应链安全领域的一些洞察、思考、行动 洞察 现状&挑战&#xff1a; 过去开发安全体系是无法解决软件供应链安全问题的&#xff1b;一些过去专注开发安全领域的厂商正在错误的引导行业用开发安全思维解决软件供应链安全问题&#xff0c;治…

树形递归模板

详情参考CSDN链接: https://www.cnblogs.com/lidar/p/12972792.html public class Menu {// 菜单idprivate String id;// 菜单名称private String name;// 父菜单idprivate String parentId;// 菜单urlprivate String url;// 菜单图标private String icon;// 菜单顺序private …