论文笔记 《Neural-Hardware Architecture Search》

这篇论文是发表杂在NeurIPS 2019的《Neural-Hardware Architecture Search》。作者为我们的老朋友MIT的Song Han(韩松)组。第一作者为Yujun Lin,本科毕业于清华。

文章探索了NN网络结构与硬件架构的联合搜索方法,使用Evolution Algorithm来搜索硬件架构(HAS),NN这边使用One-shot hyper-net的方法搜索量化网络(QNAS)。

方法

搜索空间

  • 硬件是一个systolic-array-like architecture(MPA),包括5个可调节参数
    • #rows #cols 2x4->16x64
    • input/weight/output buffer size 128B->4096B,间隔4B
  • 网络是一个ResNet blocks的结构
    • kernel size 3\5
    • channels 0.125 0.25 0.5 1 1.5
    • each layer
      • activation 4/6/8 bits
      • weights 2/4/6 bits
    • identity/ residual blocks
      • 最大16blocks

搜索方法

  • 先HAS:硬件架构搜索

    • 在几个已有网络上进行搜索,目标是减少Energy-Delay Product
    • 采用进化算法
      • 根据各个搜索维度的mean和var随机生成一些样本
      • Evaluate这些样本,排序
      • 选择top-K重新计算mean和var
  • 后QNAS:神经网络搜索采用超网络

    • 训练一个大的超网络,它的子网络集合包含所有搜索空间中的网络
      • 大网络训练时间较长,且需要特殊的技巧来优化
    • Controller sample网络后,从超网络中取对应的weight,不需要重新训练
    • 采用标准进化算法进行sample
      • 先生成一些父代神经网络
      • 根据accuracy选择top-K作为

结果

  • HAS 1.1x speedup than human
  • QNAS 1.3x speedup than HAS

总结

这篇文章把硬件设计也题上议程,先HAS再QNAS,但是没有联合搜索。

“论文笔记:《Co-Exploration of Neural Architectures and Heterogeneous ASIC Accelerator Designs Targeting Multiple Tasks》”

这篇论文是2020年2月发表在arxiv的《Co-Exploration of Neural Architectures and Heterogeneous ASIC Accelerator Designs Targeting Multiple Tasks》。第一作者为圣母大学的博士后Lei Yang(杨蕾),她将于今年秋天加入墨西哥大学担任副教授;姜炜文、史弋宇为mentor,值得一提的是史教授就是去年那位在芝加哥利用“贪心算法”把持枪劫车匪徒抓获的老板。

作者提出了一个同时搜索神经网络的结构和硬件架构的方法NASAIC。
支持多个任务的DNN搜索,且支持异构硬件PE的搜索。这篇文章也对搜索空间进行了可视化,分析了搜索的好处。

方法

搜索框架

  • 给定多任务的workload W,最大化DNN网络的accuracy,并满足latency、energy、area和硬件使用量小于threshold
  • 加速器可以有多个sub-accelerators,每个sub-accelerators可以使用不同的dataflow,加速器按照DNN层进行前向预测
  • 多个任务使用执行不同的DNN,将DNNs的每个Layer分配到加速器的sub-accelerators上执行,计算reward

搜索空间

  • DNN
    • 为Workload中的每个Task $T_i\in W$ 搜索一个DNN $D_i=<B_i, L_i, H_i, acc_i>$
      • $B_i$为backbone
      • $L_i、H_i$为层数、每层的参数(channel size, 连接关系等)
    • 通过NAS去搜索$D_i$的参数$H_i$
  • ASIC Accelerator
    • 包含多个sub-accelerator,用NoC连接
    • 使用NAS搜索每个sub-accelerator的参数<dataflow,pe_number,noc_bandwidth>
      • dataflow可以选择shidiannao、NVDLA等
      • PE总数量限制小于4096
      • NoC总带宽限制小于64GB/s
    • memory buffer的大小根据最大化硬件利用率来

