论文笔记 《Fully Quantized network for Object Detection》

这篇论文是发表在CVPR2019的《Fully Quantized network for Object Detection》,作者是上海科技大学的Rundong Li和商汤的闫俊杰,闫俊杰是商汤智能城市商业组的CTO,15年从中科大博士毕业、17年从清华博士后毕业。

这篇论文提出了一些物体检测模型进行了4bit量化(将检测模型的所有层全部量化)的优化算法。具体来说,通过在finetune过程中减少batch normalization的不稳定性、去掉activation的outlier、channel-wise的quantization来增加量化网络的性能。

方法

BN不稳定性

  • batch norm的均值和方差在训练时会变化很大,会对量化造成很大影响
  • 固定均值和方法

Activation的不稳定性

  • activation会有一些outlier、之前方法动态统计的会变化很大
  • 使用一个子数据集,在$γ$和$1-γ$分位数来对activation进行量化

channel-wise的quantization

  • 效果好

实验

  • BN不稳定 AP 0.20->0.24
  • Activation分位数 AP 0.20->0.22
  • Channel-Wise AP 0.20->0.25
  • 总体 0.20->0.29,原始0.32

总结

简单的改进也能取得很大的进步,但在Object Detection上面还是离恢复精度有一定的距离。

论文笔记 《Dynamic Convolution: Attention over Convolution Kernels》

这篇是发表在ECCV2020的文章《Dynamic Convolution: Attention over Convolution Kernels》,作者是微软研究院的Yinpeng Chen、Zicheng Liu等人。

文章为了增加网络的表示复杂性,针对不同的输入样本动态使用不同的卷积核,虽然整个网络计算量不会发生变化,但是网络的复杂性得到提升。

方法

Dynamic Convolution

  • Attention:使用和SE block一样的Global Avg Pool+FC+Softmax的方法
  • Kernel Aggregation:卷积的weight是由多个weight加权得到

Insight

  • Attention的加和为1
  • 在早期训练的epochs里面,用的是接近均值的Attention
  • 这两点是和以前的方法最大的不同

实验

  • ImageNet
    • Each layer has K = 4 convolution kernels
    • DY-ResNet-18
      • 42.7M 1.85G 72.7(提升2.3) (origin 11.1M 1.81G 70.4)
    • DY-MobileNetV2 x1.0
      • 11M Param 312.9M MAC 75.2% top1 (origin 300M 72%)
    • DY-MobileNetV3-Small
      • 4.8M 68.5M 70.3(2.9) (origin 2.9M 66.0M 67.4)
  • COCO 2017 single-person keypoint detection
    • Backbone和head都dynamic AP提到62.8(3.6)
    • 仅Backbone dynamic AP 62.3
    • 仅Head dynamic AP 60.3(1.1)

总结

Kernel级别的Dynamic,不一定要减计算量,增加性能也是另一个方向。

论文笔记 ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

这篇是发表在ICLR2019的论文《ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware》,第一作者是Song Han的19级博士生Han Cai,本科硕士毕业于上海交大。

文章提出了使用sample binary的连接方式来进行One-Shot NAS的训练,从而减少显存开销还有计算开销。

方法

Proxyless

  • 使用sample binary连接的方式,减少训练和计算开销
    • 每层的每一种operation有α的概率被sample出来
    • 相当于用个小网络进行训练部分weight
  • 直接可以搜索所有的block的不同配置
  • 不用在Cifar-10上训练迁移

path-level pruning perspective of NAS

  • 网络的搜索和剪枝类似,去掉相应的连接
  • 步骤
    • 先固定α,训练网络的参数
    • 固定参数,训练α,两种更新方法
      • 1.gradient的方法
      • 2.新提出的Reinforce的方法
        • $\partial J(\alpha)/\partial alpha=\sum_i R(N(e=o_i))p_i\partial log(p_i)/\partial \alpha$
    • prune那些不重要的连接

hardware-aware的搜索

  • 将latency整合到loss里面去
    • $CE+lambda_1|W|_1+lambda_2latency$
  • 将latency整合到reward里面去
    • $ACC(m)*[LAT(m)/T]^\omega$
      • T是目标latency

