一、大纲

emmm,硬件及算法加速部分是博主实验室的主要研究领域,总算可以多说点体会而不是疯狂翻译和贴图了。
主讲人是韩松,清华电子系本科,Stanford Phd,深鉴科技创始人之一,主要工作在深度学习的算法和硬件。
内容主要分为四个部分(2x2):算法优化(训练、推理),硬件优化(训练、推理)。也是科研的四个大方向。

二、第一部分:Algorithms for Efficient Inference
这一大类可以分为6个思路:
1. Pruning; 
2. Weight Sharing; 
3. Quantization; 
4. Low Rank Approximation; 
5. Binary/Ternary Net; 
6. Winograd Transformation.
内容和一篇模型压缩的综述论文比较相似,想要参看具体一些前沿工作的内容,可以参考文献:《Model Compression and Acceleration for Deep Neural Networks》
1、Pruning (应该可以翻译为 剪枝)
1989由LeCun提出。剪枝的过程同样有生物学上的支持,出生时人脑有50T的突触、在一岁的时候达到1000T,然后到了成年以后降低为500T。
已有很多实验证明,神经网络结构是存在大量的冗余的,从信息论上来说就是网络结构可以有效表示的信息量远超所需要学习的信息量,所以通过剪掉网络中信息量很小的连接,对于网络精度几乎没有降低,同时还可以降低模型复杂度、预防过拟合等好处。
过程是:训练连接、剪掉多余连接、训练权重。然后2、3步循环。

使用在RNN和LSTM上,也是有效的:

剪枝过程会改变权值的分布。
2、权值共享 Weight Sharing
现在通过剪枝,有了更少的参数量,那么现在我们考虑更少的bit per parameter。
2.09、2.12、1.92、1.87 -> 2.0 我们的想法就是Cluster the Weights。
举个栗子:
对于推理过程,我们对weights 进行k-means clustering,建立一个2bit的字典book索引,以及存储他们的均值。(减少16X的存储空间)
对于反向传播过程,我们将有同样的index的梯度,求和并更新Centroids的值。
在这种trained quantizaiton方法下,权重的分布由连续变为离散。栗子中为16个分立的值,所以可以用4bit来表示。
        
通过实验,寻找最优的表示位数,前面是CNN,后面是全连接网络。

结合上述两种方法,甚至可以将模型压缩到3%左右。

2.1 哈弗曼编码 Huffman Coding
基本思想是:
不常见的权值 In-frequent weights :  使用更多的bit来表示;
常见的权值 : 更少的bit;
结合这三种方法,可以达到非常brilliant的压缩率。(不损失精度,还可以提升一点精度)
2.2 SqueezeNet
上述方法都是使用的预训练的模型。假如直接根据压缩的思想来设计CNN框架。
使用1x1的Squeeze Layer在3x3conv之前,减少channel数。然后一个类似Inception model的结构,只用了1x1和3x3的conv。
全网络都是使用conv,没有全连接fc,最后一层是一个全局pooling。
针对这样一个已经紧凑设计的网络(未压缩之前,size是4.8M,是AlexNet的1/50),进行compression。结果是压缩完只需要0.47M的size。
3、Quantization
实验结果:
4、低秩分解 low rank approximation
一个conv layer 可以分解为 两个不同卷积核的conv layers。

实验结果:

若要用在FC layer,一个简单的想法是用SVD将一个矩阵分解为2个矩阵。
5、二值/三值网络 
近期的工作,训练阶段仍使用全精度;在推理阶段,使用三值权重。(最好检索一下 TTQ Kernel)
在ImageNet上的精度还不是很好。

6、Winograd Transformation

