基于现场可编程门阵列的卷积神经网络加速系统技术方案

技术编号:19178899 阅读:17 留言:0更新日期:2018-10-17 00:39
本发明专利技术公开了一种基于现场可编程门阵列的卷积神经网络加速系统,所述加速系统包括通用处理器、现场可编程门阵列、存储模块以及数据总线和控制总线,其中,通用处理器是一个精简指令集的软核,它负责启动加速器、与主机端进行通信以及时间测量等;DDR3 DRAM作为加速器系统的外部存储器;AXI4‑Lite 总线用于命令传输,AXI4 总线用于数据传输;现场可编程门阵列中包含有多个处理引擎(PE),每一个处理引擎都使用了最合适的分片展开策略来与卷积神经网络中一层的计算对应;所有的处理引擎都映射到同一块FPGA芯片上,这样不同的层能够以流水线的方式同时工作。本发明专利技术相对于已有的卷积神经网络加速系统能够取得更高的能效收益。

Convolutional neural network acceleration system based on field programmable gate array

A convolution neural network acceleration system based on field programmable gate array is disclosed. The acceleration system comprises a general purpose processor, a field programmable gate array, a storage module, a data bus and a control bus, wherein a general purpose processor is a soft core with a reduced instruction set, which is responsible for starting the accelerator, and a control bus. Host-side communication and time measurement; DDR3 DRAM as the external memory of the accelerator system; AXI4_Lite bus for command transmission; AXI4 bus for data transmission; Field Programmable Gate Array contains multiple processing engines (PE), each of which uses the most appropriate piecewise deployment strategy. It corresponds to the computation of one layer in the convolutional neural network; all processing engines are mapped to the same FPGA chip, so that different layers can work simultaneously in a pipelined manner. Compared with the existing convolution neural network acceleration system, the invention can achieve higher energy efficiency gains.

