论文部分内容阅读
近年来,作为一个具有众多实际应用和活跃研究课题的领域,人工智能(Artificial Intelligence,AI)已成为当今社会科技发展的标志领域之一。随着科学技术的发展,为了更好的解决人类能直观感受到而很难用形式化规则描述的问题,深度学习(Deep Learning,DL)作为人工智能的核心技术而备受关注。随着大数据时代的到来,深度学习已在图像识别、语音识别、自然语言处理、搜索推荐等领域展现出了巨大的优势,并且仍在继续发展变化。深度学习起源于人工神经网络(Artificial Neural Network,ANN)。从只有单层隐藏层的感知机到能够更好的学习特征的层数较深的神经网络,如深度神经网络(Deep Neural Networks,DNN)、卷积神经网络(Convolutional Neural Networks,CNN)等,深度学习的发展趋势日渐迅猛,并在学术领域以及应用领域不断创新和完善。这不仅得益于软件算法的提升,还要归功于硬件平台的快速进步,如FPGA、GPU等。为了使深度学习模型能够更好的学习数据特征并得到准确的预测,不仅需要大规模的输入数据集,还需要对大量参数进行调整更新,这就对模型的性能提升与加速优化提出了更高的要求。而随着神经网络的发展,各种不同类型的网络也增加了该领域的多样性,这使得提出一种较为通用的加速方案变得尤为必要。本文的研究目的是通过分析常用的神经网络的运算过程,提取热点运算中的共性部分,并借助硬件平台的特点,将共性应用到硬件上实现加速。本文主要工作如下:(1)研究常用前馈神经网络DNN和CNN的训练过程和预测过程,分析不同类型层次的前向计算和反向传播算法,找到使用频繁、逻辑控制较少但计算过程繁琐的运算,也称为热点运算。本文分析的热点运算包括前向加权计算、批量归一化(Batch Normalization,BN)计算、激活函数计算、卷积计算、池化计算及各层的误差反向传播计算(Back Propagation,BP)。(2)分析各热点运算的具体过程,将共有的计算部分提取出来,这也是本文重点之一。本文提取的共性包括带有稀疏性的矩阵乘法计算、归一化与激活函数连续计算。(3)将提取的共性计算与FPGA硬件平台特性相结合,提出适用于其硬件特点的加速优化方案。具体加速方案包括用定点数代替浮点数的量化计算、批量数据的并行化与流水线设计、数据的预加载与缓存。(4)本文采用Vivado HLS作为仿真平台进行综合验证,通过一系列对比实验验证加速性能的提升效果,研究计算的延迟时间、硬件资源的使用数量等数据分析加速优劣性。本文的创新点包括:(1)用im2col方法将卷积计算转化为矩阵乘法,将批量归一化处理BN算法加入到神经网络模型中参与共性提取,二者的使用使软件层面的优化参与到硬件的加速中。同时推导了加入BN的BP算法并转化为矩阵乘法。(2)采用Re LU函数作为激活函数,为模型引入稀疏性,利用稀疏性特点与批量的矩阵乘法计算相结合设计共性单元。且由于Re LU函数作为条件语句会打断CPU中的流水线计算,将其提取出来作为共性部分应用于FPGA上,采用多路数据选择器可以避免流水线的中断。(3)使用浮点数变为定点数的量化方法来减少带宽,且本文引入的BN归一化方法正好可利用其固定范围的特点帮助量化操作更方便的进行;采用批量数据并行输入的方式,充分利用硬件并行性。与硬件结合的加速方案使得批量训练数据与预测模型的性能得到提升,通用部分的提取得其应用范围更广,也使得本文的研究方向具有研究价值。