一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于高层次综合工具的深度学习模型优化方法及系统与流程

2021-12-13 00:15:00 来源:中国专利 TAG:


1.本发明涉及深度学习技术领域,更具体地,涉及一种基于高层次综合工具的深度学习模型优化方法及系统。


背景技术:

2.深度学习(dl,deep learning)是机器学习(ml,machine learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(ai,artificial intelligence)。而卷积神经网络(convolutional neural networks,cnn)在图像分类与处理、视频监控以及机器视觉领域具有及其重要的研究意义和应用价值。
3.深度学习模型是以数据处理为核心,其包含大量的计算操作,如googlenet网络模型包含15.5亿浮点操作,resnet

152网络模型包含了113亿浮点操作等,这对cpu来说并不友好,同时,受制于cpu(central processing unit)的串行处理方式,通过软件的实现方式效率并不高,难以满足快速实时的应用需求。基于gpu(graphics processing unit)、asic以及fpga的实现方式相继被提出,用于加速卷积神经网络的计算速度。然而,在实际使用时容易发现,采用gpu的功耗严重,而采用asic加速器的硬件设计与开发周期较长,成本较高,硬件生成后通常无法改变,灵活性不高。


技术实现要素:

4.本发明为克服上述现有技术所述的深度学习模型的硬件加速设计存在开发周期长、功耗严重的缺陷,提供一种基于高层次综合工具的深度学习模型优化方法及系统。
5.为解决上述技术问题,本发明的技术方案如下:
6.一种基于高层次综合工具的深度学习模型优化方法,包括以下步骤:根据目标功能设计深度学习模型;获取训练样本,输入所述深度学习模型进行训练,得到深度学习模型的参数权值;根据所述深度学习模型的参数权值,通过高层次语言表示所述深度学习模型;对所述深度学习模型中的各层循环体进行优化;通过高层次综合工具将经过优化的深度学习模型进行联合仿真。
7.作为优选方案,对所述深度学习模型中的循环体进行优化时,对循环体采用循环分块、循环展开、循环流水技术中的一种或多种。
8.作为优选方案,通过高层次综合工具将经过优化的深度学习模型进行联合仿真中,还包括以下步骤:通过高层次综合工具对所述的深度学习模型的循环体进行循环流水优化。
9.作为优选方案,对所述的深度学习模型的循环体进行循环流水优化的步骤包括:判断所述深度学习模型的循环体是否为嵌套循环,若是,则将所述嵌套循环中各层循环下的子循环完全展开后再对子循环进行流水线处理;若否,则仅对最内层循环进行流水线处理。
10.作为优选方案,通过高层次综合工具将经过优化的深度学习模型进行联合仿真,
还包括以下步骤:将经过训练的深度学习模型的参数权值配置在所述深度学习模型中,并将其前向传播的过程进行高层次综合设计。
11.作为优选方案,还包括以下步骤:将经过高层次综合工具进行联合仿真得到的深度学习模型的ip核烧录至fpga上,验证所述深度学习模型的功能准确性及优化效果。
12.进一步的,本发明还提出了一种基于高层次综合工具的深度学习模型优化系统,应用上述任一技术方案提出的深度学习模型优化方法,其包括深度学习模型设计模块、训练模块、高层次语言表示模块、优化模块和高层次综合工具。
13.其中,深度学习模型设计模块用于根据目标功能设计深度学习模型;训练模块用于将训练样本输入所述深度学习模型进行训练,得到深度学习模型的参数权值;高层次语言表示模块用于根据所述深度学习模型的参数权值,通过高层次语言表示所述深度学习模型;优化模块用于对所述深度学习模型中的各层循环体进行优化;高层次综合工具用于将经过优化的深度学习模型进行联合仿真。
14.作为优选方案,所述深度学习模型设计模块包括:卷积运算设计单元,用于设计及构建由输入层到卷积层的卷积运算;池化运算设计单元,用于设计及构建由卷积层到池化层的池化运算;全连接算法设计单元,用于设计及构建由池化层到输出层的全连接算法。
15.作为优选方案,所述优化模块包括:循环分块单元,用于将循环体拆分为若干小循环体;循环展开单元,用于将循环体中各层循环下的自循环完全展开;循环流水处理单元,用于对循环体进行流水线处理。
16.作为优选方案,所述系统还包括fpga模块,用于烧录经所述高层次综合工具联合仿真得到的深度学习模型ip核,并验证所述深度学习模型的功能准确性及优化效果。
17.与现有技术相比,本发明技术方案的有益效果是:本发明针对深度学习模型中的循环体进行循环展开以及流水线处理来缩短时延,提升系统的吞吐量,从而降低深度学习模型的硬件功耗,且本发明中的深度学习模型经过高层次语言构建后,再通过高层次综合工具进行转换,能够有效缩短硬件设计的开发周期。
附图说明
18.图1为实施例1的基于高层次综合工具的深度学习模型优化方法的流程图。
19.图2为实施例2的lenet5网络模型的结构架构图。
20.图3为实施例2的仿真硬件设计架构图。
21.图4为实施例3的深度学习模型优化系统的架构图。
具体实施方式
22.附图仅用于示例性说明,不能理解为对本专利的限制;
23.对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
24.下面结合附图和实施例对本发明的技术方案做进一步的说明。
25.实施例1
26.本实施例提出一种基于高层次综合工具的深度学习模型优化方法,其流程图请参阅图1。
27.本实施例提出的基于高层次综合工具的深度学习模型优化方法中,包括以下步骤:
28.步骤1:根据目标功能设计深度学习模型。
29.本步骤中,根据目标功能点对深度学习模型中的输入层、卷积层、池化层、输出层等结构进行设计,并初始化设置深度学习模型的参数。
30.步骤2:获取训练样本,输入所述深度学习模型进行训练,得到深度学习模型的参数权值。
31.本步骤中,从现有的数据集中获取训练样本,可同时获取用于验证深度学习模型的测试样本。
32.步骤3:根据所述深度学习模型的参数权值,通过高层次语言表示所述深度学习模型。
33.步骤4:对所述深度学习模型中的各层循环体进行优化。
34.本步骤中,对所述深度学习模型中的循环体进行优化时,对循环体采用循环分块、循环展开、循环流水技术中的一种或多种。
35.步骤5:通过高层次综合工具将经过优化的深度学习模型进行联合仿真。
36.本步骤中,通过高层次综合工具进行联合仿真的过程中,还对所述的深度学习模型的循环体进行循环流水优化。其中,对深度学习模型的循环体进行循环流水优化的步骤包括:判断所述深度学习模型的循环体是否为嵌套循环,若是,则将所述嵌套循环中各层循环下的子循环完全展开后再对子循环进行流水线处理;若否,则仅对最内层循环进行流水线处理。
37.在本步骤中,将经过训练的深度学习模型的参数权值配置在所述深度学习模型中,并将其前向传播的过程进行高层次综合设计。
38.进一步的,为验证经过优化的深度学习模型的功能准确性,本实施例将经过高层次综合工具进行联合仿真得到的深度学习模型的ip核烧录至fpga上,验证所述深度学习模型的功能准确性及优化效果。
39.本实施例中,针对算法中的循环体进行循环展开以及流水线处理来缩短latency提升系统的吞吐量,从而降低深度学习模型的硬件功耗,且本实施例中的深度学习模型经过高层次语言构建后,再通过高层次综合工具进行转换,能够有效缩短硬件设计的开发周期。
40.实施例2
41.本实施例应用实施例1提出的基于高层次综合工具的深度学习模型优化方法,应用于lenet5网络的优化。
42.首先,根据目标功能设计lenet5网络模型,对现有的lenet5网络作相应的修改。完成设计的lenet5网络模型的结构架构图如图2所示。其中包括输入层input,卷积层c1,池化层s2,卷积层c3,池化层s4和输出层output。
43.从mnist数据集中获取10000个训练样本并输入lenet5网络模型中进行训练,得到完成训练的网络参数权值。如下表1所示,为本实施例适用于mnist数据集的lenet5卷积神经网络参数。
44.表1 适用于mnist数据集的lenet5卷积神经网络参数
[0045][0046]
进一步的,本实施例根据lenet5卷积神经网络参数,通过c语言设计lenet5网络,再对lenet5网络中的各层循环体进行优化。以lenet5卷积神经网络中包含的卷积算法的伪代码为例,其伪代码表示如下:
[0047][0048]
由上述算法伪代码可知,在深度学习模型中,尤其是卷积神经网络的计算中存在大量循环体,且卷积神经网络中的循环体多为完美循环(perfect loop),即在循环迭代中下一次迭代与上一次迭代结果无关,故可以对循环做大量优化操作。本实施例针对算法中的循环体进行循环展开、循环分块以及流水线处理来缩短latency提升系统的吞吐量。
[0049]
在对循环体进行优化过程中,上述卷积算法伪代码为例,可以看到其包含了5层的
嵌套循环。以最外层循环为第一层,整个嵌套循环的层次结构如下:
[0050]
完成lenet5网络模型中各层循环体的优化后,通过高层次综合工具将经过优化的深度学习模型进行联合仿真,其中,本实施例还采用高层次综合工具对lenet5网络模型中的循环体进行循环流水优化。具体的,首先判断循环体是否为嵌套循环,若是,则将嵌套循环中各层循环下的子循环完全展开后再对子循环进行流水线处理;若否,即表示循环体为非完美循环,则高层次综合工具会拒绝执行循环展开操作,只对最内层循环进行流水线处理。
[0051]
虽然对于循环体进行展开以及流水线处理能够大幅提升循环执行速度,但是当循环体展开次数过大时也会到时资源的消耗量剧增,因此平衡高层次综合工具生成的卷积神经网络ip核的处理性能与资源消耗则是一个优化的关键方向。本实施例将不同层次的循环体进行展开以及流水线处理,其中统一层次以及经过空间设计探索后,针对不同层次进行流水线处理得到的结果如下表2~4所示。
[0052]
表2 不同层次循环展开后时钟结果
[0053]
clock(ns)default第五层第四层第三层第二层不同层ap_clktarget10.0010.0010.0010.0010.0010.00 estimated8.6910.9416.4616.4610.5610.94
[0054]
表3 不同层次循环展开后时延结果
[0055] (clock cycles)default第五层第四层第三层第二层不同层latencymin331478515466541216989415318331706184517 max331629715481661218501416830333218186029intervalmin331478615466551216990415319331707184518 max331629815481671218502416831333219186030
[0056]
表4 不同层次循环展开后资源结果
[0057] default第五层第四层第三层第二层不同层bram_18k505092929290dsp48e176150148204386176ff2201722167260363961411769334882lut3221833072367654786112237241817
[0058]
由上表可知,当默认情况下进行高层次综合时生成的卷积神经网络的latency最
小为3314785个时钟周期,而资源占用中dsp48以及lut的占用超过60%,bram与ff的占用小于20%。
[0059]
当将所有算法中的嵌套循环按照层次进行流水线处理时可以看到第五层也即最内层循环做流水线处理时资源占用略有变化,但是latency已经可以减少一半左右。
[0060]
当对第三层进行流水线处理并且子循环已经全展开,可以看到latency减少了8倍左右而资源占用方面dsp与lut在90%左右而bram和ff也超过了32%。
[0061]
当对第二层进行流水线处理并将子循环全展开后可以看到latency减少了近10倍,但是资源占用大大增加,dsp用量达175%,ff用量达110%而lut的用量更高达230%。因此针对第二层或更高层的循环进行流水线处理时需要格外的小心。
[0062]
本实施例针对不同算法的循环分别进行流水线处理,即不进行统一层次的流水线处理,最终得到的latency可达184517个时钟周期,而资源占用上bram_18k占用了32%,dsp48e占用了80%,ff占用了33%以及lut占用了78%。
[0063]
此外,本实施例针对通过高层次综合工具处理生成的卷积神经网络的ip核在vivadohls工具中进行了c/rtl联合仿真。其仿真的硬件设计架构图如图3所示。本实施例采用armcortex

a9处理器来进行逻辑控制并从sd卡中读取mnist测试集的数据存放在ddr3内存中。而后通过dma模块使用axistream作为传输方式将图片传入卷积神经网络ip核中进行处理再使用axi读取卷积神经网络ip核的输出结果,并显示在oled上。
[0064]
进一步的,本实施例还将经过联合仿真的卷积神经网络的ip核烧录至fpga上进行验证,资源占用数据如下表5所示。
[0065]
表5 ip核资源占用表
[0066]
resourceutilizationavailableutilization%lut337585320063.45lutram19611740011.27ff3775710640035.49bram46.5014033.21dsp17622080.00io62003.00bufg1323.12
[0067]
经过上板实测可到的mnist数据集的10000张图像的识别错误数为286张,正确率为97.14%。总耗时270秒,单张图片识别耗时约27毫秒。测试结果与cpu相比有1.23倍的加速效果,而在能耗方面比通用的计算机cpu要节省94.25%的功耗。
[0068]
实施例3
[0069]
本实施例提出一种基于高层次综合工具的深度学习模型优化系统,其系统架构图请参阅图4。
[0070]
本实施例提出的基于高层次综合工具的深度学习模型优化系统中,包括:
[0071]
深度学习模型设计模块,用于根据目标功能设计深度学习模型;
[0072]
训练模块,用于将训练样本输入所述深度学习模型进行训练,得到深度学习模型的参数权值;
[0073]
高层次语言表示模块,用于根据所述深度学习模型的参数权值,通过高层次语言
表示所述深度学习模型;
[0074]
优化模块,用于对所述深度学习模型中的各层循环体进行优化;
[0075]
高层次综合工具,用于将经过优化的深度学习模型进行联合仿真。
[0076]
其中,深度学习模型设计模块包括:卷积运算设计单元,用于设计及构建由输入层到卷积层的卷积运算;池化运算设计单元,用于设计及构建由卷积层到池化层的池化运算;全连接算法设计单元,用于设计及构建由池化层到输出层的全连接算法。本实施例中的深度学习模型设计模块根据目标功能对模型中的输入层、卷积层、池化层、输出层及其中涉及的算法进行设计及构建。
[0077]
本实施例中的优化模块包括:循环分块单元,用于将循环体拆分为若干小循环体;循环展开单元,用于将循环体中各层循环下的自循环完全展开;循环流水处理单元,用于对循环体进行流水线处理。优化模块根据输入的深度学习模型中包含的循环体的类型针对性地进行循环分块、循环展开和/或循环流水处理等循环优化操作。
[0078]
本实施例中的系统还包括fpga模块,用于烧录经所述高层次综合工具联合仿真得到的深度学习模型ip核,并验证所述深度学习模型的功能准确性及优化效果。
[0079]
在具体实施过程中,首先通过深度学习模型设计模块根据目标功能设计深度学习模型,根据目标功能点对深度学习模型中的输入层、卷积层、池化层、输出层等结构进行设计,并初始化设置深度学习模型的参数。将完成设计的深度学习模型输入训练模块中,训练模块将其采集的训练样本输入所述深度学习模型进行训练,得到深度学习模型的参数权值。完成训练的深度学习模型输入高层次语言表示模块中,采用c语言对深度学习模型进行转换,再通过优化模块对深度学习模型中的各层循环体进行优化,具体的,对循环体采用循环分块、循环展开和/或循环流水技术进行优化。最后通过高层次综合工具将经过优化的深度学习模型进行联合仿真,再将其ip核烧录至fpga模块中,验证所述深度学习模型的功能准确性及优化效果。
[0080]
相同或相似的标号对应相同或相似的部件;
[0081]
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
[0082]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献