实验

  • 空间
  • CIFAR-10
    • Gradient 2.08%err 5.7M param
    • Reinforce 2.3%err 5.8M param
  • ImageNet
    • MobileNetV3结构
      “””
      • 3×3dilateddepthwise-separableconvolution
      • Identity
      • 3×3depthwise-separableconvolution
      • 5×5depthwise-separableconvolution
      • 7×7depthwise-separableconvolution
      • 3×3averagepooling
      • 3×3maxpooling
      “””
    • gradient 方案 top1 71.8% 83ms
    • Reinforce方案 top1 74.6% 78ms
    • 200hours

总结

这篇论文提出剪枝来做NAS搜索,具有很强理论指导意义;同时二值化网络训练,具有很强的实践意义。简单的Reinforce训练思路也棒。

论文笔记 《Resolution Adaptive Networks for Efficient Inference》

这篇是发表在CVPR2020的论文《Resolution Adaptive Networks for Efficient Inference》,清华黄高老师组的最新Adaptive的成果,第一作者是Le Yang, Yizeng Han和Xi Chen。

这篇论文对MSDNet进行了改进,提出了RANet,先以低分辨率feature maps输入一个神经网络进行计算,再使用高分辨率feature maps输入一个神经网络进行计算。低分辨率图像就足够分类简单样本了,然后再使用高分辨率的feature maps处理复杂样本。

方法

网络结构设计

  • 用steam的几个conv生成不同resolution的初始特征
    • 第一个特征通过Regular-Conv层产生,后面的特征通过Strided-Conv层产生
  • 最小的resolution特征上进行分类
  • 更高resolution使用Fusion Blocks来融合自Sub-network的特征
    • 一种为图3b的保持特征图大小
    • 另一种为图3c的降低特征图大小
    • 上采样使用Up-Conv(Regular-Conv+Bilinear interpolation)
  • TODO: 具体组织形式看代码

训练

  • loss function采用weighted cumulative loss,文章里用相同weight
  • train集合分出一个validation集合来进行threshold的搜索,但训练还是在整个train集合上训练的

结果

  • Anytime Prediction
    • 任意一个sample都小于computation budget
    • RANets好于ResNet ensemble,是因为它是专门为simple samples设计的
  • Batch Budget Prediction
    • 好于MSDNet

可视化

  • 高低分辨率可能的原因
    • 同一图片多物体
    • 小物体
    • 没有明显特征
      • 从low-frequency和high-frequency的角度解释

总结

这篇论文改进了MSDNet,有更高的性能,并且讨论了可能的原因。

论文笔记 Efficient Neural Architecture Search via Parameter Sharing

这篇是发表于CVPR2019,18年2月就挂在arxiv上的论文《Efficient Neural Architecture Search via Parameter Sharing》,作者是Quoc V.Le团队,第一作者是Hieu Pham和Melody Y.Guan,甚至Jeff Dean也有挂名。

文章对之前用RL做NAS的方法进行了改进,将不同网络的参数进行共享,从而减少搜索时间。

方法

搜索空间

  • 一个全连接N个节点的DAG
    • 节点表示local computations,保存它自己对于不同op的参数
    • 边代表flow of information

搜索方法

  • 使用RL方法搜索
    • 哪个edge被activated
    • 每个node的computation是

RNN搜索

  • sample一个activation func
  • sample一个previous index和activation func
  • 将所有loose节点求平均

CNN搜索

  • 一个node:两个input index,两个op,结果通过add合并

训练

  • 两阶段训练
    • 第一阶段训练shared weights,用1 epoch的数据
      • 固定controller参数,不同architectures的gradient合起来
    • 第二阶段是训练LSTM,2000 steps
      • R是在validation set计算

实验

  • controller
    • LSTM 100 hidden
    • autoregressive
  • PTB
    • limit the size of our ENAS cell to 24M parameters
  • CIFAR-10
    • 310epochs
    • 搜索0.5day+CutOut,2.89error
  • 和随机比较
    • 解释是不是因为search space的设计导致的效果好
  • 去掉ENAS搜索,只用shared weights
    • 比随机搜索还要差

