CN118095364A - Cnn模型与加速器的联合搜索方法、装置、设备及介质 - Google Patents
Cnn模型与加速器的联合搜索方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN118095364A CN118095364A CN202410206619.1A CN202410206619A CN118095364A CN 118095364 A CN118095364 A CN 118095364A CN 202410206619 A CN202410206619 A CN 202410206619A CN 118095364 A CN118095364 A CN 118095364A
- Authority
- CN
- China
- Prior art keywords
- target
- accelerator
- hardware
- bpu
- convolution
- 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
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000013461 design Methods 0.000 claims abstract description 82
- 238000013139 quantization Methods 0.000 claims abstract description 51
- 238000012549 training Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 43
- 238000011156 evaluation Methods 0.000 claims abstract description 30
- 238000004364 calculation method Methods 0.000 claims description 39
- 238000004422 calculation algorithm Methods 0.000 claims description 35
- 238000013527 convolutional neural network Methods 0.000 claims description 33
- 239000000872 buffer Substances 0.000 claims description 29
- 230000004913 activation Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 230000002068 genetic effect Effects 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 12
- 238000009825 accumulation Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 4
- 239000010410 layer Substances 0.000 description 51
- 238000005457 optimization Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 7
- 238000002474 experimental method Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 238000010845 search algorithm Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 2
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000000137 annealing Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101100153586 Caenorhabditis elegans top-1 gene Proteins 0.000 description 1
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 1
- 101100370075 Mus musculus Top1 gene Proteins 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- IISBACLAFKSPIT-UHFFFAOYSA-N bisphenol A Chemical compound C=1C=C(O)C=CC=1C(C)(C)C1=CC=C(O)C=C1 IISBACLAFKSPIT-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种CNN模型与加速器的联合搜索方法、装置、设备及介质,该方法包括通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用硬件友好量化器执行量化操作;根据超网络训练结果中包括的各项架构参数,确定目标子网;通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。本发明实施例的技术方案可以高效实现CNN网络和加速器的联合搜索,在满足模型性能需求的同时,显著减少搜索时间成本。
Description
技术领域
本发明涉及计算机***结构技术领域,尤其涉及一种CNN(Convolutional NeuralNetworks,卷积神经网络)模型与加速器的联合搜索方法、装置、设备及介质。
背景技术
NAS(Neural Architecture Search,神经网络架构搜索)技术的提出,旨在使研究人员摆脱容易出错且耗时的手工设计网络的过程。它由三个主要部分组成:搜索空间、搜索算法和评估器。
针对上述三个主要部分,研究人员提出了各类解决方案,例如,设计超网结构,并在超网结构的每个可搜索的层中包含所有候选算子,通过连续可微的方式建模NAS问题,进而开展了硬件感知的NAS,以及网络与加速器联合搜索等研究。
发明人在实现本发明的过程中,发现在软硬件联合搜索的过程中,如何有效定义软硬件联合搜索空间,以及如何在大型且复杂的硬件设计空间中为子网提供及时的硬件延迟反馈,是目前有待解决的主要技术难点。
发明内容
本发明提供了一种CNN模型与加速器的联合搜索方法、装置、设备及介质,以高效实现CNN网络和加速器的联合搜索,在充分满足模型性能需求的同时,显著减少搜索时间成本。
根据本发明实施例的一方面,提供了一种CNN模型与加速器的联合搜索方法,包括:
通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的DW(Depthwise,深度)卷积层、第一PW(Pointwise,逐点)卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
通过快速HAS(Hardware Architecture Search,硬件架构搜索)引擎,在基于BPU(Block Processing Unit,块处理单元)的异构多核硬件FPGA(Field Programmable GateArray,可编程逻辑门阵列)平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
根据本发明实施例的另一方面,提供了一种CNN模型与加速器的联合搜索装置,包括:
超网络训练模块,用于通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
子网确定模块,用于根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的DW卷积层、第一PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
加速器搜索模块,用于通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
循环迭代模块,用于将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
根据本发明实施例的另一方面,还提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的CNN模型与加速器的联合搜索方法。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的CNN模型与加速器的联合搜索方法。
本发明实施例的技术方案,通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;根据超网络训练结果中包括的各项架构参数,确定目标子网;通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件的实现方式,基于预先构建的硬件友量化器,可以将位宽搜索集成至NAS引擎,此外,通过先在超网络中采样子网,后生成针对子网的加速器优化方案,并返回相应的硬件评估结果的实现方式,可以从一定程度上裁剪搜索空间,减少搜索时间成本。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种CNN模型与加速器的联合搜索方法的流程图;
图2是本发明实施例所适用的一种超网络的结构示意图;
图3是本发明实施例所适用的一种静态可配置的BPU结构示意图;
图4是本发明实施例所适用的一种单个DSP打包两个INT8相乘操作的示意图;
图5是根据本发明实施例二提供的另一种CNN模型与加速器的联合搜索方法的流程图;
图6是本发明实施例所适用的一种在具有三个BPU核心的FPGA上采用基于CTC比策略的块分配策略示意图;
图7是本发明实施例所适用的一种扩大且平衡的CNN模型与加速器联合优化框架的结构示意图;
图8是本发明实施例所适用的一种快速硬件生成算法在不同平台及不同异构核心数目下的性能分析结果示意图;
图9是根据本发明实施例三提供的一种CNN模型与加速器的联合搜索装置的结构示意图;
图10是实现本发明实施例的CNN模型与加速器的联合搜索方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。“目标”、“原始”等的情况类似,在此不再赘述。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种CNN模型与加速器的联合搜索方法的流程图,本实施例可适用于针对给定的目标数据集、FPGA平台规格以及对FPS(Frame Per Second,每秒帧数)的要求,自动生成匹配的CNN-加速器对的情况,该方法可以由CNN模型与加速器的联合搜索装置来执行,该装置可以采用硬件和/或软件的形式实现,并一般可配置于具有数据处理功能的FPGA平台中。如图1所示,该方法包括:
S110、通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作。
S120、根据超网络训练结果中包括的各项架构参数,确定目标子网。
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的DW卷积层、第一PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数。
为了便于说明,在图2中示出了本发明实施例所适用的一种超网络的结构示意图。如图2所示,在该超网络中,包括n个阶段(阶段1、阶段2、……、阶段n),每个阶段包括有B个可搜索卷积块(可搜索块1、可搜索块2、……、可搜索块B),每个可搜索卷积块中均具有i个算子(O1、O2、……、Oi),算子也可以称为卷积核,每个卷积核的结构均为依次相连的DW卷积层、第一PW卷积层和第二PW卷积层。不同算子之间,位宽和通道扩展比中的至少一项不同。
在一个具体的例子中,如果位宽具有两个可选值{4,8},而通道扩展比具有四个可选值{2,4,6,8},则每个可搜索卷积核共具有2*4共8个算子:{4,2}、{4,4}、{4,6}、{4,8}、{8,2}、{8,4}、{8,6}、{8,8},其中,第一项为算子的位宽,第二项为算子的通道扩展比。
其中,NAS的目的就是在上述特定的超网络空间中搜索出目标子网,也即,在超网络的每个可搜索卷积块包含的8个算子中,确定出唯一的算子(卷积块),并通过将上述各卷积块进行串联,得到目标子网。
在本实施例中,通过使用可微分NAS引擎,可以将上述离散的搜索过程转化为以可微分的方式对该超网络进行训练的过程,在对该超网络完成训练之后,可以根据这个训练好的超网络中包含的各项架构参数,最终确定出目标子网。
可以理解的是,每个算子除了以位宽和通道扩展比为参数之外,一般还需要设定卷积核大小,在本实施例中,为了最大程度的减少搜索空间的尺度,将卷积核大小固定为一个性能较好的经验值(典型的,7),进而,仅在位宽和通道扩展比这两个维度上,进行算子搜索即可,这可以从一定程度上降低目标子网的搜索时间。
在本实施例中,由于将量化位宽搜索过程集成在了NAS空间中,进而,在对超网络的训练过程中,涉及量化处理。
发明人通过研究发现,目前的大多数量化算法的设计均忽略了底层硬件的特性,因此,直接将现有的量化位宽搜索技术集成到联合搜索过程中,并不能保证硬件获得实际收益。因此,为了提高精度和硬件效率,在位宽和量化器设计方面,本发明实施例采取了一系列优化措施。
首先,考虑到搜索成本和额外的硬件开销,本发明实施例采用了块级搜索策略(即,在每个卷积块内的每个层中均具有相同的比特宽度),并使用逐层量化的粒度(即卷积块内的单个层,而非单个通道共享一个缩放因子)。此外,为了保证在FPGA部署中卷积块的吞吐量,本发明实施例还可以将量化过程扩展到整个计算图,而不仅仅局限于卷积块。
基于此,本发明实施例设计了一种硬件友好的量化器。
相应的,采用预先构建的硬件友好量化器执行量化操作,可以具体包括:
通过公式:对每个卷积块第l层的权重wl进行量化处理,得到第l层的量化权重/>
其中,round(.)为四舍五入函数,k为量化位宽;
通过公式:对输入至每个卷积块第l层的激活xl进行量化处理,得到输入至第l层的量化激活/>
其中,clamp(.)用于将输入值xl限制在最小值Cl和最大值Cl之间,Cl为预设的截断阈值,Cl用于根据由计算得到的梯度值进行更新。
需要说明的是:本发明实施例采用对称量化的方式,以确保零点不偏移(固定为0),以便更好地支持FPGA平台中DSP的乘法器设计。此外,考虑到在现代网络中,例如MBConv卷积块和ConvNeXt卷积块中,由于激活函数的减少,负值也倾向于累积,进而,通过使用clamp(.)对激活xl进行对称截断,可以保留更多有用的负值,从而恢复模型准确率。
此外,可以进一步展开为:/>
其中,[exp]在exp为真时取1,在exp为假时取0。在推理过程中,Cl保持固定,因此可被缩放因子吸收。相应的,在进行反向更新时,如果xl≥Cl,则可以相应增大Cl的值,如果xl≤-Cl,则可以减少Cl的值,当xl∈[-Cl,Cl]时则保持不变,以最大程度的降低截断误差。
S130、通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果。
在本实施例的一个可选的实施方式中,所述异构多核硬件FPGA平台中,包括有设定数量的BPU;
其中,BPU中包括有依次相连的DW子核心,第一PW子核心以及第二PW子核心,一个BPU用于独立的对一个卷积块进行并行融合计算;
BPU中的每个子核心中具体包括:激活缓存区、权重缓冲区、累加缓冲区、计算单元、量化单元以及冷缓冲区;
激活缓存区和权重缓冲区,用于对片外的激活和权重进行缓存,以提供片上访问带宽;计算单元,用于执行量化后的卷积计算;累加缓冲区,用于存储卷积计算结果;量化单元,用于输出数据的量化,归一化处理以及数据激活处理;冷缓冲区,用于缓存中间结果,以避免片外临时存储。
当前模型与硬件联合搜索工作往往以算法参数搜索为重心,忽略了异构多核架构对加速器性能有重要影响的硬件设计因素,这无疑限制了联合优化的性能。为了解决这一问题,本发明实施例提出了一种平衡的软硬件联合搜索方法。具体来讲,本发明实施例设计了细粒度可配置的BPU,并探索了以BPU为基础的异构多核架构与层映射策略。
针对卷积块结构,本发明实施例设计了一个多卷积块可复用的计算核心BPU,以在保持通用性的同时提供高效的硬件支持。其中,分支操作被集成进PW2子核心中。以往的工作中,每个核心往往只包含一个卷积层处理核心。相比之下,BPU拥有三个独立的、分别针对DW或者PW层进行优化的计算核心,以缓解计算差异性。此外,三个核心以更细粒度和及时的方式进行并行计算。BPU的基本设计思想在于将子网络层操作(DW+PW1+PW2)进行融合,以使得前一个核心生成的输出分片可以直接传送到后一个核心,而无需写回到片外DRAM(Dynamic Random Access Memory,动态随机存储器)中,从而显著降低运行时功耗。此外,采用基于分片的流水线技术在降低延迟得同时还可以减轻片外带宽需求。
其中,在图3中示出了本发明实施例所适用的一种静态可配置的BPU结构示意图。具体的,如图3所示,以第一个逐点卷积(PW1)核心为例,详细介绍BPU的设计。PW1核心包括若干关键组件,如激活和权重缓冲区、累加缓冲区、计算单元和量化单元。激活和权重缓冲区作为片外存储的缓存,用以提供片上访问带宽。计算单元执行量化后的卷积计算;量化单元进行输出数据的量化、BN和ReLU的操作。特别地,冷缓冲区表示相对较大的片上存储,用于缓存中间或部分结果,以避免片外临时存储。需要注意的是,如果BPU执行多个卷积块的前馈计算,片上缓冲区大小需满足最大需求,以保证操作的正确性。
在上述各实施例的基础上,在所述BPU的每个子核心执行计算的过程中,将两个或者三个低精度乘法打包至异构多核硬件FPGA平台中一个单独的DSP单元中执行计算;
进一步的,在BPU的量化单元中,整合有归一化层和激活函数层;BPU的全部数据端口均为AXI4(Advanced eXtensible Interface 4,***高级可扩展接口);以及
在所述BPU的每个子核心执行计算之前,采用权重的重排序和预取技术启动BPU片外突发传输,且在突发传输长度小于预设的长度阈值时,启用outstanding多线程模式对带宽访问请求进行流水化。
如前所述,本发明实施例除了构建得到一个新的BPU结构之外,还对BPU上的计算以及访存进行了相应的优化。
1、计算优化:低位宽乘法将导致DSP单元中大量计算资源闲置。为解决该问题,本发明各实施例将多个低精度乘法打包到一个DSP单元中,且上述低精度乘法的各操作数都是有符号数。以Xilinx DSP48E2(27×18位)为例,我们将两个INT8乘法打包成的计算方式,并放置在一个单独的DSP单元中。
具体的,在图4中示出了一种将两个8位有符号数乘法封装至单个DSP单元的流程,其中[$]表示符号扩展。具体来说,当为负数时,需要进行带符号扩展,因此,结果的第32位到第17位为/>相应地,必须添加p的符号位以恢复正确的乘积结果,该操作将消耗一个额外的LUT(Look-Up-Table,查找表)。我们使用类似的方法将三个INT4数据打包为单个27位输入,结果显示该操作引入了17个LUT的额外开销。
为了避免引入过多的LUT开销,本发明各实施例选择将两个或者三个低精度乘法打包至异构多核硬件FPGA平台中一个单独的DSP单元中执行计算。
2、片外存储访问优化:为减少不必要的片外存储访问,我们将ReLU和BN层整合到量化单元中。ReLU层直接截断量化输出而无需参数;BN层的参数和缩放因子则离线进行融合,最终以仿射形式(x*w+b)组织起来。此外,BPU中除配置端口外的所有数据端口都是AXI4主接口,消除了多个直接存储器访问引擎的资源开销。更进一步,我们应用权重重排序和预取优化来充分启动片外突发传输。当突发传输长度较小时,我们还启用了outstanding多线程模式对带宽访问请求进行流水化。
在本实施例中,通过使用基于BPU的异构多核硬件FPGA平台,可以相应搜索出与目标子网匹配的目标加速器的设计参数。
其中,设计参数的类型包括:BPU数量值,以及与每个BPU分别对应的BPU内设计参数;
BPU内设计参数的类型包括:连续卷积块分配数量值、数据流模式、输入特征图的高度分片尺寸、DW子核心的输出通道并行尺寸、与第一PW子核心对应的输入通道并行尺寸和输出通道并行尺寸,以及与第二PW子核心对应的输入通道并行尺寸和输出通道并行尺寸。
在搜索出与目标子网匹配的目标加速器的设计参数,可以通过现有的各类评估器(预先进行性能或者资源建模后得到)评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果。
S140、将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
在本实施例中,可微分NAS引擎在获取硬件评估结果后,可以基于该硬件评估结果计算相应的损失函数,并基于损失函数计算结果,重新计算新的目标子网,并重复执行S130,直至满足联合搜索结束条件。
本发明实施例的技术方案,通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;根据超网络训练结果中包括的各项架构参数,确定目标子网;通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件的实现方式,基于预先构建的硬件友量化器,可以将位宽搜索集成至NAS引擎,此外,通过先在超网络中采样子网,后生成针对子网的加速器优化方案,并返回相应的硬件评估的实现方式,可以从一定程度上裁剪搜索空间,减少搜索时间成本。
实施例二
图5为本发明实施例二提供的一种CNN模型与加速器的联合搜索方法的流程图,本实施例以上述各实施例为基础进行细化,在本实施例中,具体对通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数的操作进行具体化。
相应的,如图5所示,该方法包括:
S510、通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作。
S520、根据超网络训练结果中包括的各项架构参数,确定目标子网。
S530、通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,采用遗传算法,在裁剪后的设计参数搜索空间中,迭代搜索出与目标子网匹配的目标加速器的设计参数。
其中,设计参数的类型包括:BPU数量值,以及与每个BPU分别对应的BPU内设计参数;
BPU内设计参数的类型包括:连续卷积块分配数量值、数据流模式、输入特征图的高度分片尺寸、DW子核心的输出通道并行尺寸、与第一PW子核心对应的输入通道并行尺寸和输出通道并行尺寸,以及与第二PW子核心对应的输入通道并行尺寸和输出通道并行尺寸。
在本实施例的一个可选的实施方式中,所述连续卷积块分配数量值为分配至同一BPU的连续卷积块的数量值;其中,对每个BPU进行连续卷积块分配的策略,是基于计算与通信比的分布规律得到的。
其中,通过为每个BPU设置对应的连续卷积块分配数值量,可以有效减少网络层映射空间,该策略是基于计算与通信比的分布规律得到的。
在本实施例的另一个可选的实施方式中,采用遗传算法,在裁剪后的设计参数搜索空间中,迭代搜索出与目标子网匹配的目标加速器的设计参数,可以包括:
采用遗传算法,在裁剪后的设计参数搜索空间中,以多进程并行处理方式执行对目标加速器的设计参数的搜索过程;
如果当前搜索到能够满足预设的目标每秒帧数的设计参数,则直接结束迭代流程,并将当前搜索结果作为与目标子网匹配的目标加速器的设计参数。
其中,在本发明各实施例中,进一步对硬件设计空间进行了裁剪优化,并对目标加速器的设计参数的搜索算法进行优选。具体的,本发明通过对映射空间进行裁剪,以在性能和时间之间取得更好的权衡。首先,异构核心的数量(也可以称为BPU数量值,NBPUs)通常与特定的工作负载和平台设置相关。因此,我们通过搜索算法以在搜索过程中动态确定满足需求的异构核心的数量。
其次,本发明实施例进一步提出了一种基于CTC比的卷积块分配策略。与手动设计的神经网络类似,我们观察到基于NAS的网络中,靠近输入端的卷积块的CTC方差通常大于靠近输出端的块。因此,使得靠近网络输入端的卷积块共享同一BPU的数量尽量小是合理的。为此,本发明引入变量连续卷积块分配数量值(num)来表示分配给同一BPU的连续卷积块的数量,并限制其搜索范围。
正如图6所示,当存在多个BPU时,靠近输入端共享一个BPU的块的数量不超过平均值。图6中为了清晰起见,我们假设存在两种数据流模式,每种模式对应一个BPU。然而在实际的映射过程中,异构核心的数量和数据流模式的种类都是由搜索算法动态确定的。
综上所述,描述第c个BPU的BPU内设计参数(Fc)如下所示:
其中,mode表示数据流模式。在我们的设计中,端口带宽(也即,DW子核心的输入通道并行尺寸)根据计算负载进行分配,因而不包含在需要搜索的参数中。此外,由于特征图通常具有相等的高度(H)和宽度(W),因此我们要求两个分片因子相等,从而仅搜索输入特征图的高度分片尺寸Th。
其中,为DW子核心的输出通道并行尺寸,/>为与第一PW子核心对应的输入通道并行尺寸,/>为与第一PW子核心对应的输出通道并行尺寸,/>为与第二PW子核心对应的输入通道并行尺寸,/>为第二PW子核心对应的输出通道并行尺寸。
在进行目标加速器的设计参数搜索过程中,为了规避在庞大的硬件探索空间中进行耗时的穷举或随机搜索所带来的不可接受的成本,我们选择了遗传算法(GA)作为解决方案。与深度强化学习(DRL)相比,遗传算法能够在合理的时间范围内取得有竞争力的结果。鉴于严格的时间限制以及遗传算法轻量级和简单性的特点,最终,本发明各实施例构建了一种基于精英遗传算法的快速硬件生成算法。该快速硬件生成算法的伪代码如下所示:
进一步的,在上述快速硬件生成算法的基础上,本发明各实施例还采用以下优化策略来加速搜索过程:
1、基于规则的候选值搜索。在搜索分片和并行因子大小时,本发明各实施例将搜索范围限定在如表1所示的硬件架构搜索空间的候选列表中。
表1
这些候选参数是基于常见的网络架构考虑而设定的,例如通道数、特征图分辨率大小和硬件执行效率(考虑整除性)。在候选列表中,我们通过随机化种群个体(如快速硬件生成算法的伪代码中的第2行所示)以及随后的交叉和变异等步骤来选择最有可能的设计参数。
2、多进程并行性。遗传算法中,对种群整体进行评价的时间成本与评价函数的复杂度以及种群中个体数量成正比。本发明各实施例的设计采用的评价函数主要由建立的资源和性能模型构成。种群的规模通常与问题的复杂程度相关,在本实施例的设计中,种群的初始规模为250。然而,由于搜索质量的要求,上述两个因素往往难以进一步简化。尽管如此,鉴于种群中个体的适应性评分彼此独立,并考虑到现代服务器级CPU普遍采用多核架构,单进程显然无法充分发挥CPU的计算潜力。因此,在快速硬件生成算法的伪代码中的第5行,引入了进程级并行化处理的策略。
3、HAS早停搜索。在未施加任何约束条件的NAS过程中,子网的尺寸往往会随着训练轮次的增加而逐渐增加,然后逐步收敛。本发明通过设置目标FPS来规范搜索过程,当采样的子网较小以及稳定到满足FPS限制时,探索帧率更高的硬件配置无疑会浪费大量的搜索时间。因此,我们这里通过快速评估初始搜索阶段中无关紧要的子网以及模型已收敛至满足FPS要求的子网来节省可观的时间,这体现在快速硬件生成算法的伪代码中的第15行。
S540、评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果。
S550、将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
为了进一步描述本发明各实施例的整体实现方案,在图7中示出了本发明实施例所适用的一种扩大且平衡的CNN模型与加速器联合优化框架的结构示意图。
具体的,如图7所示,CNN模型与加速器联合优化框架包括两个关键引擎:(a)可微分NAS引擎和(b)快速HAS引擎,以深入探索网络结构(如,算子类型)和位宽(INT4和INT8))和加速器架构(如,异构多核和数据流)。
其中,算法端与硬件端探索的联合设计空间以及相应优化是本发明各实施例的核心。具体来讲,本发明各实施例对NAS空间做出了硬件考量的修改,基于所设计的硬件友好的量化器,将位宽搜索集成至NAS空间。随后,本发明各实施例探索了基于BPU的异构多核硬件设计空间。其中,BPU专门针对量化乘法进行了优化,并支持可配置的数据流。此外,本发明各实施例对加速器进行了资源、性能建模,对块映射空间进行修剪并设计了带宽分配算法,以便快速评估子网的硬件性能。最终,本发明各实施例提出了一种利用遗传算法的快速硬件生成算法。
总的来讲,本发明各实施例使用双层优化来解决协同搜索问题。在最终损失函数中引入了硬件相关损失项(Lhw)。同时,在从NAS空间中采样的子网获得硬件反馈之前,必须在目标硬件资源约束(hwlimit)下找到最优的硬件设计参数。因此,HAS引擎的设计应致力于在复杂而庞大的HAS空间中快速生成针对子网的加速器优化方案(F),并返回相应的硬件评估。具体的使用的各项计算公式如下所示:
其中,w为超网络的权重;参数α、β和F分别对应于架构分布参数、数据位宽参数和加速器的设计参数。Lval和Ltrain分别表示超网络在验证集上的损失和训练集上的损失。此外,硬件成本损失(Lhw)受网络结构、位宽和加速器设计参数的影响。超参数(λ)用于控制这些项之间的权衡,其在训练过程中根据目标FPS和当前FPS之间的关系进行动态调整。(.)*代表每次迭代获取的更新值。
本发明实施例的优点和积极效果主要包括:
1、创新性的设计了一个硬件友好的量化算法和一个专用的、流水化且可配置的硬件单元(BPU)。量化算法使得模型精度有保证并且不会引入显著的硬件实现开销。BPU设计中包含了层融合以及计算资源优化,以充分挖掘卷积块的计算并行性与数据访问局部性。两者分别从算法与硬件角度提供准确率和硬件性能保障。此外,本发明各实施例还引入了块级位宽搜索和BPU级多核架构搜索,丰富了联合搜索过程。这里最主要的是BPU级别的架构搜索,显著增加了底层硬件的灵活性。
2、本发明各实施例对加速器进行了准确的性能和资源建模,并高效地裁剪了映射空间。本发明各实施例设计了基于遗传算法的硬件生成算法,尽管搜索到的硬件性能不如以往基于分析建模的硬件估计方法(12%以内),但速度显著提升(高达9倍)。以少许的性能损失换取大幅的搜索时间缩短在模型与硬件联合搜索过程中是十分有意义的,这显著减少了搜索时间成本。
3、综合上述算法与硬件方面的重要优化措施,本发明各实施例在边缘场景下(XilinxZCU102),基于ImageNet数据集,对联合设计框架进行了评估。实验结果表明,本发明实施例提出的框架高效地探索了一个广泛且平衡的NA-HAS。与先前最先进的联合设计工作相比,本方法可取得显著的能效(1.21至1.95倍)提升。
需要注意的是,本发明各实施例提出的方法并不局限于ImageNet数据集与XilinxZCU102FPGA,理论上可以针对不同数据集与硬件平台。
具体应用场景实施例
1、基于快速硬件生成算法的实验
实验设置:
不同的FPGA平台上采用了多个基于NAS的模型进行测试,并将搜索函数的性能与之前关于网络至加速器映射的研究工作进行比较。
FPGA为Xilinx ZCU706与ZCU102等具备不同可编程资源的平台。测试的网络模型分别为具有代表性由NAS生成的FBNet-B、EDDNet-3和EfficientNet-B0。其中搜索算法被配置为在搜索过程中达到收敛。为了公平比较,在实验过程中还对基准方法应用了类似的多进程与限定候选值的优化。具体的实验结果如图8所示。其中,图8上半部分对应XilinxZCU706,图8下半部分对应ZCU102。
1、效果方面。结果表明,NAS模型中层间计算差异性的存在使得基于BPU的多核架构能够实现显著的性能提升。然而,随着核心数量的增加,这种提升逐渐减少,这与基准测试中为人工设计的模型搜索异构多核加速器时的观察结果一致。尽管本发明实施例提出的搜索算法在保持相同的带宽分配策略和数据流选项的情况下,性能不及基准测试(12%以内),但它显著减少了搜索时间(9.6倍,NBPUs≤3)。
2、可扩展性方面。基于查找表和基于神经网络模型的预测方法,在迁移到新的目标平台或网络时,必须耗费大量时间重新收集数据或重新训练模型。这进一步增加了时间成本,从而使得分析估计建模成为更为合适的选择。实验结果表明,本发明实施例提出的硬件生成算法可有效适用于不同的模型和硬件平台。此外,为了在搜索时间和性能之间取得平衡,本发明实施例在ZCU102平台上的搜索限制了BPU的数量不超过3个。
2、基于联合搜索的实验
模型训练:在超网训练过程中,我们与以往工作中采用的方法保持一致。我们从包含1000个类别的ImageNet-1k训练集中随机选择100个类别,以优化超网络权重(w)和架构参数(α、β)。具体而言,我们使用带有梯度正则化裁剪的SGD优化器。超网一共训练120个轮次(epochs),批量大小为192,学习率为0.1,采用余弦退火的学习率调整策略。此外,我们将前45个epochs指定为架构搜索的热身阶段,在该阶段仅更新超网络权重,而保持架构参数不变。我们使用Adam优化器,学习率固定为3e-4来优化架构参数。我们将超参数设为2e-9,并在单张NVIDIAA100(80GB)GPU上进行联合搜索。
在子网训练期间,我们从原始训练集上进行从头训练,并从整个验证集中获取准确率。子网训练在2xA100(80GB)GPU上,以512的批量大小训练360个epochs。初始学习率为0.1配合余弦退火的SGD优化器。
FPGA平台选择:本发明实施例选择了Xilinx ZCU102作为目标平台,由于它们在硬件加速器设计领域具有广泛的应用。ZCU102是基于Zynq架构的嵌入式平台,具有四核ARMCortex A53处理器(PS端),4GB DDR4内存以及一颗型号为UltraScale+XCZU9EG的FPGA芯片。针对ZCU102平台进行联合搜索的目标帧率为250,并限制最多有三个异构子核心(该个数根据前述实验确定)。
我们使用Xilinx Vitis HLS和Design Suite(v2021.2)设计和部署原型加速器。ZCU102平台上的加速器利用PS端的AXI高性能接口来访问DDR。
针对ImageNet数据集和Xilinx ZCU102板获取匹配的搜索结果后,针对ZCU102与ImageNet数据集搜索的加速器配置以及资源消耗如表2所示。
表2
为了验证联合搜索框架的有效性,本实验将其与以前的SOTA硬件感知NAS和协同搜索工作在搜索效率和质量方面进行了比较。对于搜索效率,主要比较搜索空间大小和搜索时间,ImageNet上的搜索效率对比结果如表3所示。
表3
工作 | NAS空间 | HAS空间 | 联合空间 | 搜索时间(GPU) |
HS-Co-Opt | 1.15+E18 | 1 | 1.15+E18 | 266 |
OFA | 2.00E+19 | 1 | 2.00E+19 | 1200 |
BSW | 4.20E+05 | 8.64E+03 | 3.63E+09 | 1000 |
DIAN | 9.85E+20 | 4.89E+17 | 4.82E+38 | 144 |
Co-Explore | 4.30E+07 | 3.00E+02 | 1.29E+10 | 96 |
本发明方案 | 9.22E+18 | 1.65E+20 | 1.52E+39 | 35.7 |
本发明实施例提出的框架在更短的搜索时间内探索了更大的联合搜索空间。与基于强化学习的研究相比,尽管它们涉及的搜索空间很小,但搜索时间要长得多。与可微协同搜索工作相比,我们的搜索时间减少了2.69至4.03倍。
对于搜索质量,我们与相关工作对比了搜索到的CNN加速器对的准确性、吞吐量和能量效率的综合表现。具体的,在表4中示出了ImageNet上的搜索质量对比结果。
表4
工作 | 平台 | 功耗 | top-1精度 | 吞吐量(FPS) | 能效 |
HS-Co-Opt | Xilinx XC7Z015 | - | 68.0 | 12.1 | - |
TCAD22 | Xilinx ZCU102 | - | 73.3 | 36.6 | - |
EDD | Xilinx ZCU102 | - | 74.6 | 125.6 | - |
Co-Explore | Intel GX1150 | 43.63 | 77.6 | 221.2 | 5.07 |
HAO | Xilinx Ultra96 | 5.5 | 72.7 | 44.9 | 8.16 |
本发明 | Xilinx ZCU102 | 26.21 | 74.5 | 260.1 | 9.92 |
表4表明,针对相同的硬件平台,本发明提出的联合搜索框架产生的解决方案的吞吐量是以往工作的2.07至7.10倍。为了在不同平台间进行公平的比较,我们设置了能效(FPS/W),也即,FPS与功耗的比值作为硬件标准。本发明提出的框架在相同的精度下实现了1.21至1.95倍的能源效率提高。
实施例三
图9为本发明实施例三提供的一种CNN模型与加速器的联合搜索装置的结构示意图。如图9所示,该装置包括:超网络训练模块910、子网确定模块920、加速器搜索模块930以及循环迭代模块940,其中:
超网络训练模块910,用于通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
子网确定模块920,用于根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的DW卷积层、第一PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
加速器搜索模块930,用于通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
循环迭代模块940,用于将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
本发明实施例的技术方案,通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;根据超网络训练结果中包括的各项架构参数,确定目标子网;通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件的实现方式,基于预先构建的硬件友量化器,可以将位宽搜索集成至NAS引擎,此外,通过先在超网络中采样子网,后生成针对子网的加速器优化方案,并返回相应的硬件评估的实现方式,可以从一定程度上裁剪搜索空间,减少搜索时间成本。
在上述各实施例的基础上,超网络训练模块910,可以进一步用于:
通过公式:对每个卷积块第l层的权重wl进行量化处理,得到第l层的量化权重/>
其中,round(.)为四舍五入函数,k为量化位宽;
通过公式:对输入至每个卷积块第l层的激活xl进行量化处理,得到输入至第l层的量化激活/>
其中,clamp(.)用于将输入值xl限制在最小值Cl和最大值Cl之间,Cl为预设的截断阈值,Cl用于根据由计算得到的梯度值进行更新。
在上述各实施例的基础上,所述异构多核硬件FPGA平台中,包括有设定数量的BPU;
其中,BPU中包括有依次相连的DW子核心,第一PW子核心以及第二PW子核心,一个BPU用于独立的对一个卷积块进行并行融合计算;
BPU中的每个子核心中具体包括:激活缓存区、权重缓冲区、累加缓冲区、计算单元、量化单元以及冷缓冲区;
激活缓存区和权重缓冲区,用于对片外的激活和权重进行缓存,以提供片上访问带宽;计算单元,用于执行量化后的卷积计算;累加缓冲区,用于存储卷积计算结果;量化单元,用于输出数据的量化,归一化处理以及数据激活处理;冷缓冲区,用于缓存中间结果,以避免片外临时存储。
在上述各实施例的基础上,在所述BPU的每个子核心执行计算的过程中,将两个或者三个低精度乘法打包至异构多核硬件FPGA平台中一个单独的DSP单元中执行计算;
在BPU的量化单元中,整合有归一化层和激活函数层;BPU的全部数据端口均为AXI4;以及
在所述BPU的每个子核心执行计算之前,采用权重的重排序和预取技术启动BPU片外突发传输,且在突发传输长度小于预设的长度阈值时,启用outstanding多线程模式对带宽访问请求进行流水化。
在上述各实施例的基础上,加速器搜索模块930,可以具体用于:
采用遗传算法,在裁剪后的设计参数搜索空间中,迭代搜索出与目标子网匹配的目标加速器的设计参数;
其中,设计参数的类型包括:BPU数量值,以及与每个BPU分别对应的BPU内设计参数;
BPU内设计参数的类型包括:连续卷积块分配数量值、数据流模式、输入特征图的高度分片尺寸、DW子核心的输出通道并行尺寸、与第一PW子核心对应的输入通道并行尺寸和输出通道并行尺寸,以及与第二PW子核心对应的输入通道并行尺寸和输出通道并行尺寸。
在上述各实施例的基础上,所述连续卷积块分配数量值为分配至同一BPU的连续卷积块的数量值;其中,对每个BPU进行连续卷积块分配的策略,是基于计算与通信比的分布规律得到的。
在上述各实施例的基础上,加速器搜索模块930,可以进一步具体用于:
采用遗传算法,在裁剪后的设计参数搜索空间中,以多进程并行处理方式执行对目标加速器的设计参数的搜索过程;
如果当前搜索到能够满足预设的目标每秒帧数的设计参数,则直接结束迭代流程,并将当前搜索结果作为与目标子网匹配的目标加速器的设计参数。
本发明实施例所提供的CNN模型与加速器的联合搜索装置可执行本发明任意实施例所提供的CNN模型与加速器的联合搜索方法,具备执行方法相应的功能模块和有益效果。
实施例四
图10示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图10所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如执行如本发明任一实施例所述的一种CNN模型与加速器的联合搜索方法。
在一些实施例中,如本发明任一实施例所述的一种CNN模型与加速器的联合搜索方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的如本发明任一实施例所述的一种CNN模型与加速器的联合搜索方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行如本发明任一实施例所述的一种CNN模型与加速器的联合搜索方法。
也即:通过可微分NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的DW卷积层、第一PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的***和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种CNN模型与加速器的联合搜索方法,其特征在于,包括:
通过可微分神经网络架构搜索NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的深度DW卷积层、第一逐点PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
通过快速硬件架构搜索HAS引擎,在基于块处理单元BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
2.根据权利要求1所述的方法,其特征在于,采用预先构建的硬件友好量化器执行量化操作,包括:
通过公式:对每个卷积块第l层的权重wl进行量化处理,得到第l层的量化权重/>
其中,round(.)为四舍五入函数,k为量化位宽;
通过公式:对输入至每个卷积块第l层的激活xl进行量化处理,得到输入至第l层的量化激活/>
其中,clamp(.)用于将输入值xl限制在最小值Cl和最大值Cl之间,Cl为预设的截断阈值,Cl用于根据由计算得到的梯度值进行更新。
3.根据权利要求1所述的方法,其特征在于,所述异构多核硬件FPGA平台中,包括有设定数量的BPU;
其中,BPU中包括有依次相连的DW子核心,第一PW子核心以及第二PW子核心,一个BPU用于独立的对一个卷积块进行并行融合计算;
BPU中的每个子核心中具体包括:激活缓存区、权重缓冲区、累加缓冲区、计算单元、量化单元以及冷缓冲区;
激活缓存区和权重缓冲区,用于对片外的激活和权重进行缓存,以提供片上访问带宽;计算单元,用于执行量化后的卷积计算;累加缓冲区,用于存储卷积计算结果;量化单元,用于输出数据的量化,归一化处理以及数据激活处理;冷缓冲区,用于缓存中间结果,以避免片外临时存储。
4.根据权利要求3所述的方法,其特征在于,在所述BPU的每个子核心执行计算的过程中,将两个或者三个低精度乘法打包至异构多核硬件FPGA平台中一个单独的DSP单元中执行计算;
在BPU的量化单元中,整合有归一化层和激活函数层;BPU的全部数据端口均为***高级可扩展接口AXI4;以及
在所述BPU的每个子核心执行计算之前,采用权重的重排序和预取技术启动BPU片外突发传输,且在突发传输长度小于预设的长度阈值时,启用outstanding多线程模式对带宽访问请求进行流水化。
5.根据权利要求1-4任一项所述的方法,其特征在于,通过快速HAS引擎,在基于BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,包括:
采用遗传算法,在裁剪后的设计参数搜索空间中,迭代搜索出与目标子网匹配的目标加速器的设计参数;
其中,设计参数的类型包括:BPU数量值,以及与每个BPU分别对应的BPU内设计参数;
BPU内设计参数的类型包括:连续卷积块分配数量值、数据流模式、输入特征图的高度分片尺寸、DW子核心的输出通道并行尺寸、与第一PW子核心对应的输入通道并行尺寸和输出通道并行尺寸,以及与第二PW子核心对应的输入通道并行尺寸和输出通道并行尺寸。
6.根据权利要求5所述的方法,其特征在于,所述连续卷积块分配数量值为分配至同一BPU的连续卷积块的数量值;其中,对每个BPU进行连续卷积块分配的策略,是基于计算与通信比的分布规律得到的。
7.根据权利要求5所述的方法,其特征在于,采用遗传算法,在裁剪后的设计参数搜索空间中,迭代搜索出与目标子网匹配的目标加速器的设计参数,包括:
采用遗传算法,在裁剪后的设计参数搜索空间中,以多进程并行处理方式执行对目标加速器的设计参数的搜索过程;
如果当前搜索到能够满足预设的目标每秒帧数的设计参数,则直接结束迭代流程,并将当前搜索结果作为与目标子网匹配的目标加速器的设计参数。
8.一种CNN模型与加速器的联合搜索装置,其特征在于,包括:
超网络训练模块,用于通过可微分神经网络架构搜索NAS引擎,对预先构建的超网络进行训练,并在训练过程中,采用预先构建的硬件友好量化器执行量化操作;
子网确定模块,用于根据超网络训练结果中包括的各项架构参数,确定目标子网;
其中,目标子网的每个卷积块具有设定的目标位宽和设定的目标通道扩展比率;每个卷积块中包括依次相连的深度DW卷积层、第一逐点PW卷积层和第二PW卷积层;通道扩展比率用于确定第一PW卷积层和第二PW卷积层的通道数;
加速器搜索模块,用于通过快速硬件架构搜索HAS引擎,在基于块处理单元BPU的异构多核硬件FPGA平台中,搜索出与目标子网匹配的目标加速器的设计参数,并评估将目标子网配置在目标加速器上执行目标数据集时的硬件评估结果;
循环迭代模块,用于将硬件评估结果反馈至可微分NAS引擎进行新的目标子网的确定,直至满足联合搜索结束条件。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的CNN模型与加速器的联合搜索方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的CNN模型与加速器的联合搜索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410206619.1A CN118095364A (zh) | 2024-02-26 | 2024-02-26 | Cnn模型与加速器的联合搜索方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410206619.1A CN118095364A (zh) | 2024-02-26 | 2024-02-26 | Cnn模型与加速器的联合搜索方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118095364A true CN118095364A (zh) | 2024-05-28 |
Family
ID=91158297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410206619.1A Pending CN118095364A (zh) | 2024-02-26 | 2024-02-26 | Cnn模型与加速器的联合搜索方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118095364A (zh) |
-
2024
- 2024-02-26 CN CN202410206619.1A patent/CN118095364A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
San Miguel et al. | Load value approximation | |
Ma et al. | Garaph: Efficient {GPU-accelerated} graph processing on a single machine with balanced replication | |
Yang et al. | A hybrid computing method of SpMV on CPU–GPU heterogeneous computing systems | |
Seshadri et al. | An evaluation of edge tpu accelerators for convolutional neural networks | |
Li et al. | Dynamic dataflow scheduling and computation mapping techniques for efficient depthwise separable convolution acceleration | |
US11275997B1 (en) | Weight loading in an array | |
Zhu et al. | Massive Files Prefetching Model Based on LSTM Neural Network with Cache Transaction Strategy. | |
Kim et al. | Minimizing GPU kernel launch overhead in deep learning inference on mobile GPUs | |
JP7492555B2 (ja) | 複数の入力データセットのための処理 | |
Gómez-Luna et al. | Evaluating machine learningworkloads on memory-centric computing systems | |
Kim et al. | CPU-accelerator co-scheduling for CNN acceleration at the edge | |
Cho et al. | FARNN: FPGA-GPU hybrid acceleration platform for recurrent neural networks | |
Spantidi et al. | Targeting dnn inference via efficient utilization of heterogeneous precision dnn accelerators | |
Kwon et al. | Sparse convolutional neural network acceleration with lossless input feature map compression for resource‐constrained systems | |
Liu | Yolov2 acceleration using embedded gpu and fpgas: pros, cons, and a hybrid method | |
Zong-ling et al. | The design of lightweight and multi parallel CNN accelerator based on FPGA | |
Zhang et al. | Optimizing execution for pipelined‐based distributed deep learning in a heterogeneously networked GPU cluster | |
Zhang et al. | MPMoE: Memory Efficient MoE for Pre-trained Models with Adaptive Pipeline Parallelism | |
Wu et al. | Hardware partitioning for big data analytics | |
Sahoo et al. | Memorel: A memory-oriented optimization approach to reinforcement learning on fpga-based embedded systems | |
Ying et al. | Towards fault tolerance optimization based on checkpoints of in-memory framework spark | |
CN118095364A (zh) | Cnn模型与加速器的联合搜索方法、装置、设备及介质 | |
US11900239B2 (en) | Systems and methods for accelerating sparse neural network execution | |
Thokala et al. | Variable-complexity optimization applied to airfoil design |
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 |