是一种降低卷积计算算法强度的方法,论文参见《Fast Convolution for CNN》。已经在cuDNN5 框架中采用,对比cuDNN 3 有着60%-100%的性能提升。
三、Hardware for inference
举了几个ASIC的例子,MIT的经典之作Eyeriss,中科院的DaDiannao,Google的TPU和Stanford的EIE。
都旨在解决一个重要的问题:减少Memory Access 来降低功耗。
Google 的TPU的参数:
接下来将如何设计高效的硬件for inference:以他自己的EIE(Efficient Inference Engine)为例
思想就很简单,略过稀疏,和共享权值。
一个具体的稀疏的矩阵乘法,逻辑和硬件计算如下图:
硬件上,只存储非零权值,
使用一个查找表(lookup table)来解码一个四位的weight 到16bit 的weight。4位的相对index通过地址累加器,得到16位的绝对index地址。

然后对比了CPU、GPU的速度,还有其他ASIC的能耗、速度。总之他的EIE是最好的(手动斜眼)。

四、Algorithms for Efficient Training
分为四个小点:
1、Parallelization
2、Mixed Precision with FP16 and FP32
3、Model Disitillation
4、DSD : Dense-Sparse-Dense Training
1、Parallelization 并行化
首先老生常谈:摩尔定律已死。然后讲并行化的大势所趋。
数据并行化     一个简单的想法 : 协同权重更新 
由一个 master sever来负责梯度更新,其余的sever进行并行的前向计算loss。
模型并行化     另一个想法是: 将模型在多核上并行化
将一个输入图像分割成2x2的小格子,全连接就直接分切矩阵。
超参并行        第三个想法:并行化训练,尝试不同的超参
总结如下:
2、Mixed Precision with FP16 and FP32
这个还是比较老的工作,具体思想如下,在不同的阶段用更适合的精度:
这篇文章,博主恰好看过,详细介绍见另一篇博客【百度、NV】混合精度训练。
基本没有精度损失,甚至使得精度更优。
3、模型蒸馏  Model Distillation
前两天听一位交大的教授介绍过,他们组想要通过信息论的角度,定量分析神经网络的信息容量,因为实验证明,现在的超深的网络(比如ResNet动辄上百层)往往是信息容量过剩的,通过师生网络,可以通过深网络训练一个很小的网络,同时能够使得小网络的性能达到深网络的性能。
师生网络:
思想是,使用软化的(形象一点就是  数据上更模糊的)output来训练学生网络:

软化如下(和Batch norm挺像的,基本的变换的思路,即Softmax):

学生网络仅训练了3%的数据,即达到了收敛,精度仅掉了2%。
4、DSD : Dense-Sparse-Dense Training  又是大神的近期工作 orz
在剪枝的时候看到过,如下图,如果再让它变得Dense,增加它的细节表达能力:
大概的意思是啥呢?  就是好比先画一棵树,先画了个枝干,然后再画树叶。
在不同的网络下,增加了1%-4%的精度。  ???感觉怪怪的。
五、Hardware for Efficient Training
1、GPU (N卡党的胜利)   ——   TITAN V 和 V100 炸天。
   

Volta架构  优化了Tensor Core。

性能对比 (都是图  快速略过)


2、TPU

