首页 / 专利库 / 电脑零配件 / 硬件 / 基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法

基于Pytorch框架卷积神经网络在FPGA上的快速部署方法

阅读:494发布:2020-05-11

专利汇可以提供基于Pytorch框架卷积神经网络在FPGA上的快速部署方法专利检索,专利查询,专利分析的服务。并且发明 公开的基于Pytorch 框架 的 卷积神经网络 在FPGA上的快速部署方法,包括建立模型快速映射机制、可重配置计算单元构建和基于规则映射的自适应处理流程。在Pytorch框架下定义卷积神经网络时,通过命名规则的构建建立模型快速映射机制。在 硬件 资源约束条件下进行优化策略计算,并且建立基于硬件优化策略的模板库,在FPGA端构造可重配置计算单元。最后在基于规则映射的自适应处理流程中在FPGA端对复杂网络模型文件进行分解,将网络抽象成有向无环图,最终生成神经网络 加速 器,实现从Pytorch框架的模型文件到FPGA部署的一体化流程。本方法可以通过模型快速映射机制建立网络的有向无环图,在FPGA部署过程中只需要输入硬件设计变量即可完成FPGA部署过程,方法简洁并且通用性强。,下面是基于Pytorch框架卷积神经网络在FPGA上的快速部署方法专利的具体信息内容。

1.一种基于Pytorch框架卷积神经网络在FPGA上的快速部署方法,其特征在于,包括如下步骤:
步骤一、建立模型快速映射机制,Pytorch框架下卷积神经网络模型拓扑结构的各层按照上下层输入输出顺序进行命名,对模型训练后得到的神经网络模型文件进行各层分解存储,完成在Pytorch框架下模型文件的网络拓扑结构建立;
步骤二、可重配置计算单元构建,包括硬件资源约束条件下的优化策略计算和建立基于硬件优化策略的模板库,用于生成FPGA端的可重配置计算单元;
步骤三、基于规则映射的自适应处理流程,解析神经网络模型文件中各层的配置信息,并通过FPGA端的可重配置计算单元进行FPGA控制逻辑自适应配置,最终生成神经网络加速器。
2.根据权利要求1所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤一具体包括:
(1)构建在Pytorch框架中模型各层命名规则,按照命名规则对模型各层进行重命名;
(2)对重命名后的网络模型进行训练,得到带有网络拓扑结构的神经网络模型文件;
(3)对神经网络模型文件进行分解,每层存储为一个重命名后的二进制文件,完成模型快速映射机制的建立。
3.根据权利要求2所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤(1)中,对卷积神经网络中的每一层进行命名,命名规则是本层名+下层名+配置信息。
4.根据权利要求3所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,卷积层配置信息为:卷积核尺寸_步长_补零;池化层配置信息为:池化窗口尺寸_步长_补零,BN层和激活层无需配置信息。
5.根据权利要求2所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤(3)中,在神经网络模型文件分解和存储阶段,首先对训练得到的神经网络模型文件进行一次前向传播,每当读取到神经网络模型的一层后,将其中的参数保存至二进制文件中,所述二进制文件的文件名即对应层的名称。
6.根据权利要求1所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤二具体包括:
(1)在硬件资源约束条件下进行优化策略计算,根据当前硬件的资源选择FPGA部署所采用的优化策略;
(2)建立基于硬件优化策略的模板库,在FPGA部署时直接调用模板库中相应的模板文件。
7.根据权利要求6所述的一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤(1)中硬件优化策略包括特征图分尺寸、输入特征图并行度、输出特征图并行度的设置。
8.根据权利要求6所述的基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤(2)中基于硬件优化策略的模板库主要包括卷积模块、BN层模块、激活层模块、池化模块、全连接层计算模块和输入输出特征图缓冲模块。
9.根据权利要求1所述的基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,所述步骤三具体包括:创建一个structure结构,在FPGA端读取对应层的权重文件,根据权重文件名称解析出配置信息,根据配置信息更新所述structure结构,并保存下一层的名字以从权重文件中找到要执行的下层信息。
10.根据权利要求9所述的基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法,其特征在于,structure结构维护的信息包括硬件优化参数、卷积层配置参数、BN层配置参数、池化层配置参数和本层及下层的名称。

说明书全文

基于Pytorch框架卷积神经网络在FPGA上的快速部署方法

技术领域

[0001] 本发明属于卷积神经网络硬件加速技术领域,涉及一种基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法。

背景技术

[0002] 近年来,卷积神经网络被广泛应用于自然语言处理计算机视觉等领域。神经网络一般包括:训练和测试两个阶段。训练就是把训练数据和神经网络模型 (ResNet、RNN等)用CPU或GPU提炼出模型参数的过程。测试就是把测试数据用训练好的模型(神经网络模型+模型参数)运行后查看结果。而caffe,Pytorch, tensorflow就是把训练过程所涉及的环节数据统一抽象,形成可使用框架。
[0003] 目前工业界在FPGA上部署深度学习模型大都通过解析caffe prototxt获取网络结构,并找到与之对应的caffe model里面的参数值(eg.深鉴科技、地平线、商汤)。而Pytorch框架定义网络结构简单、使用灵活,在学术界被广泛使用。由于Pytorch模型中不包含网络的拓扑信息,所以在Pytorch训练的模型需要通过 onnx等工具转换成caffe model才可以进行部署,但onnx工具只支持常规的caffe 层,若是在Pytorch中自定义的层则无法进行转换。并且即使转换成功后,也需要大量精进行Pytorch与caffe的输出对齐。
[0004] 因此,提供基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法是本领域技术人员亟待解决的技术问题。

发明内容

