一种CNN全连接层运算的多并行加速方法技术

技术编号:22755434 阅读:23 留言:0更新日期:2019-12-07 04:07
本发明专利技术公开了一种CNN全连接层运算的多并行加速方法,利用卷积神经网络运算结果的稀疏性特点,通过提前判读卷积神经网络卷积层处理结果的数值,大大减少了对全连接层参数的读操作,有效节省能耗,提升系统能效比;利用FPGA等可编程逻辑器件硬件资源复用、扩展能力强等特点,通过构建并行流水乘累加架构,有效节省处理时间,提升处理效率;通过全面分析目标类型数据、目标特征差异以及应用过程中的错误容忍度等因素,合理设定处理数据格式,在保证处理精度的同时,有效提升数据及参数的存取效率,实现全连接层多并行加速的目的。

A multi parallel acceleration method for CNN full connection layer operation

The invention discloses a multi parallel acceleration method of CNN full connection layer operation. By using the sparsity feature of convolution neural network operation result, the value of convolution neural network convolution layer processing result can be read in advance, which greatly reduces the reading operation of full connection layer parameters, effectively saves energy consumption and improves the system energy efficiency ratio; the hardware resources of FPGA and other programmable logic devices can be reused With strong expansibility and other features, it can effectively save processing time and improve processing efficiency by building a parallel pipeline multiplication accumulation architecture; by comprehensively analyzing the factors such as target type data, target feature differences and error tolerance in the application process, it can reasonably set the processing data format, effectively improve the access efficiency of data and parameters while ensuring the processing accuracy, and achieve full connectivity The purpose of multi layer parallel acceleration.