【技术实现步骤摘要】
基于现场可编程门阵列的卷积神经网络加速系统
本专利技术涉及一种算法的硬件加速平台,具体涉及一种通用性好和灵活性高的基于现场可编程门阵列的卷积神经网络加速系统及其设计方法。
技术介绍
卷积神经网络(CNN)隶属于人工神经网络,是一种前馈的深度神经网络,已经得到了广泛的应用,如字符识别,图片分类和自然语言理解。由于卷积神经网络的特定计算方法,因此在通用处理器(CPU)上效率并不高,并且很难达到很高的性能。在实践中,图形处理器(GPU)被广泛应用于卷积神经网络的训练和分类任务中,然而,它受限于较低的能效收益。除了GPU被应用于卷积神经网络加速以外,基于专用集成电路(ASCI)和现场可编程门阵列(FPGA)的卷积神经网络加速器也被提出。综合比较这些平台(CPU,GPU,ASIC和FPGA),基于FPGA的加速器因为具有可重构性高,开发周期短和高能效等优点,越来越受欢迎。但是,使用FPGA来加速卷积神经网络仍然存在很多挑战。众所周知,FPGA平台主要受限于有限的计算资源和昂贵的片外内存访问。然而,在最先进的卷积神经网络模型中,存在大量的计算操作(>1G)和大量的参数(>50M),这将需要消耗大量的能量。并且,卷积层参数的高可变特性也损害了硬件资源的充分利用。随着技术的发展,为了达到更高的精度,卷积神经网络模型会变得越来越大,越来越复杂,这将加剧这种情况。因此,需要设计一个高能效的CNN加速器。在使用CNN模型进行推断之前,需要对CNN模型进行训练。对CNN的训练一般都采用离线的方式将模型预先训练好,然后利用训练好的模型做实时的推断处理。由于推断过程对实时性要求很高,因此,加速CNN的推断过程比训练过程有更为现实的意义和价值。卷积神经网络推断过程的高性能低功耗实现一直是近年来的研究热点,受到了学术界和工业界的广泛关注。目前用于硬件加速的平台有通用图形处理器(GPU)、专用集成电路(ASIC)和现场可编程逻辑门阵列(FPGA)。其中,GPU是由很多的并行计算单元所构成,在GPU内部一般都是通过采用SIMD的方式对应用进行加速,因此,GPU特别适合加速计算密集型的应用。目前,有CUDA、GLSL和OpenGL等成熟的编程框架可用于GPU平台,使得GPU平台的开发门槛相对较低,GPU平台已经成为使用广泛的加速平台。但是,GPU平台仅适用于执行数据级并行的任务,对于深度神经网络计算中不能进行数据级并行的部分任务,加速效果不太明显。ASIC是专用集成电路,因此只对特定的应用具有很好的加速效果。但是ASIC的灵活性很低,只要应用需求发生微小的改动都需要重新来设计整个的硬件电路。并且,ASIC的开发需要具备很好的硬件知识和经验,因此门槛很高,并且ASIC的开发周期也很长,导致开发的成本也很大。FPGA芯片内部包含有许多的可编程逻辑模块,它们都可以根据不同的应用场景要求进行重新配置,因此可以提供充分的灵活性。虽然与ASIC加速效果相比,FPGA的稍差,但是随着FPGA技术的不断发展和创新,FPGA芯片的集成度越来越高,芯片的速度也越来越快,并且,FPGA芯片与通用处理器之间的通信也变得越来越简单。更为重要的是,基于FPGA的开发工具链也越来越多,这大大的降低了FPGA的开发门槛。目前,较为成熟的FPGA开发工具链有Xilinx公司的Vivado和Altera公司的基于OpenCL开发的FPGASDK,它们都能够帮助开发人员从事针对FPGA芯片的编程工作。综合以上硬件加速平台的特点可知,FPGA是介于ASIC的效率和通用处理器的可编程性之间的具有吸引力的选择,因此,本专利技术使用FPGA作为卷积神经网络的加速平台。
技术实现思路
针对上述存在的技术问题以及最新的技术进展,本专利技术目的是:提供了一个基于FPGA的卷积神经网络加速系统,该加速系统能够实现高性能、低功耗的特点。本专利技术的技术方案是:一种基于现场可编程门阵列的卷积神经网络加速系统,包括:通用处理器,与现场可编程门阵列进行通信;存储模块,用于通用处理器与现场可编程门阵列的数据交互;现场可编程门阵列,用于加速卷积神经网络的计算过程;还包括统一的编程接口,供用户调用所述加速系统完成相应的任务;整个加速系统的执行过程分为以下几步:S1:通用处理器端通过提供的编程接口选择合适的加速器,并把计算过程中需要使用的输入数据和权值数据写入存储器中;S2:现场可编程门阵列中的加速器从存储器中读取输入数据和权值数据并开始计算,并把最后的计算结果写入存储器中;S3:通用处理器从存储器中读取计算完成以后的结果输出到屏幕。优选的,所述现场可编程门阵列中,包括多个处理引擎(PE),每一个处理引擎都使用了一种分片展开策略来与卷积神经网络中一层的计算对应;所有的处理引擎都映射到同一个FPGA芯片上,这样不同的层能够以流水线的方式同时工作。优选的,所述处理引擎包括卷积层处理引擎、池化层处理引擎和全连接层处理引擎。优选的,所述卷积层处理引擎,在卷积层的计算中,使用了循环分片和循环展开,所述循环分片是将较大的循环空间划分成为几个较小的循环空间,循环展开是把循环内的程序段重复多次完成,在没有数据依赖的循环体中能够实现并行计算。优选的,所述卷积层处理引擎中,使用了双缓冲机制来预取下一次执行计算所需要的数据;卷积层处理引擎的执行过程分为以下几步:S01:将输入数据读取到处理引擎的输入缓冲区中,将权值数据读取到处理引擎的权值缓冲区中;S02:处理引擎执行并行的乘法计算,并行的乘法计算后跟着一个加法树的结构完成累加计算;S03:将完成累加计算后的结果写入处理引擎的输出缓冲区中,如果当前层不是卷积神经网络中的最后一层,那么该层的结果将传入下一层,作为下一层的输入;如果当前层是卷积神经网络中的最后一层,则将直接输出。优选的,所述全连接层处理引擎,在全连接层的计算中,使用了循环分片和循环展开,也使用了双缓冲机制来预取下一次执行计算所需要的数据。优选的,所述全连接层处理引擎还使用了剪枝的方法,经过剪枝以后,权值矩阵变得稀疏,全连接层处理引擎还使用了压缩稀疏列的压缩存储技术来存储权值矩阵,经过压缩存储以后,得到wt[]、index[]和offset[]3个向量,它们分别存储着非0元素的值、相应的行索引以及列偏移;全连接层处理引擎的执行过程分为以下几步:S001:将输入数据读取到处理引擎的输入缓冲区中,将经过压缩存储后的wt[]、index[]和offset[]3个向量读取到处理引擎的权值缓冲区中;S002:处理引擎读取index[],用来获得非0权值wt[];S003:处理引擎根据index[]缓冲区的值到输入缓冲区的对应位置取得相应的元素;S004:权值wt[]与输入缓冲区中的相应数据做并行计算;S005:将完成累加计算后的结果写入处理引擎的输出缓冲区中。优选的,所述池化层处理引擎的计算过程和卷积层处理引擎的计算过程重叠在一起。优选的,为了最大化流水线结构的吞吐率,根据每一层的计算量来给它分配相应的计算资源,尽量每一层的的计算时间大致相等。优选的,在确定单个卷积层对应的循环分片因子时,采用的是设计空间搜索,目标是最大化FPGA资源利用率。优选的,所述编程接口,包括硬件平台初始化类的函数和数据传输类的函数本文档来自技高网
...

