设计神经网络硬件架构时,我们在思考些什么

2018-08-09  本文已影响0人  conson_wm

清华大学, 涂锋斌
https://www.leiphone.com/news/201705/8sB0WHz6D70J7NAy.html?type=preview


1. 现有平台能效低问题

能效指标

   所谓考虑了片外存储的系统级能效就是既要考虑FLOPs还要考虑Memory Access Cost

2. 神经网络的三大特点给硬件加速的Challenge

2.1. 不同网络的层数不同 不同网络层数不同

2.2. 不同层的类型不同 不同层的类型不同

不同层的参数多样/数据量/计算量大(卷积层计算量大, FC参数量大) AlexNet各层参数 神经网络的三大特点给硬件实现带来的挑战

3. 设计目标和实现

设计目标和实现 设计架构前要思考的三个问题

4. 为什么以Conv layer作为主要研究对象

以卷积层计算作为计算模式的主要研究对象

   所谓其他层的计算模式与Conv Layer类似, 其实是说其他的结构都可以看作是Conv Layer的一种特例

5. 神经网络Accelerator硬件架构的模型

CNN Accelerator

   主要是片内和片外两个部分, 要设计的是左边的这一大块, 就是片内的部分
  Controller -> 核心控制器
  Input/Output/Weight -> 输入/输出/权重缓存
  REGs -> 输入/输出寄存器
  CE -> 卷积引擎, 就是负责卷积计算最核心的部分
  PE -> 处理单元, 就是CE内部的最小单位

6. 优化目标

优化目标1:能效   对于固定的网络结构来说, 操作数是固定的, 也就是说能效和能耗成反比, 所以优化能效的问题就变成了优化能耗
  能耗主要由两部分构成, 一部分是访存能耗Energy_MA, 一部分是计算能耗Energy_Computer
  
  我们看MIT Sze实验室的那篇Survey其实就是讲两个问题:
architectures optimization 优化目标2:性能 优化目标总结

  所以最终要优化的目标就是访存次数(MA)和计算单元利用率(PE Utilization)

7. 卷积层的循环表示

卷积层的循环计算

8. 什么叫计算模式??

何为计算模式

计算模式 = 数据复用模式 + 卷积映射方法

9. 数据复用模式

三种数据复用模式 Input Reuse

  Input Reuse就是尽量减少REGs与Input Buffer通讯的次数, 读一次Input数据, 把跟这个Input数据相关的操作都做完, 通过Output Partial Sum这个寄存器把得到的结果送到Output Buffer里去, 换句话说, 就是每次计算, 固定Input, 从Weight buffer里频繁读取Weights

访存次数计算

  IR模式下, 输入的复用因子就是1, 就是说一个数据只需要被从Buffer->REGs提取一次

能耗分析模型 AlexNet Conv3访存分析

10. 卷积映射方法

卷积计算示意

  H和L是输入图像的长宽, R和C是输出图像的长宽, K是卷积核大小, S是stride

卷积映射方法-经典举例

  CE的尺寸指的就是一个CE里面的由多少个PE单位构成,

经典映射方法的问题

  参数多样导致计算资源利用率不足, 主要是两方面的问题产生, stride>1或者图尺寸与计算资源不匹配

并行卷积映射方法-1

  作者提出这个方法的motivation就是尽量提高PE利用率, 让所有PE都尽量不要停下来, 一直在计算

并行卷积映射方法-2

   这个还是作者提出的并行卷积映射方法, 换成了在时间轴上的表达形式, 可以看出并行卷积映射的实际效果. 仍然是在8x8的阵列上计算6x6的输出图.
   对每个Map做一个更深层次的tiling(分块), 将6x6的块分割成一个个2x2的小块, 同时把16个不同map的小块并行地映射到阵列上去, 也就是同时在阵列上计算16个并行的map, 但是每个map的尺寸更小
   所以Tr和Tc就是原先分块的大小, Trr和Tcc就是映射之后分块的大小, 那经典的方法映射前后就是一样的, 就是Outmap长什么样, PE的排列就长什么样, P就是一次迭代算多少个map

并行卷积映射方法-3

  这张slide就是从PE Utilization计算的角度去看为什么并行卷积映射方法比传统方法要更好, 核心的思想就是并行地计算更多的输出图来获得更高的计算资源利用率
  在循环中红色的部分就是在原先core内部计算的循环中额外加上两层Tiling分组来实现并行操作(对照Input Reuse那张slide)


11. DNA

Deep Neural Achitecture

  硬件架构设计主要是考虑如何配合前面讲的好的计算模式

A. 两个CE共享同一块Input REG, 然后各自有各自的输出寄存器
B. 在片上会存储针对网络各层的配置信息, 这个配置信息存储在configuration context
C. 可重构的数据通路, 体现在多个方面, 红色的从output buff反馈回core的通路, 还有整体数据输入也是重构的形态, 还有CE内部也有一些可重构的数据通路
D. Ping-Pong buffer, 就是每个buffer都是双胞胎, 当前这个buffer在工作的时候, 他的兄弟buffer在从外面导入数据

12. 4级CE结构

4级CE结构

13. 数据传输网络

DSN

  通过这个网络, 相邻的数据块可以进行数据传递, 不需要再从buffer导入, 减少访存的次数

14. 工作流程和调度框架

工作流程与调度框架

  需要有一套工作流程指导我们如何使用刚才讲到的这个架构

  编译阶段需要输入的是神经网络的拓扑参数和硬件约束, 硬件约束主要指的就是片上buff容量/计算单元个数等描述硬件架构的参数
  调度框架的实际上是在CNN的每一层做一个优化问题, 每一层调度的结果就是把数据复用模式(Data reuse)和卷积映射方式(Convolution mapping)用参数化的形式表达出来, 对神经网络的每一层这样调度就得到一个调度表, 就生成了一个对于目标神经网络的配置信息, 就是那个Configuration for each layer

AlexNet的不同层调度结果

15. DNA实现的结果

DNA layout图

  SRAM指片上buffer的容量, 我们可以比较Performance来看一下完成一次CNN的Inference需要多久

改进效果 与前人比较-1

  比较Efficiency不只是要比较core的能效, 还要考虑片外通讯的cost

与前人比较-2 论文成果

16. 总结思考

回到思考的起点 现有优化技术的思考

  他这里说的模型压缩应该专指low-bit representation, low-bit可以让一次加乘运算的cost降低.
  后面的稀疏化就是剪枝,剪枝可以减少操作总数, 同时还可以减少参数, 实际上就是减少访存次数, 这两点实际上就是从优化神经网络拓扑结构的角度降低计算cost的代表.
  所以实际上, Network Compression算法也是对应着硬件的设计优化的两个方向, low-bit对应着减少单位计算能耗, pruning对应着降低访存次数和操作次数.

在硬创公开课, 还有一些有价值看一下的Presentation
https://www.leiphone.com/news/201703/TamDONTdXy2tyd4w.html

上一篇下一篇

猜你喜欢

热点阅读