【技术实现步骤摘要】
一种CNN全连接层运算的多并行加速方法
本专利技术属于计算机体系结构
,具体涉及一种CNN全连接层运算的多并行加速方法。
技术介绍
卷积神经网络(CNN)作为深度学习的重要代表,在目标分类、识别、视频分析以及自然语言处理等方面应用越来越广泛。CNN主要由卷积层、池化层、激活函数以及全连接层组成。CNN全连接层运算由于参数数据量大,精度要求高,对外部存储速度要求高等特点,一直是制约CNN加速的瓶颈。如当前典型的分类网络VGG-16全连接层参数个数就达138M。目前CNN全连接层运算的方法主要优化方式是参数压缩、并行运算等。其中,并行运算主要以下三种方式,第一种是采用GPU多线程计算实现加速;第二种是采用FPGA等可编程逻辑电路用硬件资源扩展换取速度的方式实现加速;第三种采用深度学习专用处理器或ASIC实现加速。西安交通大学CN201710331078.5公开了一种参数化可扩展的神经网络全连接层互联结构,包括若干层全连接层,每层全连接层例化了若干个基本单元;一个基本单元连接一个路由器,同一全连接层中的基本单元经过路由器相连,形成全连接环;全连接环的路由器上下相连形成一种参数化可扩展的神经网络全连接层多层互连结构,支持双向的数据传递(前向推理,反向学习)。采用可配置的全连接基本单元作为全连接层硬件实现的基础,用户可以根据实际使用的神经网络的需求通过设置参数控制生成多个基本单元并互连的方式完成其网络中全连接层的设计实现和并行加速;该专利技术的设计考虑了数据流水线,缩短了系统运行时钟周期,灵活配置全连接层的结构和规模,便于系统的快速部署实现。美国阿尔特拉公司CN201610878617.2公开了一种用于实施卷积神经网络加速器上的层的方法和装置制造方法。该装置和方法用于在目标上实施卷积神经网络(CNN)加速器,包括利用一个或者多个处理元件实施标准卷积层。修改CNN加速器的配置以改变CNN加速器上的部件之间的数据流。响应数据流的改变,利用一个或者多个处理元件实施完全连接层。清华大学CN201710524017.0公开了一种基于可分割阵列的可重构加速器及其实现方法,该可重构加速器包括便笺式存储器缓存区,用于实现卷积计算与稀疏化全连接计算的数据重用;可分割计算阵列,包括多个重构计算单元。可分割计算阵列分为卷积计算阵列及稀疏化全连接计算阵列;寄存器缓存区,由多块寄存器构成的存储区域,为卷积计算与稀疏化全连接计算提供输入数据、权重数据及对应的输出结果;卷积计算的输入数据及权重数据分别输入到卷积计算的阵列,输出卷积计算结果;稀疏化全连接计算的输入数据及权重数据分别输入到稀疏化全连接计算阵列,输出稀疏化全连接计算结果。本专利技术将两种神经网络的特点相融合,提高了芯片的计算资源与内存带宽利用率。但上述方法主要存在以下问题:(1)没有对目标类型数目、目标特征差异度以及对错误容忍度等因素进行全面分析,合理选取数据格式,导致处理精度与参数占用存储空间、参数数据吞吐量等因素不能达到良好平衡。(2)对全连接层参数进行模型压缩,可有效降低参数数量,但也存在降低正确率的风险。没有利用卷积神经网络卷积处理结果稀疏性特点,全连接运算过程中产生大量无效读操作,浪费能耗和消耗处理时间。(3)采用专用处理器或ASIC或FPGA实现全连接层,只是简单的通过硬件资源的增加、迭代实现逻辑加速,没有充分发挥可编程逻辑电路的全流水性能,硬件资源占有较多,能效比大打折扣;(4)利用GPU实现全连接层,有编程简单、运行速度快等优点,但存在功耗过高、散热困难等问题。
技术实现思路
有鉴于此,本专利技术的目的是提供一种CNN全连接层运算的多并行加速方法,可以提高运算速度,节省能耗。一种CNN全连接层运算的多并行加速方法,包括如下步骤:步骤1、根据目标类型种类及特征选取运算数据格式:步骤2、根据全连接层参数数据数量和数据格式位宽确定所需的存储资源,由存储资源和计算硬件资源确定运算并行度k;步骤3、将全连接层权重参数数据格式转换为步骤1确定的数据格式;假设格式转换后的权重参数数据长度为N,卷积层的数据长度为L;从权重参数数据的第一个数据点开始,共抽取长度为L的数据点,得到第一份数据;开始,再抽取长度为L的数据点,得到第二份数据;以此类推,直到得到第k份数据;再将每份数据的同一位置的数据顺序取出拼接成一组数据,最后得到ceil(N/L/k)组数据,并将其存储至存储器中;其中,ceil函数表示向上取整;步骤4、将运算数据输入到CNN全连接层进行运算,其中,每次得到的卷积层运算结果与存储的一组权重参数数据进行乘累加计算,乘累加一次则计数一次;其中,在乘累加计算之前,先对卷积层运算结果进行判定:如果卷积层运算结果为0,不读取该卷积结果对应的权重参数数据,即不进行乘累加计算,但乘法计算计数累计一次;如果卷积层运算结果不为0,读取计数值指向的权重参数数据的列数,卷积层运算结果与该组权重参数数据同时进行乘累加计算并进行累积一次计数,得到当前的k个乘累加计算结果,当乘累加计算计数次数达到L时,则表示此组k个全连接层计算完成,开始下一组全连接层计算,直到完成所有ceil(N/L/k)组数据的乘累加计算;完成全连接层运算后,将运算结果按制定好的数据帧格式连续输出。较佳的,所述步骤1中,选取运算数据格式的方法为:如果目标分类种类超过100以上且类型差异小的情况下,采用32位单精度浮点数据格式;如果目标分类种类少于20类且类型差异大的情况下,采用18位浮点数据格式;其它情况采用24位浮点数据格式。较佳的,所述步骤2中,假设处理数据位宽为n,存储器位宽为m,则运算并行度最高不超过k=floor(m/n);其中,floor函数表示向下取整。较佳的,N不能整除L和k时,在权重参数数据末尾补零直到刚好满足整除。较佳的,所述乘累加计算采用浮点乘法器、浮点加法器和存储器完成;其中,所述存储器用来缓存处理数据,存储器的位宽由待处理的数据的数据格式和位宽决定,存储器的深度由浮点加法器的流水延时决定,浮点加法器最大的流水延时为13个时钟周期,存储器深度设计为16。较佳的,所述步骤4中,将运算结果按制定好的数据帧格式连续输出的方法为:将k个并行计算得到的累加值按拼接的先后顺序串行输出,以用于后续确定目标类型和置信度。本专利技术具有如下有益效果:本专利技术的一种CNN全连接层运算的多并行加速方法,利用卷积神经网络运算结果的稀疏性特点,通过提前判读卷积神经网络卷积层处理结果的数值,大大减少了对全连接层参数的读操作,有效节省能耗,提升系统能效比;利用FPGA等可编程逻辑器件硬件资源复用、扩展能力强等特点,通过构建并行流水乘累加架构,有效节省处理时间,提升处理效率;通过全面分析目标类型数据、目标特征差异以及应用过程中的错误容忍度等因素,合理设定处理数据格式,在保证处理精度的同时,有效提升数据及参数的存取效率,实现全连接层多并行加速的目的。...