【技术保护点】
1.基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,包括:通用处理器,与现场可编程门阵列进行通信;存储模块,用于通用处理器与现场可编程门阵列的数据交互;现场可编程门阵列,用于加速卷积神经网络的计算过程;还包括统一的编程接口,供用户调用所述加速系统完成相应的任务;整个加速系统的执行过程分为以下几步:S1:通用处理器端通过提供的编程接口选择合适的加速器,并把计算过程中需要使用的输入数据和权值数据写入存储器中;S2:现场可编程门阵列中的加速器从存储器中读取输入数据和权值数据并开始计算,并把最后的计算结果写入存储器中;S3:通用处理器从存储器中读取计算完成以后的结果输出到屏幕。

【技术特征摘要】
1.基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,包括:通用处理器,与现场可编程门阵列进行通信;存储模块,用于通用处理器与现场可编程门阵列的数据交互;现场可编程门阵列,用于加速卷积神经网络的计算过程;还包括统一的编程接口,供用户调用所述加速系统完成相应的任务;整个加速系统的执行过程分为以下几步:S1:通用处理器端通过提供的编程接口选择合适的加速器,并把计算过程中需要使用的输入数据和权值数据写入存储器中;S2:现场可编程门阵列中的加速器从存储器中读取输入数据和权值数据并开始计算,并把最后的计算结果写入存储器中;S3:通用处理器从存储器中读取计算完成以后的结果输出到屏幕。2.根据权利要求1所述的基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,所述现场可编程门阵列中,包括多个处理引擎(PE),每一个处理引擎都使用了一种分片展开策略来与卷积神经网络中一层的计算对应;所有的处理引擎都映射到同一个FPGA芯片上,这样不同的层能够以流水线的方式同时工作。3.根据权利要求2所述的基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,所述处理引擎包括卷积层处理引擎、池化层处理引擎和全连接层处理引擎。4.根据权利要求3所述的基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,所述卷积层处理引擎,在卷积层的计算中,使用了循环分片和循环展开,所述循环分片是将较大的循环空间划分成为几个较小的循环空间,循环展开是把循环内的程序段重复多次完成,在没有数据依赖的循环体中能够实现并行计算。5.根据权利要求4所述的基于现场可编程门阵列的卷积神经网络加速系统,其特征在于,所述卷积层处理引擎中,使用了双缓冲机制来预取下一次执行计算所需要的数据;卷积层处理引擎的执行过程分为以下几步:S01:将输入数据读取到处理引擎的输入缓冲区中,将权值数据读取到处理引擎的权值缓冲区中;S02:处理引擎执行并行的乘法计算,并行的乘法计算后跟着一个加法树的结构完成累加计算;S03:将完成累加计算后的结果写入处理引擎的输出缓冲区中,如果当前层不是卷积神经网络中的...

【专利技术属性】
技术研发人员:李曦周学海王超孙凡万波
申请(专利权)人:中国科学技术大学苏州研究院
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1