面向卷积神经网络的硬件加速器设计方法
2021-07-14孙明,陈昕
孙 明,陈 昕
同济大学 电子与信息工程学院,上海201804
卷积神经网络是一种以特征提取为主要方式的深度学习算法,被广泛用在图像分类、对象检测和语义分割等领域[1]。但其参数过于庞大,运算过程需要使用大量的算力。适用于CNN 高密度计算的主流硬件有GPU、ASIC和FPGA[2]。与前两者相比,FPGA作为并行化的计算密集型加速硬件,功耗低、可灵活编程、开发周期短,在加速CNN上,获得了更广泛应用。
研究人员主要集中在两方面优化:减少所需的内存带宽和降低推理计算复杂度。Chung等人[3]采用了将奇异值分解与剪枝方法组合使用的方案来对模型进行压缩,从而减少网络参数。Zhang等人[4]提出一种Caffeine框架,将卷积和全连接运算转换为通用矩阵相乘,实现了100 倍性能提升。Liang 等人[5]和Prasanna 等人[6-7]采用快速算法Winograd 和FFT 将卷积变换到特殊域(如频域)完成,将乘法数量减少到n2。Alwani 等人[8]采用fusion计算模式逐层推理,减少高达90%的片内外传输。上述方法存在以下问题:对模型修剪[3]或卷积层融合[8]时,虽减少了内存用量和降低带宽压力,但片上计算资源利用率低;并行计算程度较高[4]或降低运算复杂度[5-7],但造成冗余数据复制,对片上缓存容量要求高。
本文旨在克服上述不足,主要贡献如下:
(1)对卷积6 个循环进行设计空间探索,以确定循环分块因子,提高数据复用程度以减小带宽需求。
(2)通过展开分块充分挖掘4 种计算并行度:层间并行、层内并行、核间并行、核内并行。
(3)将加速方法包装成RTL 组件,向外提供Python接口,给定器件规格和网络配置,可实现深度学习加速算法到板级FPGA部署的自动代码生成。……
