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

一种基于FPGA的AI加速器优化系统和方法与流程

2022-04-13 18:20:35 来源:中国专利 TAG:

一种基于fpga的ai加速器优化系统和方法
技术领域
1.申请实施例涉及芯片领域,特别涉及一种基于fpga的ai加速器优化系统和方法。


背景技术:

2.随着深度学习的研究和应用的不断推广,基于卷积神经网络的ai加速器的实现方法越来越受关注。fpga以其高度的并行计算优势和灵活性,越来越多的应用于ai加速器的实现中。
3.相关技术中,为了提高ai加速器的处理进程和处理效率,通常在fpga芯片的ai加速器前后过程分别加入前处理模块和后处理模块,前处理模块和后处理模块需要额外部署fpga芯片的逻辑资源,这样会占用更多的逻辑资源,降低ai加速器的计算性能。


技术实现要素:

4.本技术实施例提供了一种基于fpga的ai加速器优化系统和方法,解决ai加速器占用fpga芯片逻辑资源和利用率的问题。
5.一方面,提供一种基于fpga的ai加速器优化系统,所述系统用于fpga芯片,所述fpga芯片包括所述ai加速器;
6.所述ai加速器包括指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元;
7.所述指令解析单元分别与所述乘加计算单元、所述数据缓存单元和所述通用运算单元互联,组成并行网络结构,且所述指令解析单元采用串行处理策略控制所述乘加计算单元、所述数据缓存单元以及所述通用运算单元执行cnn网络加速功能;
8.所述乘加计算单元负责接收输入数据,进行卷积神经网络的卷积计算和乘加计算,且所述乘加计算单元是所述fpga芯片中计算cnn网络卷积计算和算数计算的最小逻辑资源组合;
9.所述通用运算单元和所述乘加计算单元连接,用于对所述乘加计算单元的计算结果进行卷积后处理和图像处理运算,所述通用运算单元是所述fpga芯片中卷积后处理和图像处理运算的最小资源组合。
10.具体的,所述ai加速器还包括至少两个特征输入单元,所述特征输入单元与所述乘加计算单元连接,用于卷积神经网络的卷积输入和算数计算的数据输入。
11.具体的,所述ai加速器包括数据缓存单元,所述数据缓存分别与所述特征输入单元连接,所述特征输入单元通过所述数据缓存单元读取缓存数据,并输入至所述乘加计算单元。
12.具体的,所述乘加计算单元接收所述至少两个所述特征输入单元的数据输入进行卷积和算数计算;
13.所述乘加计算单元由所述fpga芯片的可编程逻辑单元、可编程i/o单元以及布线资源构成,用于实现包括加法器、减法器、累加器和乘法器中的至少一种,执行卷积计算和
算数计算,算数计算包括加法计算、减法计算、累加计算、乘法计算和平方计算。
14.具体的,所述通用运算单元包括图像前处理、图像后处理以及cnn加速过程中除卷积计算和基本算数计算外的资源逻辑集合;
15.当所述乘加计算单元执行卷积计算时,所述通用运算单元执行的卷积后处理包括对卷积结果进行归一化、激活和池化运算过程。
16.具体的,当所述乘加计算单元执行图像计算时,所述通用运算单元执行的前处理还包括图像缩放、滤波和特征值提取运算;后处理包括对所述乘加计算单元的计算结果进行图像缩放、结果比较以及排序运算。
17.另一方面,提供一种基于fpga的ai加速器优化方法,所述方法包括:
18.将fpga芯片的逻辑资源进行重构,划分出所述ai加速器的指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元;其中,所述乘加计算单元是所述fpga芯片中计算cnn网络卷积计算和算数计算的最小逻辑资源组合,所述通用运算单元是所述fpga芯片中卷积后处理和图像处理运算的最小资源组合;
19.将所述ai加速器的所述指令解析单元、所述乘加计算单元、所述数据缓存单元以及所述通用运算单元进行互联,形成并行网络结构;
20.通过所述指令解析单元接收外部指令,并根据所述外部指令对应的串行处理策略控制所述乘加计算单元、所述数据缓存单元以及所述通用运算单元执行网络加速功能;
21.其中,所述指令解析单元用于接收并解析所述外部指令,所述乘加计算单元用于根据解析指令进行卷积和算数计算,所述通用运算单元用于对所述乘加计算单元的计算结果进行卷积后处理和图像处理运算。
22.具体的,所述通过所述指令解析单元接收外部指令,并根据所述外部指令对应的串行处理策略控制所述乘加计算单元、所述数据缓存单元以及所述通用运算单元执行网络加速功能,包括:
23.响应于所述指令解析单元接收到指令生成模块发送的第一数据指令,对所述第一数据执行进行指令解析,获得第一运行指令,所述第一运行指令包括对所述乘加计算单元、所述数据缓存单元以及所述通用运算单元的串行处理策略,所述指令生成模块位是独立于所述fpga芯片的外部模块;
24.所述特征输入单元、所述乘加计算单元、所述数据缓存单元以及所述通用运算单元执行所述第一运行指令;
25.响应于所述指令解析单元接收到所述指令生成模块发送的第二数据指令,解析生成第二运行指令,所述第二运行指令为实现与所述第一运行指令不同功能的指令。
26.本技术实施例提供的技术方案带来的有益效果至少包括:通过将现有的图像前处理模块和图像后处理模块融合到ai加速器中,将各个模块中的涉及到的卷积计算以及基本的算数计算提取出来,单独组合为乘加计算单元,转而将卷积后处理和图像处理的其余功能整合到通用运算单元中,确保乘加计算单元能够作为fpga芯片中计算cnn网络卷积计算和算数计算的最小逻辑资源组合,通用运算单元能够作为fpga芯片中卷积后处理和图像处理运算的最小资源组合;将重构后的ai加速器系统设置为串行处理结构,根据指令解析单元接收并解析的运行指令控制特征输入单元、乘加计算单元、数据缓存单元以及通用运算单元协同处理,提高了fpga逻辑资源的利用率。
附图说明
27.图1是本技术实施例提供的现有fpga内部ai加速器的系统结构图;
28.图2是本技术实施例提供的fpga内部结构示意图;
29.图3是本技术实施例提供的优化后的ai加速器的系统结构图;
30.图4是本技术另一实施例提供的基于fpga的ai加速器优化方法。
具体实施方式
31.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
32.在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
33.如图1所示,是相关技术中fpga内部ai加速器的系统结构图。其具体包括cnn加速模块、图像前处理模块和图像后处理模块。各个模块分别占用fpga芯片中的部分逻辑电路。cnn加速模块的作用主要为实现神经网络的卷积计算,包括cnn加速指令集,指令集用于查找和控制cnn加速模块各个内部单元或逻辑电路的逻辑执行顺序,包括特征缓存单元和卷积乘加计算单元,此外还包括归一化、激活和池化功能的加速单元,且cnn加速模块还包括对应的数据缓存单元,用于存储加速过程中缓存的临时数据等。
34.但ai加速器往往并非单纯执行简单的卷积计算,对于通用性的ai加速器,为保证网络加速的功能,通常需要针对图像处理而在fpga芯片中增设图像前处理模块和图像后处理模块,对应需要从fpga芯片中额外分配出两部分逻辑资源(或逻辑电路),用于资源部署。对于ai加速器这种原本就非常消耗逻辑资源的系统应用,逻辑资源的增加需要采用更大规模的fpga芯片,相应的增加了产品的成本和布线压力。
35.图2是构成fpga芯片是内部结构图。包括大量的可编程逻辑单元(clb)21、可编程i/o单元22、布线资源23和查找表(lut)24等资源构成。fpga结构中包括大量的可编程逻辑单元21,可编程逻辑单元21是实现用户功能的基本单元,通过和布线资源23的连接可以形成可查找和可编辑的逻辑电路,完成相应的执行功能,如加减运算、乘加和平方计算等,特别针对cnn网络组成卷积计算电路等。当实现的计算功能越复杂,则需要部署fpga中更多的逻辑资源。查找表24本质上属于一个ram,通过若干位的地址线实现地址的查找,定位fpga中逻辑资源的具体位置。
36.对于现有的ai加速器结构中,为了追求高性能和高响应速度,将ai结构设置为多模块并行处理结构。每个单元模块都需要占用fpga中较多的逻辑资源(clb和布线资源)。当fpga芯片承载其他进程或业务时,会影响其他进程的处理速度和芯片的整体工作性能。同时对于各个模块内部的逻辑资源的使用效率也不高,且导致逻辑资源的浪费。
37.本方案提供通过对现有ai加速器的结构进行重构和优化,如图3所示,是本技术实施例提供的基于fpga的ai加速器优化系统的结构图。
38.ai加速器本质为实现神经网络的前向计算和处理。因而在优化布局时,从最小执行单元考虑,在确保实现功能前提下,尽可能减少逻辑资源的占用。对于图像前处理模块和图像后处理模块,其本质上是对图像数据的处理过程,cnn加速过程也即对参数进行卷积计
算。所以以数据的卷积计算和基本的算数计算为前提,并以实现功能所需的最小资源组合组成乘加计算单元,乘加计算单元以实现基本的卷积计算、加法计算、减法计算、乘法计算、乘加运算和平方计算为单位,部署相应的可编程逻辑单元、可编程i/o接口、布线资源以及查找表和数字信号处理器等资源。
39.同时为了避免并行处理逻辑资源造成的资源占用浪费现象,将ai加速结构重构为串行处理逻辑。对于通用运算单元,将其中涉及到基本算数计算和卷积计算的逻辑资源略去,转而采用和乘加计算单元协同方式执行。因为无论是cnn加速模块中的激活和池化操作,还是对于特征提取、图像数据缩放、比较和排序等功能都需要单独分配逻辑资源来实现基本的算数计算或卷积计算,所以就需要大量分配逻辑资源和布线资源。而采用串行处理方式时,当通用运算单元需要执行计算时,通过查找表调用乘加计算单元继续进行处理。
40.如图3所示,为减小资源的占用,采用至少两个特征输入单元,用于实现基本的数据加减计算、乘法计算或卷积计算的两相输入。此外,再增加少量的逻辑资源后可实现除法计算,可进一步减少通用运算单元的逻辑资源占用。特征输入单元和缓存单元连接,负责从数据缓存单元中读取数据,使各种功能的计算都能高效的并行运行。
41.通用运算单元和数据缓存模块实现互联,一方面用于从数据缓存单元中读取缓存数据,一方面用于缓存运算结果,另一方面用于根据运行指令从数据缓存模块中缓存数据进行相应运算。且考虑到现有cnn加速模块中单独设置了cnn加速指令集,需要根据加速指令集生成指令和控制各个功能模块的运行,进一步占用逻辑资源,因而本发明采用外部输入指令,通过指令解析单元进行解析和控制。外部指令由指令生成模块根据需要ai加速器实现的功能生成,具体可以是cpu处理器上的指令编译器。指令解析单元负责接收并识别外部指令,根据识别结果控制各个单元的运行。由于采用串行处理策略控,因而ai加速器需要依次执行图像前处理过程、卷积计算过程和图像后处理过程,且执行过程都需通过数据缓存单元、乘加计算单元、通用运算单元以及特征输入单元的协同参与,因而可以提高fpga逻辑资源的利用率。
42.fpga芯片中还设置有ddr访问控制器,片内ddr访问控制器位于ai加速器的数据缓存单元和片外存储器之间,用于数据缓存单元与片外存储器的高效数据交互。
43.由于将图像前处理和图像后处理模块的功能整合到ai加速器中,因而可以减少数据缓存单元的使用,特征输入单元、通用运算单元共同采用一个数据缓存单元读取,可以提高ai加速器的执行效率。
44.图4为本技术实施例提供的基于fpga的ai加速器优化方法。包括如下步骤:
45.步骤401,将fpga芯片的逻辑资源进行重构,划分出ai加速器的指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元。
46.考虑到现有ai加速器采用的并行处理逻辑,而并行处理逻辑需要在fpga芯片中部署图像处理前模块、cnn加速模块和图像处理后模块,且各个模块之间具有相对独立的完整功能,因而会出现逻辑资源无法高效利用的问题。且所需的fpga规模也相对较大,增加了成本投入和内部的布线压力。而将逻辑资源重构后,重新划分出ai加速器的指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元。其中,乘加计算单元是fpga芯片中计算cnn网络卷积计算和算数计算的最小逻辑资源组合,通用运算单元是fpga芯片中卷积后处理和图像处理运算的最小资源组合。也就是占用最少可编程逻辑单元、可编程i/o单元以及布线
资源构成具备相应功能的组合单元,且该资源组合中省略了大量卷积计算和算数计算的逻辑资源,而将卷积计算和算数计算功能单独提取设置成乘加计算单元。
47.步骤402,将ai加速器的指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元进行互联,形成并行网络结构。
48.重构后ai加速器组成并行网络结构,确保在执行指令时,指令解析单元、乘加计算单元、数据缓存单元以及通用运算单元能够协同操作。避免其中的单元或模块处于空闲状态,占用fpga的逻辑资源。
49.步骤403,通过指令解析单元接收外部指令,并根据外部指令对应的串行处理策略控制乘加计算单元、数据缓存单元以及通用运算单元执行网络加速功能。
50.指令解析单元通过接收外部指令生成模块生成的指令,具体可以包括图像处理前的图像缩放、滤波和特征提取等指令,网络加速过程中的卷积、归一化和池化等过程,以及图像处理后的图像缩放、比较和排序等功能。而指令解析单元接收到相应的数据指令后,控制ai加速器内部各个单元的协同运行。具体包括如下步骤:
51.步骤s1,响应于指令解析单元接收到指令生成模块发送的第一数据指令,对第一数据执行进行指令解析,获得第一运行指令,第一运行指令包括对乘加计算单元、数据缓存单元以及通用运算单元的串行处理策略。
52.上述说到,重构后的ai处理器采用串行执行策略,当指令解析单元接收到指令生成模块发送的第一数据指令后,对第一数据指令进行解析后,获得第一运行指令,第一运行指令包括对乘加计算单元、数据缓存单元以及通用运算单元的串行处理策略。比如,第一数据指令对应为图像前处理的滤波功能,则指令解析单元根据滤波的功能生成包含多条指令的第一运行指令。第一运行指令中包括了乘加计算单元、数据缓存单元以及通用运算单元的处理顺序指令,而乘加计算单元、数据缓存单元以及通用运算单元则根据各自对应的指令数据执行相应的功能。
53.步骤s2,控制特征输入单元、乘加计算单元、数据缓存单元以及通用运算单元执行第一运行指令。
54.示意性的,例如滤波过程先通过特征输入单元输入卷积数据,再通过乘加计算单元进行卷积计算,然后计算结果由通用运算单元执行滤波操作,产生的缓存存入到数据缓存单元中。当滤波过程中需要执行卷积计算和基本算数计算时,再将输入通过数据缓存单元读取并发送至乘加计算单元。该过程需要所有单元的逻辑电路参与运算。
55.步骤s3,响应于指令解析单元接收到指令生成模块发送的第二数据指令,解析生成第二运行指令,第二运行指令为实现与第一运行指令不同功能的指令。
56.由于采用串行执行策略,当第一运行指令执行完毕后,指令解析单元再次接收外部指令生成模块发送的第二数据指令,并进行数据解析得到第二运行指令,第二运行指令是不同与第一运行指令的。例如,第一运行指令为实现处理前的图像滤波功能,则第二指令表示为将ai加速器切换到cnn加速功能,也即卷积处理和卷积后处理过程,该过程可以包括卷积处理、归一化、激活和池化过程,同样需要所有单元的协同参与进行。由于相对于fpga中的重配置,通过重新加载bit来切换功能,切换延迟时间一般在毫秒级以上。此外,还可以包括第三运行指令,第三运行指令对应则是图像后处理过程,例如数据比较和排序等过程。本实施例对此不作赘述。
57.本方案响应时间远小于微秒级,具有较高的灵活性。由于重构后的ai加速器大大减少了占用fpga片的逻辑资源,因而可以避免fpga处理其他进程的处理速度,且对于重构的ai处理器,能够最大程度的利用逻辑资源进行处理任务,提高了fpga芯片中逻辑资源的利用率。
58.综上所述,本技术实施例中,通过将现有的图像前处理模块和图像后处理模块融合到ai加速器中,将各个模块中的涉及到的卷积计算以及基本的算数计算提取出来,单独组合为乘加计算单元,转而将其余的图像前处理和后处理的其余功能整合到通用运算单元中,确保乘加计算单元能够作为fpga芯片中计算cnn网络卷积计算和基本算数计算的最小逻辑资源组合,通用运算单元能够作为fpga芯片中卷积后处理和图像处理运算的最小资源组合;将重构后的ai加速器系统设置为串行处理结构,根据指令解析单元接收并解析的运行指令控制特征输入单元、乘加计算单元、数据缓存单元以及通用运算单元协同处理,提高了fpga逻辑资源的利用率。
59.以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
再多了解一些

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

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

相关文献