指令生成方法、装置及电子设备与流程
未命名
07-20
阅读:99
评论:0
1.本公开涉及集成电路技术领域,尤其涉及一种指令生成方法、装置及电子设备。
背景技术:
2.随着人工智能加速器的不断更新,人工智能加速器原生支持的算子也更加丰富。例如,人工智能加速器原生支持的算子有卷积算子、池化算子、下采样算子以及全连接算子等多个算子。
技术实现要素:
3.通常,人工智能加速器用于运行神经网络模型。由于神经网络模型所涉及的算子类型很多,可能涉及一些特殊的算子,例如,hard_tanh(x)激活函数。而人工智能加速器原生支持的算子有限,所以神经网络模型中可能存在人工智能加速器无法原生支持的算子,因此,如何运行无法原生支持的算子是人工智能加速器亟需解决的问题。
4.为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种指令生成方法、装置及电子设备。在生成人工智能加速器可执行的指令时,充分考虑了人工智能加速器的硬件参数、人工智能加速器支持的函数算子以及人工智能加速器支持的函数算子和第一函数算子的包含关系,因此生成的可执行指令能够实现对输入特征数据进行第一函数算子的运算。即本技术能够在不改变人工智能加速器的硬件参数的情况下,使人工智能加速器能够实现对输入特征数据进行第一函数算子的运算,从而提高了人工智能加速器针对输入特征数据的运算效率。
5.根据本公开的一个方面,提供了一种用于人工智能加速器进行指令生成方法,包括:首先,确定神经网络模型中的第一函数算子;其次,确定人工智能加速器所支持的硬件参数;接着根据硬件参数,确定人工智能加速器所支持的函数算子;之后,基于人工智能加速器所支持的函数算子与第一函数算子之间的包含关系,在预设函数映射关系中确定第一函数算子对应的硬件参数支持的目标函数算子;最后,根据目标函数算子,生成人工智能加速器可执行的指令。
6.基于本方案,通过根据人工智能加速器的硬件参数,确定人工智能加速器所支持的函数算子。结合人工智能加速器所支持的函数算子和第一函数算子的包含关系,在预设函数映射关系中确定第一函数算子对应的目标函数算子。最后利用该目标函数算子,生成人工智能加速器可执行的指令。由于预设函数映射关系中包括第一函数算子对应的目标函数算子,相当于将第一函数算子转化为目标函数算子,并且转化后的目标函数算子为人工智能加速器支持的函数算子,之后再利用目标函数算子生成可执行指令。人工智能加速器可以通过执行该可执行指令,从而实现对输入特征数据进行第一函数算子的运算。
7.根据本技术的一个方面,提供了一种通过人工智能加速器对输入特征数据进行处理的方法,包括:确定需要对输入特征数据进行处理的至少一个运算指令;根据至少一个运算指令,对输入特征数据进行处理,得到输入特征数据对应的输出特征数据。
8.基于本方案,通过确定至少一个运算指令,并根据至少一个运算指令对输入特征数据进行处理,得到输入特征数据对应的输出特征数据,能够使得人工智能加速器实现对输入特征数据进行第一函数算子的运算,提高了人工智能加速器针对输入特征数据的运算效率。
9.根据本公开的一个方面,提供了用于人工智能加速器的指令生成的装置,包括:第一确定模块,用于确定神经网络模型中的第一函数算子;第二确定模块,用于确定人工智能加速器所支持的硬件参数;第三确定模块,用于根据硬件参数,确定人工智能加速器所支持的函数算子;查询模块,用于基于人工智能加速器所支持的函数算子与第一函数算子之间的包含关系,在预设函数映射关系中确定第一函数算子对应的硬件参数支持的目标函数算子;指令生成模块,用于根据目标函数算子,生成人工智能加速器可执行的指令。
10.根据本公开的一个方面,提供了用于通过人工智能加速器对输入特征数据进行处理的装置,包括:确定模块,用于确定需要对输入特征数据进行处理的至少一个运算指令;处理模块,用于根据至少一个运算指令,对输入特征数据进行处理,得到输入特征数据对应的输出特征数据。
11.根据本公开的一个方面,提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述任一的方法。
12.根据本公开的一个方面,提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述任一的方法。
附图说明
13.通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
14.图1是本技术一示例性实施例提供的一种电子设备的结构示意图。
15.图2是本技术一示例性实施例提供的另一种电子设备的结构示意图。
16.图3是本技术一示例性实施例提供的用于人工智能加速器的指令生成方法的流程示意图之一。
17.图4是本公开一示例性实施例提供的用于人工智能加速器的指令生成方法的流程示意图之二。
18.图5是本公开一示例性实施例提供的用于人工智能加速器的指令生成方法的流程示意图之三。
19.图6是本公开一示例性实施例提供的一种卷积运算示意图之一。
20.图7是本公开一示例性实施例提供的一种卷积运算示意图之二。
21.图8是本公开一示例性实施例提供的一种基于目标函数算子进行卷积运算的过程示意图。
22.图9是本公开一示例性实施例提供的用于人工智能加速器的指令生成方法的流程示意图之四。
23.图10是本公开一示例性实施例提供的用于人工智能加速器的指令生成方法的流程示意图之五。
24.图11是本公开一示例性实施例提供的另一种基于目标函数算子进行卷积运算的过程示意图。
25.图12是本公开一示例性实施例提供的通过人工智能加速器对输入特征数据进行处理的方法的流程示意图之一。
26.图13是本公开一示例性实施例提供的通过人工智能加速器对输入特征数据进行处理的方法的流程示意图之二。
27.图14是本公开一示例性实施例提供的通过人工智能加速器对输入特征数据进行处理的方法的流程示意图之三。
28.图15是本技术一示例性实施例提供的通过人工智能加速器对输入特征数据进行处理的方法的流程示意图之四。
29.图16是本技术一示例性实施例提供的一种用于人工智能加速器的指令生成装置的结构图。
30.图17是本技术一示例性实施例提供的一种通过人工智能加速器对输入特征数据进行处理的装置的结构图。
31.图18是本技术一示例性实施例提供的一种电子设备的结构图。
具体实施方式
32.下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
33.随着人工智能的发展,新的人工智能模型层出不穷。不同模型都可能存在特殊的算子,这种特殊的算子也可以被称为长尾算子,例如,hard_tanh(x)激活函数。
34.通常,人工智能加速器原生支持的算子是根据算子对硬件资源的需求以及算子在主流网络模型中出现的频率,从多个算子中选择出的。由于长尾算子大多为特殊算子,且出现的频率相对较低,所以大多人工智能加速器都无法原生支持长尾算子。
35.为了解决人工智能加速器无法原生支持部分算子这一问题,本技术实施例提供了一种用于人工智能加速器的指令生成方法,该方法包括:根据人工智能加速器的硬件参数,确定人工智能加速器所支持的函数算子;结合人工智能加速器所支持的函数算子和第一函数算子的包含关系,在预设函数映射关系中确定第一函数算子对应的目标函数算子;最后利用该目标函数算子,生成人工智能加速器可执行的指令。由于预设函数映射关系中包括第一函数算子对应的目标函数算子,相当于将第一函数算子转化为目标函数算子,并且转化后的目标函数算子为人工智能加速器支持的函数算子,之后再利用目标函数算子生成可执行指令。人工智能加速器可以通过执行该可执行指令,从而实现对输入特征数据进行第一函数算子的运算,因此能够在不改变人工智能加速器的硬件参数的情况下,提高人工智能加速器针对输入特征数据的运算效率。
36.本技术实施例涉及到编译侧设备和运行侧设备,其中,编译侧设备用于生成人工智能加速器可执行的指令,运行侧设备用于通过运行编译侧设备提供的指令执行神经网络
运算,这些运算包括但不限于:卷积运算、池化运算、激活函数运算等。
37.在一些实施例中,编译侧设备可包括但不限于个人计算机、服务器计算机、多处理器系统、基于微处理器的系统等。
38.在一些实施例中,运行侧设备可包括但不限于人工智能加速器或者神经网络芯片等。
39.图1为本技术实施例提供的一种电子设备10的结构示意图,电子设备10可以用于实现编译侧设备的功能,如图1所示,电子设备10包括至少一个处理器11和存储器12。
40.处理器11用于执行本技术实施例中的用于人工智能加速器进行池化运算的指令生成方法,该处理器11可以为强性能的中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)等支持神经网络指令序列编译的处理器,或者具有编译处理能力和/或指令执行能力的其他形式的处理单元。
41.存储器12可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(random-access memory,ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(read-only memory,rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行程序指令,以实现下文的用于人工智能加速器进行池化运算的指令生成方法。
42.在一些实施例中,如图1所示,电子设备10还可以包括输入装置13和输出装置14。输入装置13可以包括例如键盘、鼠标等等,可供编译人员输入神经网络的参数,例如,神经网络每层的输入特征图的尺寸、输出特征图的尺寸、卷积核等。输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等,可供编译人员查看编译的最终结果或编译过程中的中间数据等。
43.需要说明的是,本技术实施例对于电子设备10的具体结构不作限定,电子设备10可以包括比图1所示的更多或更少的部件。例如,电子设备10还可以包括总线、输入/输出接口等组件。
44.图2为本技术实施例提供的一种电子设备20的结构示意图,电子设备20可以用于实现运行侧设备的功能,如图2所示,电子设备20可以包括:控制单元21和计算单元22,控制单元21用于运行指令以控制计算单元22执行下述用于人工智能加速器的指令生成方法。
45.控制单元21可以包括一个或多个处理器或者具有神经网络运算能力和/或指令执行能力的其他形式的处理单元。该处理器可以包括但不限于gpu、大脑处理器(brain processing unit,bpu)、张量处理单元(tensor processing unit,tpu)等支持神经网络相关计算的处理器。在一些实施例中,控制单元21用于根据人工智能加速器可执行的指令(例如,卷积运算指令、加法运算指令、减法运算指令、饱和运算指令及激活运算指令)控制计算单元22执行相应运算。
46.计算单元22包括运算电路,该运算电路可配置为执行神经网络的运算操作,该运算操作包括但不限于卷积运算指令、加法运算指令、减法运算指令、饱和运算指令及激活运算指令等运算中的任一项或多项。
47.在一些实施例中,电子设备20还可以包括缓冲存储器22和片外存储器24。缓冲存储器22可以包括一个或多个独立的缓存存储器或者具有数据高速缓存能力的处理单元,并
array,fpga)和专用集成电路(application specific integrated circuit,asic)等多种类型,人工智能加速器可以为同构加速器,也可以为异构加速器;可选的,在本发明实施例中,对人工智能加速器的类型和结构均不作具体限定。下述实施例以人工智能加速器为bpu为例进行示例性说明。
60.在一些实施例中,编译侧设备用于对神经网络模型进行编译优化,以使神经网络模型在人工智能加速器上高效运行。编译侧设备可以预先获取人工智能加速器所支持的硬件参数,从而按照人工智能加速器所支持的硬件参数对神经网络模型进行编译优化。
61.人工智能加速器所支持的硬件参数包括该人工智能加速器所支持的卷积层、池化层、激活函数层等各层的硬件参数。例如,人工智能加速器的硬件参数包括但不限于人工智能加速器所支持的卷积步长、人工智能加速器所支持的池化步长、人工智能加速器所支持的激活范围等。
62.步骤303、根据硬件参数,确定人工智能加速器所支持的函数算子。
63.由于不同的神经网络模型的应用场景不同,所以各个神经网络模型中的算子也会存在差异。如今神经网络模型的应用越来越广泛,相应的神经网络模型中的算子种类也随之变多。
64.结合前述可知,人工智能加速器用于执行神经网络模型的运算。因为人工智能加速器的硬件资源有限,而算子种类却越来越多,所以人工智能加速器无法支持所有类型的算子。通常,人工智能加速器会将神经网络模型中使用频率较高的算子,作为人工智能加速器原生支持的算子。
65.在一些实施例中,人工智能加速器原生支持的算子和人工智能加速器的硬件参数有关,人工智能加速器的硬件参数决定了人工智能加速器所支持的函数算子。
66.步骤304、基于人工智能加速器所支持的函数算子与第一函数算子之间的包含关系,在预设函数映射关系中确定第一函数算子对应的硬件参数支持的目标函数算子。
67.在一些实施例中,人工智能加速器所支持的函数算子与第一函数算子之间的包含关系包括:人工智能加速器所支持的函数算子包括第一函数算子,以及人工智能加速器所支持的函数算子不包括第一函数算子。
68.若人工智能加速器所支持的函数算子包括第一函数算子,说明第一函数算子为人工智能加速器原生支持的函数算子,人工智能加速器可以对输入特征数据进行第一函数算子的运算。
69.若人工智能加速器所支持的函数算子不包括第一函数算子,说明第一函数算子不是人工智能加速器原生支持的函数算子,人工智能加速器无法对输入特征数据进行第一函数算子的运算。
70.在人工智能加速器所支持的函数算子不包括第一函数算子的情况下,可以在预设函数映射关系中预先存储第一函数算子对应的目标函数算子,该目标函数算子为人工智能加速器原生支持的函数算子。这样,相当于将人工智能加速器不能原生支持的第一函数算子转化为人工智能加速器能够原生支持的目标函数算子。之后,可以利用目标函数算子实现对输入特征数据进行第一函数算子的运算。
71.示例性地,第一函数算子为hard_tanh(x)激活函数,hard_tanh(x)激活函数的表达式如下所示。
[0072][0073]
根据上述hard_tanh(x)的表达式可知,hard_tanh(x)激活函数的激活范围为[-1,1]。预设函数映射关系中预先存储了hard_tanh(x)激活函数对应的目标函数算子。
[0074]
步骤305、根据目标函数算子,生成人工智能加速器可执行的指令。
[0075]
本技术实施例中的编译侧设备在生成人工智能加速器可执行的指令时,充分考虑了人工智能加速器的硬件参数、人工智能加速器支持的函数算子以及人工智能加速器支持的函数算子和第一函数算子的包含关系,因此生成的可执行指令能够实现对输入特征数据进行第一函数算子的运算。即本技术能够在不改变人工智能加速器的硬件参数的情况下,可以使得人工智能加速器能够实现对输入特征数据进行第一函数算子的运算,从而提高了人工智能加速器针对输入特征数据的运算效率。
[0076]
在一些实施例中,如图4所示,上述步骤305可以包括步骤401-步骤403。
[0077]
步骤401、确定人工智能加速器支持的饱和运算的饱和范围。
[0078]
饱和运算用于将输入数据约束在饱和范围内。当输入数据大于饱和范围的上限值时,饱和运算输出上限值。当输入数据小于饱和范围的下限值时,饱和运算输出下限值。当输入数据落在饱和范围内时,饱和运算输出数据本身。
[0079]
通常,人工智能加速器原生支持的饱和运算与人工智能加速器支持的数据位宽有关。若人工智能加速器支持的数据类型为int型,且数据位宽为8时,则人工智能加速器支持的数据类型为int8,int8对应的饱和运算为int8饱和运算。int8饱和运算的表达式如下所示。
[0080][0081]
其中,x为输入数据。
[0082]
根据int8饱和运算的表达式可知,int8饱和运算的饱和范围为[-128,127]。
[0083]
需要说明的是,int型的数据位宽可以有多种,例如,数据位宽为8,数据位宽为16,数据位宽为32等等。若int型的数据位宽为8,那么饱和运算为int8饱和运算,int8饱和运算的饱和范围为[-128,127]。若int型的数据位宽为16,那么饱和运算为int16饱和运算,int16饱和运算的饱和范围为[-32768~32767]。其他位宽的饱和运算与上述int8饱和运算、int16饱和运算类似,在此不再赘述。
[0084]
另外,人工智能加速器在执行完数据处理时,会自动对数据处理结果执行一次饱和运算,使饱和后的数据落在饱和范围内。本技术实施例对于人工智能加速器支持的饱和运算不作限定,下述实施例以人工智能加速器支持的饱和运算为int8饱和运算为例进行示例性说明。
[0085]
步骤402、基于人工智能加速器支持的饱和运算的饱和范围,确定目标函数算子对应的转换参数。
[0086]
示例性地,第一函数算子为hard_tanh(x)激活函数。根据int8饱和运算的表达式可知,int8饱和运算和对输入特征数据进行hard_tanh(x)激活函数的运算过程类似,都是为了使输入数据被约束在一个固定范围内。由于int8饱和运算是人工智能加速器支持的函数运算,所以可以利用int8饱和运算,实现对输入特征数据进行hard_tanh(x)激活函数的运算。
[0087]
通过对比int8饱和运算和hard_tanh(x)激活函数可知,int8饱和运算的饱和范围和hard_tanh(x)激活函数的激活范围相差较远。所以可以设置转换参数,利用转换参数对输入特征数据进行转化,之后再利用人工智能加速器支持的饱和运算实现对对输入特征数据进行hard_tanh(x)激活函数的运算。其中,转换参数可以根据int8饱和运算的饱和范围确定。
[0088]
在一些实施例中,如图5所示,上述步骤402可以包括步骤501-步骤503。
[0089]
步骤501、基于饱和运算的饱和范围,确定位宽参数。
[0090]
示例性地,参考步骤401,若人工智能加速器支持的饱和运算为int8饱和运算时,确定int8饱和运算对应的位宽参数为7。
[0091]
步骤502、确定神经网络模型的移位参数。
[0092]
在一些实施例中,神经网络模型中携带移位参数,移位参数可以是神经网络模型中第一函数算子携带的参数,还可以是第一函数算子对应的输入特征数据携带的参数,本技术对移位参数的存储位置不作限定。
[0093]
其中,移位参数用于表示将神经网络模型支持的数据类型转化为人工智能加速器支持的数据类型时对应的参数。
[0094]
例如,神经网络模型支持的数据类型为浮点型数据,人工智能加速器支持的数据类型为int8类型数据。浮点型数据(即float)和int8类型数据(即int8)进行转化的转化公式为:
[0095][0096]
其中,shift为移位参数,《《表示带符号左移。
[0097]
若浮点型数据为0.5,当shift为1时,1《《1表示21,代入上述转化公式,得到即,在shift为1时,浮点型数据0.5对应的int8类型数据为1。当shift为2时,1《《2表示22,代入上述转化公式,得到即,在shift为2时,浮点型数据0.5对应的int8类型数据为2。
[0098]
由于神经网络模型中的数据较多,通常会根据神经网络模型中的多个数据,统一设置一个移位参数,并将移位参数存储在神经网络模型中。根据上述转化公式和移位参数的取值可知,移位参数可以取任意值,移位参数是可变的。当移位参数的取值发生改变时,浮点数对应的int8类型数据也会发生变化。
[0099]
步骤503、基于移位参数和位宽参数的大小关系,确定目标函数算子对应的转换参数。
[0100]
在一些实施例中,移位参数和位宽参数的大小关系包括情况一和情况二。
[0101]
情况一:移位参数大于或等于位宽参数。
[0102]
若移位参数大于或等于位宽参数说明输入第一函数算子的输入特征数据落在[-1,1]之间,即输入特征数据落在hard_tanh(x)激活函数的激活范围内,故不需要再确定目标函数算子对应的转换参数,直接执行数据处理即可。
[0103]
下面对移位参数大于或等于位宽参数,说明输入特征数据落在[-1,1]之间的原因进行详细说明。
[0104]
结合步骤502可知,当人工智能加速器支持的数据类型和神经网络模型支持的数据类型不一致时,需要通过转化公式将神经网络模型支持的数据类型转化到与人工智能加速器支持的数据类型一致。示例性地,人工智能加速器支持的数据类型为int8,int8对应的位宽参数为7。
[0105]
示例性地,以位宽参数为7为例,当移位参数大于或等于位宽参数时,移位参数大于或等于7。例如,移位参数为7,即shift取7。
[0106]
由于人工智能加速器具有对数据运算结果自动执行饱和运算的特性,结合步骤401,则输入第一函数算子的输入特征数据为处于区间[-128,127]内的int类型的数据。设输入特征数据取[-128,127]、shift取7,代入上述转化公式,得到如下公式1。
[0107][0108]
根据公式1可知,当移位参数取7时,输入hard_tanh(x)激活函数的特殊数据的取值范围落在之间。由于hard_tanh(x)激活函数的激活范围为[-1,1],而
[0109]
所以当移位参数(即shift)大于或等于移位参数时,输入特征数据必然落在hard_tanh(x)激活函数的激活范围[-1,1]之间。因此,当移位参数大于或等于位宽参数时,不需要确定目标函数算子对应的转换参数,直接执行数据处理即可。
[0110]
情况二:移位参数小于位宽参数。
[0111]
若移位参数小于位宽参数说明输入特征数据不在[-1,1]范围内,即输入特征数据没有落在hard_tanh(x)激活函数的激活范围内,故需要使输入特征数据落在[-1,1]之间。
[0112]
下面对移位参数小于位宽参数时,输入特征数据不在[-1,1]之间的原因进行详细说明。
[0113]
示例性地,人工智能加速器支持的数据类型为int8,int8对应的位宽参数为7。移位参数小于位宽参数,例如,移位参数为6,即shift取6。
[0114]
参照前述情况1,设输入第一函数算子的输入特征数据取[-128,127]、shift取6,代入上述转化公式,得到如下公式2。
[0115][0116]
根据公式2可知,当移位参数取6时,输入特征数据的取值为第一函数算子的激活范围为[-1,1],而
[0117]
所以当移位参数(即6)小于位宽参数(即7)时,输入特征数据的取值范围处于hard_tanh(x)激活函数的激活范围[-1,1]之外。因此,当移位参数小于位宽参数时,输入特征数据没有落在hard_tanh(x)激活函数的激活范围之内,所以需要对输入特征数据进行转化,使输入特征数据落在hard_tanh(x)激活函数的激活范围[-1,1]之间,以实现对输入特征数据进行hard_tanh(x)激活函数的运算。
[0118]
对输入特征数据进行转化,使输入特征数据落在hard_tanh(x)激活函数的激活范围[-1,1]之间,可以是根据预设映射关系,利用第一函数算子对应的目标函数算子来实现对输入特征数据进行hard_tanh(x)激活函数的运算。
[0119]
示例性地,目标函数算子为卷积运算,目标函数算子对应的转换参数包括卷积核和卷积核的权值。其中。卷积核的尺寸为h*w*c。h是指卷积核的长度,w是卷积核的宽度,c指的是卷积核的通道(channel)数。
[0120]
目标函数算子的运算过程为输入特征数据乘以卷积核,得到运算结果。其中,卷积核的尺寸用于改变输入特征数据的尺寸,卷积核的权值用于改变输入特征数据的大小。为了使输入特征数据落在hard_tanh(x)激活函数的激活范围之内,可以通过设置卷积核的权值来改变输入特征数据的大小。由于本公开只需要改变输入特征数据的大小,不改变输入特征数据的尺寸,因此,卷积核中的h和w分别取1,即卷积核为单位卷积。
[0121]
通常,描述神经网络模型的高级编程语音会预先定义神经网络模型中每个算子的输入数据的尺寸。输入数据的尺寸包括输入数据的长度、输入数据的宽度以及输入数据的通道数。为了保证上述卷积运算的执行,卷积核的通道数c与神经网络模型中预先定义的输入数据的通道数一致,因此,可以根据神经网络模型确定出c的取值。
[0122]
示例性地,以输入神经网络模型的输入特征数据包括c个通道,那么目标函数算子对应的转换参数包括c个卷积核,每个卷积核为单位卷积。例如,以通道数c为6为例,目标函数算子对应的转换参数包括6个卷积核,该6个卷积核分别为[x00000]、[0x0000]、[00x000]、[000x00]、[0000x0]、[00000x],其中x为权值。需要说明的是,卷积核[x00000]表示第一个通道的权值为x,第二个通道至第六个通道的权值均为0,其他卷积核的含义类似,在此不再赘述。
[0123]
下面通过图6和图7示例性描述利用目标函数算子改变输入特征数据大小的过程。
[0124]
图6示例性示出了一个2通道输入特征数据以及与该输入特征数据对应的2个卷积核。该输入特征数据包括通道1的数据和通道2的数据。通道1的数据包括x11、x12、x13和x14。通道2的数据包括x21、x22、x23和x24。2个卷积核包括卷积核1和卷积核2。2个卷积核的尺寸均为1*1*2。卷积核1的2个通道中的值分别是权值和0,卷积核2的2个通道的值分别是0和权值。
[0125]
图7示例性示出了基于图6中的卷积核1和卷积核2,对图6中的输入特征数据进行卷积运算,得到结果1和结果2的过程。示例性地,将该输入特征数据与卷积核1相乘,得到结果1。结果1包括x11*权值、x12*权值、x13*权值和x14*权值。将该输入特征数据与卷积核2相乘,得到结果2。结果2包括x21*权值、x22*权值、x23*权值和x24*权值。结合结果1和结果2可知,卷积核中的权值可直接改变输入特征数据的大小。
[0126]
下面对卷积核的权值的确定过程进行说明。
[0127]
示例性地,设移位参数为6、输入第一函数算子的输入特征数据取[-128,127],代入上述转化公式,得到上述公式2。
[0128]
为了实现对输入特征数据进行hard_tanh(x)激活函数的运算,可以将公式2中的分母(即对1《《shift)进行放大。示例性地,shift可以从6放大到7。为了保证公式2的输出值不变,同时也对分子放大相同的倍数,以得到如下公式3。
[0129][0130]
接着可以对公式3的分子进行饱和,以得到如下公式4。
[0131]
饱和后的
[0132]
根据公式4可知,饱和后的float对应范围区间为而hard_tanh(x)激活函数的激活范围为[-1,1]。而所以可以实现hard_tanh(x)激活函数的激活范围。
[0133]
因此,当第一函数算子的输入特征数据取[-128,127],可以基于公式3对转化公式进行变形,得到如下所示的表达式。
[0134][0135]
结合前述可知,输入特征数据为落在[-128,127]之间的i nt类型的数据。由于编译侧设备预先设置对输入特征数据进行目标函数算子的运算后,sh ift会置为7,所以可以将上述表达式中的分子(即2
(7-shift)
)作为卷积核的权值,来处理输入特征数据,以使输入特征数据落在hard_tanh(x)激活函数的激活范围之内。
[0136]
图8示例性示出了一种利用目标函数算子对输入特征数据进行处理,以实现对输入特征数据进行hard_tanh(x)激活函数的运算的过程。
[0137]
例如,将输入特征数据输入目标函数算子,基于目标函数算子的卷积核,对输入特征数据执行卷积运算,得到输入特征数据对应的输出特征数据。其中,结合步骤503,卷积核中的权值为2
(7-shift)
。该输入特征数据对应的输出特征数据落在之间。故可以通过该目标函数算子实现对输入特征数据进行hard_tanh(x)激活函数的运算。
[0138]
本公开实施例提供的控制处理器执行任务的方法,通过位宽参数和移位参数,得出目标函数算子对应的转换参数,以通过执行目标函数算子实现对输入特征数据进行第一函数算子的运算。避免了神经网络模型的运算中断,提高了数据处理效率。
[0139]
步骤403、根据目标函数算子和目标函数算子对应的转换参数,生成人工智能加速器可执行的指令。
[0140]
在利用预设函数映射关系确定出第一函数算子对应的目标函数算子后,可以利用目标函数算子以及目标函数算子对应的转换参数,生成人工智能加速器可执行的指令。该可执行指令用于实现对输入特征数据进行第一函数算子的运算。
[0141]
本技术实施例中的编译侧设备在生成人工智能加速器可执行的指令时,发现人工智能加速器支持的饱和运算的饱和范围和第一函数算子的激活范围相似,通过根据饱和运算的饱和范围和第一函数算子的激活范围生成目标函数算子的转换参数,最后根据目标函数算子,生成的人工智能加速器的可执行指令。即本技术利用人工智能加速器支持的饱和运算和目标函数算子实现对输入特征数据进行第一函数算子的运算,从而高效利用人工智能加速器的处理能力,提高数据处理效率。
[0142]
在一些实施例中,人工智能加速器可执行的指令用于基于目标函数算子对应的转换参数,对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。
[0143]
示例性地,在人工智能加速器接收到人工智能加速器可执行的指令后,人工智能加速器基于目标函数算子对应的转换参数和人工智能加速器可执行的指令,对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。示例性地,目标函数算子可以是卷积算子或分组卷积算子。
[0144]
本技术实施例中的编译侧设备在生成人工智能加速器可执行的指令时,可以基于目标函数算子对应的转化参数,执行目标函数算子,以实现对输入特征数据进行第一函数算子的运算。避免了神经网络模型的运算中断,提高了数据处理效率。
[0145]
在一些实施例中,如图9所示,上述步骤402可以包括步骤901。
[0146]
步骤901、基于第一函数算子的激活范围以及人工智能加速器支持的饱和运算的饱和范围,确定目标函数算子中的第二函数算子对应的第一偏置参数、目标函数算子中的第三函数算子对应的第二偏置参数,以及目标函数算子中的第四函数算子对应的第三偏置参数。
[0147]
其中,目标函数算子对应的转换参数包括第一偏置参数、第二偏置参数和第三偏置参数。
[0148]
示例性地,第一函数算子为hard_tanh(x)激活函数,hard_tanh(x)激活函数的激活范围为[-1,1]。人工智能加速器支持的数据类型为int8类型,int8类型对应的饱和范围为[-128,127]。由于hard_tanh(x)激活函数的激活范围和int8饱和运算的饱和范围类似,所以可以设置转换参数,利用转换参数将输入特征数据所属的范围从[-128,127]转化到[-1,1]。
[0149]
根据int8饱和运算的饱和范围的上限值以及下限值,设置转换参数包括第一偏置参数、第二偏置参数和第三偏置参数。例如,第一偏置参数为:127-a。第二偏置参数为:-(127-a)-(128-a)。第三偏置参数为:128-a。又例如,第一偏置参数为:128-a。第二偏置参数为:-(127-a)-(128-a)。第三偏置参数为:127-a。其中,a为任一int8类型的数。
[0150]
本技术实施例中的编译侧设备在生成人工智能加速器可执行的指令时,通过将神经网络模型中人工智能加速器无法处理的第一函数算子转化为人工智能加速器能够处理的第二函数算子、第三函数算子和第四函数算子,从而确保人工智能加速器在运行神经网络模型时不会运算中断,从而提高了人工智能加速器针对输入特征数据的运算效率。
[0151]
在一些实施例中,如图10所示,上述步骤403可以包括步骤1001-步骤1003。
[0152]
步骤1001、根据第二函数算子的运算指令类型和第一偏置参数,生成人工智能加速器可执行的第一运算指令。
[0153]
根据步骤304可知,预设函数映射关系中存储了hard_tanh(x)激活函数对应的目标函数算子,示例性地,hard_tanh(x)激活函数对应的目标函数算子包括第二函数算子、第三函数算子和第四函数算子。第二函数算子包括第二函数算子的参数,第二函数算子的参数包括第一卷积核和第一偏置参数。第三函数算子包括第三函数算子的参数,第三函数算子的参数包括第二卷积核和第二偏置参数。第四函数算子包括第四函数算子的参数,第四函数算子的参数包括第三卷积核和第三偏置参数。
[0154]
示例性地,第二函数算子的第一卷积核为单位卷积核,第一卷积核的尺寸为1*1*c,第二函数算子的第一偏置参数为:127-a。第三函数算子的第二卷积核为单位卷积核,第二卷积核的尺寸为1*1*c,第三函数算子的第二偏置参数为:-(127-a)-(128-a)。第四函数算子的第三卷积核为单位卷积核,第三卷积核的尺寸为1*1*c,第四函数算子的第二偏置参数为:128-a。
[0155]
参考步骤503,以输入神经网络模型的输入特征数据包括c个通道为例,那么目标函数算子中的第二函数算子对应c个第一卷积核、第三函数算子对应c个第二卷积核、第四函数算子也对应c个第三卷积核。例如,以通道数c是6为例,第二函数算子对应的6个第一卷积核分别为[100000]、[010000]、[001000]、[000100]、[000010]、[000001]。需要说明的是,卷积核[100000]表示第一个通道的权值为1,第二个通道至第六个通道的权值均为0,其他卷积核的含义类似,在此不再赘述。
[0156]
第三函数算子对应的6个第二卷积核分别为[100000]、[010000]、[001000]、[000100]、[000010]、[000001]。
[0157]
第四函数算子对应的6个第三卷积核分别为[100000]、[010000]、[001000]、[000100]、[000010]、[000001]。
[0158]
图11示例性示出了一种利用目标函数算子对输入特征数据进行处理,以实现对输入特征数据进行hard_tanh(x)激活函数的运算的过程。
[0159]
第一步:将输入特征数据输入目标函数算子中的第二函数算子,得到第一运算结果。
[0160]
例如,将输入特征数据输入目标函数算子中的第二函数算子后,首先计算输入特征数据和第二函数算子中第一卷积核的乘积,得到输入特征数据。然后再计算输入特征数据和第二函数算子中的第一偏置参数之和,得到第一运算结果。
[0161]
由于人工智能加速器在对数据运算之后会自动执行int8饱和运算,所以人工智能加速器会对第一运算结果执行饱和运算,从而输出饱和后的第一运算结果。
[0162]
第二步:将饱和后的第一运算结果输入目标函数算子中的第三函数算子,得到第二运算结果。
[0163]
例如,将饱和后的第一运算结果输入目标函数算子中的第三函数算子后,首先计算饱和后的第一运算结果和第三函数算子中的第二卷积核的乘积,输出饱和后的第一运算结果。然后再计算饱和后的第一运算结果和第三函数算子中的第二偏置参数之和,得到第二运算结果。然后继续对第二运算结果执行饱和运算,输出饱和后的第二运算结果。
[0164]
第三步:将饱和后的第二运算结果输入目标函数算子中的第四函数算子,得到输
入特征数据对应的输出特征数据。
[0165]
例如,将饱和后的第二运算结果输入第四函数算子后,首先计算饱和后的第二运算结果和第四函数算子中的第三卷积核的乘积,输出饱和后的第二运算结果。然后再计算饱和后的第二运算结果和第四函数算子中的第三偏置参数之和,得到输入特征数据对应的输出特征数据。
[0166]
由于人工智能加速器设置每经过一次数据运算,都需要对数据运算结果执行一次饱和运算,若人工智能加速器执行的饱和运算是int8饱和运算,则输入hard_tanh(x)激活函数的输入特征数据为处于[-128,127]之间的int类型的数据。
[0167]
示例性地,设输入特征数据取[-128,127],按照上述第一步、第二步以及第三步对输入特征数据进行处理。
[0168]
在对输入特征数据进行处理之前,先确定第二函数算子、第三函数算子以及第四函数算子中的第一偏置参数、第二偏置参数以及第三偏置参数的具体值。结合前述可知,第一偏置参数为127-a、第二偏置参数为-(127-a)-(128-a)以及第三偏置参数为128-a。令第一偏置参数、第二偏置参数以及第三偏置参数中的参数a为1,则第一偏置参数的具体值为126,第二偏置参数的具体值为-253,第三偏置参数的具体值为127。
[0169]
然后按照上述第一步进行执行,首先计算输入特征数据(即[-128,127])和第一卷积核的乘积,由于第一卷积核为单位卷积核,所以计算结果为输入特征数据(即[-128,127]),然后将计算输入特征数据(即[-128,127])和第一偏置参数(即126)的和,得到第一运算结果(即[-2,253])。接着对第一运算结果(即[-2,253])进行int8饱和运算,得到饱和后的第一运算结果(即[-2,127])。
[0170]
接着按照上述第二步,计算饱和后的第一运算结果(即[-2,127])和第二卷积核的乘积,由于第二卷积核为单位卷积核,所以计算结果为饱和后的第一运算结果(即[-2,127]),然后将计算饱和后的第一运算结果(即[-2,127])和第二偏置参数(即-253)的和,得到第二运算结果(即[-255,-126])。接着对第二运算结果(即[-255,-126])进行int8饱和运算,得到饱和后的第二运算结果(即[-128,-126])。
[0171]
最后按照上述第三步,计算饱和后的第二运算结果(即[-128,-126])和第三卷积核的乘积,由于第三卷积核为单位卷积核,所以计算结果为饱和后的第二运算结果(即[-128,-126]),然后将计算饱和后的第二运算结果(即[-128,-126])和第三偏置参数(即127)的和,得到输入特征数据对应的输出特征数据(即[-1,1])。
[0172]
根据输入特征数据对应的输出特征数据可知,输入特征数据对应的输出特征数据落在[-1,1]之间。因此,可以利用目标函数算子中的第二函数算子、第二函数算子的参数(即第一卷积核和第一偏置参数)、第三函数算子、第三函数算子的参数(即第二卷积核和第二偏置参数)、第四函数算子以及第四函数算子的参数(即第三卷积核和第三偏置参数)对输入特征数据进行处理,从而实现对输入特征数据进行hard_tanh(x)激活函数的运算。
[0173]
基于上述目标函数算子中的第二函数算子可知,第二函数算子的运算类型为卷积运算。因此可以根据卷积运算和第二函数算子的参数(即第一卷积核和第一偏置参数),生成第二函数算子对应的第一运算指令。
[0174]
步骤1002、根据第三函数算子的运算指令类型和第二偏置参数,生成人工智能加速器可执行的第二运算指令。
[0175]
结合步骤1001中第三函数算子可知,第三函数算子的运算类型为卷积运算。因此可以根据卷积运算和第三函数算子的参数(即第二卷积核和第二偏置参数),生成第三函数算子对应的第二运算指令。
[0176]
步骤1003、根据第四函数算子的运算指令类型和第三偏置参数,生成人工智能加速器可执行的第三运算指令。
[0177]
结合步骤1001中第四函数算子可知,第四函数算子的运算类型为卷积运算。因此可以根据卷积运算和第四函数算子的参数(即第三卷积核和第三偏置参数),生成第四函数算子对应的第三运算指令。
[0178]
在一些实施例中,第一运算指令用于基于第一偏置参数,对输入特征数据进行卷积处理,得到第一运算结果;第二运算指令用于基于第二偏置参数,对饱和运算后的第一运算结果进行卷积处理,得到第二运算结果;第三运算指令用于基于第三偏置参数,对饱和运算后的第二运算结果进行卷积处理,得到输入特征数据对应的输出特征数据。
[0179]
示例性地,在人工智能加速器接收到第一运算指令、第二运算指令和第三运算指令后,人工智能加速器首先基于第一运算指令以及第一运算指令中携带的第一偏置参数,对输入特征数据进行卷积处理,以得到第一运算结果。由于人工智能加速器具有对数据处理结果进行自动饱和的特性,所以在输出第一运算结果后,人工智能加速器对第一运算结果进行饱和操作,得到饱和后的第一运算结果。
[0180]
然后基于第二运算指令以及第二运算指令中携带的第二偏置参数,对饱和后的第一运算结果进行卷积处理,以得到第二运算结果。接着人工智能加速器继续对第二运算结果进行饱和操作,得到饱和后的第二运算结果。
[0181]
最后基于第三运算指令以及第三运算指令中携带的第三偏置参数,对饱和后的第二运算结果进行卷积处理,从而得出输入特征数据对应的输出特征数据。
[0182]
本技术实施例中的编译侧设备在生成人工智能加速器可执行的指令时,通过将神经网络模型中人工智能加速器无法处理的第一函数算子转化为人工智能加速器能够处理的第二函数算子、第三函数算子和第四函数算子,并根据第二函数算子、第三函数算子和第四函数算子生成人工智能加速器可执行的指令。从而人工智能加速器通过执行该可执行的指令可以支持对输入特征数据进行第一函数算子的运算,故能够提高人工智能加速器针对输入特征数据的运算效率。
[0183]
图12为本技术实施例提供的一种通过人工智能加速器对输入特征数据进行处理的方法,该方法可以应用于运行侧设备,如图12所示,该方法包括步骤1201-步骤1202。
[0184]
步骤1201、确定需要对输入特征数据进行处理的至少一个运算指令。
[0185]
其中,至少一个运算指令包括第一函数算子对应的运算指令。示例性地,第一函数算子为hard_tanh(x)激活函数。
[0186]
示例性地,步骤1201中的至少一个运算指令是通过将人工智能加速器原生不支持的第一函数算子转换为人工智能加速器原生支持的目标函数算子后,基于该目标函数算子生成的。该目标函数算子与上述实施例中的目标函数算子相同,本公开在此不再赘述。
[0187]
编译侧设备在生成神经网络模型对应的至少一个运算指令后,可以直接将至少一个运算指令发送给人工智能加速器,或者还可以通过可移动硬盘的形式将至少一个运算指令发送给人工智能加速器。
[0188]
步骤1202、根据至少一个运算指令,对输入特征数据进行处理,得到输入特征数据对应的输出特征数据。
[0189]
人工智能加速器接收到至少一个运算指令后,执行该运算指令,从而对输入特征数据进行处理,从而得到输入特征数据对应的输出特征数据。
[0190]
本技术实施例提供的通过人工智能加速器对输入特征数据进行处理的方法,通过确定人工智能加速器能够支持的至少一个运算指令,且该至少一个运算指令是将人工智能加速器原生不支持的第一函数算子转换为人工智能加速器原生支持的函数算子后生成的。因此,人工智能加速器在执行该至少一个运算指令时,能够实现对输入特征数据进行第一函数算子的运算,避免了神经网络模型的运算中断,从而提高了人工智能加速器针对输入特征数据的运算效率。
[0191]
在一些实施例中,如图13所示,上述步骤1202可以包括步骤1301-步骤1302。
[0192]
步骤1301、基于至少一个运算指令的指令类型,确定执行各运算指令的硬件单元。
[0193]
人工智能加速器接收到至少一个运算指令后,可以根据至少一个运算指令的指令类型,确定至少一个运算指令对应的硬件单元。该运算指令对应的硬件单元可以相同也可以不同。
[0194]
步骤1302、通过运算指令的硬件单元执行运算指令以对输入特征数据进行运算,得到输入特征数据对应的输出特征数据。
[0195]
在确定出至少一个运算指令对应的硬件单元后,人工智能加速器通过各运算指令对应的硬件单元,执行各运算指令,以实现对输入特征数据的运算,从而得到输入特征数据对应的输出特征数据。
[0196]
本技术实施例提供的通过人工智能加速器对输入特征数据进行处理的方法,通过确定各运算指令对应的硬件单元,通过各运算指令对应的硬件单元执行指令运算,从而快速输出运算结果,提高数据处理效率。
[0197]
在一些实施例中,如图14所示,上述步骤1302可以包括步骤1401。
[0198]
步骤1401、通过硬件单元执行至少一个运算指令中的卷积运算指令以对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。
[0199]
示例性地,人工智能加速器获取的至少一个运算指令包括卷积运算指令。卷积运算指令用于实现对输入特征数据进行第一函数算子的运算。
[0200]
根据卷积运算指令的指令类型,确定卷积运算指令用于执行卷积运算。然后通过人工智能加速器中执行卷积运算的硬件单元,执行卷积运算指令,以得到输入特征数据对应的输出特征数据。故该硬件单元基于卷积运算指令中携带的转换参数,对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。
[0201]
另外,本技术对该硬件单元不做限制,能够实现卷积运算指令的运算即可。
[0202]
本技术实施例提供的通过人工智能加速器对输入特征数据进行处理的方法,通过利用硬件单元运算卷积运算指令,以得到输入特征数据对应的输出特征数据。由于该硬件单元是与卷积运算指令匹配的硬件单元,因此执行卷积运算指令的效率更高,能更快的得到输入特征数据对应的输出特征数据,从而提高数据运算速率。
[0203]
在一些实施例中,如图15所示,上述步骤1102可以包括步骤1501-步骤1503。
[0204]
步骤1501、通过硬件单元中的第一硬件单元,执行至少一个运算指令中的第一运
算指令,以对输入特征数据进行卷积处理,得到第一运算结果。
[0205]
示例性地,人工智能加速器获取的至少一个运算指令包括第一运算指令、第二运算指令和第三运算指令。第一运算指令、第二运算指令和第三运算指令用于实现对输入特征数据进行第一函数算子的运算。
[0206]
根据第一运算指令的指令类型,确定第一运算指令用于执行卷积运算。人工智能加速器中执行第一运算指令对应的卷积运算的硬件单元为第一硬件单元,因此,通过第一硬件单元执行第一运算指令,以输出第一运算结果。其中,第一运算指令用于对输入特征数据进行卷积处理。
[0207]
由于人工智能加速器预先设置每经过一次数据运算,都需要对数据运算结果执行一次饱和运算,所以在第一硬件单元输出第一运算结果后,人工智能加速器还会对第一运算结果执行饱和运算,以得到饱和后的第一运算结果。
[0208]
步骤1502、通过硬件单元中的第二硬件单元,执行至少一个运算指令中的第二运算指令,以对饱和运算后的第一运算结果进行卷积处理,得到第二运算结果。
[0209]
示例性地,根据第二运算指令的指令类型,确定第二运算指令用于执行卷积运算。人工智能加速器中执行第二运算指令对应的卷积运算的硬件单元为第二硬件单元,因此,通过第二硬件单元执行第二运算指令,以输出第二运算结果。接着,继续对第二运算结果执行饱和运算,以得到饱和后的第二运算结果。其中,第二运算指令用于对饱和运算后的第一运算结果进行卷积处理。
[0210]
步骤1503、通过硬件单元中的第三硬件单元,执行至少一个运算指令中的第三运算指令,以对饱和运算后的第二运算结果进行卷积处理,得到输入特征数据对应的输出特征数据。
[0211]
示例性地,根据第三运算指令的指令类型,确定第三运算指令用于执行卷积运算。人工智能加速器中执行第三运算指令对应的卷积运算的硬件单元为第三硬件单元,因此,通过第三硬件单元执行第三运算指令,以得到输入特征数据对应的输出特征数据。其中,第一激活运算指令用于对饱和运算后的第二运算结果进行卷积处理。
[0212]
需要说明的是,第一硬件单元、第二硬件单元以及第三硬件单元可以相同也可以不同,或者第一硬件单元、第二硬件单元以及第三硬件单元部分相同,本技术对硬件单元不做限制,能够实现第一运算指令、第二运算指令以及第三运算指令的运算即可。
[0213]
本技术实施例提供的通过人工智能加速器对输入特征数据进行处理的方法,通过利用第一硬件单元运算第一运算指令、第二硬件单元运算第二运算指令以及第三硬件单元运算第三运算指令,以得到输入特征数据对应的输出特征数据。由于第一硬件单元、第二硬件单元和第三硬件单元是与第一运算指令、第二运算指令以及第三运算指令匹配的硬件单元,因此执行各指令的效率更高,能更快的得到输入特征数据对应的输出特征数据,从而提高数据运算速率。
[0214]
图16为本技术实施例提供的一种用于人工智能加速器的指令生成装置,如图16所示,该用于人工智能加速器的指令生成装置1600包括第一确定模块1601、第二确定模块1602、第三确定模块1603、查询模块1604和指令生成模块1603。
[0215]
第一确定模块1601,用于神经网络模型中的第一函数算子;
[0216]
第二确定模块1602,用于确定人工智能加速器所支持的硬件参数;
[0217]
第三确定模块1603,用于根据硬件参数,确定人工智能加速器所支持的函数算子;
[0218]
查询模块1604,用于基于人工智能加速器所支持的函数算子与第一函数算子之间的包含关系,在预设函数映射关系中确定第一函数算子对应的硬件参数支持的目标函数算子;
[0219]
指令生成模块1605,用于根据目标函数算子,生成人工智能加速器可执行的指令。
[0220]
在一些实施例中,指令生成模块1605,还用于确定人工智能加速器支持的饱和运算的饱和范围;基于人工智能加速器支持的饱和运算的饱和范围,确定目标函数算子对应的转换参数;根据目标函数算子和目标函数算子对应的转换参数,生成人工智能加速器可执行的指令。
[0221]
在一些实施例中,指令生成模块1605,还用于基于饱和运算的饱和范围,确定位宽参数;确定神经网络模型的移位参数;基于移位参数和位宽参数的大小关系,确定目标函数算子对应的转换参数。
[0222]
在一些实施例中,人工智能加速器可执行的指令用于基于目标函数算子对应的转换参数,对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。
[0223]
在一些实施例中,指令生成模块1605,还用于基于第一函数算子的激活范围以及人工智能加速器支持的饱和运算的饱和范围,确定目标函数算子中的第二函数算子对应的第一偏置参数、目标函数算子中的第三函数算子对应的第二偏置参数,以及目标函数算子中的第四函数算子对应的第三偏置参数;其中,目标函数算子对应的转换参数包括第一偏置参数、第二偏置参数和第三偏置参数。
[0224]
在一些实施例中,指令生成模块1605,还用于根据第二函数算子的运算指令类型和第一偏置参数,生成人工智能加速器可执行的第一运算指令;根据第三函数算子的运算指令类型和第二偏置参数,生成人工智能加速器可执行的第二运算指令;根据第四函数算子的运算指令类型和第三偏置参数,生成人工智能加速器可执行的第三运算指令。
[0225]
在一些实施例中,第一运算指令用于基于第一偏置参数,对输入特征数据进行卷积处理,得到第一运算结果;第二运算指令用于基于第二偏置参数,对饱和运算后的第一运算结果进行卷积处理,得到第二运算结果;第三运算指令用于基于第三偏置参数,对饱和运算后的第二运算结果进行卷积处理,得到输入特征数据对应的输出特征数据。
[0226]
图17为本技术实施例提供的一种通过人工智能加速器对输入特征数据进行处理的装置,如图17所示,该通过人工智能加速器对输入特征数据进行处理的装置1700包括确定模块1701和处理模块1702。
[0227]
确定模块1701,用于确定需要对输入特征数据进行处理的至少一个运算指令;
[0228]
处理模块1702,用于根据至少一个运算指令,对输入特征数据进行处理,得到输入特征数据对应的输出特征数据。
[0229]
在一些实施例中,处理模块1702,还用于基于至少一个运算指令的指令类型,确定执行各运算指令的硬件单元;通过运算指令的硬件单元执行运算指令以对输入特征数据进行运算,得到输入特征数据对应的输出特征数据。
[0230]
在一些实施例中,处理模块1702,还用于通过硬件单元执行至少一个运算指令中的卷积运算指令以对输入特征数据进行卷积处理,得到输入特征数据对应的输出特征数据。
[0231]
在一些实施例中,处理模块1702,还用于通过硬件单元中的第一硬件单元执行至少一个运算指令中的第一运算指令以对输入特征数据进行卷积处理,得到第一运算结果;通过硬件单元中的第二硬件单元执行至少一个运算指令中的第二运算指令以对饱和运算后的第一运算结果进行卷积处理,得到第二运算结果;通过硬件单元中的第三硬件单元执行至少一个运算指令中的第三运算指令以对饱和运算后的第二运算结果进行卷积处理,得到输入特征数据对应的输出特征数据。
[0232]
图18为本技术实施例提供的一种电子设备的结构图,如图18所示,该电子设备1800包括一个或多个处理器1801和存储器1802。
[0233]
处理器1801可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1800中的其他组件以执行期望的功能。
[0234]
存储器1802可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1801可以运行程序指令,以实现上文的本技术的各个实施例的指令生成方法或池化运算方法以及/或者其他期望的功能。
[0235]
在一个示例中,电子设备1800还可以包括:输入装置1803和输出装置1804,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
[0236]
当然,为了简化,图18中仅示出了该电子设备1800中与本技术有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1800还可以包括任何其他适当的组件。
[0237]
除了上述方法和设备以外,本技术的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本技术各种实施例的指令生成方法或池化运算方法中的步骤。
[0238]
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
[0239]
此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本技术各种实施例的指令生成方法或池化运算方法中的步骤。
[0240]
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0241]
以上结合具体实施例描述了本技术的基本原理,但是,需要指出的是,在本技术中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
[0242]
本技术中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0243]
还需要指出的是,在本技术的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本技术的等效方案。
[0244]
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本技术。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0245]
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
技术特征:
1.一种用于人工智能加速器的指令生成方法,包括:确定神经网络模型中的第一函数算子;确定所述人工智能加速器所支持的硬件参数;根据所述硬件参数,确定所述人工智能加速器所支持的函数算子;基于所述人工智能加速器所支持的函数算子与所述第一函数算子之间的包含关系,在预设函数映射关系中确定所述第一函数算子对应的所述硬件参数支持的目标函数算子;根据所述目标函数算子,生成所述人工智能加速器可执行的指令。2.根据权利要求1所述的方法,其中,所述根据所述目标函数算子,生成所述人工智能加速器可执行的指令,包括:确定所述人工智能加速器支持的饱和运算的饱和范围;基于所述人工智能加速器支持的饱和运算的饱和范围,确定所述目标函数算子对应的转换参数;根据所述目标函数算子和所述目标函数算子对应的转换参数,生成所述人工智能加速器可执行的指令。3.根据权利要求2所述的方法,其中,所述基于所述人工智能加速器支持的饱和运算的饱和范围,确定所述目标函数算子对应的转换参数,包括:基于所述饱和运算的饱和范围,确定位宽参数;确定所述神经网络模型的移位参数;基于所述移位参数和位宽参数的大小关系,确定所述目标函数算子对应的转换参数。4.根据权利要求2所述的方法,其中,所述基于所述人工智能加速器支持的饱和运算的饱和范围,确定所述目标函数算子对应的转换参数,包括:基于所述第一函数算子的激活范围以及所述人工智能加速器支持的饱和运算的饱和范围,确定所述目标函数算子中的第二函数算子对应的第一偏置参数、所述目标函数算子中的第三函数算子对应的第二偏置参数,以及所述目标函数算子中的第四函数算子对应的第三偏置参数;其中,所述目标函数算子对应的转换参数包括所述第一偏置参数、所述第二偏置参数和所述第三偏置参数。5.根据权利要求4所述的方法,其中,所述根据所述目标函数算子和所述目标函数算子对应的转换参数,生成所述人工智能加速器可执行的指令,包括:根据所述第二函数算子的运算指令类型和所述第一偏置参数,生成所述人工智能加速器可执行的第一运算指令;根据所述第三函数算子的运算指令类型和所述第二偏置参数,生成所述人工智能加速器可执行的第二运算指令;根据所述第四函数算子的运算指令类型和所述第三偏置参数,生成所述人工智能加速器可执行的第三运算指令。6.一种通过人工智能加速器对输入特征数据进行处理的方法,包括:确定需要对输入特征数据进行处理的至少一个运算指令;根据所述至少一个运算指令,对所述输入特征数据进行处理,得到所述输入特征数据对应的输出特征数据。
7.根据权利要求6所述的方法,其中,所述根据所述至少一个运算指令,对所述输入特征数据进行处理,得到所述输入特征数据对应的输出特征数据,包括:基于所述至少一个运算指令的指令类型,确定执行各所述运算指令的硬件单元;通过所述硬件单元执行所述运算指令以对所述输入特征数据进行运算,得到所述输入特征数据对应的输出特征数据。8.根据权利要求7所述的方法,其中,所述通过所述硬件单元执行所述运算指令以对所述输入特征数据进行运算,得到所述输入特征数据对应的输出特征数据,包括:通过所述硬件单元执行所述至少一个运算指令中的卷积运算指令以对所述输入特征数据进行卷积处理,得到所述输入特征数据对应的输出特征数据。9.根据权利要求7所述的方法,其中,所述通过所述硬件单元执行所述运算指令以对所述输入特征数据进行运算,得到所述输入特征数据对应的输出特征数据,包括:通过所述硬件单元中的第一硬件单元执行所述至少一个运算指令中的第一运算指令以对所述输入特征数据进行卷积处理,得到第一运算结果;通过所述硬件单元中的第二硬件单元执行所述至少一个运算指令中的第二运算指令以对饱和运算后的所述第一运算结果进行卷积处理,得到第二运算结果;通过所述硬件单元中的第三硬件单元执行所述至少一个运算指令中的第三运算指令以对饱和运算后的所述第二运算结果进行卷积处理,得到所述输入特征数据对应的输出特征数据。10.一种用于人工智能加速器的指令生成的装置,包括:第一确定模块,用于确定神经网络模型中的第一函数算子;第二确定模块,用于确定所述人工智能加速器所支持的硬件参数;第三确定模块,用于根据所述硬件参数,确定所述人工智能加速器所支持的函数算子;查询模块,用于基于所述人工智能加速器所支持的函数算子与所述第一函数算子之间的包含关系,在预设函数映射关系中确定所述第一函数算子对应的所述硬件参数支持的目标函数算子;指令生成模块,用于根据所述目标函数算子,生成所述人工智能加速器可执行的指令。11.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-5中任一所述的用于人工智能加速器的指令生成方法,或者,执行上述权利要求6-9中任一所述的通过人工智能加速器对输入特征数据进行处理的方法。12.一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-5中任一所述的用于人工智能加速器的指令生成方法,或者,执行上述权利要求6-9中任一所述的通过人工智能加速器对输入特征数据进行处理的方法。
技术总结
公开了一种指令生成方法的方法、装置及电子设备,涉及集成电路技术领域,该方法包括确定神经网络模型中的第一函数算子;确定人工智能加速器所支持的硬件参数;根据硬件参数,确定人工智能加速器所支持的函数算子;基于人工智能加速器所支持的函数算子与第一函数算子之间的包含关系,在预设函数映射关系中确定第一函数算子对应的硬件参数支持的目标函数算子;根据目标函数算子,生成人工智能加速器可执行的指令。本公开的技术方案在生成人工智能加速器可执行的指令时,考虑了人工智能加速器的硬件参数以及第一函数算子对应的目标函数算子,从而使得人工智能加速器能够支持对输入特征数据进行第一函数算子的运算。特征数据进行第一函数算子的运算。特征数据进行第一函数算子的运算。
技术研发人员:李德林
受保护的技术使用者:北京地平线信息技术有限公司
技术研发日:2023.02.27
技术公布日:2023/7/19
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