硬件性能评估

  • 使用MAESTRO(开源cost model)模拟,将网络层分配到硬件上执行,得到latency energy area

搜索方法

  • 用controller来sample每个network的结构和每个sub-accelerator的type和参数
  • 计算reward,并用policy gradient的方法更新controller
  • 交替搜索DNN和硬件
    • SA阶段:Neural Architecture exploration
    • SH阶段:Hardware design exploration

实验

  • 不同任务组合下的explore space
    • W1: CIFAR-10+Nuclei(segmentation)
    • W2: CIFAR-10+STL-10(classification)
    • W3: CIFAR-10
    • classification: ResNet-9架构
    • segmentation: UNet架构
    • sample 500个网络-每个网络sample 10种硬件设计
  • 观察
    • 最好的设计不一定最靠近限制线
    • 相比于NAS->ASIC和ASIC->HW-NAS,交替搜索能得到更好的效果
    • 异构设计比同构设计有优势

评价

多任务与异构神经网络的架构设计很有意思,虽然这篇文章只尝试了小数据集,但结果显示了异构设计的优势。

论文笔记 《Best of Both Worlds: AutoML Codesign of a CNN and its Hardware Accelerator》

这篇论文是2020年5月发表于arxiv的《Best of Both Worlds: AutoML Codesign of a CNN and its Hardware Accelerator》,作者是来自三星剑桥AI中心和牛津大学的研究员。第一作者是Mohamed S. Abdelfattah。通讯是牛津副教授Nicholas D. Lane(李克澜),做机器学习系统、手机传感器、边缘计算等,值得一提的是,Nicholas教授2011-2015在MSRA带过Mobile and Sensing Systems group (MASS)。

这篇文章对软件-硬件联合搜索进行了建模,使用强化学习搜索CNN网络结构和加速器硬件设计的参数,利用NASBench在CIFAR-10上比较了联合搜索、交替搜索和分离搜索三种搜索方式的优劣,最后再CIFAR-100上做了实验,使用1000个GPU hours搜索不错的网络。

方法

搜索框架

  • CNN和Hardware的搜索总空间为$S=O_{nn1}O_{nn2}…O_{hw1}O_{hw2}$
  • 目标为找到最优的参数,使得有Evaluate函数测试的overhead最小,$s^* = arg\min_{s\inS}E(s)$
  • 使用RL在空间S中进行搜索
    • 网络结构和google的NAS_RL一样,由Controller(RNN网络)一个个预测每一个参数
    • 优化算法使用policy gradient,更新的梯度为$\nabla_{\theta}\pi_{\theta}(s_t)E(s_t)$
  • Evaluate函数考虑accuracy、latency、area
    • 他们的weighted sum作为评分
    • $Evaluate(s)=w_a Norm(-area(s))+ w_l Norm(-lat(s))+ w_a Norm(acc(s))$
    • 其中Norm是(min,max)到(0,1)
  • Constraint
    • 对acc、lat和area有要求,如lat<一个值
    • 如果sample不满足constraint,则惩罚,reward为负分
      • Controller更不容易生成这些不满足条件的sample

CNN搜索空间

  • 采用了NASBench的搜索空间
    • 类似ResNet的结构,其中Block这里称作Cell的结构
    • 限制了最多7个operations、9个connections

硬件搜索空间

  • 采用了CHaiDNN库,能部署在FPGA上
    • Data buffer(调整depth)
    • 内外通信bandwidth
    • Conv Engine(调整 filter维度和pixel维度的并行度)
    • 1x1卷积和3x3卷积单元的比例
    • 是否使用片上Pooling单元

硬件性能评估

  • Area
    • 建模每个模块使用的CLB(configurable logic blocks)、DSP、BRAM与面积关系
    • 根据每个sample使用情况计算Area
    • 实际综合面积开销平均1.6%误差
  • Latency
    • FPGA上跑每个单元各自在不同配置下的时间,记录下来
    • 根据每个sample的模型查表直接计算Latency
    • 和实际有约15%的误差