总结

ENAS确实能大大减少搜索时间,但可能ENAS是不是可能陷入局部最优去了(weight sharing导致)?训练中的参数过多是否可以自动化?后续的DARTS就是可以解决两阶段训练的bias问题。

论文笔记: APQ:Joint Search for Network Architecture, Pruning and Quantization Policy

这篇论文是发表在CVPR2020的《APQ:Joint Search for Network Architecture, Purning and Quantization Policy》,作者为MIT的韩松组,第一作者是上海交大的AMC班的本科生Tianzhe Wang,

文章对Once-for-all的论文进行了升级,可以联合搜索神经网络的Architecture+Prune+Quantization。

方法

Quantization-Aware accuracy predictor

  • 由于finetune full-precision网络到quantized network的开销比较大,采用predictor-transfer的方法,减少训练predictor的开销
  • 先训练只带Architecture Embedding (skip-Channel-kernel)的predictor网络,然后再在这个基础上finetune训练Quantize的bitwidth的predictor网络
  • 训练full predictor用了80,000个网络,加训练5000个sampled quantized network

结果

  • MobileNetV2 基础上进行搜索
  • 74.1 acc的情况下13.2G ops
  • 2400+0.5N GPU hours

总结

这篇论文在Once-for-all的基础上进行修改,支持Quantization即轻松发论文,妙。

论文笔记 Once-for-all: train one network and specialize it for efficient deployment

这篇是发表在ICLR 2020的《Once-for-all: train one network and specialize it for efficient deployment》,作者是MIT的韩松团队,第一作者是Han Cai。

为了解决在不同设备和限制条件下神经网络高效推理的问题,一般会使用Hardware aware的NAS。作者提出使用一个once-for-all的网络,能够解耦训练和搜索过程,通过一次训练一个超大网络,再从中搜索子网络来得到限制条件下最高的性能。

方法

大网络设计(搜索空间)

  • 多个units,每个unit里面是多层,只有第一层是stride=2
  • 每个unit
    • elastic layers: 任意数量的layers {2,3,4}
    • elastic width: 任意数量的channels: expansion ratio{3,4,6}
    • elastic kernel size: 任意kernel size {3,5,7}
  • 网络数目$((3 × 3)^2 + (3 × 3)^3 + (3 × 3)^4)^5 ≈ 2 × 10^19$
    • 5个Unit,最外是5次方
    • 每个unit里面可以选择2,3,4三种block数量(幂次),加起来
    • 每个layer可以3种kernel size选择,3种width选择,所以是3x3
    • 另外,resolution还有25种可能

大网络训练

  • sample各种配置的网络联合训练
  • Progressive Shrinking
    • resolution: sample 128-224大小的输入,全部训练过程都有
    • 首先用最大的layers width kernel size训练,慢慢把不同配置加入sample池子
      • 子网络的loss使用knowledge distillation
    • width:大网络挑选L1最大的,作为子网络的initial,慢慢加入sample池
    • depth: 取前n层
    • kernel size: 7x7的center乘以一个变换矩阵得到子矩阵

搜索

  • sample 16K个网络,在10K个image上训练accuracy predictor
    • neural network twins
      • 3层,每层有400个hidden units
      • 输入是one-hot vector based on kernel size, input size and expand ratio,如果是skipped就zero vector
  • evolutionary search
    • 优化目标accuracy/latency

结果

  • ImageNet
    • OFA 76% acc, 230M MAC
    • OFA finetune#25epochs 76.4% 230M MAC
    • OFA finetune#75epochs 76.9% 230M
    • 比Mnasnet的74% 317M MAC好
    • 比MobileNet V3-Large的75.2% 219M MAC好
    • 训练时间为1200GPU hours
  • 在Samsung S7 Note8/10 Pixel1/2测试
  • 在1080Ti CPU TX2 ZU9EG FPGA ZU3EG上测试
  • FPGA经验
    • memory access是expensive的,computation是cheap的
    • 通过OPs/Byte来作为一个指标

总结

once-for-all的思路是weight sharing的一个扩展,亮点在于graph不是predefine的,而是online generate的,借用了一些pruning的技术。有一个sharing的趋势吧,应该能做更多东西出来。

论文笔记 DReAM: Dynamic Re-arrangement of Address Mapping to Improve the Performance of DRAMs

这篇是发表在2016年MemSys的论文《DReAM: Dynamic Re-arrangement of Address Mapping to Improve the Performance of DRAMs》,作者是曼彻斯特大学的Mohsen Ghasempour,导师是Mikel Lujan,参与者还有Nvidia研究院。

文章提出了对Address Mapping进行动态重排的方法,统计每个bit的flip ratio,并根据flip ratio调整bit的顺序。另外为了online做re-arrangement,作者提出了一种动态migrate的方法。

方法

Offline

  • 将flip ratio大的bit放在col
  • 将flip ratio小的bit放在row

Online

  • 不动col的bits
  • 只把flip ratio小的bit放在row
  • 250K个Memory访问的窗口大小
  • bit交换超过7%才进行替换

动态migrate

  • 为所有的row增加两个bit的metadata
    • Migration Table:是否被migrate了
    • Swap Table:是否被swap了
  • 同时保存两种映射策略
    • 原来的映射策略PAMS(Predefined Address-Mapping Scheme)
    • 使用的映射策略EAMS(Estimated)
  • 访问的时候,根据row数据在哪里一步步讨论
    • 如果数据在当前位置,直接取。
    • 如果数据在原来位置,取出来,并交换现在的数据和原来的row数据,将当前位置的swap bit设为1,将migrate bit设为1
    • 如果原来的位置已经被swap过了,那么通过PAMS EAMS反推位置在哪,如果被多次swap,这个过程迭代做多次直到找到数据

硬件设计

  • 使用Mutlu论文中的MASA实现多行active来进行Inner Bank的row数据交换
  • 使用I/O bus把所有的bank连起来,传输一个row需要64 DRAM clock/512个CPU clock(有引用)
  • MT和ST两个表使用2MB的存储(64GB内存),可以放在DRAM或者Controller上

实验

  • 用了USIMM和DDR3在CPU上做了实验
  • 数据集为SPEC PARSEC HPC COMMERCIAL BIOBENCH,和20个他们的混合benchmark
  • 发现数据集分为两种
    • 对Mapping敏感
      • 原本有flip ratio比较大的bit被map到了row
    • 对Mapping不敏感
  • offline减少平均5%的execution time
  • online减少平均4.5%的execution time

总结

第一次提出了动态对mapping进行调整的策略,取得的还不错的结果。但这个策略比较heuristic,还有提升空间。

论文笔记 FastGRNN: A Fast, Accurate, Stable and Tiny Kilobyte Sized Gated Recurrent Neural Network

这篇是发表在NIPS2018的论文《FastGRNN: A Fast, Accurate, Stable and Tiny Kilobyte Sized Gated Recurrent Neural Network》,论文作者是微软印度研究院的Aditya Kusupati和德里印度理工学院、伯克利大学。

论文对带residual connection的FastRNN进行分析,理论证明FastRNN能有很好的训练收敛性能(解决梯度消失和梯度爆炸的能力)。另外提出了它的改进版本FastGRNN,增加可学习参数提升性能,通过weight复用、low-ranking、sparse和quantization减少参数和加速计算。

方法

FastRNN

  • 正常RNN$h_t=tanh(Wx_t+Uh_{t-1}+b)$变为下面
  • $\tilde{h_t}=\sigma(Wx_t+Uh_{t-1}+b)$
  • $h_{t}=\alpha\tilde{h_t}+\beta h_{t-1}$
    • 一般$\alpha<<1 \beta\approx 1-\alpha$
    • 都是可学习参数
    • 把当前算出来的$\tilde{h_t}$和之前的$h_{t-1}$结合

FastRNN解决病态gradients的证明

  • 没仔细看
  • Notation
    • T是RNN的timestep
  • Convergence Bound
    • 最大的iterations被bound在O(\frac{\alpha T}{\epsilon^2} \dot poly(L(\theta_0),R_W R_U R_v,\bar{D})),当$\alpha=O(1/T)$
  • Generalization Error Bound
    • Generalization error和T无关

FastGRNN

  • 使用Gated模型并增加一个可学习参数提升准确性
    • $z_t=\sigma(Wx_t+Uh_{t-1}+b_z)$
    • $\tilde{h_t}=tanh(Wx_t+Uh_{t-1}+b_h))$
    • $h_t=(\zeta(1-z_t)+v)\odot \tilde{h_t}+z_t\odot h_{t-1}$
    • 注意:W和U参数共享

压缩

  • Sparse low-rank
    • $W=W^1(W^2)^T,U=U^1(U^2)^T, ||W^i||_0\le s_w^i, ||U^i||_0\le s_u^i$
    • $W^i$是$R^{D\times r_w}$
    • $U^i$是$R^{D\times r_u}$
  • Byte Quantization
    • piecewise-linear approximation of the non-linear functions训练
    • 解决1.accuracy loss 2.非线性操作要转化成float算

训练

  1. 训练low-rank
    • 直接训练W1 W2的形式
  2. 训练
    • Iterative Hard Threshold(IHT)
  3. 固定支持参数{W,U}训练

实验

  • 语音唤醒任务
  • PTB
  • Pixel-MNIST
  • 结果
    • 直接用FastGRNN可以200KB->57KB,保持精度,减少一倍训练时间
    • 使用LSQ压缩后,57KB->5.5KB
    • 只是用LS压缩,大概22KB,Q压缩减少4倍数据

总结

FastRNN理论证明部分虽然看不懂,但是深度学习理论的魅力所在,从理论上分析才是正确的道路,不能瞎搞。FastGRNN压缩网络把RNN压缩了很多,改动不是很大,LSQ都是以前的方法,但是效果不错。

论文阅读 DARTS: Differentiable Architecture Search

这篇论文是发表在ICLR 2019的《DARTS: Differentiable Architecture Search》,文章的作者是CMU的Yiming Yang 组,第一作者是Hanxiao Liu。

这篇论文使用可微分的方法进行神经网络架构搜索,在连续域内进行模型搜索,这样就可以使用梯度下降对模型进行优化。将Cell搜索空间relax到一个DAG表示,然后建模成为一个嵌套优化的问题,并提出了一个one-step的approximate的优化方法,可以用1-2d的GPU hours达到和RL-based NAS类似的结果

方法

搜索空间的relax

  • 神经网络为一个tensor作为node、operation作为edges的DAG
  • N个node编号,所有小号对应的node连edge到大号对应的node
  • 确定edge的种类为Conv等神经网络层还是identity或者不连接
  • 网络只搜normal block和reduction block,CIFAR10有$10^25$(里面有isomorphism)

建模问题

  • 将所有的搜索空间可选操作集的weighted sum作为edge操作
  • 优化这个weight softmax(α)
  • $\min_{\alpha} L_{val}(w^(\alpha),\alpha) s.t. w^(\alpha)=\arg\min_{w}L_{train}(w,\alpha)$
  • 最后从每个edge的operation set里面选择最大的top-k alpha新建网络训练

one-step的approximate优化方法

  • 两步优化
    • 使用更新后的w作为参数,使用梯度下降法在validation set上优化alpha
    • 更新w的参数
    • 如果不用w更新后的参数,就是first-order的方法,效果更差一点
  • 避免alpha在training set上过拟合
  • 选择合适的w学习的学习率对结果影响大

实验

  • CIFAR10
  • 迁移ImageNet
  • PTB

评价

这篇文章使用可微分的方法将NAS搜索的时间大大降低了,理论部分也有两阶段优化的一些理论依据(first-order和second-order确实有差别),而不是简单的拍拍脑袋做了实验,这点需要学习。
接着这篇论文可以做很多工作。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×