【技术保护点】
1.一种CNN全连接层运算的多并行加速方法,其特征在于,包括如下步骤:/n步骤1、根据目标类型种类及特征选取运算数据格式:/n步骤2、根据全连接层参数数据数量和数据格式位宽确定所需的存储资源,由存储资源和计算硬件资源确定运算并行度k;/n步骤3、将全连接层权重参数数据格式转换为步骤1确定的数据格式;/n假设格式转换后的权重参数数据长度为N,卷积层的数据长度为L;/n从权重参数数据的第一个数据点开始,共抽取长度为L的数据点,得到第一份数据;开始,再抽取长度为L的数据点,得到第二份数据;/n以此类推,直到得到第k份数据;/n再将每份数据的同一位置的数据顺序取出拼接成一组数据,最后得到ceil(N/L/k)组数据,并将其存储至存储器中;其中,ceil函数表示向上取整;/n步骤4、将运算数据输入到CNN全连接层进行运算,其中,每次得到的卷积层运算结果与存储的一组权重参数数据进行乘累加计算,乘累加一次则计数一次;其中,在乘累加计算之前,先对卷积层运算结果进行判定:如果卷积层运算结果为0,不读取该卷积结果对应的权重参数数据,即不进行乘累加计算,但乘法计算计数累计一次;如果卷积层运算结果不为0,读取计数值指向的权重参数数据的列数,卷积层运算结果与该组权重参数数据同时进行乘累加计算并进行累积一次计数,得到当前的k个乘累加计算结果,当乘累加计算计数次数达到L时,则表示此组k个全连接层计算完成,开始下一组全连接层计算,直到完成所有ceil(N/L/k)组数据的乘累加计算;完成全连接层运算后,将运算结果按制定好的数据帧格式连续输出。/n...

【技术特征摘要】
1.一种CNN全连接层运算的多并行加速方法,其特征在于,包括如下步骤:
步骤1、根据目标类型种类及特征选取运算数据格式:
步骤2、根据全连接层参数数据数量和数据格式位宽确定所需的存储资源,由存储资源和计算硬件资源确定运算并行度k;
步骤3、将全连接层权重参数数据格式转换为步骤1确定的数据格式;
假设格式转换后的权重参数数据长度为N,卷积层的数据长度为L;
从权重参数数据的第一个数据点开始,共抽取长度为L的数据点,得到第一份数据;开始,再抽取长度为L的数据点,得到第二份数据;
以此类推,直到得到第k份数据;
再将每份数据的同一位置的数据顺序取出拼接成一组数据,最后得到ceil(N/L/k)组数据,并将其存储至存储器中;其中,ceil函数表示向上取整;
步骤4、将运算数据输入到CNN全连接层进行运算,其中,每次得到的卷积层运算结果与存储的一组权重参数数据进行乘累加计算,乘累加一次则计数一次;其中,在乘累加计算之前,先对卷积层运算结果进行判定:如果卷积层运算结果为0,不读取该卷积结果对应的权重参数数据,即不进行乘累加计算,但乘法计算计数累计一次;如果卷积层运算结果不为0,读取计数值指向的权重参数数据的列数,卷积层运算结果与该组权重参数数据同时进行乘累加计算并进行累积一次计数,得到当前的k个乘累加计算结果,当乘累加计算计数次数达到L时,则表示此组k个全连接层计算完成,开始下一组全连接层计算,直到完成所有ceil(N/L/k)组数据的乘累加计算;完成全连接层运算后,将运算结果按制定好...

【专利技术属性】
技术研发人员:李宗凌汪路元禹霁阳程博文李珂蒋帅庞亚龙郝梁牛跃华刘伟伟
申请(专利权)人:北京空间飞行器总体设计部
类型:发明
国别省市:北京;11

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

1