NASBench探索

  • 将NASBench中的所有网络和所有硬件架构组合,产生3.7billion个数据。
  • 选取其中的Pareto-optimal画在一张图上,进行分析
    • 确实是一个三方向的trade-off
    • 只有0.0001%的样本在帕累托最优集上,因此手工设计是几乎不可能
    • 帕累托最优的不同网络的结构有136种和硬件架构有338种,说明没有能通吃的结构

设计搜索方法

  • Combined search: 一个controller,直接联合优化CNN结构和硬件
    • 效果最好
    • 但搜索空间大,收敛慢
  • Phase search: 两个controller,交替优化CNN结构和硬件
    • 效果稍微次于Combined search
    • 收敛更快
  • Separate search: 先CNN搜索,搜完之后再硬件搜索
    • 最好的10个网络里面,有8个没有满足lat和area的constraint
    • 不考虑硬件去搜索CNN结构,会导致硬件执行效率有很大的随机性

CIFAR-100实验

  • 用 performance/area 来evaluate网络
    • 训练过程中,逐渐加大performance/area的constraint
  • 使用Combined search,2300个sample
  • 平台:6x Machine x 8x Nvidia 1080 = 48Card
    • 共 ~1000GPU hours
  • 结果分析
    • 不使用pooling engine好
    • 硬件的设计和网络的需求很Match,data buffer刚好够

评价

这篇论文在硬件设计空间、硬件评估模型以及搜索策略上面都没有创新,算是延续了之前的设计。
亮点在于通过对于整个NASBench搜索空间的所有的网络拿出来进行了分析,并且给出了帕累托最优。证明了Codesign有很大潜力,并且搜索空间有规律性,人工设计效率低。

论文笔记: HAQ: Hardware-Aware Automated Quantization with Mixed Precision

这篇是MIT韩松组发表在CVPR2019的论文《HAQ: Hardware-Aware Automated Quantization with Mixed Precision》,第一作者是韩松组的Kuan Wang,清华毕业。

文章提出使用NAS去搜索NN网络中不同layers的最佳quantization bit-width,并且根据实际的硬件给出的表现来作为reward。

方法

算法

  • 描述成一个寻找特定constraint (Latency/Energy)下的最小accuracy degradation的网络问题
  • weight和activation使用不同的量化bit-width
    • 线性量化
    • 分布KL散度最小化求区间 $c=\arg\min_{x} D_{KL}(W_k || quantize(W_k, a_k, x))$
  • 使用RL
    • input是前一层的action+这一层的参数
    • action space使用的continuous的
    • reward只考虑accuracy下降 $\lambda \times (acc-acc_{original})$
    • 如果达不到constraint,所有层等量降低bit-width
    • DDPG优化

硬件

  • 使用了Cloud(batch-size大)和Edge的两种场景
  • 使用了两种硬件做测评原则
    • 时间维度复用硬件BISMO
    • 空间维度组合硬件BitFusion

结果分析

  • 只做了MobileNet V1和V2
    • 发现V2还比V1差
  • 根据roofline model分析
    • edge
      • depthwise的卷积是memory bound,因此分配更少的bit-width给activation
      • pointwise的卷积是computation bound,多分配
    • cloud
      • pointwise layer 更少的bitwidth

评价

CVPR2019的oral,文章算法写得非常清晰,结果也不错,韩松用NAS这一套可谓是轻车熟路。但是后面结果分析就很不清楚,edge和cloud不是很能让人信服。看完还是有很多疑问的:为什么不用classification这个很奇怪,可以把结果放出来看看;为什么不用联合reward;最后出来的cloud和edge相差有点大,让人摸不着头脑;为什么Mobilenet V1比V2好。可以从Hardware和Software联合优化的角度去看这个问题,硬件如何去设计完全可以根据算法的结果去优化,这个方面可以探讨的问题还挺多的。

Your browser is out-of-date!

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

×