深度学习500问——Chapter17:模型压缩及移动端部署(2)
文章目录
17.4.6 低秩分解
17.4.7 总体压缩效果评价指标有哪些
17.4.8 几种轻量化网络结构对比
17.4.9 网络压缩未来研究方向有哪些
17.5 目前有哪些深度学习模型优化加速方法
17.5.1 模型优化加速方法
17.5.2 TensorRT加速原理
17.5.3 TensorRT如何优化重构模型
17.5.4 TensorRT加速效果如何
17.6 影响神经网络速度的4个因素
17.4.6 低秩分解
基于低秩分解的深度神经网络压缩与加速的核心思想是利用矩阵或张量分解技术估计并分解深度模型中的原始卷积核。卷积计算是整个卷积神经网络中计算复杂度最高的计算操作,通过分解4D卷积核张量,可以有效减少模型内部的冗余性。
此外,对于2D的全连接层矩阵参数,同样可以利用低秩分解技术进行处理。但由于卷积层与全连接层的分解方式不同,本文分别从卷积层和全连接层2个不同角度回顾与分析低秩分解技术在深度神经网络中的应用。
在2013年,Denil等人[57]从理论上利用低秩分解的技术并分析了深度神经网络存在大量的冗余信息,开创了基于低秩分解的深度网络模型压缩与加速的新思路。如图7所示,展示了主流的张量分解后卷积计算。
(出自《深度神经网络压缩与加速综述》)
17.4.7 总体压缩效果评价指标有哪些
网络压缩评价指标包括运行效率、参数压缩率、准确率,与基准模型比较衡量性能提升时,可以使用提升倍数(speedup)或提升比例(ratio)。
评价指标 | 特点 |
---|---|
准确率 | 目前,大部分研究工作均会测量Top-1准确率,只有在ImageNet这类大型数据集上才会只用Top-5准确率,为方便比较 |
参数压缩率 | 统计网络中所有可训练的参数,根据机器浮点精度转换为字节(byte)量纲,通常保留两位有效数字以作近似估计 |
运行效率 | 可以从网络所含浮点运算次数(FLOP)、网络所含乘法运算次数(MULTS)或随机实验测得的网络平均前向传播所需时间这3个角度来评价 |
17.4.8 几种轻量化网络结构对比
网络结构 | Top1准确率/% | 参数量/M | CPU运行时间/ms |
---|---|---|---|
MobileNet V1 | 70.6 | 4.2 | 123 |
ShuffleNet(1.5) | 69.0 | 2.9 | - |
ShuffleNet(x2) | 70.9 | 4.4 | - |
MobileNet V2 | 71.7 | 3,4 | 80 |
MobileNet V2(1.4) | 74.7 | 6.9 | 149 |
17.4.9 网络压缩未来研究方向有哪些
网络剪枝、网络蒸馏和网络分解都能在一定程度上实现网络压缩的目的。回归到深度网络压缩到本质目的上,即提取网络中的有用信息,以下是一些值得研究和探寻的方向。
(1)权重参数对结果的影响度量。深度网络的最终结果是由全部的权重参数共同作用形成的,目前,关于单个卷积核/卷积核权重的重要性的度量仍然是比较简单的方式。尽管文献[14]中给出了更为细节的分析,但是由于计算难度大,并不实用。因此,如何通过有效的方式来近似度量单个参数对模型的影响,具有重要意义。
(2)学生网络结构的构造。学生网络的结构构造目前仍然是由人工指定的,然而,不同的学生我网络结构的训练难度不同,最终能够达到的效果也有差异。因此,如何根据教师网络结构设计合理的网络结构在精简模型的条件下获取较高的模型性能,是未来的一个研究重点。
(3)参数重建的硬件架构支持。通过分解网络可以无损地获取压缩模型,在一些对性能要求高的场景中是非常重要的。然而,参数的重建步骤会拖累预测阶段的时间开销,如何通过硬件的支持加速这一重建过程,将是未来对研究方向。
(4)任务或使用场景层面的压缩。大型网络通常是在量级较大的数据集上训练完成的,比如,在ImageNet上训练的模型具备对1000类物体的分类,但在一些具体场景的应用中,可能仅需要一个能识别其中几类的小型模型。因此,如何从一个全功能的网络压缩得到部分功能的子网络,能够适应很多实际应用场景的需求。
(5)网络压缩效用的评价。目前,对各类深度网络压缩算法的评价是比较零碎的,侧重于和被压缩的大型网络在参数量和运行时间上的比较。未来的研究可以从提出更加泛化的压缩评价标准出发,一方面平衡运行速度和模型大小在不同应用场景下的影响;另一方面,可以从模型本身的结构性出发,对压缩后的模型进行评价。
17.5 目前有哪些深度学习模型优化加速方法
https://blog.csdn.net/nature553863/article/details/81083955
17.5.1 模型优化加速方法
模型优化加速能够提升网络的计算效率,具体包括:
(1)Op-level的快速算法:FFT Conv2d(7x7,9x9),Winograd Conv2d(3x3,5x5)等;
(2)Layer-level的快速算法:Sparse-block net[1] 等;
(3)优化工具与库:TensorRT(Nvidia),Tensor Comprehension(Facebook)和Distiller(Intel)等。
17.5.2 TensorRT加速原理
https://blog.csdn.net/xh_hit/article/details/79769599
在计算资源并不丰富的嵌入式设备上,TensorRT之所以能加速神经网络的推断主要得益于两点:
- 首先是TensorRT支持int8和fp16的计算,通过在减少计算量和保持精度之间达到一个理想的trade-off,达到加速推断的目的。
- 更为重要的是TensorRT对于网络结构进行了重构和优化,主要体现在以下几个方面:
(1)TensorRT通过解析网络模型将网络中无用的输出层消除以减小计算。
(2)对于网络结构的垂直整合,即将目前主流神经网络的Conv、BN、Relu三个层融合为了一个层,例如将图1所示的常见的Inception结构重构为图2所示的网络结构。
(3)对于网络结构的水平组合,水平组合是指将输入为相同张量和执行相同操作的层融合在一起,例如图2向图3的转化。
图1
图2
图3
以上3步即是TensorRT对于所部属的深度学习网络的优化和重构,根据其优化和重构策略,第一和第二步适用于所有的网络架构,但是第三步则对于含有Inception结构的神经网络加速效果最为明显。
Tips:想更好地利用TensorRT加速网络推断,可在基础网络中多采用Inception模型结构,充分发挥TensorRT的优势。
17.5.3 TensorRT如何优化重构模型
条件 | 方法 |
---|---|
若训练的网络模型包含TensorRT支持的操作 | 1、对于Caffe与TensorFlow训练的模型,若包含的操作都是TensorRT支持对,则可以直接由TensorRT优化重构; 2、对于MXnet、PyTorch或其他框架训练的模型,若包含的操作都是TensorRT支持的,可以采用TensroRT API重建网络结构,并间接优化重构; |
若训练的网络模型包含TensorRT不支持的操作 | 1、TensorFlow模型可通过tf.contrib.tensorrt转换,其中不支持的操作会保留为TensorFlow计算节点; 2、不支持的操作可通过Plugin API实现自定义并添加进Tensor计算图; 3、将深度网络划分为两个部分,一部分包含的操作都是TensorRT支持的,可以转换为TensorRT计算图。另一部分则采用其他框架实现,如MXnet 或 PyTorch; |
17.5.4 TensorRT加速效果如何
以下是在TitanX(Pascal)平台上,TensorRT对大型分类网络的优化加速效果:
Network | Precision | Framework/GPU:TitanXP | Avg.Time(Batch=8,unit:ms) | Top1 Val.Acc.(ImageNet-1k) |
---|---|---|---|---|
Resnet50 | fp32 | TensorFlow | 24.1 | 0.7374 |
Resnet50 | fp32 | MXnet | 15.7 | 0.7374 |
Resnet50 | fp32 | TRT4.0.1 | 12.1 | 0.7374 |
Resnet50 | int8 | TRT4.0.1 | 6 | 0.7226 |
Resnet101 | fp32 | TensorFlow | 36.7 | 0.7612 |
Resnet101 | fp32 | MXnet | 25.8 | 0.7612 |
Resnet101 | fp32 | TRT4.0.1 | 19.3 | 0.7612 |
Resnet101 | int8 | TRT4.0.1 | 9 | 0.7574 |
17.6 影响神经网络速度的4个因素
- FLOPs(FLOPs就是网络执行了多少multiply-adds操作);
- MAC(内存访问成本);
- 并行度(如果网络并行度高,速度明显提升);
- 计算平台(GPU,ARM)
相关文章:
深度学习500问——Chapter17:模型压缩及移动端部署(2)
文章目录 17.4.6 低秩分解 17.4.7 总体压缩效果评价指标有哪些 17.4.8 几种轻量化网络结构对比 17.4.9 网络压缩未来研究方向有哪些 17.5 目前有哪些深度学习模型优化加速方法 17.5.1 模型优化加速方法 17.5.2 TensorRT加速原理 17.5.3 TensorRT如何优化重构模型 17.5.4 Tensor…...
【C#】DllImport的使用
DllImport 是 C# 中用于从非托管 DLL(动态链接库)中导入函数的一个特性。这个特性允许你在 .NET 应用程序中调用由其他语言编写的函数,如 C 或 C。使用 DllImport 可以让你重用现有的非托管代码,而不需要重新实现这些功能。 下面…...
基于 Redis 实现滑动窗口的限流
⏳ 限流场景:突发流量,恶意流量,业务本身需要 基于 Redis 实现滑动窗口的限流是一种常见且高效的做法。Redis 是一种内存数据库,具有高性能和支持原子操作的特点,非常适合用来实现限流功能。下面是一个使用 Redis 实现…...
Camera Raw:打开图像
在图像工作流程中,无论是 Raw 格式图像文件还是 JPEG、TIFF 文件,都可以先使用 Camera Raw 打开并调整后,再进入其它 Adobe 软件如 Photoshop 中进行进一步的编辑和处理。 一、打开 Raw 格式图像 1、通过 Adobe Bridge 打开 在 Adobe Bridge …...
RK3588主板PCB设计学习(六)
可以在其它层对过孔进行削盘处理, 可以看到,这里有些过孔用不上,在这一层进行了削盘处理: 对于这种电源层进行铺铜操作的时候,如果不进行削盘处理的话这些焊盘可能导致这个电源层面不完整,存在割裂的风险&a…...
论文阅读(十一):CBAM: Convolutional Block Attention Module
文章目录 IntroductionConvolutional Block Attention ModuleExperimentsConclusion 论文题目:CBAM: Convolutional Block Attention Module(CBAM:卷积注意力机制) 论文链接:点击跳转 代码链接:Git…...
【Kubernetes】常见面试题汇总(四十八)
目录 108.考虑一家拥有非常分散的系统的跨国公司,希望解决整体代码库问题。您认为公司如何解决他们的问题? 109.我们所有人都知道从单服务到微服务的转变从开发方面解决了问题,但在部署方面却增加了问题。公司如何解决部署方面的问题&#x…...
Qt Creator安卓环境配置【筑基篇】
1.前言 由于我的Qt Creator目前就先的14版本IDE老是存在各种莫名奇妙的bug,我都已经成为官方Qt Forum官方论坛的常客了。有一说一新版本的各种设置不小心误触是真的坑死人。不说了给我小主机配置安卓环境了。小主机系统版本window11-23H,Qt-Creator版本是13.01版本…...
利用SpringBoot构建高效社区医院平台
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
【C++ 前缀和 数论】1590. 使数组和能被 P 整除|2038
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 质数、最大公约数、菲蜀定理 LeetCode 1590. 使数组和能被 P 整除 给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空)&am…...
外部引入的 JavaScript 放置位置
部引入的 JavaScript 通常有两种常见的放置位置,每个位置都有其优缺点,具体取决于页面的需求和性能优化目标: 1. 放在页面的 <head> 标签中 这种方式在 HTML 文档的 <head> 部分引入 JavaScript 文件。 <head><scrip…...
【tbNick专享】虚拟机域控、成员服务器、降级等管理
在 VMware 中完成四台域控服务器、一台成员服务器的创建、降级域控为成员服务器,并创建子域的操作。 1. 创建四台域控和一台成员服务器 1.1 在 VMware 中创建虚拟机 启动 VMware Workstation: 打开 VMware Workstation,点击 “创建新的虚拟…...
Raspberry Pi3B+之Rpanion(gst)和ffmpeg验证
Raspberry Pi3B之Rpanion-gst和ffmpeg验证 1. 源由2. 分析3. 环境搭建步骤1:安装镜像步骤2:系统更新步骤3:安装numpy组件步骤4:安装python3-picamera2组件步骤4:安装cv2组件步骤5:安装ffmpeg组件步骤6&…...
数据结构编程实践20讲(Python版)—04队列
本文目录 04 队列 QueueS1 说明S2 示例普通队列循环队列双端队列优先队列S3 问题:基于普通队列实现的打印机任务管理Python3程序S4 问题:使用循环队列管理玩家移动轨迹Python3程序S5 问题:使用双端队列来管理文档操作历史Python3程序S6 问题:使用优先队列管理车辆调度Pytho…...
Ubuntu开机进入紧急模式处理
文章目录 Ubuntu开机进入紧急模式处理一、问题描述二、解决办法参考 Ubuntu开机进入紧急模式处理 一、问题描述 Ubuntu开机不能够正常启动,自动进入紧急模式(You are in emergency mode)。具体如下所示: 二、解决办法 按CtrlD进…...
解决无网条件下离线安装缺失的python包
首先在有网的机器上使用conda create --name xx pythonx.x.x 命令创建一个和目标机器(无网)一样的环境 使用 下面命令 pip download opencv-python -d C:\Users\xuhaitao\Desktop\installer pip download pyinstaller -d C:\Users\xuhaitao\Desktop\installer 在目标…...
海外媒体投稿:如何运用3种国内外媒体套餐发稿突出重围?
在当今瞬息万变的经营环境中,突出重围营销推广是每家企业都需要思考的问题。为了能突出重围并提升影响力,国内外媒体套餐内容成为了一个非常受欢迎的挑选。下面我们就为大家讲解如何运用三种不同种类的国内外媒体套餐内容来推广突出重围。 2.微博营销新浪…...
Spring DI 笔记
目录 1.什么是DI? 2.依赖注入的三种⽅式 2.1属性注⼊ 2.2构造⽅法注⼊ 2.3Setter 注⼊ 2.4三种注⼊优缺点分析 3.Autowired存在问题 1.什么是DI? DI: 依赖注⼊ 依赖注⼊是⼀个过程,是指IoC容器在创建Bean时, 去提供运⾏时所依赖的资源,⽽资源指的…...
psutil库的使用说明
前言 psutil是一个跨平台的库,用于获取系统的进程和系统利用率(包括 CPU、内存、磁盘、网络等)信息。 目录 安装 应用场景 常用方法 一、系统信息相关函数 二、进程信息相关函数 三、网络信息相关函数 四、其他实用函数 使用样例 监控应…...
PMP--三模--解题--71-80
文章目录 7.成本管理--S曲线--S曲线对累计值进行监督和报告--S曲线可以同时报告成本与进度情况。适用于预测和敏捷项目。14.敏捷--信息发射源--是一种可见的实物展示其向组织内其他成员提供信息在不干扰团队的情况下即时实现知识共享。71、 [单选] 项目经理正在为刚刚进入第三次…...
iTextPDF 一个功能强大的 Java PDF 库
iTextPDF 是一个功能强大的 Java PDF 库,它提供了丰富的 API 用于创建和操作 PDF 文档。以下是一些 iTextPDF 的常用功能: 创建 PDF 文档:可以创建新的 PDF 文档,并设置页面大小、边距、背景颜色等 。 添加文本:在 PD…...
QT C++ 自学积累 『非技术文』
QT C 自学积累 『非技术文』 最近一段时间参与了一个 QT 项目的开发,使用的是 C 语法,很遗憾的是我之前从来没有接触过 C ,大学没有开过这堂课,也没用自己学习过,所有说上手贼慢,到现在为止其实也不是很清楚…...
浅谈虚拟内存(操作系统、Redis)
浅谈虚拟内存(操作系统、Redis) 参考&鸣谢 4.1 为什么要有虚拟内存? xiaolincoding 【简单说下】REDIS的虚拟内存机制,会吗?别翻书 aristo_boyunv Redis 虚拟内存 Java杨永杰 浅谈虚拟内存:操作系统与 Redis 在计算机系统中…...
【LeetCode HOT 100】详细题解之链表篇
LeetCode HOT 100题解之链表篇 160 相交链表题目分析代码 206 反转链表方法一:迭代 234 回文链表方法一:将值复制到数组中方法二:快慢指针 141 环形链表方法一:哈希表方法二:快慢指针 142 环形链表II方法一:…...
二叉树的递归遍历
方法论 确定递归函数的参数和返回值 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件 写完了递归算法, 运行的时候,经常会遇到栈溢…...
国内访问OpenAI API
最近在学习LLM。绕不过去的肯定要学习OpenAI。 国内想直接使用官方API十分麻烦。就到处查资料及网友的分享。发现了这个代理可以在国内很方便的使用OpenAI API。 代理的地址如下: https://referer.shadowai.xyz/r/1014150 经过一段实际体验下来,这个…...
深入 Spring RestTemplate 源码:掌握 HTTP 通信核心技术
在上一篇文章《Spring Boot 项目高效 HTTP 通信:常用客户端大比拼!》里,我们提到了RestTemplate,它是Spring框架提供的Http客户端,在springboot项目开发过程中,属于使用最为广泛的 HTTP 客户端之一了。今天…...
计算机网络:计算机网络概述 —— 初识计算机网络
文章目录 计算机网络组成部分网络架构协议与标准网络设备网络类型作用实际应用案例 计算机网络 计算机网络是指将多台计算机通过通信设备和通信链路连接起来,以实现数据和信息的交换和共享的技术和系统。它是现代信息社会的基础设施之一,也是互联网的基…...
set和map结构的使用
个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 目录 一、序列式容器和关联式容器 二、set和multiset 1.insert 2.erase 3.find 4.count 三、map和mapmulti 1.pair 2.insert 3.find 4.operator[ ] 5.erase 6.lo…...
2. qt_c++反射实例
目录 使用场景元对象相关类及宏常用功能获取类相关内容以及委托调用 使用场景 Qt基于强大的元对象系统实现反射机制; 在复杂的开发需求中,我们希望通过一些手段映射出我们的类(映射对象) 然后直接使用,通过࿰…...
个人网站后台模板/成都全网营销推广
安装:在官网https://jenkins.io/ 下载安装包安装完成后,命令行进入安装目录下替换镜像源:打开C:\Users\xxx.jenkins\hudson.model.UpdateCenter.xml文件,将 url 中的 https://updates.jenkins.io/update-center.json 更改为 https…...
永久免费自助建网站/百度快照网站
状态模式: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。 模式分析: 在很多情况下,一个对象的行为取决于一…...
高端企业网站制作/饥饿营销案例
猫咪智能检测仪01产地:德国设备简介运用五色光谱原理,通过100W临床数据,360种皮肤解决方案,从皮肤病理维度、敏感维度、皱纹维度、毛孔维度、色斑维度、粉刺维度、紫质维度7大问题维度进行AI分析,并提供护肤解决方案。…...
公司委托建设网站合同范本/成品短视频网站源码搭建
从上一周周一学习KMP算法之后,每天晚上都失眠到1点过起夜,身体再疲倦脑子都异常清醒,要死了要死了。 kmp算法真的有毒。 这个题,我用优先队列记录最小的下标,用Map记录每个数字是第几天,然后让那个值和队列…...
千万不要去苏州打工/北京seo案例
1.随着微信小程序功能的开发,2.已经可以跟公众号打通了,3.主要有两种方式:4.1)在公众号文章中插入小程序5.2)在公众号菜单中添加小程序6.第一种方式,7.子恒老师在前面的课程已经详细介绍过,8.今天来讲第二种方法&#…...
模板网站制作怎么样/亚马逊关键词快速优化
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。在css文件中,一般来说,是会需要一些图片来丰富其表现能力的。那么,webpack处理完css文件后,图片都是怎…...