一种基于深度学习加速器的硬件动态配置方法与流程

文档序号:29924236发布日期:2022-05-07 10:30阅读:134来源:国知局
一种基于深度学习加速器的硬件动态配置方法与流程

1.本技术涉及于嵌入式计算领的领域,尤其是涉及一种基于深度学习加速器的硬件动态配置方法。


背景技术:

2.随着深度学习的发展,在各个工业领域应用深度学习技术成为未来的主流趋势。深度学习技术的高速发展,在图像处理、语音处理、人机交互、智能决策、自动控制等领域都取得了长足的发展,随之而来的是深度学习方法的复杂度不断提升,对计算资源的需求不断增加,对计算系统的软硬件架构也都提出了新的要求。使用fpga作为异构系统中的加速器已经被证明是解决此问题的有效途径之一。然而,传统fpga逻辑设计的流程复杂,开发难度大,无法快速重新反复设计;另外,以神经网络为主的深度学习类算法通常在使用的过程中有反复迭代(重训练)的需求,现有加速系统通常只能支持定制化的算法,算法适应性和快速配置灵活性较差。


技术实现要素:

3.有鉴于此,本技术提供一种基于深度学习加速器的硬件动态配置方法,解决了现有技术中的问题,使得加速深度学习算法的异构计算系统变得更加灵活。
4.本技术提供的一种基于深度学习加速器的硬件动态配置方法采用如下的技术方案:
5.一种基于深度学习加速器的硬件动态配置方法,所述配置方法应用于嵌入式计算系统,所述计算系统包括至少包含一个主处理器和一个加速器,其中加速器是可配置的深度学习加速硬件,所述深度学习包括卷积神经网络、循环神经网络以及其他深度学习人工智能算法;
6.所述配置方法包括:
7.接收需要加速的深度学习算法;
8.提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完成参数的动态加载,进而完成加速器的快速重构。
9.可选的,提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
10.解析目标算法中包含的神经网络层及对应的详细信息;
11.根据深度学习算法的总体网络模型结构及神经网络层内部结构,生成所述计算系统用于实现所述目标算法的指导文件,指导文件包括每层网络结构的数学抽象。
12.可选的,生成所述计算系统用于实现所述目标算法的指导文件,指导文件包括每层网络结构的数学抽象的步骤之前,所述方法还包括:
13.接收深度学习算法输入、输出及各个神经网络层的权重参数和阈值参数;解析各层输入、输出及相应参数的数据格式、大小、维度等详细信息。
14.可选的,提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
15.根据网络模型参数量大小和fpga端硬件资源占用情况动态定制参数包的大小及权重的重构策略;
16.将多个神经网络层的参数通过拼接操作写入同一参数包内,加速器端的硬件资源占用情况用于确定参数包的大小。
17.可选的,将多个神经网络层的参数通过拼接操作写入同一参数包内步骤之前,所述方法还包括:
18.对参数进行格式转换,将不同维度、大小的权重参数及阈值参数进行维度变换处理,所有参数矩阵需变换成维度为1的矩阵。
19.可选的,提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
20.为参数包增加奇偶校验位以及标识位,根据参数包的数量为每一个参数包的创建标识位,以及奇偶校验位,存储在每个参数包的有效数据之前。
21.可选的,为参数包增加奇偶校验位以及标识位的步骤之前,所述方法还包括:
22.fpga加速器端设计数据有效性检验逻辑及标识位判断逻辑。
23.可选的,所述异构计算系统中加速器的硬件形态包括fpga。
24.综上所述,本技术包括以下有益技术效果:
25.本技术采用传输参数包的方式将目标算法中的权重参数和阈值参数通过分批发送到加速器端(fpga),以完成加速器端的快速、动态、部署,当参数参数和阈值参数的值迭代且需要更新时,只需要在主处理器一端更改参数包的内容,不用对加速器端做任何更改,加速器接收到新的参数包后即可在系统初始化时动态快速完成部署以满足加速目标算法的需求。该方法解决了传统的定制化设计fpga方式很难快速重新设计的问题,大大了降低了加速器重新开发和反复测试流程的复杂性,使得加速深度学习算法的异构计算系统变得更加灵活。
附图说明
26.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
27.图1为本技术实施例提供的一种配置方法的流程示意图;
28.图2为本技术fpga加速器端解析部署参数示意图;
具体实施方式
29.下面结合附图对本技术实施例进行详细描述。
30.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神
下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
31.要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本技术,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
32.还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
33.另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
34.本技术实施例提供一种基于深度学习加速器的硬件动态配置方法。
35.一种基于深度学习加速器的硬件动态配置方法,所述配置方法应用于嵌入式计算系统,所述计算系统包括至少包含一个主处理器和一个加速器,其中加速器是可配置的深度学习加速硬件,所述深度学习包括卷积神经网络、循环神经网络以及其他深度学习人工智能算法;
36.所述配置方法包括:
37.接收需要加速的深度学习算法。需加速的目标算法通常是以神经网络为主体或至少包含神经网络模块的算法,而神经网络内最主要的操作都是大规模、多维度的矩阵乘加运算操作,根据运算的性质,矩阵乘加运算操作很适合使用fpga进行并行及流水线处理,从而达到加速算法的目的。
38.提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完成参数的动态加载,进而完成加速器的快速重构。
39.提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
40.解析目标算法中包含的神经网络层及对应的详细信息。
41.根据深度学习算法的总体网络模型结构及神经网络层内部结构,生成所述计算系统用于实现所述目标算法的指导文件,指导文件包括每层网络结构的数学抽象。
42.生成所述计算系统用于实现所述目标算法的指导文件,指导文件包括每层网络结构的数学抽象的步骤之前,所述方法还包括:
43.接收深度学习算法输入、输出及各个神经网络层的权重参数和阈值参数;解析各层输入、输出及相应参数的数据格式、大小、维度等详细信息。
44.在接受到目标算法中的神经网络部分之后,首先需要对算法中神经网络部分进行详细的分析,主要包括每层神经网络抽象成的具体数学操作,输入、输出、参数的数据类型、
大小、维度等。详细的分析结果不仅指导硬件开发人员设计fpga中的功能算子和ip核,也帮助软件开发人员参数格式处理及参数包的构建等功能。
45.提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
46.根据网络模型参数量大小和fpga端硬件资源占用情况动态定制参数包的大小及权重的重构策略。fpga端接收到参数包后,会分配一些内存实例和逻辑器件完成参数包的暂存、及解析工作,因此参数包的大小需要由fpga端在设计完功能硬件电路之后剩下的资源大小决定。当硬件电路已经占用了大量fpga的资源时,此时需要减小参数包的大小,增加参数包的个数,以完成算法神经网络层的全部部署工作。
47.将多个神经网络层的参数通过拼接操作写入同一参数包内,加速器端的硬件资源占用情况用于确定参数包的大小。
48.将多个神经网络层的参数通过拼接操作写入同一参数包内步骤之前,所述方法还包括:
49.对参数进行格式转换,将不同维度、大小的权重参数及阈值参数进行维度变换处理,所有参数矩阵需变换成维度为1的矩阵。通常来讲,神经网络算法中隐藏层的输入、输出维度不是相同的,这导致每一层的权重参数的维度也不同,直接将原始的从神经网络中提取到的参数构建到参数包中会导致参数包格式混乱,容易在传输过程中产生错误。因此,将提取到的神经网络参数先进行格式转换处理后,通过参数包发送到fpga端后,在fpga内解析参数包将参数重构成原始的神经网络算法的格式是更加合理的策略。简单来说,参数的格式转换处理策略是将每一层的权重参数会被打平到1维,然后根据神经网络的结构按序把转换后的参数写入参数包中。
50.提取目标算法的权重参数和阈值参数并通过参数包由主处理器发送给加速器以完加速器的快速重构的步骤之前,所述方法还包括:
51.为参数包增加奇偶校验位以及标识位,根据参数包的数量为每一个参数包的创建标识位,以及奇偶校验位,存储在每个参数包的有效数据之前。构建好的参数包会被存在主处理器的文件系统当中,每一个参数包文件都含有奇偶校验位和一个指令标识位。当整个工作系统初始化时,主处理器会通过pcie(传输总线)将这些参数包发送到fpga端,fpga端识别到标识位后将参数包中的参数解析并部署到对应的神经网络层中。
52.为参数包增加奇偶校验位以及标识位的步骤之前,所述方法还包括:
53.fpga加速器端设计数据有效性检验逻辑及标识位判断逻辑。
54.所述异构计算系统中加速器的硬件形态包括fpga。
55.计算系统初始化时,参数包在检查完数据有效性后按序发送到fpga端;当异构计算系统初始化开始从主处理器发送参数包到加速器端时,首先对参数包的内容进行数据有效性检验;检验完成后,按照参数包存储的数据所对应层的神经网络层,顺序发送到fpga加速器端。
56.如图1所示,本技术配置方法具体步骤如下:
57.步骤1、接收深度学习类目标算法。
58.步骤2、解析算法每层的内部结构并提取各层参数详细信息,包括数据类型、大小、参数维度等;解析工具通常可使用目标算法的框架的自带工具,例如tensor flow或者
pytorch,解析神经网络每一层的详细信息,包括:层功能、激活函数、输入输出维度、数据格式、数据类型、数据分布等信息。解析完成后形成指导文件。
59.步骤3、对参数进行格式转换处理;需提取的神经网络参数的原始数据格式都是多维度的数组,利用软件脚本程序将目标算法中的参数矩阵矩阵重构成一维矩阵;根据fpga加速器端设计的计算格式使用数据格式转换函数将矩阵的数据格式转换成需要的数据格式。
60.步骤4、根据网络模型参数量大小和fpga端硬件资源占用情况动态定制参数包的大小及权重的重构策略;将神经网络中间层已经经过格式转换的参数采用合并策略进行合并写入参数包中,参数包格式遵循一维数组的格式,即按顺序排列的一组参数,没有其他特殊格式。参数包的大小的制定主要由加速器端剩余的存储资源大小决定,加速器端的硬件资源占用情况在开发时会得到结果并形成文件用来指导参数包的构造。
61.步骤5、增加参数包标识位;确定好参数包的大小和个数后,需在参数包内增添奇偶校验位及标识位;构建完成的参数包,在计算系统初始化时,通过pcie总线按序发送到fpga端,在检查完数据有效性后完成参数动态加载。
62.具体的fpga加速器接收到参数包的部署工作如图2所示。
63.步骤6、接收参数包到fpga端实例中,判断数据有效性;fpga端内置奇偶校验逻辑,如果接受到数据(包括校验位)的奇数个数据位发生改变,奇偶校验位将出错表示接受到的参数包数据发出错误。
64.步骤7、根据标识位定位需要进行参数加载的神经网络层;数据有效性校验完成后,fpga端通过判断逻辑根据参数包中的标识位来确定该参数包中存储了哪几层神经网络的权重参数和阈值参数。
65.步骤8、对参数包的数据进行解析并部署;根据定位到的神经网络层的内部数据结构,将参数包内的参数通过软件脚本还原成的之前的权重数组和阈值参数,并传给fpga内该层对应的实例完成参数动态加载。
66.步骤9、清空参数包实例中的内容,等待接收并解析下一个参数包;清空fpga端存储参数包的实例,等待下一个参数包的接收与部署。
67.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1