1. 简介

深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。

  • 模型压缩算法能够有效降低参数冗余,从而减少存储占用、通信带宽和计算复杂度,有助于深度学习的应用部署,具体可划分为如下几种方法(后续重点介绍剪枝与量化):
  • 线性或非线性量化:1/2bits, int8 和 fp16等;
  • 结构或非结构剪枝:deep compression, channel pruning 和 network slimming等;
  • 其他:权重矩阵的低秩分解,知识蒸馏与网络结构简化(squeeze-net, mobile-net, shuffle-net)等;
  • 模型优化加速能够提升网络的计算效率,具体包括:
  • Op-level的快速算法:FFT Conv2d (7x7, 9x9), Winograd Conv2d (3x3, 5x5) 等;
  • Layer-level的快速算法:Sparse-block net [1] 等;
  • 优化工具与库:TensorRT (Nvidia), Tensor Comprehension (Facebook) 和 Distiller (Intel) 等;
  • 异构计算方法借助协处理硬件引擎(通常是PCIE加速卡、ASIC加速芯片或加速器IP),完成深度学习模型在数据中心或边缘计算领域的实际部署,包括GPU、FPGA或DSA (Domain Specific Architecture) ASIC等。异构加速硬件可以选择定制方案,通常能效、性能会更高,目前市面上流行的AI芯片或加速器可参考 [2]。针对数据中心部署应用,通常选择通用方案,会有较完善的生态支持,例如NVIDIA GPU的CUDA生态,或者Xilinx即将推出的xDNN生态:

2. 网络剪枝

深度学习模型因其稀疏性,可以被裁剪为结构精简的网络模型,具体包括结构性剪枝与非结构性剪枝:、

  • 非结构剪枝:通常是连接级、细粒度的剪枝方法,精度相对较高,但依赖于特定算法库或硬件平台的支持,如Deep Compression [5], Sparse-Winograd [6] 算法等;
  • 结构剪枝:是filter级或layer级、粗粒度的剪枝方法,精度相对较低,但剪枝策略更为有效,不需要特定算法库或硬件平台的支持,能够直接在成熟深度学习框架上运行。如局部方式的、通过layer by layer方式的、最小化输出FM重建误差的Channel Pruning [7], ThiNet [8], Discrimination-aware Channel Pruning [9];全局方式的、通过训练期间对BN层Gamma系数施加L1正则约束的Network Slimming [10];全局方式的、按Taylor准则对Filter作重要性排序的Neuron Pruning [11];全局方式的、可动态重新更新pruned filters参数的剪枝方法 [12];

3. 模型量化

模型量化是指权重或激活输出可以被聚类到一些离散、低精度的数值点上,通常依赖于特定算法库或硬件平台的支持:

  • 二值化网络:XNORnet [13], ABCnet with Multiple Binary Bases [14], Bin-net with High-Order Residual Quantization [15], Bi-Real Net [16];
  • 三值化网络:Ternary weight networks [17], Trained Ternary Quantization [18];
  • W1-A8 或 W2-A8量化: Learning Symmetric Quantization [19];
  • INT8量化:TensorFlow-lite [20], TensorRT [21];
  • 其他(非线性):Intel INQ [22], log-net, CNNPack [23] 等;

参考文献:

其中知识蒸馏相关的讨论可参考:

https://blog.csdn.net/nature553863/article/details/80568658

Discrimination-aware Channel Pruning是一种结合鉴别力感知辅助Loss的分阶段Channel Selection剪枝策略,具体可参考:

https://blog.csdn.net/nature553863/article/details/83822895

References
[1]https://arxiv.org/abs/1801.02108,, Github: https://github.com/uber/sbnet

[3]  https://devblogs.nvidia.com/tensorrt-3-faster-tensorflow-inference/

[4] https://devblogs.nvidia.com/int8-inference-autonomous-vehicles-tensorrt/

[5] https://arxiv.org/abs/1510.00149

[6]  https://arxiv.org/abs/1802.06367,  https://ai.intel.com/winograd-2/, Github: https://github.com/xingyul/Sparse-Winograd-CNN

[7] https://arxiv.org/abs/1707.06168,  Github:https://github.com/yihui-he/channel-pruning

[8] https://arxiv.org/abs/1707.06342

[9] https://arxiv.org/abs/1810.11809, Github: https://github.com/Tencent/PocketFlow

[10] https://arxiv.org/abs/1708.06519,  Github: https://github.com/foolwood/pytorch-slimming

[11] https://arxiv.org/abs/1611.06440,  Github: https://github.com/jacobgil/pytorch-pruning

[12] http://xuanyidong.com/publication/ijcai-2018-sfp/

[13] https://arxiv.org/abs/1603.05279,  Github: https://github.com/ayush29feb/Sketch-A-XNORNet

Github: https://github.com/jiecaoyu/XNOR-Net-PyTorch

[14] https://arxiv.org/abs/1711.11294,  Github:  https://github.com/layog/Accurate-Binary-Convolution-Network

