神经网络加速器设计研究:寒武纪DianNao
研究背景
- 现阶段机器学习算法应用逐渐广泛,为了设计出可以更快运行相关算法的ASIC,提出设计
- 此处主要从相关算法的数量少,应用广,并现阶段常使用SIMD、GPU或FPGA作为其运行平台,效果并不理想,因此提出设计
- 主要贡献
- 提出一种综合加速器设计方法,适用于大规模CNN和DNN,可以运行当前最先进的算法
- 实现小面积、低功耗条件下的高吞吐率
- 提出的加速器设计方法主要关注访存性能,并对比访存无消耗情况下的运行情况
ML技术介绍(CNN & DNN)
- 介绍了神经网络算法的大致发展历程及相关术语
- 当前设计的加速器可以加快处理过程,并不能加快训练过程
- 从需求角度讲,处理的速度快慢直接影响市场,训练则可以离线进行,但是加快训练仍是有必要的
- 即使深度神经网络和卷积神经网络并不一样,但是可以抽象出相同的通用结构,以便进行加速器设计,因为相关的算法都是分层的,且每一层的功能基本固定,进行的操作大致相同,均为矩阵乘加运算
- 卷积层的概念
- 卷积层本质是对数据的过滤
- 汇聚层的概念
- 汇聚层主要用于提取有用的信息
- 分类层的概念(输出层)
- 分类层本质是输出层,根据运算结果确定类别
CNNs中三种类型的层的存储需求分析
- 大型神经网络训练和预测速度难以提高的瓶颈,在于高数据带宽需求。以CNN为例,底层进行的都是大矩阵乘加运算,每层操作需要的数据量非常庞大,如果希望降低计算时长,只能从增加数据带宽、存储单元重用、降低网络规模三个角度进行分析。在大规模神经网络的前提下,可考虑的就是增加数据带宽和存储单元重用,而随着集成电路技术的发展,片上带宽已经做到的同时代同工艺芯片的顶峰,其增长已经遇到瓶颈,因此更有潜力的研究方向是从存储单元重用入手,通过降低访存时间或减少访存次数来进行加速器设计,以实现大规模神经网络加速。本节通过对卷积神经网络中三种通用操作层,分类层、卷积层和汇聚层的数据流情况进行分析,研究其内在的可重用情况,并通过实验,对比了采取重用机制前后,数据带宽需求的变化,最终说明,进行大规模神经网络加速器设计时,