【CS231n】十五、深度学习的高效算法和硬件设计_一只神秘的大金毛_新浪博客...相关推荐

  1. 【CS231n】五、卷积神经网络简介CNN学习笔记_一只神秘的大金毛_新浪博客

    1.历史简介 The Mark 1 Perceptron machine was the first implementation of the perceptron algorithm.  其只有f ...

  2. 【CS231n】十五、深度学习的高效算法和硬件设计

    一.大纲 emmm,硬件及算法加速部分是博主实验室的主要研究领域,总算可以多说点体会而不是疯狂翻译和贴图了. 主讲人是韩松,清华电子系本科,Stanford Phd,深鉴科技创始人之一,主要工作在深度 ...

  3. 基于人工智能深度学习和经典算法的药物设计软件MolAICal

    使用MolAICal进行药物设计 MolAICal简介 MolAICal 教程 MolAICal开发版(Development version)教程 MolAICal简介 MolAICal可以通过人工 ...

  4. [转载]总结-七大人生工具_李晓瑞_廊坊师范提高班十五期_新浪博客

    高效能人士的好习惯,我们要多实践. 原文地址:总结-七大人生工具作者:李英杰-廊坊师院提高班十五期 一.SWOT分析法 Strengths:优势 Weaknesses:劣势 Opportunities ...

  5. [转载]为什么有人工作10年仍不是专家,有人2年就足够卓越了?_李晓瑞_廊坊师范提高班十五期_新浪博客...

    原文地址:为什么有人工作10年仍不是专家,有人2年就足够卓越了?作者:张铎-廊坊师院提高班十五期 如何成为一个领域的专家? 有人说主要靠经验,有人说靠天赋,但是大量的研究发现:不论是经验还是天赋,都不 ...

  6. 某人写的openCV学习笔记_拔剑-浆糊的传说_新浪博客

    http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之前看到过C版本的,感觉写的很长,没有仔细看,但是C ...

  7. 学习大数据方向_李孟_新浪博客

    大数据指无法用传统数据库软件工具对其内容进行抓取.管理和处理的大体量数据集合. 海量数据处理指判断数据的价值. 一.海量数据分成两块,一是系统建设技术,二,海量数据应用. 目前我了解大数据的职位: 大 ...

  8. 一场思维导图的盛宴_李晓瑞_廊坊师范提高班十五期_新浪博客

    全局观 起初,老师讲到赵括纸上谈兵,白起的全局观.纸上谈兵倒是听说过,但白起确实不太了解,这让我这个学识才浅的girl有些懵,紧接着我就百度了一下这两位历史人物,这才明白了老师的意思. 赵括作为赵王任 ...

  9. 罗塞塔总结_李晓瑞_廊坊师范提高班十五期_新浪博客

    罗塞塔 这是一个神奇的软件 安装: 安装上经历了需要驱动安装,再到免驱动安装.说明时代是在不断进步的,不过我一直是软件的使用者,我并不知道免驱动版本的罗塞塔是从哪里来的,这件事值得思考一下. 这一点特 ...

最新文章

  1. 适合小团队作战,奖金+招聘绿色通道,这一届算法大赛关注下?
  2. Github 上特别火的 7 个学习 Python 编程的开源仓库
  3. RDD基本转换操作:zipWithIndex、zipWithUniqueId
  4. makefile深度学习(一个工程实例来学习 Makefile)
  5. 【引用】如何结束线程运行(转)
  6. Kafka万亿级消息实战解决方案干货
  7. 【华为云技术分享】如何使用pyCharm与ModelArts公有云服务联动开发,快速且充分地利用云端GPU计算资源
  8. 2015计算机考研重点,2015考研计算机复习:数据结构重点归纳_跨考网
  9. 非负矩阵分解 NMF(Non-negative Matrix Factorization )
  10. 【springBoot测试】【自定义配置】使用SpringBoot测试框架内容
  11. 解决Cannot resolve com.lowagie:itext:2.1.7.js6以及.net.jf.jasperresport下com.lowagie:itext标红的问题
  12. Java对excel表格操作
  13. 【学习中】layui前端框架
  14. 安卓手游辅助分析与开发!五步搞定Android开发环境部署,深度好文
  15. 计算机数字键盘无法输入数字,键盘无法输入,键盘数字键打不出来
  16. spring boot 1.x和 2.x通过代码修改默认address和端口
  17. 终端I/O之终端标识
  18. Axis1.4发布WebService
  19. 教你一波Lucas(卢卡斯)定理在数论解题中的应用
  20. UDP实现简单通讯(夕佳佳)

热门文章

  1. 判断两个日期间隔是否为7日内
  2. 百度算法最新更新介绍之烽火算法
  3. linux上nagios安装完整版
  4. opencv鱼眼镜头矫正
  5. 汽车诊断协议,(K线/CAN总线、kwp2000、ISO14230、ISO1575...)
  6. python 数据、曲线平滑处理
  7. 2021计算机一级新增知识点,2021年全国计算机等级考试改革有哪些内容
  8. python爬取微博内容_Python 爬虫如何机器登录新浪微博并抓取内容?
  9. kali清理_白帽子教你Kali Linux:如何远程清除计算机日志信息防范被追踪?
  10. linux下的mkfifo 命令