[0005] 为了实现上述的发明目的,本发明一种基于Pytorch框架的卷积神经网络在 FPGA上的快速部署方法,方便将训练得到的Pytorch框架的卷积神经网络快速地部署到FPGA上。主要包括建立模型快速映射机制、可重配置计算单元构建和基于规则映射的自适应处理流程。通过创建一种高效便捷的命名规则,将模型的上下层拓扑顺序保存至模型文件中,然后对复杂模型文件进行分解,每层存储为一个重命名后的二进制文件,完成模型快速映射机制的建立。随后在硬件资源约束条件下的进行优化策略计算,根据当前硬件的资源选择本次FPGA部署所采用的优化策略。同时建立基于硬件优化策略的模板库,在FPGA部署时直接调用模板库中相应的模板文件,模板库中包含基本的卷积神经网络结构。最后创建一个特定的structure结构,在FPGA端读取该层权重文件,根据配置信息更新该structure 结构,并保存下一层的名字便于从权重文件中找到要执行的下层信息。从而完成在Pytorch框架下的卷积神经网络在FPGA上的快速部署。为实现上述目的其具体方案如下:
[0006] 步骤一、建立模型快速映射机制,Pytorch框架下卷积神经网络模型拓扑结构的各层按照上下层输入输出顺序进行命名,对模型训练后得到的神经网络模型文件进行各层分解存储,完成在Pytorch框架下模型文件的网络拓扑结构建立;
[0007] 步骤二、可重配置计算单元构建,包括硬件资源约束条件下的优化策略计算和建立基于硬件优化策略的模板库,用于生成FPGA端的可重配置计算单元;
[0008] 步骤三、基于规则映射的自适应处理流程,解析神经网络模型文件中各层的配置信息,并通过FPGA端的可重配置计算单元进行FPGA控制逻辑自适应配置,最终生成神经网络加速器。
[0009] 优选的,所述步骤一具体包括:
[0010] (1)构建在Pytorch框架中模型各层命名规则,按照命名规则对模型各层进行重命名;
[0011] (2)对重命名后的网络模型进行训练,得到带有网络拓扑结构的神经网络模型文件;
[0012] (3)对神经网络模型文件进行分解,每层存储为一个重命名后的二进制文件,完成模型快速映射机制的建立。
[0013] 优选的,所述步骤(1)中,对卷积神经网络中的每一层进行命名,命名规则是本层名+下层名+配置信息。
[0014] 优选的,卷积层配置信息为:卷积核尺寸_步长_补零;池化层配置信息为:池化窗口尺寸_步长_补零,BN层和激活层无需配置信息。
[0015] 优选的,所述步骤(3)中,在神经网络模型文件分解和存储阶段,首先对训练得到的神经网络模型文件进行一次前向传播,每当读取到神经网络模型的一层后,将其中的参数保存至二进制文件中,所述二进制文件的文件名即对应层的名称。特别的,当该层没有参数,需要保存为空的二进制文件。
[0016] 优选的,所述步骤二具体包括:
[0017] (1)在硬件资源约束条件下进行优化策略计算,根据当前硬件的资源选择 FPGA部署所采用的优化策略;
[0018] (2)建立基于硬件优化策略的模板库,在FPGA部署时直接调用模板库中相应的模板文件。
[0019] 优选的,所述步骤(1)中硬件优化策略包括特征图分尺寸、输入特征图并行度、输出特征图并行度的设置。
[0020] 优选的,所述步骤(2)中基于硬件优化策略的模板库主要包括卷积模块、 BN层模块、激活层模块、池化模块、全连接层计算模块和输入输出特征图缓冲模块。
[0021] 优选的,所述步骤三具体包括:创建一个structure结构,在FPGA端读取对应层的权重文件,根据权重文件名称解析出配置信息,根据配置信息更新所述 structure结构,并保存下一层的名字以从权重文件中找到要执行的下层信息。
[0022] 优选的,structure结构维护的信息包括硬件优化参数、卷积层配置参数、BN 层配置参数、池化层配置参数和本层及下层的名称。
[0023] 优选的,structure结构包含的参数有:经过分块后特征图的尺寸、输出特征图并行度、输入特征图并行度、卷积层标志位、BN层标志位、激活层标志位、池化层标志位、全连接层标志位、卷积层卷积核尺寸、卷积层卷积窗口滑动步长、卷积层输入特征图补零个数、池化层池化窗口尺寸、池化层池化窗口滑动步长、池化层输入特征图补零个数和全连接层计算核尺寸。
[0024] 本发明相较现有技术具有以下有益效果:
[0025] 1、通过高效便捷的命名规则和复杂模型文件分解及存储机制建立模型快速映射机制,将卷积神经网络拓扑信息保存至模型参数文件中,弥补了Pytorch框架训练得到的模型文件不包含网络拓扑信息的问题。
[0026] 2、通过在硬件资源约束下进行优化策略计算,便于针对不同的硬件选择合适的优化加速策略。同时基于硬件优化策略的模板库可以支持卷积神经网络中常见的操作,具备一定的通用性和可拓展性。
[0027] 3、建立了基于规则映射的自适应处理流程,在FPGA的网络推理阶段可以将网络抽象成有向无环图,并能自适应的根据特定的structure结构配置FPGA控制逻辑,减少了在FPGA部署时需要人为参与的环节。附图说明
[0028] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0029] 图1为本发明基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法的流程图
[0030] 图2附图为本发明实施例所提供的可重配置计算单元构建的输入输出特征图缓冲模块结构图;
[0031] 图3附图为本发明实施例所提供的基于规则映射的自适应处理流程中生成网络拓扑有向无环图的流程图。

具体实施方式

