SPINN:基于设备和云的神经网络协同递进推理
SPINN:基于设备和云的神经网络协同递进推理
论文标题:SPINN: synergistic progressive inference of neural networks over device and cloud
原文链接:https://dl.acm.org/doi/10.1145/3372224.3419194
论文动机
-
现代CNN过多的计算需求,阻碍了CNN驱动的应用部署在资源受限的移动设备上,仅在边缘设备上维持高性能的推理是非常困难的,边缘设备难以支持CNN工作负载的性能需求。目前有如下的解决方案:
- 方案一:以云作为计算中心,边缘设备收集到的输入会被传到远程服务器上,使用强大的加速器进行CNN推理。**缺点是:**对服务器有着较高的负担,云执行高度依赖动态的网络条件,一旦网络环境变差,性能会急剧下降。
- 方案二:通过边云协同进行CNN推理。将CNN作为一张计算图,将其化分给设备和云,客户端执行模型的第一部分,并将结果传输给服务器,服务器继续模型的执行,并将结果返回给设备。这种方案允许根据平台的能力调整将在每个平台上执行的CNN部分,但同样存在依赖网络条件的问题。
- 方案三:论文中提出的方法——SPINN,采用渐进式推理。SPINN是一种分布式系统,可以在高动态环境中实现鲁棒CNN推理,通过渐进推理的新颖调度器实现,允许系统在推理过程中,根据输入的复杂性在CNN的不同部分提前推出,并且实现了对早期退出策略和CNN分离的协同优化。减轻了对可靠的设备-服务器通信的硬性要求。
-
现存的解决方案对比图:
系统组件
- SPINN架构示意图:
渐进式推理模型生成器
-
作用:给定一个CNN模型,SPINN推导出一个渐进推理网络。
-
以FLOP计数,沿着体系结构的深度以相等的距离放置中间类,为了保证模型能够收敛,SPINN使用了6个"early exist",分别在体系结构的15%、30%、45%、60%、75%、90%的位置。
-
从头开始联合培训所有的中间类,为了解决"overthinking"问题,即中间结果正常,更深层结果反而异常的情况,作者引入了成本函数。
-
对于提前退出测量,作者使用了一个可调阈值 t h r c o n f thr_{conf} thrconf来决定输入从哪个"early exist"退出,同时使用softmax来计算各个"early exist"的预测置信度,如果某个"early exist"的预测置信度高于阈值,那输入就从这个"early exist"退出。
-
下图分别展示了不同阈值对模型的准确率和退出率的影响,从图中可看出,阈值越大,模型准确率越高,而更多的阈值会导致更多的样本退出,所有阈值是一个提到参数,可以控制精度和总体处理时间。
模型分离
-
作用:在从原始CNN派生出渐进推理模型之后,接下来要将模型分散到客户端和服务器上。
-
首先考虑分割点的数目。以层的粒度考虑分裂,对于一个N层的模型,有N-1个分割点,可产生 2 N − 1 2^{N-1} 2N−1中分裂情况( C N − 1 0 + C N − 1 1 + . . . + C N − 1 N − 1 = 2 N − 1 C_{N-1}^0+C_{N-1}^1+...+C_{N-1}^{N-1}=2^{N-1} CN−10+CN−11+...+CN−1N−1=2N−1),但考虑到云服务器处理能力强大,并且边云通信会产生不少成本,因此作者只选择了一个分割点。
-
其次考虑分裂的层。分割点的输出值需要从边侧传输到云端,而网络的不同层分裂后,具有不同的传输成本和压缩潜力,而Relu层会将负数限制为0,因此具有更好的压缩潜力,所有作者选择在Relu层分裂。
-
下图展示了不同的分割点,客户端计算时间、服务器计算时间和传输时间的变化:
分析器
- 作用:为了确定模型的参数值,比如分离点、置信度阈值等,需要对模型的各项指标进行分析。
- 首先在离线状态下,首先分析和设备无关的指标,包括CNN特有的指标,例如不同分割点下传输的数据大小,不同阈值下模型的平均精度,这些指标只会在模型部署前测量一次,然后分析器会通过测量CNN每层的平均执行时间,来获得每个设备特定的延迟估计。
- 运行时状态下,分析器会通过定期监控设备和服务器负载以及连接条件来更新离线的延迟估计。
动态调度器
-
作用:在得到分析器的分析结果后,动态调度器负责在设备和云之间分配计算量,并决定提前退出策略,目标时产生满足应用程序需求的高性能配置。
-
调度器结合了硬约束和软目标。
-
指标集:定义指标 M = { 延迟,吞吐量、服务器成本、设备成本、准确率 } M=\{延迟,吞吐量、服务器成本、设备成本、准确率\} M={延迟,吞吐量、服务器成本、设备成本、准确率},目前已经分析获得指标值集合
-
硬约束:定义一个硬约束为 C i = { M , o p , t h r } C_i = \{M, op, thr\} Ci={M,op,thr},其中 M M M是一个给定的指标值。
-
软目标:定义一个软目标 O i = { M , m i n o r max o r v a l u e } O_i = \{M, min\ \ or \ \max\ \ or \ value \} Oi={M,min or max or value},其中 M M M是一个给定的指标值
-
-
动态调度器的算法执行过程:
- 首先根据设备和服务器负载以及网络连接状态更新参数值,得到若干个解
- 然后根据设定的硬约束丢弃所有不可行解,其中可行解会同时满足所有硬约束
- 最后根据软目标得到最优参数值
CNN通信优化器
- 作用:CNN层通常会产生大量的中间数据,这在网络传输方面带来很大代价,通信优化器模块(CNN-CO)可以缓解这一瓶颈。
- CNN-CO分为两个阶段:
- 在第一阶段使用了数据的精度表示,将数据数据精度由32为浮点位降低到8位定长数,在保持数据不会丢失太多的情况下减少了数据传输量,并且不会对模型的准确性产生太大影响。
- 在第二阶段,由于现代CNN中广泛使用了Relu激活层,Relu层很大一部分激活值都是0,稀疏且容易压缩,并且由于精度下降,稀疏性进一步放大,作者使用了带位压缩的LZ4压缩器来实现压缩。
分布式执行引擎
- 作用:减少数据传输和冗余的计算量。
- 通过将模块和张量操作替换为自定义包装器,来拦截它们的函数,然后在网络执行的特定时间点完成相应的操作,包括:正常执行、卸载执行、恢复执行、提前退出。
总结
- 目前CNN的部署包括两个模型的维护:一个是在云端的大型、高精度模型,一个是在设备上的小型、低精度模型。设计训练出大型模型后,需要对大型模型进行压缩,以获得轻量型模型,压缩是一项艰巨的任务,并且压缩造成的精度损失需要在轻量级模型中调整。
- SPINN可以解决上诉问题,SPINN会为其量身定制部署网络,部署后,调度器会根据估计的网络延迟、设备和服务器负载来调整模型,以实现在不同设置的先进系统上提供更高的性能。
- 目前SPINN还存在一定的局限性,比如:虽然SPINN支持在网络中任意层进行拆分,但是由于Relu层的稀疏性和高度可压性,作者将分割点限制在Relu层。
相关文章:

SPINN:基于设备和云的神经网络协同递进推理
SPINN:基于设备和云的神经网络协同递进推理 论文标题:SPINN: synergistic progressive inference of neural networks over device and cloud 原文链接:https://dl.acm.org/doi/10.1145/3372224.3419194 论文动机 现代CNN过多的计算需求&am…...

数据结构-二叉树
数据结构-二叉树 二叉树的概念二叉树的遍历分类 建立二叉树,并遍历二叉树的最小单元二叉树的最小单元初始化初始化二叉树前序遍历的实现中序遍历的实现后序遍历的实现计算节点的个数计算树的深度求第k层的个数查找二叉树的元素分层遍历 全部代码如下 二叉树的概念 二…...

Open3D 进阶(4)高斯混合点云聚类
目录 一、算法原理1、原理概述2、实现流程3、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 1、原理概述 高斯混合聚类(GMM)算法假设数据点是由一个或多个高斯分布生成的,并通过最大似然估计的方法来估计每个簇…...
计算机组成和IO
文章目录 计组和Epoll:计算机组成原理:网络数据接收的流程:内核如何管理socket以及状态的更新select系统调用的复杂度epoll的et和lt模式及java的选择 国内访问chatai就可以 https://aiweb.douguguo.com/?typeadd计组和Epoll: 计…...

STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用
———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动&#x…...
系统设计类题目汇总
1 设计一个系统统计当前时刻北京用户在线人数 【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态) 1.1 方案一: 在用户登录时,使用 Redis SET 将用户 ID 添加到一个特定的键(例如 “online:beijing”)。用户退出时&…...

css滚动条样式指南
css滚动条样式指南 滚动条是网页设计中经常被忽视的元素。虽然它看起来像是一个小细节,但它在网站导航中起着至关重要的作用。默认的滚动条可能看起来不合适,有损整体美观。本文将介绍如何使用 CSS 自定义滚动条。 在 Chrome、Edge 和 Safari 中设置滚…...
vue子组件修改父组件传递的变量(自定义日期时间组件,时间间隔为15分钟或者一个小时)
vue子组件修改父组件传递的变量 子组件不能直接修改父组件变量的值,但是可以通过调用父组件的方法来修改。 实现步骤 在父组件声明变量 export default {data() {return {startTime:"",......},......} }在父组件使用子组件并传递数据,修改…...
【PyTorch】nn.Conv2d函数详解
nn.Conv2d 是 PyTorch 中的一个卷积层,用于实现二维卷积操作 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone )参数解释 in_channels:输入的通…...

数智保险 创新未来 | GBASE南大通用亮相中国保险科技应用高峰论坛
本届峰会以“数智保险 创新未来”为主题,GBASE南大通用携新一代创新数据库产品及金融信创解决方案精彩亮相,与国内八百多位保险公司高管和众多保险科技公司技术专家,就保险领域数字化的创新应用及生态建设、新一代技术突破及发展机遇、前沿科…...
分布式天梯图算法在 Redis 图数据库中的应用
分布式天梯图算法在 Redis 图数据库中的应用 一、简介1 天梯图算法2 天梯图算法在Redis的应用 二、Redis分布式天梯图算法设计与优化1 基于天梯图的分布式算法设计2 多节点扩展与负载均衡优化3 数据存储方案与压缩策略 三、技术实现3.1 系统架构设计3.2 技术选型3.3 关键实现细…...

观察者模式——对象间的联动
1、简介 1.1、概述 在软件系统中,有些对象之间也存在类似交通信号灯和汽车之间的关系。一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,正所谓“触一而牵百发”。为了更好地描述对象之间存在的这种一…...

【雕爷学编程】Arduino动手做(189)---特别苗条,使用微波传感器控制的纤细小车
装修屋子,找了一段墙面布线槽,外槽宽度只有23毫米,截取一段长为24厘米,尝试做个苗条小车 先在线槽上安装了二只N20小电机 装上二个快餐盒盖做轮子 测试一下使用3.7V锂电池的动力系统(视频) https://v.youk…...
机器学习基础算法及其实现
线性回归 知识点: 1. 线性回归模型可以使用不同的目标函数,最常用的是最小二乘法、最小绝对值法和最大似然法。 2. 在最小二乘法中,目标是最小化实际值与预测值之间的误差平方和,这可以通过求导数等方法来求解。 3. 在最小绝对值…...

docker安装MinIO
简介 Minio 是一个面向对象的简单高性能存储服务。使用 Go 语言编写,性能高、具有跨平台性。 Minio 官网为:https://min.io ,有一个中文站点,单内容更新不是很及时,建议从原始官网学习。 本文采用 Docker 安装&…...

第5章 运算符、表达式和语句
本章介绍以下内容: 关键字:while、typedef 运算符:、-、*、/、%、、--、(类型名) C语言的各种运算符,包括用于普通数学运算的运算符 运算符优先级以及语句、表达式的含义 while循环 复合语句、自动类型转换和强制类型转换 如何编写…...

24考研数据结构-图的存储结构邻接矩阵
目录 6.3 储存结构(邻接表表示法)1. 储存方式2. 结构3. 图的邻接表存储表示(算法)4. 结论5. 邻接矩阵和邻接表的对比邻接矩阵优点:缺点: 邻接表优点:缺点: 邻接矩阵与邻接表的关系 6…...

在线推算两个日期相差天数的计算器
具体请前往:在线推算两个日期相差天数的计算器...

Spring源码解析(七):bean后置处理器AutowiredAnnotationBeanPostProcessor
Spring源码系列文章 Spring源码解析(一):环境搭建 Spring源码解析(二):bean容器的创建、默认后置处理器、扫描包路径bean Spring源码解析(三):bean容器的刷新 Spring源码解析(四):单例bean的创建流程 Spring源码解析(五)&…...

【C#学习笔记】引用类型(1)
文章目录 引用类型class匿名类 记录引用相等和值相等record声明 接口delegate 委托合并委托/多路广播委托 引用类型 引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包含其数据。 对于引用类型,两种变量可引用同一对…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...