一、大纲

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】十五、深度学习的高效算法和硬件设计_一只神秘的大金毛_新浪博客...

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

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

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

  3. 吃瓜笔记 | Momenta王晋玮:让深度学习更高效运行的两个视角

    主讲人:王晋玮 | Momenta合伙人 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 2月1日晚,量子位·吃瓜社联合Momenta带来吃瓜社第五期:让深度学习更高效运行的两个视角. 作为顶 ...

  4. 看看数据科学家们都在用什么:Github上的十大深度学习项目

    本文作者Matthew May是一位正在进行并行式机器学习算法研究的计算机硕士研究生,同时Matthew也是一位数据挖掘研习者,数据发烧友,热忱的机器学习科学家.开源工具在数据科学工作流中起到了愈发重 ...

  5. 三维图形几何变换算法实验_基于深度学习的三维重建算法综述

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 00 前言 目前,三维重建技术已在游戏.电影.测绘.定位.导航.自动驾驶.VR/AR.工业制造以 ...

  6. Github十大深度学习项目

    Github十大深度学习项目,其中包含了大量的代码库,框架以及学习资料.看看Github上的人们都在使用哪些工具,都在从哪些资源那里进行学习.最新KDnuggets软件调查结果表明,在过去12个月,7 ...

  7. 三维重建 几何方法 深度学习_三维重建算法综述|传统+深度学习方式

    作者:CJB Date:2020-2-21 来源:基于深度学习的三维重建算法综述 欢迎加入国内最大的3D视觉交流社区,1700+的领域从业者正在共同进步~ 00 前言 01 基于传统多视图几何的三维重 ...

  8. 第十五周学习周报(20180611-20180617)

    第十五周学习周报 一.本周学习情况 1.本周主要学习李宏毅老师的机器学习课程 Backpropagation Convolutional Neural Network Semi-supervised ...

  9. 专访DeepID发明者孙祎:关于深度学习与人脸算法的深层思考

    专访DeepID发明者孙祎:关于深度学习与人脸算法的深层思考 发表于2015-11-18 09:51 作者周建丁 CNN卷积神经网络DeepID人脸算法深度学习孙祎Linkface 摘要:DeepID ...

最新文章

  1. signature=eddfa127dafaf9a7c1ea87598961fbc9,Slingerende vrachtwagens verleden tijd?
  2. 用python修改文件内容修改txt内容的3种方法
  3. 并行和并发有什么区别?
  4. 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...
  5. 【C++】位运算实现加减乘除
  6. linux 内核 发送数据类型,Linux内核数据类型及跨平台
  7. 导航条——flash导航条
  8. iOS 性能优化:Instruments 工具的救命三招
  9. PHP判断请求来自哪个操作系统
  10. Matlab 中文版下载,安装图文教程
  11. 3D模型实现「唱、跳、Rap、篮球」
  12. Win7/Vista激活后添加grub引导Linux最简单方法!无需命令行!
  13. java静态变量、静态方法、代码块、main方法
  14. 韩语计算机级词汇表,韩语topik中级全部单词打印版.pdf
  15. 大数据变现的九种商业模式
  16. 【报错解决】telnet时报错:无法打开到主机的连接,在端口23连接失败
  17. [CodeForces908G]New Year and Original Order
  18. 机器学习深度学习经典资料汇总
  19. Android支持多国语言
  20. 从《我的前半生》看项目经理如何年入百万—光环国际PMP

热门文章

  1. 高晓松50岁生日感言:可感恩的很多,可原谅的很少
  2. android 来电解锁,带你解锁手机隐藏黑科技,极少人知道!
  3. 如何理解statsmodels.ols的输出结果?ols计算的线性回归结果以及手动计算的结果的对比
  4. NAGVIS安装详解
  5. 【黑马】Java基础从入门到起飞目录合集
  6. 迅雷软件一直出现崩溃问题的解决方法
  7. IR2110自举电容充电原理
  8. 数据模型是什么,有哪些常见的分析方法? 财务、人力、运营等数据分析人士必看!(内附2000+套数据可视化模版)
  9. Origin色卡(oth、pal格式)
  10. php 面试,PHP 经典面试题集