[0032] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033] 参见附图1,为基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法流程图,本发明卷积神经网络在FPGA上的快速部署方法的设计和实现主要分为三部分:建立模型快速映射机制、可重配置计算单元构建和基于规则映射的自适应处理流程。
[0034] S1、建立模型快速映射机制
[0035] 首先在Pytorch框架下卷积神经网络模型定义时进行对模型的各层重命名,对于模型中的每一层,按照“本层名+下层名+配置信息”的命名方式进行命名,在“本层名”与“下层名”之间用两个下划线隔开。例如对卷积核为3*3大小,步长为1,padding为0的卷积层,该层命名为“conv1__conv2__3_1_0”。这样在进行Pytorch框架的神经网络模型搭建的时候就将模型的上下层拓扑结构保存至模型名当中,便于进行下一步将Pytorch框架的模型文件转换成FPGA识别的二进制文件。特别的,针对某一层输出为多个下一层,其命名方式为“本层名+下层 1+下层2…+配置信息”,例如“conv2__conv3__conv4__3_2_1”。对Pytorch框架下卷积神经网络模型命名完成后进行模型训练,这样模型的上下层拓扑顺序就会保存至模型文件中。
[0036] 然后对得到的神经网络模型文件加载至Pytorch框架下的卷积神经网络模型中进行一次前向传播,当读取到模型的一层后,将其中的参数保存成二进制.bin 文件中,该二进制.bin文件的名称即该层名。特别的,当该层没有参数,需要保存为空的二进制文件。
[0037] 对于卷积层,配置信息为“卷积核尺寸_步长_padding”,对于池化层,配置信息为“池化窗口尺寸_步长_padding”,对于BN层和激活函数层无需配置信息。
[0038] S2、可重配置计算单元构建
[0039] 可重配置计算单元构建包括在硬件资源约束条件下的优化策略计算和建立基于硬件优化策略的模板库。在硬件资源约束条件下的优化策略计算具体步骤如下表所示:
[0040]
[0041] 遍历神经网络输入特征图大小和输入输出通道大小,寻找符合如下公式的Tm (输出特征图并行度),Tn(输入特征图并行度),Tr(经过分块后特征图的高), Tc(经过分块后特征图的宽),如果寻找的该组硬件设计参数资源占用小于硬件总资源,且当前整体计算时延为最小时延,则保存该组硬件设计参数,否则继续寻找,最后输出最小时延所采用的硬件设计参数作为在硬件资源约束条件下的优化策略。
[0042]
[0043]
[0044] DSP=18×Tm×Tn         (3)
[0045] 公式中LAT表示在当前优化策略下的整体计算时延,BRAM表示当前优化策略下的存储资源占用,DSP表示当前优化策略下的DSP计算资源占用。R表示特征图的高,C表示特征图的宽,M表示输出通道,N表示输入通道,K表示卷积核尺寸,Bw表示数据计算位宽,BS表示在FPGA中每块BRAM的大小。
[0046] 基于硬件优化策略的模板库包括卷积模块、BN层模块、激活层模块、池化模块、全连接层计算模块和输入输出特征图缓冲模块。对于整个可重配置计算单元来说,可重配置参数包括:特征图分块尺寸、输入特征图并行度、输出特征图并行度等。如表所示:
[0047]
[0048]
[0049] 卷积计算模块包含分块输入特征图缓存区、权重参数缓存区、乘法器和加法器。在卷积开始前首先根据卷积层配置参数对卷积计算模块进行配置,包括卷积核尺寸、卷积窗口滑动步长、输入输出特征图并行度等。配置完成后将Tm*Tn*C_k *C_k个权重以数据流的形式加载至权重参数缓存区,将Tn个尺寸为Tr*Tc的分块输入特征图以权重数据流的形式加载至输入特征图缓冲区。卷积计算模块为滑动窗口卷积计算设计了卷积计算单元,该卷积计算单元由C_k*C_k个DSP构成。当卷积运算开始时,Tn个输入通道的C_k*C_k个输入特征图与对应同样数量的权重输入至卷积计算单元中,同时进行乘累加计算完成后在分块输入特征图上进行窗口滑动,加载下一组特征图和权重进行卷积计算。直至滑动到Tr*Tc的位置后完成对本组输入特征图的卷积计算,计算完成后将卷积输出特征图存储在可重配置计算IP核的输出特征图缓冲区。
[0050] 池化计算模块是对卷积输出的特征图进行采样的过程,在池化计算开始前,首先根据池化层配置参数对池化计算模块进行配置,包括池化窗口尺寸、输出特征图并行度。配置完成后将卷积计算后得到的Tm个输出特征图加载至池化层输入特征图缓冲区,当池化运算开始时,Tm个特征图相同位置的P_k*P_k个特征值输入到比较单元,比较单元将这P_k*P_k个特征值中最大值作为输出特征图的特征值存储在可重配置计算IP核的输出特征图缓冲区。
[0051] 全连接计算模块与卷积计算模块硬件结构和计算过程类似,包含输入特征图缓存区、权重参数缓存区、乘法器和加法器。在全连接层计算开始前首先根据全连接层配置参数对全连接计算模块进行配置,包括全连接层计算核尺寸、输入输出特征图并行度等。配置完成后将Tm*Tn*F_k*F_k个权重以数据流的形式加载至权重参数缓存区,将Tn个尺寸为Tr*Tc的分块输入特征图以权重数据流的形式加载至输入特征图缓冲区。若全连接层输入特征图尺寸小于Tr*Tc,则加载整个输入特征图至输入特征图缓冲区。当全连接计算开始时,Tn个输入通道的F_k*F_k个输入特征图与对应同样数量的权重输入至全连接计算单元中。在Tm个输出特征图完成计算后,分别与对应的Tm个偏置相加,然后输出至输出特征图缓冲区作为全连接计算模块计算结果。
[0052] 输入输出特征图缓冲模块包括输入特征图pingpang ram和输出特征图 pingpang ram组成,如附图3所示,在计算开始前第一组输入特征图存入I_ram1,计算开始后可重配置计算IP核读取第一组输入特征图进行计算,与此同时第二组输入特征图存入I_ram2,待第一组输入特征图计算完成后可重配置计算IP核读取 I_ram2的数据进行计算,此时第三组输入特征图再存入I_ram1。这样减少了输入特征图传输的等待时间。同理在可重配置计算IP核计算完成后第一组输出特征图存入O_ram1,待第一组数据输出完成后,第二组输出特征图输出至O_ram2,以此类推两个输出特征图缓冲区交替输出,减少了输出特征图传输的等待时间。
[0053] S3、基于规则映射的自适应处理流程
[0054] 首先创建一个特定的structure结构,如下所示,
[0055]
[0056] 该structure结构维护的信息包括硬件优化参数、卷积层配置参数、BN层配置参数、池化层配置参数和本层及下层的名称。在FPGA端读取该层权重文件,根据权重文件名称解析出该层配置信息,用来更新该structure结构,并保存下一层的名字便于从权重文件中找到要执行的下层信息。
[0057] 在FPGA神经网络推理阶段,如附图3所示,首先在FPGA端解析本层权重文件名,并更新structure结构。然后从片外内存中读取本层权重和输入特征图,根据维护的structure结构判断本层是否为卷积层,如果是则调用基于硬件优化策略的模板库中的卷积计算模块,如果不是则进行判断是否为池化层,同理调用基于硬件优化策略的模板库中的池化计算模块。当判断完是否包含激活函数操作或者全连接操作后,将数据写入输出缓冲区并由输出缓冲区写回片外内存。通过维护的structure结构经过一系列的判断和执行逻辑,将给定的神经网络模型拓扑结构抽象成网络执行的有向无环图,以配置逐层串行执行的顺序。
[0058] 在基于规则映射的自适应处理流程中FPGA读取生成的权重文件名,解析权重文件名来维护特定的structure结构,在判断逻辑中抽象成网络有向无环图,进而调用基于硬件优化策略的模板库中各个模块,在这个过程中可以自适应的完成 Pytorch框架下的卷积神经网络模型到FPGA的快速部署过程。
[0059] 以上对本发明所提供的基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
[0060] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