[15] https://arxiv.org/abs/1708.08687

[16] https://arxiv.org/abs/1808.00278, Github:https://github.com/liuzechun/Bi-Real-net

[17] https://arxiv.org/abs/1605.04711

[18] https://arxiv.org/abs/1612.01064,  Github: https://github.com/czhu95/ternarynet

[19] http://phwl.org/papers/syq_cvpr18.pdf,  Github: https://github.com/julianfaraone/SYQ

[20] https://arxiv.org/abs/1712.05877

[21] http://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf

[22] https://arxiv.org/abs/1702.03044

[23] https://papers.nips.cc/paper/6390-cnnpack-packing-convolutional-neural-networks-in-the-frequency-domain

参考:https://blog.csdn.net/nature553863/article/details/81083955

深度学习模型压缩与优化加速相关推荐

  1. 深度学习模型压缩与优化加速(Model Compression and Acceleration Overview)

    1. 简介 深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩.系统优化加速.异构计算等方法突破瓶颈,即分别在算法模型.计算图或算 ...

  2. 深度学习模型压缩与优化方法

    深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩.优化加速.异构计算等方法突破瓶颈. 模型压缩算法能够有效降低参数冗余,从而减少 ...

  3. 深度学习模型压缩与加速

    深度神经网络在人工智能的应用中,包括语音识别.计算机视觉.自然语言处理等各方面,在取得巨大成功的同时,这些深度神经网络需要巨大的计算开销和内存开销,严重阻碍了资源受限下的使用.模型压缩是对已经训练好的 ...

  4. Bert/Transformer模型压缩与优化加速

    前言 Bert/Transformer结构及其变体,已成为自然语言处理 (NLP).语音识别 (ASR)等领域的主流序列建模结构.并且,相比于卷积操作的局部特征提取能力.以及平移不变性,Self-At ...

  5. 深度学习模型压缩与加速综述!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Pikachu5808,编辑:极市平台 来源丨https://zh ...

  6. 深度学习模型压缩与加速综述

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文详细介绍了4种主流的压缩与加速技术:结构优化.剪枝.量化 ...

  7. 一文看懂深度学习模型压缩和加速

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 1 前言 近年来深度学习模型在计算机视 ...

  8. 腾讯 AI Lab 正式开源PocketFlow自动化深度学习模型压缩与加速框架

    11月1日,腾讯AI Lab在南京举办的腾讯全球合作伙伴论坛上宣布正式开源"PocketFlow"项目, 该项目是一个自动化深度学习模型压缩与加速框架,整合多种模型压缩与加速算法并 ...

  9. 端上智能——深度学习模型压缩与加速

    摘要:随着深度学习网络规模的增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用.如何使用深度学习来对模型进行压缩和加速,并且保持几乎一样的精度?本文将为大家详细介绍两种模型压缩算法,并展示 ...

最新文章

  1. 读取jar包资源代码赏析
  2. 凡科虚拟服务器怎样做301,虚拟主机301重定向怎么做?网站301重定向方法之一
  3. 在Git存储库中查找并恢复已删除的文件
  4. 9-基数排序C实现(待补充插图)
  5. 你知道吗?其实 Oracle 直方图自动统计算法存在这些缺陷!(附验证步骤)
  6. 传统服务器性能不足 解决方案,云平台和传统服务器的优劣
  7. 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
  8. OSTimeDlyResume()--恢复一个延迟任务(取消任务延时)
  9. mysql桦仔_Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
  10. #CSP 201509-1 数列分段(100分)
  11. 在项目中使用redis的原因
  12. 7000 亿!华为正式宣布,全世界为之颤抖!
  13. 黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
  14. 【LOJ101】最大流(Edmonds-Karp)
  15. 1. java程序的编译命令_Java中javac、java、javap使用详解(java编译命令)
  16. Qt QDebug 打印自定义结构体
  17. 终端进入服务器,mac使用Shell(终端)SSH连接远程服务器的方法
  18. 路由器连接显示主服务器dns,路由器主dns服务器怎么设置 - 卡饭网
  19. 如何在Google搜索到我的网站?
  20. java 队列线程池_JAVA工作队列与线程池

热门文章

  1. 手机html怎样取消,手机怎么取消wifi隐藏_手机如何取消隐藏wifi?-192路由网
  2. CTO、技术总监和技术经理有啥区别?
  3. 华为交换机如何恢复出厂设置
  4. Eclipse插件开发_学习_02_GEF入门实例
  5. 【单片机毕业设计】【mcuclub-103】智能花盆 | 智能养殖箱 | 多功能花盆 | 多功能养殖箱【实物设计】
  6. iOS UITableView 指定组头悬停位置
  7. 民宿运营经验分享:玩转自我营销,带动流量持续增长
  8. 工具(五)--将doc格式文件批量转为docx
  9. 华为鸿蒙与小米新系统,华为鸿蒙系统硬刚谷歌!小米也发布新系统:却选择和谷歌系统互补...
  10. D3DTOP_DOTPRODUCT3的计算公式