当前位置: 首页 > 专利查询>东北大学专利>正文

一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统技术方案

技术编号:38007964 阅读:6 留言:0更新日期:2023-06-30 10:25
本申请涉及卷积神经网络技术加速器应用领域,尤其涉及一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统。包括:编译器前端和编译器后端,以及运行时库和加速器;编译器前端针对待部署的CNN模型进行量化处理,得到IR图;编译器后端确定指令和配置信息;指令包括CONV、MAXP和AVGP、ADD、FC,配置文件包括权重片上内存管理算法进行设置的片上缓存区的相关信息;运行时库,存储指令和配置文件至DRAM,以及对FPGA进行配置;加速器中的卷积引擎为基于im2col并行策略设置的全流水脉动阵列。本申请提供了用于部署CNN模型至基于FPGA的高性能加速器的编译系统,编译系统提供了完整的基于ONNXIR的灵活工具流,可以很方便地将不同的CNN模型部署到FPGA上。不同的CNN模型部署到FPGA上。不同的CNN模型部署到FPGA上。

【技术实现步骤摘要】
一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统


[0001]本申请涉及卷积神经网络技术加速器应用领域,尤其涉及一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统。

技术介绍

[0002]卷积神经网络(CNN)模型已广泛应用于许多任务,例如图像分类和目标检测。专用硬件加速器更适合CNN模型推理任务中涉及的大量计算操作。现场可编程门阵列(FPGA)由于具有高并行度和低功耗的特性而成为出色的加速器硬件平台,然而,开发周期长,需要的软硬件知识面广等问题极大地阻碍了基于FPGA的加速器的开发和应用。因此,最近的研究集中在设计自动将CNN模型映射到FPGA的编译器软件,但是却引入了新的挑战。
[0003]一方面,现代CNN模型衍生出许多拓扑结构,并且可以从各种深度学习框架中训练和导出。一个灵活的编译器应该能够处理这种可能性。然而现有设计中大多数都特定于特定框架或自定义的中间表示。尽管一些研究已经为每个深度学习框架开发了工具来将模型转换为编译器指定的中间表示(IR),但他们必须经常升级工具以跟上新版本的框架。因此,需要提出更灵活和方便的解决方案。
[0004]另一方面,加速器架构在最大化FPGA的性能方面仍有改进的空间。从并行策略的角度来看,由于现代CNN模型具有不同形状的卷积核,采用卷积核级并行性的加速器可能会出现性能下降。从内存管理的角度来看,由于现代FPGA的片上内存资源足够大,可以缓存中间结果,因此不能很好地利用丰富内存的加速器的性能可能不是最优的。此外,现代FPGA的计算资源可以在更高的时钟频率下运行,这为提高整体吞吐量提供了更多机会。因此,有必要为FPGA加速器开发新的并行策略、内存管理算法和硬件架构。

技术实现思路

