CN112116084A - 可重构平台上固化全网络层的卷积神经网络硬件加速器 - Google Patents
可重构平台上固化全网络层的卷积神经网络硬件加速器 Download PDFInfo
- Publication number
- CN112116084A CN112116084A CN202010965915.1A CN202010965915A CN112116084A CN 112116084 A CN112116084 A CN 112116084A CN 202010965915 A CN202010965915 A CN 202010965915A CN 112116084 A CN112116084 A CN 112116084A
- Authority
- CN
- China
- Prior art keywords
- layer
- calculation
- chip
- strategy
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种可重构平台上固化全网络层的卷积神经网络硬件加速器,包括:控制模块,用于协调和控制加速过程,包括对片上的其它模块的初始化和同步,以及启动各计算核心与片外内存间不同类型数据的交互;数据传输模块,包括内存控制器和多个DMA,用于各片上各数据缓存与片外内存间的数据交互;计算模块,包括多个用于计算的计算核心,各计算核心与卷积神经网络的不同网络层一一对应;各计算核心均各自作为流水线的一级,所有计算核心共同构成完整的粗粒度流水线结构;各计算核心内部包含一个细粒度的计算流水线。本发明通过实现层级计算与硬件结构间的端到端映射,提高软、硬件特征间的适配性,提升了计算资源的利用效率。
Description
技术领域
本发明属于卷积神经网络硬件加速技术领域,具体地涉及一种可重构平台上固化全网络层的卷积神经网络硬件加速器及加速方法。
背景技术
随着学***台在计算和存储结构、数据流调度等方面难以进行针对性优化,使得兼具计算密集性和数据密集性两种特征的卷积神经网络在CPU和GPU上的部署存在计算资源需求大、计算时间长、计算功耗大等问题。例如围棋程序AlphaGo的运行过程需要一千块CPU及两百块GPU在后台同时计算,每一步棋都需要经过数分钟的推理,下一盘棋需要高达三千美元的电能供应。因此,如何高性能、低能耗地进行卷积神经网络部署,成为学术界和商业机构的研究热点。
综合权衡性能和能效,各界目前普遍采用基于ASIC和FPGA的硬件加速技术,通过在计算层面上提供更高的并行度,以及在访存层面上提供与数据局部性特征相符合的片上缓存策略,来提高卷积神经网络的部署效率。其中ASIC是为特定用途设计开发的集成电路芯片,具有高性能、低功耗、面积小等特点。FPGA作为一种典型的可重构器件,其内部包含大量可重复配置的逻辑电路,具有良好的可定制性和可扩展性,能够满足特定应用的高性能和低功耗的运行要求,从而获得较高的能效比。
目前主流硬件加速器通常采用向量内积单元和二维阵列两种类型的计算结构对卷积神经网络前馈过程中的矩阵、向量操作进行处理。在进行计算映射时,向量内积单元主要基于循环展开和循环分片。二维阵列则是在各PE之间建立互联的数据通路使得数据在PE阵列中可以灵活流动以提高计算并行度和数据复用度。
基于上述计算结构,目前主流ASIC和FPGA硬件加速器普遍采用层间计算部件复用的加速模式,即所有计算部件被组织为若干同构的处理单元后对外封装为统一的单核计算整体,不同网络层采用复用的形式逐层计算。这种原先为使ASIC加速器能够适用于更多神经网络类型的片上结构和加速方法与卷积神经网络的内在计算特性存在失配性问题。在FPGA等可重构计算平台上进行卷积神经网络硬件部署时,这种失配被硬件的可定制性所凸显,导致硬件加速效率被严重降低,具体体现在以下几个方面。
卷积神经网络中不同网络层在不同维度上的并行度差异较大,这与单一、固定的硬件并行度相冲突。卷积神经网络中各网络层均在输入特征图、输出特征图、输入神经元、输出神经元等不同维度上存在大量层内计算并行性。而单一且同构的硬件计算结构通常只能在固定维度上以固定并行度进行层级计算,从而存在底层硬件并行度与上层应用并行度不匹配的情况,导致计算过程中部分片上资源被闲置。
单核加速模式所能挖掘的有限层内计算并行度与目前FPGA设备所能提供的大量并行计算资源相冲突。随着制造工艺的不断进步,现代FPGA芯片的浮点计算性能已经能够达到10TFLOPS量级。而在单核加速模式下,一方面层内各维度上的并行度有限,且不同层在不同维度上的并行特征差异明显,使得加速器所能部署的有效计算并行度有限。另一方面,单核的逐层加速模式无法挖掘网络层间的计算并行度。两方面原因导致了现有硬件加速器结构所能挖掘的整体并行度受限,加速器部署过程中难以充分、高效地利用FPGA的各类逻辑资源。
不同网络层的访存特征迥异,这与不同层复用相同硬件单元的加速模式相冲突。一方面,不同网络层的数据组成比例、数据量差异明显,使用相同的片上数据缓存策略在不同层间进行复用势必难以达到最优。以Caffeine对VGG16的部署为例,该模型中绝大多数卷积层在循环分片后的计算并行度完全相同,因此计算单元复用不会造成计算效率降低。然而,该加速器处理卷积层的平均性能仅为峰值性能的76.7%,这主要由于数据缓存策略的原因造成了严重的片外访存瓶颈。
另一方面,卷积神经网络计算中两种主要类型层,卷积层和全连接层分别为计算密集型和访存密集型,其计算过程的数据局部性和片外访存带宽开销呈现数量级上的差异。在单核硬件结构下,不同类型层只能采用时分复用的加速模式,导致卷积层计算过程中整体片外访存带宽利用率不足,全连接层计算过程中由于访存瓶颈导致片上计算能力无法充分发挥,加速过程对片外访存带宽的利用很不平衡。同样以Caffeine对VGG16的部署为例,仅占总计算量不到1%的全连接层使整体计算性能降低了约20%,严重影响了硬件加速效率。
发明内容
针对上述存在的技术问题,本发明目的是:提供了一种可重构平台上固化全网络层的卷积神经网络硬件加速器及加速方法,在可重构平台上***性地提出了异构多核加速器结构和加速方法,有效缓解了卷积神经网络硬件加速中的软硬件特征失配问题。通过实现层级计算与硬件结构间的端到端映射,提高软、硬件特征间的适配性,避免了传统卷积神经网络加速器设计中大量硬件资源的浪费,提升了计算资源的利用效率。
本发明的技术方案是:
一种可重构平台上固化全网络层的卷积神经网络硬件加速器,包括:
控制模块,用于协调和控制加速过程,包括对片上的其它模块的初始化和同步,以及启动各计算核心与片外内存间不同类型数据的交互;
数据传输模块,包括内存控制器和多个DMA控制器,用于各片上各数据缓存与片外内存间的数据交互;
计算模块,包括多个用于计算的计算核心,各计算核心与卷积神经网络的不同网络层一一对应;不同计算核心各自拥有逻辑上相互独立的权值片外访存通路,前后计算核心间部署有用于传递输入特征图数据的单向片上数据通路,第一个计算核心和最后一个计算核心各自拥有前馈过程的输入/输出片外访存通路;各计算核心均各自作为流水线的一级,所有计算核心共同构成完整的粗粒度流水线结构;各计算核心内部包含一个细粒度的计算流水线;各卷积层所对应的核内流水线分为四级,分别为取数、计算、激活、输出,流水线并行度根据所对应网络层的计算并行方式进行单独设计和优化。
优选的技术方案中,所述计算模块中不同计算核心内部包含各自的本地乒乓缓存集,其设计参数根据核内流水线的并行度进行单独调整,各计算核心的计算结果直接流式输入到后继计算核心。
优选的技术方案中,采用直接映射策略将各计算核心每轮计算所需的输入特征图全部缓存于片上;所述直接映射策略包括卷积层循环展开、分片和全连接层分片;
所述卷积层循环展开、分片中在对M、N层循环进行大小为Tm、Tn的循环展开的同时,对R层循环进行大小为Tr的循环展开,展开得到向量内积单元结构,所述向量内积单元结构输出特征图的计算并行度为Tm,每个输出特征图内部有Tr个输出神经元被同时计算,各输出神经元的计算并行度为Tn,总的计算并行度为Tm×Tn×Tr,片上的权值缓存容量设定为Tm×N×K2,K为对应卷积窗口大小;
所述全连接层分片在输入神经元和输出神经元的维度上进行大小为Tm和Tn的循环展开,对应的计算并行度为Tm×Tn,片上权值缓存大小设定为Tm×Tn,全连接层的输入特征图全部缓存在片上,在加速器部署时对全连接层进行稀疏化处理。
优选的技术方案中,采用层间融合映射策略将各计算核心每轮计算所需的输入特征图全部缓存于片上;所述层间融合映射策略包括:确定层间融合后各层输出特征图的子区域,并通过改变各层间流水级的处理粒度,将层间融合应用于层间计算流水的并行方式中。
优选的技术方案中,所述层间融合映射策略还包括多级层间融合的映射方式,融合规则包括:第一层作为融合起点,后续卷积层的R、C层循环大小若大于等于第一层R、C循环大小的1/5,则将被融合为同一级;若卷积层的R、C层循环小于第一层1/5时,将该层作为新一级的融合起点,以此类推;
当采用多级层间融合时,将充当融合连接点的网络层的输入特征图全部缓存在片上,层间融合之后,确定每一级融合中末尾卷积层的子区域大小,同一级层融合中其它层的对应子区域大小根据其与末尾卷积层间的R、C循环大小关系确定;各卷积层计算核心在每个层间粗粒度流水级中采用卷积层的循环展开和分片算法完成计算,将原先的R、C层循环大小对应变为输出特征图子区域的高度和宽度;
全连接层的映射方式与直接映射策略相同,采用层间融合映射方式后,加速器总的并行部署参数为各卷积层计算核心的循环展开大小Tm、Tn、Tr,各级融合中末尾卷积层的子区域大小R'、C',以及全连接层的循环展开大小Tm、Tn。
优选的技术方案中,所述控制模块还包括数据访存优化模块,用于对全连接层进行数据访存优化,所述数据访存优化模块包括全连接层平衡剪枝模块,用于对全连接层进行剪枝和压缩,配合重训练的方式来消除权值冗余和剪枝后权值数据的不规则性,具体包括:
在训练过程中为输出神经元设定一个与所剩权值数量呈正相关的概率值,在每轮剪枝中优先裁剪概率值较大的输出神经元的权值,通过重训练弥补精度损失;
对于未平衡的输出神经元,权值填充0值;
对稀疏权值进行压缩,将压缩权值矩阵按照输出神经元的先后顺序逐行保存剪枝后的剩余权值,将位置信息矩阵中元素与压缩权值矩阵中权值一一对应,用来记录各输出神经元的剩余权值在原权值矩阵中的索引值,在计算过程中,权值数据以压缩的形式进行存储和计算。
优选的技术方案中,还包括全连接层计算核心单元,包括双索引缓存和输入神经元选择器,分别用于缓存全连接层的权值位置信息,以及根据位置信息从输入缓存中选取对应的输入神经元;当计算并行度为Tm×Tn时,在计算过程中计算核心通过片外访存读取Tm×Tn个权值数据和对应的位置信息,将权值数据发送至Tm个向量乘加单元,将位置信息发送至输入神经元选择器用于为Tm个向量乘加单元选择各自对应的Tn个输入神经元,通过向量乘加单元完成内积计算和非线性变换操作;将下一轮计算所需的Tm×Tn个权值数据和对应的位置信息读取至对应的双缓存中。
优选的技术方案中,所述数据访存优化模块还包括层间流水半批处理模块,各卷积层对不同前馈输入数据按照非批处理模式依次计算,全连接层将等待至卷积层完成批尺寸个输入数据的计算后,再以批处理的方式对批尺寸个输入数据集中处理。
优选的技术方案中,比较目标硬件平台的片上缓存容量与所加速网络模型的输入特征图总量间关系,若目标硬件平台的片上缓存容量大于网络各层总的输入特征图数据量时,确定直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略,通过比较直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略选择最终并行策略;反之,确定层间融合映射策略对应的最优并行策略,并将其作为最终并行策略;所述最优并行策略的确定方法,包括:
(1)构建直接映射和层间融合映射的组合优化模型,包括建立不同并行策略对应的整体吞吐量、及不同并行策略对应的整体计算、访存比;
(2)建立不同并行策略对应的约束条件,包括不同向量内积单元结构对应的DSP资源开销和不同缓存结构对应的BRAM资源开销;
(3)基于遗传算法求解多变量组合优化模型,包括以下步骤:将并行变量以整型数组的形式编码为染色体,其中的任一元素对应一位变量;对原始种群中的染色体进行变量组合的随机初始化;在每轮进化中,首先计算各染色体所对应的适应度,并根据适应度大小确定不同染色体的遗传概率;不同进化阶段中的适应度不同,在前半进化代数轮进化中,定义适应度为目标函数的乘积;在后半进化代数轮进化中,定义适应度为两个目标函数的乘积除以对应访存开销与硬件平台访存带宽上限的比值;在交叉、变异过程中,染色体中变量在交换和更新前带入约束条件进行检验。
本发明还公开了一种可重构平台上固化全网络层的卷积神经网络硬件加速方法,采用上述的硬件加速器,加速方法包括以下步骤:
S01:比较目标硬件平台的片上缓存容量与所加速网络模型的输入特征图总量间关系;
S02:若目标硬件平台的片上缓存容量大于网络各层总的输入特征图数据量时,确定直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略,通过比较直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略选择最终并行策略;
S03:反之,确定层间融合映射策略对应的最优并行策略,并将其作为最终并行策略;所述最优并行策略的确定方法,包括:
(1)构建直接映射和层间融合映射的组合优化模型,包括建立不同并行策略对应的整体吞吐量、及不同并行策略对应的整体计算、访存比;
(2)建立不同并行策略对应的约束条件,包括不同向量内积单元结构对应的DSP资源开销和不同缓存结构对应的BRAM资源开销;
(3)基于遗传算法求解多变量组合优化模型,包括以下步骤:将并行变量以整型数组的形式编码为染色体,其中的任一元素对应一位变量;对原始种群中的染色体进行变量组合的随机初始化;在每轮进化中,首先计算各染色体所对应的适应度,并根据适应度大小确定不同染色体的遗传概率;不同进化阶段中的适应度不同,在前半进化代数轮进化中,定义适应度为目标函数的乘积;在后半进化代数轮进化中,定义适应度为两个目标函数的乘积除以对应访存开销与硬件平台访存带宽上限的比值;在交叉、变异过程中,染色体中变量在交换和更新前带入约束条件进行检验。
与现有技术相比,本发明的优点是:
1、本发明采用多核异构的加速模式,可以根据网络的不同层的规模,为其分配相应的硬件资源,使得不同大小的网络层都有相对充足的硬件资源,解决了不同网络层次的并行度与同构硬件并行度之间的冲突。
2、本发明可以在FPGA上集成多个核,不同的核处理不同的网络层。此举保证了在FPGA工作的每个时刻,都有充足的需求需要在FPGA上进行,进而缓解了单核加速模式挖掘的层内并行度与FPGA提供的并行计算资源的冲突。
3、在实现具体实例时,本发明采用“三步走”的方法,首先为每个计算核心单独部署、优化,然后宏观上合理组织不同的核心,最后再结合宏观和局部观察,协调片上计算和片外访存。通过这三个步骤,可以有效解决不同网络层的访存特征与同构加速模式的冲突。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明可重构平台上固化全网络层的卷积神经网络硬件加速器的整体硬件架构;
图2为本实施例的卷积层循环展开后的向量内积单元结构示意图;
图3为本实施例的连续卷积层间的融合映射策略的计算方法示意图;
图4为本实施例的多级层间融合映射方法示意图;
图5为现有全连接层的剪枝操作示意图;
图6为本实施例的全连接层的平衡剪枝示意图;
图7为本实施例的全连接层的权重压缩示意图;
图8为本实施例的支持稀疏处理的全连接层计算核心结构示意图;
图9为本实施例的AlexNet部署中的半批处理示意图;
图10为本实施例的Roofline多核性能分析模型示意图;
图11为本实施例的Zynq 7020平台上加速器与CPU、GPU的性能、能效对比示意图;
图12为本实施例的Virtex-7 690T平台上加速器与CPU、GPU的性能、能效对比示意图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例:
本发明面向卷积神经网络的高效硬件部署,将可重构计算技术与异构多核体系结构相结合,在可重构平台上***性地提出了异构多核加速器结构和加速方法,有效缓解了卷积神经网络硬件加速中的软硬件特征失配问题。在本发明中,提出了在片上固化全网络层的异构多核加速器部署方法,通过实现层级计算与硬件结构间的端到端映射,提高软、硬件特征间的适配性,避免了传统卷积神经网络加速器设计中大量硬件资源的浪费,提升了计算资源的利用效率。
本发明设计的片上固化全网络层的加速器整体架构如图1所示,其中主要包括控制模块、数据传输模块、计算模块三部分。
控制模块主要用于协调和控制整个加速过程,包括对片上的其它模块的初始化和同步,以及启动各计算核心与片外内存间不同类型数据的交互。在实际部署中,该模块可以以有限状态机的形式通过硬件描述语言进行编写,也可以直接使用运行软件代码的软/固核处理器部署。相较而言,软件控制的部署方式设计复杂度较低。考虑到该加速器片上结构中计算核心数量较多,控制状态较为复杂,因此在设计中我们使用软件控制的方式部署控制模块。
数据通信模块主要由内存控制器和若干DMA控制器组成,负责各片上各数据缓存与片外内存间的数据交互。内存控制器作为片上逻辑与片外内存的数据接口,所有对片外的数据访问均由其发起。计算过程中,DMA控制器作为片上数据缓存与内存控制器的通信媒介,负责将网络的输入数据写入到第一个计算核心的输入缓存,以及读取最后一个计算核心的输出。除此之外,计算所需的权值数据也由DMA控制器负责写入到对应计算核心的权值缓存。因此,总的DMA控制器数量等于所对应网络模型的层数加2。
计算模块由若干计算核心组成,负责具体的计算过程。各计算核心与不同网络层间是一一对应的关系,因此总的核心数量与所加速网络模型的层数相同。在数据互联方面,不同计算核心各自拥有逻辑上相互独立的权值片外访存通路,前后核心间部署有用于传递输入特征图数据的单向片上数据通路,核心0和核心n-1各自拥有前馈过程的输入/输出片外访存通路。加速过程中,不同网络层的计算过程是重叠和流水的,各计算核心均各自作为流水线的一级,所有核心共同构成了完整的粗粒度流水线结构。各计算核心内部包含有一个细粒度的计算流水线。从整体上看,各卷积层所对应的核内流水线分为四级,分别为取数、计算、激活、输出,具体的流水线并行度将根据所对应网络层的计算并行方式进行单独设计和优化。需要注意的是,计算模块可以根据需要采用包括向量内积、二维脉动阵列等在内的任意计算方式,并以任意的数据类型进行部署。不失一般性,在下文中我们均以定点数向量内积单元为例进行描述。
不同于以往加速器设计中所采用的统一、共享式的片上缓存,这里不同计算核心内部包含有各自的本地乒乓缓存集,其设计参数,如容量、划分策略、读/写端口数量等可根据核内流水线的并行度进行单独调整。在该加速器结构中没有部署输出缓存,各计算核心的计算结果将直接流式输入到后继计算核心。因此,区别于传统加速模式中输入、输出特征图被分片缓存的方式,这里将各层每轮计算所需的全部输入特征图完整地保存在片上。此外,与对网络层间并行度的挖掘相对应,在硬件资源一定的情况下,与以往加速器相比各层内计算并行度将有所降低,因此各核心对权值缓存的容量需求也相应减少。整体上看,本发明中采用的数据缓存策略可以避免各层特征图数据的片外读写,从而可以与层间流水的计算方式有效协调。
(1)计算映射与并行策略
为了便于通过网络层间计算流水的方式挖掘层间并行性,需要将各计算核心每轮计算所需的输入特征图全部缓存于片上。然而,对于大规模网络模型来说,各层的输入特征图数据量较大,在某些计算场景下难以全部缓存在片上。因此,为了增强该加速器部署方法的适用性,本发明根据网络各层总的输入特征图数据量和目标硬件平台的片上缓存容量间关系设计了直接映射和层间融合两种类型的网络映射策略。
(1.1)网络的直接映射策略
直接映射策略对应硬件平台的片上缓存资源相较所部署网络模型的输入特征图数据总量较为充裕的情况。此时,每个层间粗粒度流水线的一级对应完整一层的计算。
在该映射策略中,各卷积层的计算核心按照算法1所示进行卷积层的循环展开和并行,其中M、N分别为输出通道数、输入通道数,R、C分别为输出特征图高度和宽度,K、S分别为卷积窗口大小和卷积步长大小,m、n、r、c、k1、k2分别为对应循环中的循环变量,Tr、Tc为循环展分片大小,Tm、Tn为循环展开大小。
算法1:卷积层的循环展开和分片方式
与传统的卷积层循环展开和分片方式不同,一方面由于各层的输入神经元被全部缓存在片上,且输出神经元在计算完成后被直接发送给后继计算核心,因此本发明没有在输出特征图的维度上对R、C循环进行分片。另一方面,为了能够在循环展开的基础上更好地进行层间计算流水级的平衡,在对M、N层循环进行大小为Tm、Tn的循环展开的同时,对R层循环进行大小为Tr的循环展开。展开后的向量内积单元结构如图2所示,在这种结构下,输出特征图的计算并行度为Tm,每个输出特征图内部将有Tr个输出神经元被同时计算,各输出神经元的计算并行度为Tn,总的计算并行度为Tm×Tn×Tr。与之相对应,片上的权值缓存容量设定为Tm×N×K2,则每个权值数据的复用度可达到最高值R×C。
全连接层的映射方式与传统处理方法类似,如算法2所示,其中M、N分别为输出、输入神经元数量:
算法2:全连接层的分片计算过程
在输入神经元和输出神经元的维度上进行大小为Tm和Tn的循环展开,对应的计算并行度为Tm×Tn。与卷积层不同,由于全连接层的权值数据复用度与缓存大小无关,因此片上权值缓存大小可直接设定为Tm×Tn。考虑到全连接层的输入特征图数据量普遍较小,因此在不同映射策略中全连接层的输入特征图都将被全部缓存在片上。此外,在加速器部署时将对全连接层进行稀疏化处理,并相应地为计算核心提供稀疏化支持,相关实现细节将在后续章节中描述。
由于各计算核心与不同层间为一一对应的关系,因此在加速器部署过程中,可直接将对向量内积单元的调用和控制过程固化在各计算核心内(对应算法1中的外侧四层循环和算法2中的外侧两层循环),从而避免了由编译、指令控制所引入的额外开销。综上,采用直接映射进行加速器部署时需要为各卷积层的计算核心确定各自的并行设计参数(Tm,Tn,Tr),以及各全连接层计算核心的并行参数(Tm,Tn)。
(1.2)基于层间融合的映射策略
层间流水的计算方式需要避免各计算核心(头、尾核心除外)对输入和输出特征图数据进行片外内存读写。对此,除了在片上缓存全部输入特图外,基于层间融合的卷积层计算方法提供了另一种解决方案。层间融合的基本思路如图3所示,其建立在后继卷积层在计算过程中各输出神经元仅和之前卷积层的部分计算结果间存在数据相关的基础上。因此,确定层间融合后各层输出特征图的子区域(对应R、C循环),并通过改变各层间流水级的处理粒度,层间融合同样可以应用于层间计算流水的并行方式中,并且可以有效降低各卷积层计算核心在每个粗粒度流水级计算中所需缓存的输入特征图数据量。此外,针对前后层中R、C循环大小相同的情形,在对这些层进行融合时以块卷积的方式处理各输出特征图子区域。与之对应,块卷积时的前后层子区域大小相同,各子区域在计算过程中采用边缘像素重复的填充方式。
对于层数较深的网络模型,融合的层数过多将导致计算过程中仍需要缓存大量输入特征图。对于这种情况,本发明采用多级层间融合的映射方式。如图4所示,卷积层1和2,以及卷积层2、3、4分别采用了层间融合。在这种情况下,整个网络中位于前部的网络层相较图3中的传统融合方法所需缓存的特征图数据量将显著降低。实际上,图3作为多级层融合的特例,其中所有的卷积层被融合为同一级。在具体的多级层间融合方式的选取上,为了降低融合难度,本发明对常用大规模网络结构特点进行分析,确定了如下融合规则:
第一层作为融合起点,后续卷积层的R、C循环大小若大于等于第一层R、C循环大小的1/5,则将被融合为同一级。对于R、C层循环小于第一层1/5的卷积层出现时,该层将作为新一级的融合起点,以此类推。
此外,为了便于在不同融合层级所对应的层间流水级间进行计算协调,当采用多级层间融合时,充当融合连接点的网络层(如图4中的卷积层3)的输入特征图将被全部缓存在片上。
在层间融合之后,需要确定每一级融合中末尾卷积层的子区域大小,记为R'、C'。确定该值后,同一级层融合中其它层的对应子区域大小即可根据与末尾卷积层间的R、C循环大小关系相应确定。此时各卷积层计算核心在每个层间粗粒度流水级中完成的计算仍然可以用算法1进行表示,区别在于原先的R、C层循环大小对应变为输出特征图子区域的高度和宽度。全连接层的映射方式与直接映射策略相同,采用层间融合映射方式后,加速器总的并行部署参数为各卷积层计算核心的循环展开大小Tm、Tn、Tr,各级融合中末尾卷积层的子区域大小R'、C',以及全连接层的循环展开大小Tm、Tn。尽管基于层间融合的映射策略同样可以部署于小规模的网络模型,但由于片上缓存的输入数据量受限,造成了权值数据的复用度降低。以各级融合中末尾卷积层为例,各权值数据复用次数由直接映射中的R×C次降为R'、C'次。因此在实际加速器部署过程中,当两种映射策略同时适用时需要根据相应的设计空间搜索方法做出最优权衡。此外,由于在计算不同子区域时权值数据需要重新从片外访问,因此权值缓存在每一个层间流水级中仅需存放Tm×Tn×K×K个权值即可满足计算需求。
(2)整体访存优化
片上固化全网络层后,为了缓解由于整体计算并行度的提高所造成的片外访存压力,加速器部署时的重点是针对全连接层进行数据访存优化。具体来说,一方面通过对全连接层进行剪枝和压缩,并设计相应计算核心使之支持稀疏网络层计算,减少整体权值数据量;另一方面,采用半批处理的前馈计算方式,在增大全连接层权值数据复用度的同时,保证卷积层计算过程中所需缓存的输入特征图数据量不变。
(2.1)全连接层的平衡剪枝
一方面考虑到卷积层的权值数据量较少,通常仅占不到权值总量的10%,并且相较全连接层的权值数据冗余度较低(35%vs 90%);另一方面卷积层的数量较多,若使各卷积层计算核心均具备稀疏计算能力需要较高的额外硬件开销,因此本发明在加速器部署时仅对全连接层进行剪枝。
然而,传统的剪枝策略将使得权值数据的不规则度增加,如图5所示,在剪枝后不同输出神经元对应的剩余权值数量差异明显,从而在计算过程中一方面在并行处理不同输出神经元时造成硬件计算单元间的负载不均衡,另一方面在处理不规则权值数据时将引入额外的硬件控制逻辑开销。
针对该问题,本发明中借鉴了平衡剪枝,配合重训练的方式来消除权值冗余和剪枝后权值数据的不规则性。具体来说,在训练过程中为输出神经元设定一个与所剩权值数量呈正相关的概率值,而后在每轮剪枝中优先裁剪概率值较大的输出神经元的权值。在此基础上,通过重训练弥补精度损失。平衡剪枝后的全连接层如图6所示。
对于其中少量仍未平衡的输出神经元,采用填充0值的方式使之平衡,如图中的红色权值。在完成平衡剪枝后,采用图7所示的方式对稀疏权值进行压缩。对应图6右侧剪枝后的全连接层,图7中左侧压缩权值矩阵按照输出神经元的先后顺序逐行保存剪枝后的剩余权值,右侧的位置信息矩阵中元素与压缩权值矩阵中权值一一对应,用来记录各输出神经元的剩余权值在原权值矩阵中的索引值。加速器部署所采用的索引值数据位宽与全连接层的输入神经元数量相关,一般来说不超过14位。在计算过程中,权值数据以压缩的形式进行存储和计算,从而有效降低了权值数据的存储量和片外访存量。
与平衡剪枝和权值压缩相对应,在本发明中,设计了如图8所示的全连接层计算核心结构。与卷积层计算核心相比,该结构中增加了双索引缓存(index buffer)和输入神经元选择器(input neuron selector),分别用于缓存图7中的权值位置信息,以及根据位置信息从输入缓存中选取对应的输入神经元。当计算并行度为Tm×Tn时,在计算过程中计算核心首先通过片外访存读取Tm×Tn个权值数据和对应的位置信息,然后权值数据被直接发送至Tm个向量乘加单元,位置信息被发送至输入神经元选择器用于为Tm个向量乘加单元选择各自对应的Tn个输入神经元,在此之后由向量乘加单元完成内积计算和非线性变换操作。
与此同时,下一轮计算所需的Tm×Tn个权值数据和对应的位置信息将被读取至对应的双缓存中。与卷积层的计算核心相比,每个全连接层计算核心内部的细粒度流水线包括5个流水级:取数、选数、内积、激活、输出。通过这种方式,可有效消除全连接层的计算、存储、访存冗余。
(2.2)层间流水中的半批处理
传统批处理模式在提高权值数据复用度的同时将导致各层的中间计算结果增多,因此当批处理被应用在层间流水的计算结构中时相应需要缓存更多的输入特征图。考虑到通常全连接层的输入特征图数据量较低,将其全部缓存在片上不会造成过多的缓存资源开销,因此在加速器部署中我们采用半批处理的计算模式,即各卷积层对不同前馈输入数据按照非批处理模式依次计算,而全连接层将等待至卷积层完成批尺寸(batch_size)个输入数据的计算后,再以批处理的方式对batch_size个输入数据集中处理。
这里以AlexNet的部署为例对层间流水下的半批处理计算方式进行说明。如图9所示,此时batch_size大小为4,即一批数据中包含4个输入,片上共有8个计算核心,各自对应AlexNet的8个网络层,其中核0到核4为卷积层核心,核5到核7为全连接层核心。卷积层计算核心的每个层间计算流水级对应一批数据中的单个输入,并在一个流水级结束后将计算结果发送至后继核心。全连接层核心的每个层间计算流水级对应一批数据中的全部4个输入,并且只当接收完之前核心的一批处理结果后才开始对这批数据的处理。图9中,在Stage 3结束时,核4处理完成Batch 3中第4个输入数据,并将Batch 3的计算结果发送给核5。在Stage 4起始时刻,核4开始处理Batch 4中的第一个输入数据,核5开始对Batch 3进行批处理,以此类推。在半批处理模式下,全连接层的权值数据复用度将增加batch_size倍。在片上缓存方面,卷积层计算核心的输入缓存大小与非批处理模式时相同,全连接层计算核心的缓存大小为该层的输入特征图尺寸乘以batch_size。相应的,batch_size的取值亦作为加速器部署时的并行设计参数。
(3)加速器部署的设计空间搜索策略
针对不同计算场景,加速器部署需要选择合适的映射方式,并在此基础上确定最终的并行策略。该过程如算法3所示:
算法3:整体设计空间的搜索过程
首先比较目标FPGA平台的片上BRAM缓存容量与所加速网络模型的输入特征图总量间关系。当前者大于后者时,原则上直接映射和层间融合映射均可行,因此需要分别确定两种映射策略下加速器的最优并行策略,然后通过比较两者的理论性能值来确定最终的加速器并行策略。
而对于FPGA的BRAM容量小于输入特征图总量的情况,则只需要确定层融合映射方式下的最优并行策略即可。算法3的核心是确定不同映射方式下的最优并行策略。相较以往加速器,片上固化全网络层的加速器结构由于所部署的计算核心数量较多,一方面异构特性使得不同计算核心具有不同的计算、访存特性,另一方面层间流水的计算结构使得计算核心间需要进行互相协调以避免出现流水停顿,两方面原因导致加速器的整体计算、访存特征变得更为复杂。为了更好地刻画加速器的计算/访存行为,在本发明中,我们通过Roofline多核性能模型,如图10,来分析不同映射方式下不同加速器并行策略的片上计算与片外访存间的量化关系。通常来说,给定***的性能瓶颈主要存在于计算吞吐量和片外数据访存两方面。通过以可视化的方式建立两者在不同硬件部署策略间关系,Roofline模型可以用来分析和确定***的整体性能瓶颈。
图10中横坐标轴对应计算访存比,纵坐标轴对应计算吞吐量。坐标系中任意的坐标点可被视为加速器的一种部署方案,其纵坐标值和斜率分别代表所对应的计算吞吐量和片外访存带宽开销。吞吐量上限和访存带宽上限对于给定硬件平台来说是两个定值,相应的只有落在区域A和区域B中的坐标点是有效的部署方案,而落在其它区域中的坐标点所对应的部署方案则存在性能瓶颈。图中蓝色点对应的部署方案2相较红点对应的部署方案1来说更优,因为部署方案2一方面可以充分利用硬件平台的计算吞吐量,另一方面对应的访存带宽开销(坐标点斜率)更低。同理,当区域A和区域B中两个坐标点拥有相同纵坐标值时,横坐标值较大的点对应更高的数据复用度,故而为更优的部署方案。在Roofline模型基础上,我们分别为直接映射和层间融合映射构建和求解各自的组合优化模型,并以此来确定最优并行策略。该过程如算法4所示。
算法4:面向Roofline模型的组合优化模型
由于上述组合优化模型的变量数较多,不同变量的取值范围较大,因此为了加速设计空间搜索过程,我们通过算法5中的遗传算法对并行变量进行求解。
算法5:基于遗传算法的组合优化模型求解过程
在算法5中,并行变量被以整型数组的形式编码为染色体,其中的任一元素对应一位变量。算法首先通过第2-4行完成对原始种群中pop_size条染色体,也即pop_size种变量组合的随机初始化。在每轮进化中,算法首先计算各染色体所对应的适应度,并根据适应度大小确定不同染色体的遗传概率。不同进化阶段中的适应度的定义不同。在前gen_round/2轮进化中,这里定义适应度为两个目标函数的乘积,以促进高吞吐量/高计算访存比所对应的染色体能够被更多保留;在后gen_round/2轮进化中,适应度被定义为两个目标函数的乘积除以对应访存开销与硬件平台访存带宽上限的比值,以加速淘汰存在访存瓶颈的染色体。在2.d和2.e所对应的交叉、变异过程中,染色体中变量在交换和更新前同样需要带入约束条件进行检验,以确保新的变量组合的合法性。通过遗传算法,可以确定硬件资源的参数设计。但是由于在硬件综合过程中还涉及到FPGA的LUT资源开销、时钟频率限制等无法精确量化的影响因素,因此在实际加速器部署时需要再进一步根据求得的并行变量进行试验性硬件综合,并根据综合结果进行人工筛选和排除。
下面对三种不同规模的卷积神经网络模型在两种不同FPGA平台上进行的完整硬件部署,并与CPU、GPU和其它代表性FPGA加速器设计工作进行了实验结果对比。需要说明的是在与其它FPGA加速器进行对比时,重点选取了使用传统卷积计算方式和相同数据类型在同类型FPGA平台对相同网络模型部署的工作作为分析和对比对象,以说明设计方法改进所带来的收益。
实验设置:
使用Xilinx ZC7020和Digilent NetFPGA SUME作为FPGA目标平台。ZC7020为嵌入式FPGA平台,包含一块Xilinx Zynq-7020 FPGA芯片。NetFPGA SUME为高性能FPGA平台,包含有一块Xilinx Virtex-7 690T FPGA芯片。这里选择在ZC7020平台部署LeNet-5和AlexNet模型,在NetFPGA SUME上部署AlexNet和VGG16D模型。
经过设计空间搜索,LeNet-5和AlexNet在ZC7020平台的部署分别采用了直接映射和层间融合映射方案。在进行层间融合时,AlexNet模型的所有卷积层被融合为一级,卷积层5的输出特征图子区域高度R'5和宽度C'5为2,具体参数如表1和表2所示。
Core | Conv1 | Conv2 | FC3 | FC4 | FC5 |
T<sub>m</sub> | 6 | 6 | 3 | 1 | 1 |
T<sub>n</sub> | l | 4 | 1 | 1 | 1 |
T<sub>r</sub> | 10 | 5 | / | / | / |
batch | 1 | 1 | 1 | 1 | 1 |
表1:LeNet-5在Xilinx Zynq 7020平台上各计算核心并行参数
Core | Conv1 | Conv2 | Conv3 | Conv4 | Conv5 | FC6 | FC7 | FC8 |
T<sub>m</sub> | 4 | 9 | 24 | 18 | 6 | 1 | 1 | 1 |
T<sub>n</sub> | 3 | 8 | 2 | 2 | 4 | 2 | 1 | 1 |
T<sub>r</sub> | 3 | 1 | 1 | 1 | 1 | / | / | / |
batch | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 |
表2:AlexNet在Xilinx Zynq 7020平台上各计算核心并行参数
VGG16D和AlexNet在NetFPGA SUME平台的部署同样分别采用了直接映射和层间融合映射方案。其中VGG16D模型采用了两级层间融合,卷积层1到卷积层8,以及卷积层8到卷积层13被分别融合,卷积层8作为融合连接点,其输入特征图被全部缓存在片上。第一级融合和第二级融合中末尾卷积层的输出特征图子区域高度和宽度分别为(6,6)和(7,7),具体的并行参数如表3和表4所示。
Core | Conv1 | Conv2 | Conv3 | Conv4 | Conv5 | Conv6 | Conv7 | Conv8 |
T<sub>m</sub> | 6 | 16 | 16 | 32 | 16 | 8 | 8 | 16 |
T<sub>n</sub> | 3 | 8 | 4 | 4 | 4 | 16 | 16 | 4 |
T<sub>r</sub> | 1 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
bateh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Core | Conv9 | Conv10 | Conv11 | Conv12 | Conv13 | FC14 | FC15 | FC16 |
T<sub>m</sub> | 32 | 16 | 16 | 8 | 8 | 1 | 1 | 1 |
T<sub>n</sub> | 4 | 8 | 2 | 4 | 4 | 3 | 1 | 1 |
T<sub>r</sub> | 3 | 3 | 3 | 3 | 3 | / | / | / |
batch | 1 | 1 | 1 | 1 | 1 | 8 | 8 | 8 |
表3:VGG16D在Xilinx Virtex-7 690T平台上各计算核心并行参数
Core | Conv1 | Conv2 | Conv3 | Conv4 | Conv5 | FC6 | FC7 | FC8 |
T<sub>m</sub> | 32 | 14 | 4 | 3 | 2 | 4 | 2 | 2 |
T<sub>n</sub> | 3 | 12 | 15 | 15 | 15 | 5 | 5 | 2 |
T<sub>r</sub> | 6 | 7 | 13 | 13 | 13 | / | / | / |
batch | 1 | 1 | 1 | 1 | 1 | 3 | 3 | 3 |
表4:AlexNet在Xilinx Virtex-7 690T平台上各计算核心并行参数
结果对比:
我们首先对比了FPGA原型加速器与CPU、GPU平台的性能结果。Zynq7020和Virtex-7 690T平台上的加速器实验比较结果分别如图11和12所示,其中所有数值均被归一化到CPU的实验结果上。
对于Zynq 7020平台上的加速器部署,LeNet-5和AlexNet的原型加速器在性能方面相较CPU加速比分别为8.03×和9.46×,而相较GPU加速比为0.118×和0.126×。这主要由于Zynq 7020作为嵌入式平台,片上硬件资源较为有限。两种加速器部署分别使用了目标平台84%和100%的DSP资源,但整体并行度仍只能达到185MAC/cycle和220MAC/cycle,故而难以充分挖掘模型的整体计算并行性。在能效方面,LeNet-5和AlexNet的原型加速器相较CPU分别提升了297.6×和329.6×,相较GPU分别提升了3.47×和3.48×。
对于Virtex-7690T平台上的加速器部署,AlexNet和VGG16D的原型加速器在性能方面相较CPU加速比分别为110.2×和96.8×,相较GPU加速比为1.46×和1.05×。在能效方面,两种原型加速器相较CPU分别提升了324.7×和321×,相较GPU分别提升了3.43×和3.27×。
接着对比FPGA原型加速器与以往典型FPGA加速器部署的性能结果。表5中列出了对比结果。本发明提出的加速器部署方法在Zynq嵌入式平台上对LeNet-5和AlexNet的部署可以获得2.17×和2.5×以上的能效比,在高性能Virtex-7690T平台上对AlexNet和VGG16的部署可以获得2.49×和2.26×以上的加速比,以及2.29×和2.1×以上的能效比。对比在同种FPGA平台上对同种网络模型的部署结果,在Virtex-7 690T平台上对VGG16的部署相较Caffeine的性能和能效分别提升了2.31×和2.24×。
表5:原型加速器与以往基于FPGA的加速器部署对比
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,包括:
控制模块,用于协调和控制加速过程,包括对片上的其它模块的初始化和同步,以及启动各计算核心与片外内存间不同类型数据的交互;
数据传输模块,包括内存控制器和多个DMA控制器,用于各片上各数据缓存与片外内存间的数据交互;
计算模块,包括多个用于计算的计算核心,各计算核心与卷积神经网络的不同网络层一一对应;不同计算核心各自拥有逻辑上相互独立的权值片外访存通路,前后计算核心间部署有用于传递输入特征图数据的单向片上数据通路,第一个计算核心和最后一个计算核心各自拥有前馈过程的输入/输出片外访存通路;各计算核心均各自作为流水线的一级,所有计算核心共同构成完整的粗粒度流水线结构;各计算核心内部包含一个细粒度的计算流水线;各卷积层所对应的核内流水线分为四级,分别为取数、内积、激活、输出,流水线并行度根据所对应网络层的计算并行方式进行单独设计和优化。
2.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,所述计算模块中不同计算核心内部包含各自的本地乒乓缓存集,其设计参数根据核内流水线的并行度进行单独调整,各计算核心的计算结果直接流式输入到后继计算核心。
3.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,采用直接映射策略将各计算核心每轮计算所需的输入特征图全部缓存于片上;所述直接映射策略包括卷积层循环展开、分片和全连接层分片;
所述卷积层硬件循环展开中对M、N层循环进行大小为Tm、Tn的循环展开的同时,对R层循环进行大小为Tr的循环展开,展开得到向量内积单元结构,所述向量内积单元结构输出特征图的计算并行度为Tm,每个输出特征图内部有Tr个输出神经元被同时计算,各输出神经元的计算并行度为Tn,总的计算并行度为Tm×Tn×Tr,片上的权值缓存容量设定为Tm×N×K2,K为对应卷积窗口大小;
所述全连接层分片在输入神经元和输出神经元的维度上进行大小为Tm和Tn的循环展开,对应的计算并行度为Tm×Tn,片上权值缓存大小设定为Tm×Tn,全连接层的输入特征图全部缓存在片上,在加速器部署时对全连接层进行稀疏化处理。
4.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,采用层间融合映射策略将各计算核心每轮计算所需的输入特征图全部缓存于片上;所述层间融合映射策略包括:确定层间融合后各层输出特征图的子区域,并通过改变各层间流水级的处理粒度,将层间融合应用于层间计算流水的并行方式中。
5.根据权利要求4所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,所述层间融合映射策略还包括多级层间融合的映射方式,融合规则包括:第一层作为融合起点,后续卷积层的R、C层循环大小若大于等于第一层R、C循环大小的1/5,则将被融合为同一级;若卷积层的R、C层循环小于第一层1/5时,将该层作为新一级的融合起点,以此类推;
当采用多级层间融合时,将充当融合连接点的网络层的输入特征图全部缓存在片上,层间融合之后,确定每一级融合中末尾卷积层的子区域大小,同一级层融合中其它层的对应子区域大小根据其与末尾卷积层间的R、C循环大小关系确定;各卷积层计算核心在每个层间粗粒度流水级中采用卷积层的循环展开和分片算法完成计算,将原先的R、C层循环大小对应变为输出特征图子区域的高度和宽度;
全连接层的映射方式与直接映射策略相同,采用层间融合映射方式后,加速器总的并行部署参数为各卷积层计算核心的循环展开大小Tm、Tn、Tr,各级融合中末尾卷积层的子区域大小R'、C',以及全连接层的循环展开大小Tm、Tn。
6.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,所述控制模块还包括数据访存优化模块,用于对全连接层进行数据访存优化,所述数据访存优化模块包括全连接层平衡剪枝模块,用于对全连接层进行剪枝和压缩,配合重训练的方式来消除权值冗余和剪枝后权值数据的不规则性,具体包括:
在训练过程中为输出神经元设定一个与所剩权值数量呈正相关的概率值,在每轮剪枝中优先裁剪概率值较大的输出神经元的权值,通过重训练弥补精度损失;
对于未平衡的输出神经元,权值填充0值;
对稀疏权值进行压缩,将压缩权值矩阵按照输出神经元的先后顺序逐行保存剪枝后的剩余权值,将位置信息矩阵中元素与压缩权值矩阵中权值一一对应,用来记录各输出神经元的剩余权值在原权值矩阵中的索引值,在计算过程中,权值数据以压缩的形式进行存储和计算。
7.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,还包括全连接层计算核心单元,包括双索引缓存和输入神经元选择器,分别用于缓存全连接层的权值位置信息,以及根据位置信息从输入缓存中选取对应的输入神经元;当计算并行度为Tm×Tn时,在计算过程中计算核心通过片外访存读取Tm×Tn个权值数据和对应的位置信息,将权值数据发送至Tm个向量乘加单元,将位置信息发送至输入神经元选择器用于为Tm个向量乘加单元选择各自对应的Tn个输入神经元,通过向量乘加单元完成内积计算和非线性变换操作;将下一轮计算所需的Tm×Tn个权值数据和对应的位置信息读取至对应的双缓存中。
8.根据权利要求6所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,所述数据访存优化模块还包括层间流水半批处理模块,各卷积层对不同前馈输入数据按照非批处理模式依次计算,全连接层将等待至卷积层完成批尺寸个输入数据的计算后,再以批处理的方式对批尺寸个输入数据集中处理。
9.根据权利要求1所述的可重构平台上固化全网络层的卷积神经网络硬件加速器,其特征在于,比较目标硬件平台的片上缓存容量与所加速网络模型的输入特征图总量间关系,若目标硬件平台的片上缓存容量大于网络各层总的输入特征图数据量时,确定直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略,通过比较直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略选择最终并行策略;反之,确定层间融合映射策略对应的最优并行策略,并将其作为最终并行策略;所述最优并行策略的确定方法,包括:
(1)构建直接映射和层间融合映射的组合优化模型,包括建立不同并行策略对应的整体吞吐量、及不同并行策略对应的整体计算、访存比;
(2)建立不同并行策略对应的约束条件,包括不同向量内积单元结构对应的DSP资源开销和不同缓存结构对应的BRAM资源开销;
(3)基于遗传算法求解多变量组合优化模型,包括以下步骤:将并行变量以整型数组的形式编码为染色体,其中的任一元素对应一位变量;对原始种群中的染色体进行变量组合的随机初始化;在每轮进化中,首先计算各染色体所对应的适应度,并根据适应度大小确定不同染色体的遗传概率;不同进化阶段中的适应度不同,在前半进化代数轮进化中,定义适应度为目标函数的乘积;在后半进化代数轮进化中,定义适应度为两个目标函数的乘积除以对应访存开销与硬件平台访存带宽上限的比值;在交叉、变异过程中,染色体中变量在交换和更新前带入约束条件进行检验。
10.一种可重构平台上固化全网络层的卷积神经网络硬件加速方法,其特征在于,采用权利要求1或2的硬件加速器,加速方法包括以下步骤:
S01:比较目标硬件平台的片上缓存容量与所加速网络模型的输入特征图总量间关系;
S02:若目标硬件平台的片上缓存容量大于网络各层总的输入特征图数据量时,确定直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略,通过比较直接映射策略对应的最优并行策略及层间融合映射策略对应的最优并行策略选择最终并行策略;
S03:反之,确定层间融合映射策略对应的最优并行策略,并将其作为最终并行策略;所述最优并行策略的确定方法,包括:
(1)构建直接映射和层间融合映射的组合优化模型,包括建立不同并行策略对应的整体吞吐量、及不同并行策略对应的整体计算、访存比;
(2)建立不同并行策略对应的约束条件,包括不同向量内积单元结构对应的DSP资源开销和不同缓存结构对应的BRAM资源开销;
(3)基于遗传算法求解多变量组合优化模型,包括以下步骤:将并行变量以整型数组的形式编码为染色体,其中的任一元素对应一位变量;对原始种群中的染色体进行变量组合的随机初始化;在每轮进化中,首先计算各染色体所对应的适应度,并根据适应度大小确定不同染色体的遗传概率;不同进化阶段中的适应度不同,在前半进化代数轮进化中,定义适应度为目标函数的乘积;在后半进化代数轮进化中,定义适应度为两个目标函数的乘积除以对应访存开销与硬件平台访存带宽上限的比值;在交叉、变异过程中,染色体中变量在交换和更新前带入约束条件进行检验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010965915.1A CN112116084A (zh) | 2020-09-15 | 2020-09-15 | 可重构平台上固化全网络层的卷积神经网络硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010965915.1A CN112116084A (zh) | 2020-09-15 | 2020-09-15 | 可重构平台上固化全网络层的卷积神经网络硬件加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112116084A true CN112116084A (zh) | 2020-12-22 |
Family
ID=73803108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010965915.1A Pending CN112116084A (zh) | 2020-09-15 | 2020-09-15 | 可重构平台上固化全网络层的卷积神经网络硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112116084A (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112884123A (zh) * | 2021-02-23 | 2021-06-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
CN113052258A (zh) * | 2021-04-13 | 2021-06-29 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113128682A (zh) * | 2021-04-14 | 2021-07-16 | 北京航空航天大学 | 神经网络模型自动适配方法和装置 |
CN113159276A (zh) * | 2021-03-09 | 2021-07-23 | 北京大学 | 模型优化部署方法、***、设备及存储介质 |
CN113191491A (zh) * | 2021-03-16 | 2021-07-30 | 杭州慧芯达科技有限公司 | 多维度并行的人工智能处理器架构 |
CN113240101A (zh) * | 2021-05-13 | 2021-08-10 | 湖南大学 | 卷积神经网络软硬件协同加速的异构SoC实现方法 |
CN113254206A (zh) * | 2021-05-25 | 2021-08-13 | 北京一流科技有限公司 | 数据处理***及其方法 |
CN113313243A (zh) * | 2021-06-11 | 2021-08-27 | 海宁奕斯伟集成电路设计有限公司 | 神经网络加速器的确定方法、装置、设备以及存储介质 |
CN113393376A (zh) * | 2021-05-08 | 2021-09-14 | 杭州电子科技大学 | 一种基于深度学习的轻量级超分辨率图像重建方法 |
CN113592088A (zh) * | 2021-07-30 | 2021-11-02 | 中科亿海微电子科技(苏州)有限公司 | 基于细粒度卷积计算结构的并行度确定方法及*** |
CN113642724A (zh) * | 2021-08-11 | 2021-11-12 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
CN113673704A (zh) * | 2021-07-05 | 2021-11-19 | 中国电子科技集团公司第十五研究所 | 一种基于软硬件协同加速的关系网络推理优化的方法 |
CN113821981A (zh) * | 2021-10-08 | 2021-12-21 | 上海交通大学 | 卷积神经网络数据流设计空间分析工具的构建方法和装置 |
CN113902099A (zh) * | 2021-10-08 | 2022-01-07 | 电子科技大学 | 基于软硬件联合学习的神经网络设计与优化方法 |
CN114202071A (zh) * | 2022-02-17 | 2022-03-18 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
WO2022134465A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京清微智能科技有限公司 | 加速可重构处理器运行的稀疏化数据处理方法和装置 |
CN114723033A (zh) * | 2022-06-10 | 2022-07-08 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN115081628A (zh) * | 2022-08-15 | 2022-09-20 | 浙江大华技术股份有限公司 | 一种深度学习模型适配度的确定方法及装置 |
CN115906948A (zh) * | 2023-03-09 | 2023-04-04 | 浙江芯昇电子技术有限公司 | 一种全连接层硬件加速装置及方法 |
WO2023082285A1 (en) * | 2021-11-15 | 2023-05-19 | Shanghaitech University | Multicore system for neural rendering |
CN116451757A (zh) * | 2023-06-19 | 2023-07-18 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN116980423A (zh) * | 2023-09-21 | 2023-10-31 | 浪潮电子信息产业股份有限公司 | 模型调度方法、装置、计算***、设备及可读存储介质 |
CN117474061A (zh) * | 2023-12-26 | 2024-01-30 | 华中师范大学 | 一种抗辐射低延迟神经网络推理加速芯片 |
-
2020
- 2020-09-15 CN CN202010965915.1A patent/CN112116084A/zh active Pending
Non-Patent Citations (1)
Title |
---|
宫磊: "可重构平台上面向卷积神经网络的异构多核加速方法研究", 《知网》, vol. 2019, no. 08, pages 1 - 119 * |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022134465A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京清微智能科技有限公司 | 加速可重构处理器运行的稀疏化数据处理方法和装置 |
CN112884123A (zh) * | 2021-02-23 | 2021-06-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
CN112884123B (zh) * | 2021-02-23 | 2024-03-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
CN113159276A (zh) * | 2021-03-09 | 2021-07-23 | 北京大学 | 模型优化部署方法、***、设备及存储介质 |
CN113159276B (zh) * | 2021-03-09 | 2024-04-16 | 北京大学 | 模型优化部署方法、***、设备及存储介质 |
CN113191491A (zh) * | 2021-03-16 | 2021-07-30 | 杭州慧芯达科技有限公司 | 多维度并行的人工智能处理器架构 |
CN113191491B (zh) * | 2021-03-16 | 2022-08-09 | 杭州慧芯达科技有限公司 | 多维度并行的人工智能处理器架构 |
CN113052258B (zh) * | 2021-04-13 | 2024-05-31 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113052258A (zh) * | 2021-04-13 | 2021-06-29 | 南京大学 | 基于中间层特征图压缩的卷积方法、模型及计算机设备 |
CN113128682A (zh) * | 2021-04-14 | 2021-07-16 | 北京航空航天大学 | 神经网络模型自动适配方法和装置 |
CN113128682B (zh) * | 2021-04-14 | 2022-10-21 | 北京航空航天大学 | 神经网络模型自动适配方法和装置 |
CN113393376B (zh) * | 2021-05-08 | 2024-07-12 | 杭州电子科技大学 | 一种基于深度学习的轻量级超分辨率图像重建方法 |
CN113393376A (zh) * | 2021-05-08 | 2021-09-14 | 杭州电子科技大学 | 一种基于深度学习的轻量级超分辨率图像重建方法 |
CN113240101B (zh) * | 2021-05-13 | 2022-07-05 | 湖南大学 | 卷积神经网络软硬件协同加速的异构SoC实现方法 |
CN113240101A (zh) * | 2021-05-13 | 2021-08-10 | 湖南大学 | 卷积神经网络软硬件协同加速的异构SoC实现方法 |
CN113254206A (zh) * | 2021-05-25 | 2021-08-13 | 北京一流科技有限公司 | 数据处理***及其方法 |
CN113313243A (zh) * | 2021-06-11 | 2021-08-27 | 海宁奕斯伟集成电路设计有限公司 | 神经网络加速器的确定方法、装置、设备以及存储介质 |
CN113673704A (zh) * | 2021-07-05 | 2021-11-19 | 中国电子科技集团公司第十五研究所 | 一种基于软硬件协同加速的关系网络推理优化的方法 |
CN113592088B (zh) * | 2021-07-30 | 2024-05-28 | 中科亿海微电子科技(苏州)有限公司 | 基于细粒度卷积计算结构的并行度确定方法及*** |
CN113592088A (zh) * | 2021-07-30 | 2021-11-02 | 中科亿海微电子科技(苏州)有限公司 | 基于细粒度卷积计算结构的并行度确定方法及*** |
CN113642724B (zh) * | 2021-08-11 | 2023-08-01 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
CN113642724A (zh) * | 2021-08-11 | 2021-11-12 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
CN113902099B (zh) * | 2021-10-08 | 2023-06-02 | 电子科技大学 | 基于软硬件联合学习的神经网络设计与优化方法 |
CN113902099A (zh) * | 2021-10-08 | 2022-01-07 | 电子科技大学 | 基于软硬件联合学习的神经网络设计与优化方法 |
CN113821981A (zh) * | 2021-10-08 | 2021-12-21 | 上海交通大学 | 卷积神经网络数据流设计空间分析工具的构建方法和装置 |
WO2023082285A1 (en) * | 2021-11-15 | 2023-05-19 | Shanghaitech University | Multicore system for neural rendering |
CN114202071A (zh) * | 2022-02-17 | 2022-03-18 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
CN114202071B (zh) * | 2022-02-17 | 2022-05-27 | 浙江光珀智能科技有限公司 | 一种基于数据流模式的深度卷积神经网络推理加速方法 |
CN114723033A (zh) * | 2022-06-10 | 2022-07-08 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN114723033B (zh) * | 2022-06-10 | 2022-08-19 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
CN115081628A (zh) * | 2022-08-15 | 2022-09-20 | 浙江大华技术股份有限公司 | 一种深度学习模型适配度的确定方法及装置 |
CN115906948A (zh) * | 2023-03-09 | 2023-04-04 | 浙江芯昇电子技术有限公司 | 一种全连接层硬件加速装置及方法 |
CN116451757A (zh) * | 2023-06-19 | 2023-07-18 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN116451757B (zh) * | 2023-06-19 | 2023-09-08 | 山东浪潮科学研究院有限公司 | 一种神经网络模型的异构加速方法、装置、设备及介质 |
CN116980423A (zh) * | 2023-09-21 | 2023-10-31 | 浪潮电子信息产业股份有限公司 | 模型调度方法、装置、计算***、设备及可读存储介质 |
CN116980423B (zh) * | 2023-09-21 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 模型调度方法、装置、计算***、设备及可读存储介质 |
CN117474061B (zh) * | 2023-12-26 | 2024-03-19 | 华中师范大学 | 一种抗辐射低延迟神经网络推理加速芯片 |
CN117474061A (zh) * | 2023-12-26 | 2024-01-30 | 华中师范大学 | 一种抗辐射低延迟神经网络推理加速芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112116084A (zh) | 可重构平台上固化全网络层的卷积神经网络硬件加速器 | |
CN111178519B (zh) | 卷积神经网络加速引擎、卷积神经网络加速***及方法 | |
CN107862374B (zh) | 基于流水线的神经网络处理***和处理方法 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN107844826B (zh) | 神经网络处理单元及包含该处理单元的处理*** | |
CN109409510B (zh) | 神经元电路、芯片、***及其方法、存储介质 | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
US11462003B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
CN110991632B (zh) | 一种基于fpga的异构神经网络计算加速器设计方法 | |
CN107578095A (zh) | 神经网络计算装置及包含该计算装置的处理器 | |
CN111199275B (zh) | 用于神经网络的片上*** | |
CN112101525A (zh) | 一种通过nas设计神经网络的方法、装置和*** | |
CN113220630B (zh) | 一种硬件加速器的可重构阵列优化方法及自动调优方法 | |
WO2021026225A1 (en) | System and method of accelerating execution of a neural network | |
US11797830B2 (en) | Flexible accelerator for sparse tensors in convolutional neural networks | |
CN110334803A (zh) | 基于稀疏化Winograd算法的卷积计算方法和卷积神经网络加速器 | |
JP7332722B2 (ja) | データ処理方法、装置、記憶媒体及び電子機器 | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
CN111831355A (zh) | 权重精度配置方法、装置、设备及存储介质 | |
CN113986816B (zh) | 可重构计算芯片 | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、***以及方法 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
Dai et al. | An energy-efficient bit-split-and-combination systolic accelerator for nas-based multi-precision convolution neural networks | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |