面向深度学习业务的加速装置及方法与流程

文档序号:11831814阅读:190来源:国知局
面向深度学习业务的加速装置及方法与流程
本发明涉及电路设计领域,具体涉及一种面向深度学习业务的加速装置及方法。
背景技术
:随着深度学习算法在语音识别、图像识别、自然语言理解等领域大规模成功应用,用户使用深度学习相关业务的次数和频率在逐渐增加;为了不降低用户的使用体验,企业也逐年增加深度学习相关业务响应的并发计算能力。现有的提升并发计算能力的方法主要有两种:一种是单纯增加CPU的方式,增加并发计算能力;另一种是采用CPU+GPU的异构系统,提升并发计算能力。单纯增加CPU的提升并发计算能力的方式,会随着业务的增长,线性增加CPU的数量,成本也随之成线性增长,且CPU用于用户程序的计算部件有限,如果用于深度学习计算,其CPU资源难以完全利用。采用CPU+GPU异构系统提升并发计算能力的方式,因GPU是专门为图形计算设计的处理芯片,如将其用于深度学习计算,必会导致部分资源不适配、利用不完全等问题。技术实现要素:本发明提供一种面向深度学习业务的加速装置及方法,可以有效提高计算效率,提升性能功耗比。为此,本发明提供如下技术方案:一种面向深度学习业务的加速装置,用于对服务器中的待处理数据进行深度学习计算,包括:设置于服务器端的网卡、与所述服务器通过总线连接的计算控制模块、以及第一存储器和第二存储器;所述计算控制模块为可编程逻辑器件,包括:控制单元、数据存储单元、逻辑存储单元、以及分别与所述网卡、第一存储器和第二存储器通信的总线接口、第一通信接口和第二通信接口;所述逻辑存储单元用于存储深度学习控制逻辑;所述第一存储器用于存储网络各层的权重数据和偏置数据;在所述计算控制模块上电后,所述控制单元运行所述深度学习控制逻辑,以进行深度学习计算;在进行深度学习计算时,所述控制单元通过所述总线接口和所述网卡从所述服务器中读取待处理数据,并将所述待处理数据通过所述第二通信接口存放到第二存储器中,依照所述深度学习控制逻辑依次从第一存储器和第二存储器中获取网络当前层计算所需的数据,计算当前层的输入参数和输出参数,并将所述输出参数存储到所述第一存储器或第二存储器中;计算完成后,所述控制单元将网络输出参数通过所述总线接口传送给服务器。优选地,所述可编程逻辑器件为FPGA芯片或CPLD芯片。优选地,所述总线为PCI总线或PCI-E总线。优选地,所述第一存储器为堆叠内存,所述第二存储器为DDRSDRAM。优选地,所述待处理数据在所述第二存储器中以行主序方式存储;所述输出参数在所述第一存储器或第二存储器中以行主序方式存储;所述权重数据和偏置数据在所述第一存储器中以列主序方式存储。优选地,参与计算的所有数据采用32位全精度浮点型格式进行计算和存储。优选地,所述总线接口通过直接内存存取方式从所述网卡中读取待处理数据。一种面向深度学习业务的加速方法,包括:将网络各层的权重数据和偏置数据预先加载到第一存储器中;在进行深度学习计算时,可编程逻辑器件从服务器中读取待处理数据,并将其存放到第二存储器中;可编程逻辑器件根据预置的深度学习控制逻辑依次从第一存储器和第二存储器中获取网络当前层计算所需的数据,计算当前层的输入参数和输出参数,并将所述输出参数存储到所述第一存储器或第二存储器中;计算完成后,可编程逻辑器件将网络输出参数通过所述总线接口传送给服务器。优选地,所述待处理数据在所述第二存储器中以行主序方式存储;所述输出参数在所述第一存储器或第二存储器中以行主序方式存储;所述权重数据和偏置数据在所述第一存储器中以列主序方式存储。优选地,所述可编程逻辑器件为FPGA芯片或CPLD芯片;所述第一存储器为堆叠内存,所述第二存储器为DDRSDRAM。本发明实施例提供的面向深度学习业务的加速装置及方法,针对深度学习相关业务的需求,采用CPU+可编程逻辑器件的异构形式,并依据深度学习算法的特点设计可编程逻辑器件与CPU硬件结构以及可编程逻辑器件内部运行机制,使得可编程逻辑器件能将其全部电力消耗在深度学习程序计算中。与现有的单纯CPU系统或CPU+GPU系统相比,在同等的投入成本时,本发明方案的CPU+可编程逻辑器件的异构结构能达到更优的性能功耗比。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1是本发明实施例中DNN结构示意图;图2是本发明实施例面向深度学习业务的加速装置的结构框图。具体实施方式为了使本
技术领域
的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。为了便于对本发明方案的理解,下面以DNN(深度神经网络)为例,简要说明深度学习算法的计算流程。如图1所示,DNN由一个输入层、多个隐层(图中所示为6个隐层)和一个输出层组成,为一个全连接网络,输入层与第1隐层的连接权重有D*H个,隐层之间的权重各为H*H,第6隐层与输出层间的权重有H*M个。此外,隐层和输出层的每个节点还附有相应的偏置。深度学习计算流程如下:步一:初始化网络模型:从初始模型文件中读取网络的初始权重W和偏置B;步二:读取N个样本作为输入层的信号;XN×D=x1,1x1,2...x1,Dx2,1x2,2...x1,D............xN,1xN,2...xN,D]]>步三:计算第1隐层各节点的输入和输出:输入信号为:输出信号为:YN×H(1)=f(AN×H(1))=f(a1,1(1))f(a1,2(1))...f(a1,H(1))f(a2,1(1))f(a2,2(1))...f(a2,H(1))............f(aN,1(1))f(aN,2(1))...f(aN,H(1))]]>步四:计算第2隐层各节点的输入和输出:输入信号为:输出信号为:步五:以此类推,计算出其他四个隐层各节点的输入和输出:输入信号为:输出信号为:上述f()为一个非线性变换函数,k=2,3,4,5,6;步六:计算输出层的输入和输出:输入信号为:输出信号为:由上述计算流程可以分析出深度学习算法有以下特点:1.流水线方式计算从第一层开始,每层的输出作为下一层各节点的输入,在进行下下一层计算时,不需要保留上上一层的计算数据。为此,可以设计一个容量适中的存储器进行此部分数据存储;另外,模型参数和中间数据需要反复的读写,可以采用具有高速读写性能的芯片。2.浮点矩阵运算涉及浮点的乘加操作,因此选用DSP(DigitalSignalProcessor,数字信号处理器)资源较多的可编程逻辑器件作为计算部件。为此,本发明实施例提供一种面向深度学习业务的加速装置及方法,针对深度学习相关业务的需求,采用CPU+可编程逻辑芯片的异构形式,并依据深度学习算法的特点设计可编程逻辑芯片与CPU硬件结构以及可编程逻辑芯片内部运行机制。如图2所示,是本发明实施例面向深度学习业务的加速装置的结构框图。该装置用于对服务器中的待处理数据进行深度学习计算,包括:设置于服务器端的网卡、与所述服务器通过总线连接的计算控制模块、以及第一存储器和第二存储器;所述计算控制模块为可编程逻辑芯片,包括:控制单元、数据存储单元、逻辑存储单元、以及分别与所述网卡、第一存储器和第二存储器通信的总线接口、第一通信接口和第二通信接口。其中,所述逻辑存储单元用于存储深度学习控制逻辑;所述第一存储器用于存储网络各层的权重数据和偏置数据。在所述计算控制模块上电后,所述控制单元运行所述深度学习控制逻辑,以进行深度学习计算;在进行深度学习计算时,所述控制单元通过所述总线接口和所述网卡从所述服务器中读取待处理数据,并将所述待处理数据通过所述第二通信接口存放到第二存储器中,依照所述深度学习控制逻辑依次从第一存储器和第二存储器中获取网络当前层计算所需的数据,计算当前层的输入参数和输出参数,并将所述输出参数存储到所述第一存储器或第二存储器中。需要说明的是,在实际应用中,所述总线可以为PCI(PeripheralComponentInterconnect,外设部件互连标准)总线或PCI-E(PCIExpress)总线,PCI-E设计标准可以为x8Gen3,其传输速度为6GB/s左右。所述可编程逻辑器件可以采用FPGA(现场可编程门阵列)芯片或CPLD(复杂可编程逻辑器件)芯片,如果采用FPGA芯片,还需要外部存储器(比如EPROM),以存储所述深度学习控制逻辑。在计算控制模块上电后,将外部存储器中的深度学习控制逻辑读入逻辑存储单元(即内部RAM)中,然后运行该逻辑。所述第一存储器可以采用HMC(HybridMemoryCube,堆叠内存),所述第二存储器可以采用DDRSDRAM(DoubleDataRateSynchronousDynamicRandom,双倍数据速率同步动态随机存储器),比如DDR4。另外,为了更好地保证计算精度,参与计算的所有数据采用32位全精度浮点型格式进行计算和存储。下面以第一存储器采用HMC、第二存储器采用DDR、针对DNN网络为例,结合图2详细说明本发明装置进行深度学习计算的过程,具体过程如下:1.初始化,将网络各层的初始权重数据W和偏置数据B写入第一存储器。2.在进行深度学习计算时,控制单元通过总线接口,采用DMA(DirectMemoryAccess,直接内存存取)方式从网卡中读取待处理数据,并将读取的待处理数据通过第二通信接口存储到DDR4上。3.控制单元根据深度学习控制逻辑,从DDR4上取一部分待处理数据(比如20帧的语音数据)存到FPGA的数据存储单元(内部RAM)上,并将这些数据以行主序方式存放。4.进行第1隐层参数计算:从HMC上逐列读取W矩阵数据和B矩阵存放在数据存储单元(内部RAM)上,然后依次将W矩阵中列数据与数据存储单元上存放的数据X的每一行进行乘加,再加上相应的B矩阵中的数据,依次得到第1隐层输入A的列数据,对输入A的列数据进行非线性变换,得到第1隐层输出Y的列数据,并将这些数据按照行主序方式存放到HMC或DDR4上。需要说明的是,输出Y的列数据的结果是按照列产生的,而要求的输出Y是以行主序方式存入HMC或DDR4的,所以这里输出Y的当前列写入HMC时并不是连续写入的,而是跳着写入,从而满足行主序存放的要求。5.依次进行其他隐层的计算,直至神经网络的所有层参数计算完成。6.计算完成后,控制单元将最终计算结果即网络输出参数通过总线接口传送给服务器。需要注意的是,FPGA适合流水处理,所以在开始计算第2隐层输入输出参数的时候,可以开始下一批数据X’和第1隐层的W矩阵的乘加计算。当流水满载时,各层都在进行计算,只是计算所使用的输入数据不是同一批而已,从而可以进一步提高计算效率。另外,需要说明的是,本发明实施例中的面向深度学习业务的加速装置,不仅适用于利用网络模型进行检测阶段的深度学习计算,而且同样适用于网络模型训练阶段的深度学习计算。相应地了,本发明实施例还提供一种面向深度学习业务的加速方法,包括以下步骤:(1)将网络各层的权重数据和偏置数据预先加载到第一存储器中;(2)在进行深度学习计算时,可编程逻辑器件从服务器中读取待处理数据,并将其存放到第二存储器中;(3)可编程逻辑器件根据预置的深度学习控制逻辑依次从第一存储器和第二存储器中获取网络当前层计算所需的数据,计算当前层的输入参数和输出参数,并将所述输出参数存储到所述第一存储器或第二存储器中。(4)计算完成后,可编程逻辑器件将网络输出参数通过所述总线接口传送给服务器。优选地,所述可编程逻辑器件为FPGA芯片或CPLD芯片;所述第一存储器为HMC,所述第二存储器为DDRSDRAM。由于可见,本发明实施例提供的面向深度学习业务的加速装置及方法,针对深度学习相关业务的需求,采用CPU+可编程逻辑器件的异构形式,并依据深度学习算法的特点设计可编程逻辑芯片与CPU硬件结构以及可编程逻辑器件内部运行机制,使得可编程逻辑器件能将其全部电力消耗在深度学习程序计算中。与现有的单纯CPU系统或CPU+GPU系统相比,在同等的投入成本时,本发明方案的CPU+可编程逻辑器件的异构结构能达到更优的性能功耗比。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及装置;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1