[0005]本申请提供了一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统,能够为FPGA加速器提供新的并行策略、内存管理算法和硬件架构。
[0006]本申请的技术方案是一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统,包括:编译器前端和编译器后端,以及基于FPGA设计的运行时库和加速器;
[0007]所述编译器前端,用于基于ONNX模型和训练数据集针对待部署的CNN模型进行量化处理,得到相应于待部署的CNN模型的IR图;
[0008]所述编译器后端,用于根据IR图确定相应于待部署的CNN模型的指令和配置信息并且将指令和配置信息保存为二进制文件;
[0009]所述指令包括CONV、MAXP和AVGP、ADD、FC,所述配置文件包括基于预设的权重片上内存管理算法进行设置的片上缓存区的缓存配置信息、偏置信息和数据包描述符信息;
[0010]所述运行时库,用于存储指令和配置文件至DRAM,以及用于根据模型配置信息对FPGA进行配置;
[0011]所述加速器中的卷积引擎为基于im2col并行策略设置的全流水脉动阵列。
[0012]可选地,所述编译器前端包括:量化参数计算单元和量化参数验证单元;
[0013]所述量化参数计算单元,用于基于ONNX模型确定相应于待部署的CNN模型的ONNX计算图并且基于ONNX计算图构建量化图,以及基于量化图并且通过在训练数据集上运行推理任务进行量化参数的计算,得到量化参数;
[0014]所述量化参数验证单元,用于构建验证图并且基于预设精度损失标准通过验证图针对量化参数进行验证,如果验证结果不满足预设精度损失标准,重新进行量化参数的计算;
[0015]所述量化参数计算单元,还用于以根据量化参数针对ONNX计算图进行修改的实现方式构建IR图。
[0016]可选地,所述编译器后端包括:静态数据确定单元;
[0017]所述静态数据确定单元,用于根据IR图确定相应于待部署的CNN模型的指令和配置文件;
[0018]所述配置文件包括:输入张量和输出张量、预置的卷积权重、偏置和数据包描述符;
[0019]所述片上缓存区包括:RTM、CWM、BM、IM和XPHM;
[0020]所述RTM,用于存储卷积计算需用和池化计算需用的三维张量,以及用于存储全连接操作过程中的向量;
[0021]所述CWM,用于存储预置的卷积权重,以及还用于存储卷积计算过程中从DRAM中调入的卷积权重;
[0022]所述BM,用于存储偏置;
[0023]所述IM,用于存储相应于待部署的CNN模型的指令;
[0024]所述XPHM,用于存储数据包描述符。
[0025]可选地,所述RTM包括四个相互独立的存储块,每个存储块的数据位宽为256bit,可存储32个像素;
[0026]所述RTM的数据存储方式包括:T

mode模式和V

mode模式;
[0027]T

mode模式用于存储卷积计算需用和池化计算需用的三维张量,V

mode模式用于存储全连接操作过程中的向量;
[0028]当需要以T

mode模式存储三维张量时,二维的特征图按照通道顺序依次放置在每一个存储块中;针对二维特征图,二维特征图的像素点被展开为一维向量后依次排列在相对应的存储块中;如果二维特征图的张量通道数不为4的倍数,编译器将自动将张量通道数填充为4的倍数;
[0029]当需要以V

mode模型存储一维向量时,向量的元素被分割为单端的段并且依次保存在RTM中;每个段包含64个像素点,占用两个存储块;如果一维向量的向量长度不为64的倍数,编译器将自动将像素点填充为64的倍数。
[0030]可选地,所述CWM包括:呈邻接设置的静态段存储区和动态段存储区;
[0031]所述静态段存储区,用于存储预置的卷积权重;
[0032]所述动态段存储区,用于存储卷积计算过程中从DRAM中调入的卷积权重;
[0033]以及,所述动态段存储区通过双指针机制控制动态段存储区的访问;
[0034]动态段rd_ptr表示下一个预期数据的地址;
[0035]动态段wr_ptr表示当前有效数据的最大地址,动态段wr_ptr在配置静态段存储区后或卷积指令开始时移动到动态段存储区的低地址,当卷积权重到达时会更新;
[0036]如果要读取动态段存储区的卷积权重,需满足动态段wr_ptr大于动态段rd_ptr。
[0037]可选地,所述加速器内还设置有可扩展的X

bus;
[0038]所述X

bus内设置有Xpkt Gen和若干个Filter;
[0039]所述Xpkt Gen,用于从所述RTM处读取三维张量并且将三维张量重组为具有长度为Q的列向量的虚拟特征图矩阵,以及将虚拟特征图矩阵中像素点数据整理成数据包的形式;
[0040]每个所述数据包均由一个包描述符和若干个有效载荷组成;
[0041]所述包描述符包含四个字段本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于部署CNN模型至基于FPGA的高性能加速器的编译系统,其特征在于,包括:编译器前端和编译器后端,以及基于FPGA设计的运行时库和加速器;所述编译器前端,用于基于ONNX模型和训练数据集针对待部署的CNN模型进行量化处理,得到相应于待部署的CNN模型的IR图;所述编译器后端,用于根据IR图确定相应于待部署的CNN模型的指令和配置信息并且将指令和配置信息保存为二进制文件;所述指令包括CONV、MAXP和AVGP、ADD、FC,所述配置文件包括基于预设的权重片上内存管理算法进行设置的片上缓存区的缓存配置信息、偏置信息和数据包描述符信息;所述运行时库,用于存储指令和配置文件至DRAM,以及用于根据模型配置信息对FPGA进行配置;所述加速器中的卷积引擎为基于im2col并行策略设置的全流水脉动阵列。2.根据权利要求1所述的用于部署CNN模型至基于FPGA的高性能加速器的编译系统,其特征在于,所述编译器前端包括:量化参数计算单元和量化参数验证单元;所述量化参数计算单元,用于基于ONNX模型确定相应于待部署的CNN模型的ONNX计算图并且基于ONNX计算图构建量化图,以及基于量化图并且通过在训练数据集上运行推理任务进行量化参数的计算,得到量化参数;所述量化参数验证单元,用于构建验证图并且基于预设精度损失标准通过验证图针对量化参数进行验证,如果验证结果不满足预设精度损失标准,重新进行量化参数的计算;所述量化参数计算单元,还用于以根据量化参数针对ONNX计算图进行修改的实现方式构建IR图。3.根据权利要求1所述的用于部署CNN模型至基于FPGA的高性能加速器的编译系统,其特征在于,所述编译器后端包括:静态数据确定单元;所述静态数据确定单元,用于根据IR图确定相应于待部署的CNN模型的指令和配置文件;所述配置文件包括:输入张量和输出张量、预置的卷积权重、偏置和数据包描述符;所述片上缓存区包括:RTM、CWM、BM、IM和XPHM;所述RTM,用于存储卷积计算需用和池化计算需用的三维张量,以及用于存储全连接操作过程中的向量;所述CWM,用于存储预置的卷积权重,以及还用于存储卷积计算过程中从DRAM中调入的卷积权重;所述BM,用于存储偏置;所述IM,用于存储相应于待部署的CNN模型的指令;所述XPHM,用于存储数据包描述符。4.根据权利要求3所述的用于部署CNN模型至基于FPGA的高性能加速器的编译系统,其特征在于,所述RTM包括四个相互独立的存储块,每个存储块的数据位宽为256bit,可存储32个像素;所述RTM的数据存储方式包括:T

mode模式和V

mode模式;T

mode模式用于存储卷积计算需用和池化计算需用的三维张量,V

mode模式用于存储全连接操作过程中的向量;
当需要以T

mode模式存储三维张量时,二维的特征图按照通道顺序依次放置在每一个存储块中;针对二维特征图,二维特征图的像素点被展开为一维向量后依次排列在相对应的存储块中;如果二维特征图的张量通道数不为4的倍数,编译器将自动将张量通道数填充为4的倍数;当需要以V

mode模型存储一维向量时,向量的元素被分割为单端的段并且依次保存在RTM中;每个段包含64个像素点,占用两个存储块;如果一维向量的向量长度不为64的倍数,编译器将自动将像素点填充为64的倍数。5.根据权利要求3所述的用于部署CNN模型至基于FPGA的高性能加速器的编译系统,其特征在于,所述CWM包括:呈邻接设置的静态段存储区和动态段存储区;所述静态段存储区,用于存储预置的卷积权重;所述动态段存储区,用于存储卷积计算过程中从DRAM中调入的卷积权重;以及,所述动态段存储区通过双指针机制控制动态段存储区的访问;动态段rd_ptr表示下一个预期数据的地址;动态段wr_ptr表示当前有效数据的最大地址,动态段wr_ptr在配置静态段存储区后或卷积指令开始时移动到动态段存储区的低地址,当卷积权重到达时会更新;如果要读取动态段存储区的卷积权重,需满足动态段wr_ptr大于动态段rd_ptr。6.根据权利要求1所述的用于部署CNN模型至基于FPGA的高性能加速器...

【专利技术属性】
技术研发人员:吴刚陈永正张澜殷帅博
申请(专利权)人:东北大学
类型:发明
国别省市:

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

1