CN109726822A - 运算方法、装置及相关产品 - Google Patents

运算方法、装置及相关产品 Download PDF

Info

Publication number
CN109726822A
CN109726822A CN201811534069.7A CN201811534069A CN109726822A CN 109726822 A CN109726822 A CN 109726822A CN 201811534069 A CN201811534069 A CN 201811534069A CN 109726822 A CN109726822 A CN 109726822A
Authority
CN
China
Prior art keywords
operator
input data
dimension
splicing
artificial intelligence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811534069.7A
Other languages
English (en)
Other versions
CN109726822B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201811534069.7A priority Critical patent/CN109726822B/zh
Publication of CN109726822A publication Critical patent/CN109726822A/zh
Application granted granted Critical
Publication of CN109726822B publication Critical patent/CN109726822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开涉及一种运算方法、装置及相关产品,所述产品包括控制模块,所述控制模块包括:指令缓存子模块、指令缓存子模块和存储队列子模块;所述指令缓存子模块,用于存储所述人工神经网络运算关联的计算指令;所述指令处理子模块,用于对所述计算指令解析得到多个运算指令;所述存储队列子模块,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

运算方法、装置及相关产品
技术领域
本公开涉及机器学习技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用GPU和CPU处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,新的人工智能处理器被提出以提高神经网络模型的运算速度,节约运算时间,降低功耗。然而,当前对新的人工智能处理器的算法支持却远远不够。
发明内容
有鉴于此,本公开提出了一种运算方法,所述方法包括:
在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
在一种可能的实施方式中,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的变形算子及全连接算子,所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
在一种可能的实施方式中,根据所述基础算子形成拼接算子,包括:
将所述变形算子作为所述全连接算子的前级算子,
其中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述全连接算子;
根据所述基础算子形成拼接算子,包括:将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数、形状保留参数及形状一致性参数,所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的第一变形算子、归一化指数算子及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
在一种可能的实施方式中,所述利用基础算子形成拼接算子,包括:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为 2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述归一化指数算子;
根据所述基础算子形成拼接算子,包括:将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
在一种可能的实施方式中,所述目标参数包括维度移除参数,所述维度移除参数用于指示是否移除输入数据中的指定维度,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的维度顺序转置算子及切分算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
在一种可能的实施方式中,利用基础算子形成拼接算子,包括:
将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为 P个子数据,P为大于1的整数。
在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述切分算子;
根据所述基础算子形成拼接算子,包括:将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度高于一维时,
判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
根据所述基础算子形成拼接算子,包括:将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
根据所述基础算子形成拼接算子,包括:将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
在一种可能的实施方式中,所述拼接算子应用于软件调用层级中的应用程序层,所述深度学习算子库位于软件调用层级中的算子库层,所述人工智能处理器位于软件调用层级中的芯片层。
根据本公开的另一方面,提出了一种运算装置,所述装置包括:
判断模块,用于在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
获取模块,连接于所述判断模块,用于在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
运算模块,连接于所述获取模块,用于根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
在一种可能的实施方式中,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
所述判断模块包括第一判断子模块,用于在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
所述获取模块包括第一获取子模块,用于获取人工智能算子库中的变形算子及全连接算子,所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
在一种可能的实施方式中,所述运算模块包括第一运算子模块,用于将所述变形算子作为所述全连接算子的前级算子,
其中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
在一种可能的实施方式中,在不满足预设条件时,所述第一获取子模块还用于获取所述全连接算子;
所述第一运算子模块还用于将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数、形状保留参数及形状一致性参数,所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,
所述判断模块还包括第二判断子模块,所述第二判断子模块用于在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
所述获取模块包括第二获取子模块,用于获取人工智能算子库中的第一变形算子、归一化指数算子及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
在一种可能的实施方式中,所述运算模块还包括第二运算子模块,用于:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为 2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
在一种可能的实施方式中,在不满足预设条件时,所述第二获取子模块还用于获取所述归一化指数算子;
所述第二运算子模块还用于将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
在一种可能的实施方式中,所述目标参数包括维度移除参数,所述维度移除参数用于指示是否移除输入数据中的指定维度,
所述判断模块还包括第三判断子模块,用于在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,所述获取模块还包括第三获取子模块,用于获取人工智能算子库中的维度顺序转置算子及切分算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
在一种可能的实施方式中,所述运算模块还包括第三运算子模块,用于将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为 P个子数据,P为大于1的整数。
在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
在一种可能的实施方式中,在不满足预设条件时,所述第三获取子模块还用于获取所述切分算子;
所述第三运算子模块,还用于将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,所述判断模块还包括第四判断子模块,用于在所述预设条件为所述维度参数显示输入数据的维度高于一维时,判断满足预设条件,
在满足预设条件时,所述获取模块还包括第四获取子模块,用于获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
所述运算模块还包括第四运算子模块,用于将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
在一种可能的实施方式中,在不满足预设条件时,所述第四获取子模块还用于获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
所述第四运算子模块还用于将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
根据本公开的另一方面,提出了一种人工智能处理装置,所述装置包括:
主处理器,用于执行所述的方法,以获取拼接算子,所述拼接算子用于对所述输入数据执行相应的运算操作;
人工智能处理器,电连接于所述主处理器;
所述主处理器还用于向人工智能处理器发送输入数据及所述拼接算子,所述人工智能处理器被配置为:
接收主处理器发送的所述输入数据及拼接算子;
利用所述拼接算子对所述输入数据进行人工智能运算以获得运算结果;
将所述运算结果发送给所述主处理器。
在一种可能的实施方式中,所述主处理器还包括主处理器存储空间,用于存储所述拼接算子,其中,
所述主处理器还用于提供输入数据及存储在所述主处理器存储空间中的拼接算子。
在一种可能的实施方式中,所述人工智能处理器将运算结果通过I/O接口传递给所述主处理器;
当所述装置包含多个所述人工智能处理器时,所述多个所述人工智能处理器间可以通过特定的结构进行连接并传输数据;
其中,多个所述人工智能处理器通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的人工智能的运算;多个所述人工智能处理器共享同一控制系统或拥有各自的控制系统;多个所述人工智能处理器共享内存或者拥有各自的内存;多个所述人工智能处理器的互联方式是任意互联拓扑。
在一种可能的实施方式中,所述的装置,还包括:存储装置,该存储装置分别与所述人工智能处理器和所述主处理器连接,用于保存所述人工智能处理器装置和所述主处理器的数据。
根据本公开的另一方面,提出了一种人工智能芯片,所述人工智能芯片包括所述的人工智能处理装置。
根据本公开的另一方面,提出了一种电子设备,所述电子设备包括所述的人工智能芯片。
根据本公开的另一方面,提出了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
在一种可能的实施方式中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开一实施方式的运算方法的流程图。
图2示出了根据本公开一实施方式的软件调用层级关系示意图。
图3a-图3d示出了根据本公开一实施方式的拼接算子的示意图。
图4示出了根据本公开一实施方式的运算装置的框图。
图5示出了根据本公开一实施方式的运算装置的框图。
图6示出了根据本公开一实施方式的人工智能处理装置的框图。
图7示出了根据本公开一实施方式的人工智能处理装置的框图。
图8示出了根据本公开一实施方式的人工智能处理器的框图。
图9示出了根据本公开一实施方式的主处理电路331的框图。
图10示出了根据本公开一实施方式的人工智能处理器的示意图。
图11示出了根据本公开一实施方式的人工智能处理器的示意图。
图12示出了根据本公开一实施方式的一种板卡。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
请参阅图1,图1示出了根据本公开一实施方式的运算方法的流程图。
所述方法可以应用于服务器或终端中,如图1所示,所述方法包括:
步骤S110,在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
步骤S120,在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
步骤S130,根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
通过以上方法,本公开根据输入数据中目标参数满足的不同条件可以获取人工智能算子库中的基础算子利用所述基础算子以形成拼接算子,形成的拼接算子可以用于支持新的人工智能处理器,以提高新的人工智能处理器在进行神经网络模型的运算时的运算效率。
通过以上方法形成的拼接算子,可以作为人工智能运算的一部分,当拼接算子运用于人工智能处理器中进行人工智能运算时,可以实现包括但不限于语音识别、图像识别等应用,通过结合变形算子及基础算子形成拼接算子,可以使得人工智能处理器可以更好地实现人工智能运算。
在一种可能的实施方式中,算子(operator)可以为人工智能中常用的算法,又被称为层,操作,节点.每个神经网络都对应着一个网络结构图,而图中的节点即为算子。可预先设置有人工智能算子库,人工智能算子库中可以包括多个基础算子(例如卷积算子、全连接算子、池化算子、激活算子等),各个基础算子可以被包括但不限于中央处理器CPU、图像处理器GPU等处理器调用以实现对应的基础功能。
在一种可能的实施方式中,第一输入数据的维度可以为4,当第一输入数据为图片数据时,第一输入数据的各个维度可以表示图片数量、图片通道(Channel)数量、图片高度、图片宽度。在其他实施方式中,当第一输入数据为图片数据,但第一输入数据的维度小于4时(例如为3),第一输入数据的各个维度可以表示图片数量、图片通道数量、图片高度、图片宽度中的任意3种。
在一种可能的实施方式中,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的变形算子(Reshape)及全连接算子(FullyConnected),所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
在一种可能的实施方式中,根据所述基础算子形成拼接算子,包括:
将所述变形算子作为所述全连接算子的前级算子,
在一种可能的实施方式中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
在一种可能的实施方式中,所述运算条件包括:
所述第一类型的第一输入数据与接收的第二输入数据符合点乘运算条件。
在一种可能的实施方式中,全连接算子可以执行如下运算:
Y=X·WT+b1,其中,Y表示所述全连接运算结果,X表示第一输入数据,WT表示全连接运算中的权值矩阵的转置矩阵,b1表示偏置数据(bias)。
根据以上公式可知,全连接算子首先将第一输入数据X与权值矩阵WT的转置矩阵进行点乘运算,再将点乘运算的结果X·WT与偏置数据b1相加从而得到全连接运算结果Y。
然而,当第一输入数据X与权值矩阵WT不满足点乘运算条件时,利用人工智能算子库中的全连接算子就无法对第一输入数据X进行全连接运算。在这种情形下,可以利用变形算子将第一输入数据X进行变形转换,从而将不满足点乘运算条件(所述第一类型)的第一输入数据X转换为与权值矩阵WT可以进行点乘运算的形状(所述第二类型)。当然,在其他的实施方式中,也可以将权值矩阵WT的形状进行转换,从而使得经变形算子转换后的权值矩阵WT满足与第一输入数据X进行点乘运算的条件。
在一种可能的实施方式中,数据的形状可以包括数据的维度及不同维度的排列顺序等。
在一种可能的实施方式中,第一输入数据是否满足进行全连接运算的运算条件可以通过调取全连接算子时输入的压平参数(flatten)进行判断。
人工智能算子中的全连接算子在被调取时,需要传入多个参数,例如第一输入数据、权值矩阵、偏置数据及压平参数。
在本实施方式中,可以通过压平参数的值来确定是否需要对第一输入数据或权值矩阵调用变形算子进行变形操作。
例如,当压平参数为真(true)时,可以确定需要利用变形算子进行变形操作,从而使得全连接算子可以利用经变形算子转换后的数据进行全连接运算;例如,当压平参数设置为假(flase)时,可以确定不需利用变形算子对第一输入数据或权值矩阵进行转换,此时,全连接算子直接利用传入的第一输入数据、权值矩阵、偏置数据等进行全连接运算。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述全连接算子;
根据所述基础算子形成拼接算子,包括:将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以根据输入数据中压平参数的满足的不同条件利用本公开一实施方式中的全连接拼接算子(变形算子+全连接算子)或全连接拼接算子(全连接算子)来进行全连接运算,从而利用全连接拼接算子对输入数据进行全连接运算。采用本公开所述的全连接拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数、形状保留参数(preserve_shape) 及形状一致性参数(multi_output),所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的第一变形算子、归一化指数算子(softmax)及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
在一种可能的实施方式中,所述归一化指数算子用于进行归一化运算,例如当输入数据为多维数据(例如四维)时,归一化指数算子可以将输入数据在指定维的所有数据全部映射到0-1之间,且该指定维的映射后的数据之和为1。
在一个示例中,当输入数据为一维向量[-3,2,-1,0],归一化指数算子可以对该输入数据进行归一化运算,从而将输入数据归一化为[0.0057,0.8390,0.0418,0.1135]),可见,归一化后的输入数据之和为1。
在另一个示例中,当输入数据为2*3的二维数据[[1,1,1],[1,1,1]]时,可以对该输入数据的第二维进行归一化运算操作,从而得到归一化后的输入数据为[[0.333,0.333,0.333],[0.333,0.333,0.333]];可以对该输入数据的第一维进行归一化运算操作,从而得到归一化后的输入数据为[[0.5,0.5,0.5],[0.5,0.5,0.5]],其中,所述第一维可以是输入数据的起始维度。
在一种可能的实施方式中,所述变形算子可以包括第一变形算子及第二变形算子。
在一种可能的实施方式中,步骤S130根据所述基础算子形成拼接算子可以包括:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述第一变形算子用于将第一类型的第一输入数据转换成第二类型的第二输入数据,所述第二变形算子用于将所述归一化指数算子输出的第二类型的输出数据转换为第一类型的输出数据。
通过以上方式形成的拼接算子,可以在输入数据满足一定条件时,利用第一变形算子对输入数据进行转换,再利用归一化指数算子对转换后的输入数据在指定维上进行归一化运算操作,最后利用第二变形算子对归一化运算的结果进行恢复形状的转换操作,从而将归一化运算的结果转换为与输入数据的形状相同的数据。
在一种可能的实施方式中,在拼接算子由第一变形算子、归一化指数算子及第二变形算子组成时,所述拼接运算操作包括:
在所述第一类型的所述第一输入数据的维度大于2,且在所述第一输入数据中携带的形状保留参数及形状一致性参数满足预设条件时,利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
在人工智能处理器进行关于神经网络的运算时,会在调用人工智能算子库中的归一化指数算子时输入第一输入数据、形状保留参数、形状一致性参数等。
在本实施方式中,可以在保留输入数据形状时将形状保留参数设置为真(true),而在不需要保留输入数据形状时将形状保留参数设置为假(false)。
在本实施方式中,在神经网路模型的训练中,可以在输入数据形状与标签数据的形状相同时,将形状一致性参数设置为假(false),而在其他情况下,将形状一致性参数设置为真(true),例如,可以在神经网络模型的训练中,将输入数据形状与标签数据的形状不相同时的形状一致性参数设置为真,可以在利用神经网络模型进行正向运算(预测)中,将形状一致性参数设置为假。
当然,以上描述是示例性的,本领域的普通技术人员可以根据需要设置形状保留参数及形状一致性参数的值。
在一种可能的实施方式中,在所述第一类型的所述第一输入数据的维度大于2,且在所述第一输入数据中携带的形状保留参数及形状一致性参数满足预设条件时,利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为2,其中:
所述预设条件可以为形状保留参数及形状一致性参数同时为假。
在利用归一化指数算子对第一变形算子转换后的第二类型的第一输入数据进行归一化运算后,可以得到归一化的结果(第二类型的输出数据),归一化的结果的数据类型与第二类型的第一输入数据相同,它们都是二维数据。
为了使得输出数据与输入数据的形状相同,可以利用第二变形算子将归一化的结果进行转换,从而得到第一类型的输出数据,经第二变形算子转换处理后,第一类型的输出数据与第一类型的输入数据形状相同,例如,第一类型的输出数据为四维数据,其各个维度的排列顺序与第一类型的输入数据相同。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述归一化指数算子;
步骤S130根据所述基础算子形成拼接算子,包括:将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
例如,在维度参数显示输入数据的维度为2维时,可以利用归一化指数算子对输入数据在第二维上的数据进行归一化运算,从而得到输入数据在第二维上的数据的归一化结果。
再例如,preserve_shape为真,multi_output参数为假时,可以利用归一化指数算子对输入数据的最高维的数据进行归一化运算,从而得到输入数据在最高维上的归一化结果。
又例如,preserve_shape为假,multi_output参数为真时,可以利用归一化指数算子对输入数据的第二维的数据进行归一化运算,从而得到输入数据在第二维上的归一化结果。
可以假设preserve_shape及multi_output参数不同时为真。
在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以根据输入数据中的参数(preserve_shape为真,multi_output参数及维度参数)满足的不同条件利用本公开一实施方式中的归一化指数拼接算子(第一变形算子+归一化指数算子+第二变形算子)或归一化指数算子(归一化指数算子) 来进行归一化指数运算,从而对输入数据进行归一化运算,以得到输出数据,然后将输出数据的数据形状转换为与输入数据相同。采用本公开所述的归一化指数拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。
在一种可能的实施方式中,所述目标参数包括维度移除参数(squeeze_),所述维度移除参数用于指示是否移除输入数据中的指定维度,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的维度顺序转置算子(transpose_pro)及切分算子(split),所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
在一种可能的实施方式中,维度移除参数(squeeze_)用于决定是否移除输出数据(所述输入数据进行切分后的数据)中大小为1的维度。比如二维输入数据具有两个维度长和宽,大小分别为1和4,将宽切成两片,得到的数据两个维度:长和宽的大小变成1和2,由于切片是在宽上进行,虽然长的大小是1,但不能移除长,这种时候squeeze_只能设置成false。仅当将宽切成4片时,squeeze_才能设置为true,得到的数据没有了宽这个维度,但还保留长这个维度,从而实现了降维的目的。
具体而言,transpose_pro算子对输入数据,将其原始维度顺序按照给定顺序重排,完成转置。输入数据维度一般不高于四维,输出数据和输入数据维度一致。比如二维数据[[1,2],[3,4]]转置,维度初始顺序为12,重排顺序为21,得到的输出数据为[[1,3],[2,4]]。
具体而言,split算子可以对输入数据在指定维度上,按照一定长度切片。比如长度为4的一维数据切两片,前两个数据为一片,后两个数据为一片。
在一种可能的实施方式中,所述指定维度可以提前进行设置,可以是根据人工智能运算的需要进行设置,本公开对此不作限定。
应该明白的是,在需要对数据的指定维度进行移除时,通常将待切片的维度换到最后一维,其他维度相对顺序不变。
在一种可能的实施方式中,步骤S130利用基础算子形成拼接算子,包括:
将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,P为大于1的整数。
比如输入数据有四维,开始顺序为1234,参数squeeze_为true,在第二维切片,需要将第二维转换到最后一维,也就是将维度顺序变成1342。
在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
举例而言,当切分算子单次最大切分数量为55时(本公开不作限定,在其他的实施方式中,也可以是其他),对于一个大小为3*3*3*182四维数据,如果要将该四维数据在第四维切分为182个子数据,则利用split 算子在第四维上进行切分,将其切分成182份,那么第一次切分,切分成四部分:3*3*3*55,3*3*3*55, 3*3*3*55,3*3*3*17,再用split算子将四个部分再次切分为3*3*3*1,3*3*3*1,…,3*3*3*1,最终达到切分成182个3*3*3*1的小份的目的。
在本例中,完成对所述四维数据的切分后,由于squeeze_参数指示需要将该维度移除,此时,182个 3*3*3*1数据从四维降为三维。
在一种可能的实施方式中,在不满足预设条件时,步骤S120获取人工智能算子库中的基础算子,包括:获取所述切分算子;
步骤S130根据所述基础算子形成拼接算子,包括:将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
此时,由于squeeze_指示不需要移除输入数据的指定维度,则利用split算子对输入数据进行切分。
应该明白的是,split算子对输入数据的切分数目可以根据切片数量参数(num_out)进行设定,本公开对切分后的子数据的具体数目不作限定。
在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以根据输入数据中 squeeze_参数满足的不同条件利用本公开一实施方式中的拼接算子(维度顺序转置算子(transpose_pro)及切分算子(split))或拼接算子(切分算子(split))来进行切分运算,从而在输入数据满足一定条件时,利用将输入数据进行切分。采用本公开所述的拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度高于一维时,
判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
根据所述基础算子形成拼接算子,包括:将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
在一种可能的实施方式中,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
根据所述基础算子形成拼接算子,包括:将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
在一个示例中,通过以上方式获得的拼接算子,可以在输入数据为一维时,利用矩阵乘法算子进行矩阵乘法运算,从而得到一维向量的点乘运算结果。在输入数据高于二维时,利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,例如,可以将第一个输入数据最后一维的元素,依次和第二个输入数据第一维的元素相乘,最终运算结果为高维数组乘积的和。比如两个三维矩阵x和y,大小分别为n*m*k,k*r*s,它们进行高维数组乘法的结果为n*m*r*s,z[i,j,a,b]=sum(x[i,j,:]*y[:,a,b]),也就是x[i,j,0]*y[0,a,b] +x[i,j,1]*y[1,a,b]+…+x[i,j,k]*y[k,a,b])。
在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以根据输入数据中的维度参数满足的不同条件利用本公开一实施方式中的拼接算子(高维数组乘法算子)或拼接算子(矩阵乘法算子)来进行切分运算,从而在输入数据满足一定条件时,利用将输入数据进行乘法运算。采用本公开所述的拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。
请参阅图2,图2示出了根据本公开一实施方式的软件调用层级关系示意图。
如图2所示,软件调用层级关系从上到下依次包括应用程序层、框架层、算子库层、驱动层、芯片层,其中,通过前述运算方法获得的拼接算子可以应用于应用程序层,人工智能算子库可以在算子库层中,人工智能处理器可以位于芯片层中,驱动层可以包括用于驱动芯片层工作的驱动程序。
通过以上介绍可知,利用算子库层中的变形算子及基础算子形成拼接算子后,可以直接被应用程序层调用以应用于应用程序层中,从而在人工智能运算中实现对应的功能,避免了在应用程序层要进行人工智能运算时每一次都需要从算子库层中调取变形算子及基础算子的情况,从而改善了人工智能运算的执行过程。
请参阅图3a及图3b,图3a及图3b示出了根据本公开一实施方式的拼接算子的示意图。
如图3a所示,所述目标参数在满足预设条件时,所述拼接算子包括:
变形算子11,所述变形算子用于将第一类型的第一输入数据转换成第二类型的第一输入数据;
全连接算子12,所述全连接算子21用于进行全连接运算。
所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
在所述目标参数不满足预设条件时,所述拼接算子包括:
全连接算子13,所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
如图3b所示,所述目标参数在满足预设条件时,所述拼接算子包括:
第一变形算子21,所述第一变形算子21用于将第一类型的第一输入数据转换成第二类型的第二输入数据。
归一化指数算子22,所述归一化指数算子用于进行归一化运算。
第二变形算子23,所述第二变形算子12用于将所述归一化指数算子输出的第二类型的输出数据转换为第一类型的输出数据。
所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为 2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
在所述目标参数不满足预设条件时,所述拼接算子包括:
归一化指数算子24,所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
如图3c所示,所述目标参数在满足预设条件时,所述拼接算子包括:
维度顺序转置算子31,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列。
切分算子32,所述切分算子用于将输入数据指定维度上进行切分处理。
所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为 P个子数据,P为大于1的整数。
在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
在所述目标参数不满足预设条件时,所述拼接算子包括:
切分算子33,所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
如图3d所示,所述目标参数在满足预设条件时,所述拼接算子包括:
高维数组乘法算子41,所述高维数组乘法算子41用于对输入数据进行高维数组乘法运算,
所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
在所述目标参数不满足预设条件时,所述拼接算子包括:
矩阵乘法算子42,所述矩阵乘法算子42用于对输入数据进行矩阵乘法运算;
根据所述基础算子形成拼接算子,包括:将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
请参阅图4,图4示出了根据本公开一实施方式的运算装置的框图。
如图4所示,所述装置包括:
判断模块70,用于在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
获取模块80,连接于所述判断模块70,用于在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
运算模块90,连接于所述获取模块80,用于根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
通过以上装置,本公开根据输入数据中目标参数满足的不同条件可以获取人工智能算子库中的基础算子利用所述基础算子以形成拼接算子,形成的拼接算子可以用于支持新的人工智能处理器,以提高新的人工智能处理器在进行神经网络模型的运算时的运算效率。
请参阅图5,图5示出了根据本公开一实施方式的运算装置的框图。
在一种可能的实施方式中,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
所述判断模块70包括第一判断子模块710,用于在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
所述获取模块80包括第一获取子模块810,用于获取人工智能算子库中的变形算子及全连接算子,所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
在一种可能的实施方式中,所述运算模块90包括第一运算子模块910,用于将所述变形算子作为所述全连接算子的前级算子,
其中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
在一种可能的实施方式中,在不满足预设条件时,所述第一获取子模块还用于获取所述全连接算子;
所述第一运算子模块还用于将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数、形状保留参数及形状一致性参数,所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,
所述判断模块70还包括第二判断子模块720,所述第二判断子模块720用于在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
所述获取模块80包括第二获取子模块820,用于获取人工智能算子库中的第一变形算子、归一化指数算子及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
在一种可能的实施方式中,所述运算模块90还包括第二运算子模块920,用于:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
在一种可能的实施方式中,在不满足预设条件时,所述第二获取子模块还用于获取所述归一化指数算子;
所述第二运算子模块还用于将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
在一种可能的实施方式中,所述目标参数包括维度移除参数,所述维度移除参数用于指示是否移除输入数据中的指定维度,
所述判断模块70还包括第三判断子模块730,用于在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,所述获取模块80还包括第三获取子模块830,用于获取人工智能算子库中的维度顺序转置算子及切分算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
在一种可能的实施方式中,所述运算模块90还包括第三运算子模块930,用于将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为 P个子数据,P为大于1的整数。
在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
在一种可能的实施方式中,在不满足预设条件时,所述第三获取子模块还用于获取所述切分算子;
所述第三运算子模块,还用于将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
在一种可能的实施方式中,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,所述判断模块70还包括第四判断子模块740,用于在所述预设条件为所述维度参数显示输入数据的维度高于一维时,判断满足预设条件,
在满足预设条件时,所述获取模块80还包括第四获取子模块840,用于获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
所述运算模块90还包括第四运算子模块940,用于将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
在一种可能的实施方式中,在不满足预设条件时,所述第四获取子模块840还用于获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
所述第四运算子模块940还用于将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
请参阅图6,图6示出了根据本公开一实施方式的人工智能处理装置的框图。
在一种可能的实施方式中,如图6所示,
主处理器50,用于执行所述的方法,以获取拼接算子,所述拼接算子用于对所述输入数据执行相应的运算操作;
人工智能处理器60,电连接于所述主处理器50;
所述主处理器50还用于向人工智能处理器60发送输入数据及所述拼接算子,所述人工智能处理器60被配置为:
接收主处理器50发送的所述输入数据及拼接算子;
利用所述拼接算子对所述输入数据进行人工智能运算以获得运算结果;
将所述运算结果发送给所述主处理器50。
在一种可能的实施方式中,主处理器50可以包括主处理器存储空间,用于存储主处理器50执行所述的运算方法获得的拼接算子,其中,
所述主处理器50还用于提供输入数据及存储在所述主处理器存储空间中的拼接算子。
应该明白的是,主处理器50可以在获得数据后,执行所述运算方法,获得拼接算子,并同时将获得的拼接算子发送给人工智能处理器60进行处理。主处理器50也可以将存储的拼接算子发送给人工智能处理器 60,从而实现将预先存储的拼接算子发送给人工智能处理器60,人工智能处理器60根据接收到的拼接算子及输入数据进行人工智能运算。以上两种方式,前一种可视为线上即时处理的方式,后一种可视为线下处理方式。
在一种可能的实施方式中,如图4、图5所示的装置可以在主处理器50中实现。
在一种可能的实施方式中,主处理器50可以是中央处理器CPU,也可以是其他类型的处理器,例如图像处理器GPU。应该明白的是,所述拼接算子为通过前述运算方法获得的拼接算子,对拼接算子的具体介绍请参考之前的描述,在此不再赘述。
在一种可能的实施方式中,人工智能处理装置可以是由多个相同的处理器形成的,例如多个处理器 (XPU)形成类似于主处理器50+人工智能处理器60的架构。也可是是由一个处理器形成了,在这种情况下,处理器既可以执行前述的运算方法,从而得到拼接算子,也可以通过拼接算子对输入数据进行人工智能运算,从而得到输出结果。在本实施方式中,处理器的类型可以是现有的,也可以是新提出的新型处理器,本公开不做限定。
在一种可能的实施方式中,主处理器50可以作为人工智能处理装置与外部数据和控制的接口,包括数据搬运,完成对本人工智能处理装置的开启、停止等基本控制;其他处理装置也可以和人工智能处理装置协作共同完成运算任务。
在一种可能的实施方式中,人工智能处理装置可以包括一个以上人工智能处理器,人工智能处理器间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该人工智能处理装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
请参阅图7,图7示出了根据本公开一实施方式的人工智能处理装置的框图。
在一种可能的实施方式中,如图7所示,主处理器50和人工智能处理器60可以通过通用互联接口(如I/O 接口)连接,用于在主处理器50和人工智能处理器60间传输数据和控制指令。该人工智能处理器60从主处理器50中获取所需的输入数据(包括拼接算子),写入人工智能处理装置片上的存储装置;可以从主处理器50中获取控制指令,写入人工智能处理装置片上的控制缓存;也可以读取人工智能处理器60的存储模块中的数据并传输给其他处理装置。
在一种可能的实施方式中,人工智能处理装置还可以包括存储装置,存储装置分别与所述人工智能处理装置和所述其他处理装置连接。存储装置用于保存在所述人工智能处理装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本人工智能处理装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。通过以上人工智能处理装置,本公开可以通过主处理器将输入数据及拼接算子传输给人工智能处理器,人工智能处理对输入数据利用拼接算子执行人工智能运算的操作,从而得到运算结果,并将运算结果发送给主处理器。
应该明白的是,人工智能处理器60可以是单个的可用于人工智能运算的处理器,也可以是多种不同处理器的组合。人工智能处理器应用于人工智能运算,人工智能运算包括机器学习运算,类脑运算,等等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器60具体可以包括GPU(Graphics Processing Unit,图形处理器单元)、NPU(Neural-Network Processing Unit,神经网络处理器单元)、DSP(Digital Signal Process,数字信号处理)、现场可编程门阵列(Field-ProgrammableGate Array, FPGA)芯片的一种或组合。
在一种可能的实施方式中,人工智能处理器60如图8所示。请参阅图8,图8示出了根据本公开一实施方式的人工智能处理器的框图。
如图8所示,所述人工智能处理器30包括控制模块32、运算模块33及存储模块31,所述运算模块33包括主处理电路331和多个从处理电路332(图中从处理电路的数目是示例性的)。
所述控制模块32,用于获取输入数据及计算指令;
所述控制模块32,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路331;
所述主处理电路331,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路332,用于依据从所述主处理电路331传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路331;
所述主处理电路331,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本公开所述的人工智能处理器30在接收到输入数据及计算指令后,对输入数据执行相应的运算操作,从而获得所述计算结果。
本公开所述的人工智能处理器可以支持机器学习以及一些非机器学习的人工智能算法。
上述计算指令包括但不限于:正向运算指令或反向训练指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
在一种可能的实施方式中,在人工智能处理30获得所述计算结果后,可将所述计算结果发送给中央处理器CPU或图像处理器GPU等其他处理器。
所述运算指令为人工智能处理器30根据拼接算子获得的可运行代码,上述可运行代码包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,本申请具体实施方式并不限制上述计算指令的具体表现形式。
在一种可能的实施方式中,所述人工智能处理器30可以通过数据传输模块360得到,该数据传输模块 360具体可以为一个或多个数据I/O接口或I/O引脚。
所述主处理电路331,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种。
请一并参阅图9,图9示出了根据本公开一实施方式的主处理电路331的框图。
如图9所示,主处理电路331可以包括:转换处理电路113、激活处理电路111、加法处理电路112中的一种或任意组合。
所述转换处理电路113,用于对所述数据执行所述前序处理,所述前序处理可为:将主处理电路331接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路331接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换)。
所述激活处理电路111,用于执行所述后续处理,具体为执行主处理电路331内数据的激活运算;
所述加法处理电路112,用于执行所述后续处理,具体为执行加法运算或累加运算。
每个从处理电路332,用于根据所述主处理电路331传输的运算数据及运算指令执行中间运算得到中间结果,并将所述中间结果传输给所述主处理电路331;
所述主处理电路331,用于对多个中间结果执行后续处理得到所述运算指令的最终计算结果。
所述控制模块32还用于根据所述状态信息生成调试结果,并向所述状态信息获取装置40输出调试结果。
存储模块31用于根据运算指令,存储所述运算过程中的状态信息,其中,所述状态信息包括所述主处理电路331的前序处理过程中的状态信息、所述多个从处理电路332的中间运算过程中的状态信息、所述主处理电路331的后续处理过程中的状态信息中的至少一种。所述存储模块可以包括片上存储子模块310,所述片上存储子模块310可以包括高速暂存存储器。
存储模块31还可以包括寄存器、缓存中的一个或者任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述神经网络模型、所述数据和标量;所述缓存为高速暂存缓存。
在一种可能的实施方式中,控制模块32可以包括:指令缓存子模块320、指令处理子模块321和存储队列子模块323;
指令缓存子模块320,用于存储所述神经网络模型关联的计算指令;
所述指令处理子模块321,用于对所述计算指令解析得到多个运算指令;
存储队列子模块323,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一种可能的实施方式中,主处理电路331也可以包括一个控制模块32,该控制模块32可以包括主指令处理子模块,具体用于将指令译码成微指令。当然在一种可能的实施方式中,从处理电路332 也可以包括另一个控制模块32,该另一个控制模块32包括从指令处理子模块,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各模块或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表一所示。
表一
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。例如,如下表二所示。
表二
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为t维数据,t为大于等于1的整数,例如,t=1时,为1维数据,即向量,如t=2时,为2维数据,即矩阵,如t=3或3以上时,为多维张量。
可选的,该控制模块32还可以包括:
依赖关系处理子模块322,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令缓存子模块内,在所述第零运算指令执行完毕后,从所述指令缓存子模块提取所述第一运算指令传输至所述运算模块;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
请参阅图10,图10示出了根据本公开一实施方式的人工智能处理器的示意图。
在一种可能的实施方式中,运算模块33如图10所示,可以包括分支处理电路333;其具体的连接结构如图10所示,其中,
主处理电路331与分支处理电路333连接,分支处理电路333与多个从处理电路332连接;
分支处理电路333,用于执行转发主处理电路331与从处理电路332之间的数据或指令。
在一种可能的实施方式中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中, x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、 softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制模块从存储模块31内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵 x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路将输入神经元矩阵x拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将权值矩阵w广播给8个从处理电路,
从处理电路并行执行8个子矩阵与权值矩阵w的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制模块,控制模块将该最终结果y输出或存储至存储模块31内。
如图10所示的神经网络运算装置执行神经网络正向运算指令的方法具体可以为:
控制模块32从存储模块31内提取运算数据(例如神经网络正向运算指令、神经网络运算指令)对应的操作域以及至少一个操作码,控制模块32将该操作域传输至数据访问模块,将该至少一个操作码发送至运算模块。
控制模块32从存储模块31内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算模块的主处理电路,控制模块从存储模块31内提取输入数据Xi,将该输入数据Xi 发送至主处理电路。
主处理电路将输入数据Xi拆分成n个数据块;
控制模块32的指令处理子模块321依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、权值w以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制模块。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
请参阅图11,图11示出了根据本公开一实施方式的人工智能处理器的示意图。
在一种可能的实施方式中,运算模块33如图11所示,可以包括一个主处理电路331和多个从处理电路 332。
在一种可能的实施方式中,如图11所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1 行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图11所示的 K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该 k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
在一些实施例里,还申请了一种芯片,其包括了上述人工智能处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。
请参阅图12,图12示出了根据本公开一实施方式的一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4 控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16 接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (35)

1.一种运算方法,其特征在于,所述方法包括:
在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
2.根据权利要求1所述的方法,其特征在于,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的变形算子及全连接算子,所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
3.根据权利要求2所述的方法,其特征在于,根据所述基础算子形成拼接算子,包括:
将所述变形算子作为所述全连接算子的前级算子,
其中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
4.根据权利要求2所述的方法,其特征在于,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述全连接算子;
根据所述基础算子形成拼接算子,包括:将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
5.根据权利要求1所述的方法,其特征在于,所述目标参数包括输入数据的维度参数、形状保留参数及形状一致性参数,所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的第一变形算子、归一化指数算子及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
6.根据权利要求5所述的方法,其特征在于,所述利用基础算子形成拼接算子,包括:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
7.根据权利要求5所述的方法,其特征在于,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述归一化指数算子;
根据所述基础算子形成拼接算子,包括:将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
8.根据权利要求1所述的方法,其特征在于,所述目标参数包括维度移除参数,所述维度移除参数用于指示是否移除输入数据中的指定维度,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的维度顺序转置算子及切分算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
9.根据权利要求8所述的方法,其特征在于,利用基础算子形成拼接算子,包括:
将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,P为大于1的整数。
10.根据权利要求9所述的方法,其特征在于,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
11.根据权利要求8所述的方法,其特征在于,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述切分算子;
根据所述基础算子形成拼接算子,包括:将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
12.根据权利要求1所述的方法,其特征在于,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,根据所述输入数据的目标参数,判断是否满足预设条件,包括:
在所述预设条件为所述维度参数显示输入数据的维度高于一维时,
判断满足预设条件,
在满足预设条件时,获取人工智能算子库中的基础算子,包括:
获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
根据所述基础算子形成拼接算子,包括:将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
13.根据权利要求12所述的方法,其特征在于,在不满足预设条件时,获取人工智能算子库中的基础算子,包括:获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
根据所述基础算子形成拼接算子,包括:将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
14.根据权利要求1所述的方法,其特征在于,所述拼接算子应用于软件调用层级中的应用程序层,所述深度学习算子库位于软件调用层级中的算子库层,所述人工智能处理器位于软件调用层级中的芯片层。
15.一种运算装置,其特征在于,所述装置包括:
判断模块,用于在接收到人工智能运算的输入数据时,根据所述输入数据的目标参数,判断是否满足预设条件;
获取模块,连接于所述判断模块,用于在满足预设条件时,获取人工智能算子库中的基础算子,所述基础算子用于对所述输入数据执行相应的运算操作;
运算模块,连接于所述获取模块,用于根据所述基础算子形成拼接算子,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。
16.根据权利要求15所述的装置,其特征在于,所述目标参数包括全连接运算中的压平参数,所述压平参数用于指示在全连接运算时是否对输入数据进行类型转换处理,
所述判断模块包括第一判断子模块,用于在所述压平参数指示在全连接运算时对输入数据进行类型转换处理时,判断满足预设条件,
所述获取模块包括第一获取子模块,用于获取人工智能算子库中的变形算子及全连接算子,所述变形算子用于转换输入数据的数据类型,所述全连接算子用于进行全连接运算。
17.根据权利要求16所述的装置,其特征在于,所述运算模块包括第一运算子模块,用于将所述变形算子作为所述全连接算子的前级算子,
其中,所述拼接运算操作包括:
利用所述变形算子将所述第一类型的第一输入数据转换成符合所述运算条件的第二类型的第一输入数据;
利用所述全连接算子对所述第二类型的第一输入数据及接收的第二输入数据进行全连接运算,得到全连接运算结果。
18.根据权利要求16所述的装置,其特征在于,在不满足预设条件时,所述第一获取子模块还用于获取所述全连接算子;
所述第一运算子模块还用于将所述全连接算子作为所述拼接算子;
所述拼接运算操作包括:利用所述全连接算子对输入数据进行全连接运算,以输出全连接运算结果。
19.根据权利要求15所述的装置,其特征在于,所述目标参数包括输入数据的维度参数、形状保留参数及形状一致性参数,所述维度参数用于表示输入数据的维度,所述形状保留参数用于表示是否保留输入数据的形状,所述形状一致性参数用于表示输入数据与输入标签数据的形状是否一致,
所述判断模块还包括第二判断子模块,所述第二判断子模块用于在所述预设条件为所述维度参数显示输入数据的维度大于2、且所述形状保留参数显示需要保留输入数据的形状、且所述形状一致性参数显示输入数据与输入标签数据的形状一致时,判断满足预设条件,
所述获取模块包括第二获取子模块,用于获取人工智能算子库中的第一变形算子、归一化指数算子及第二变形算子,所述第一变形算子及所述第二变形算子用于对输入数据进行类型转换处理,所述归一化指数算子用于进行归一化运算。
20.根据权利要求19所述的装置,其特征在于,所述运算模块还包括第二运算子模块,用于:
将所述第一变形算子作为所述归一化指数算子的前级算子;
将所述第二变形算子作为所述归一化指数算子的后级算子;
其中,所述拼接运算操作包括:
利用所述第一变形算子将所述第一输入数据转换为第二类型,所述第二类型的第一输入数据的维度为2;
利用所述归一化指数算子对所述第二类型的第一输入数据在第二维度上进行归一化运算,以输出第二类型的输出数据;
利用所述第二变形算子将第二类型的输出数据转换为第一类型的输出数据。
21.根据权利要求19所述的装置,其特征在于,在不满足预设条件时,所述第二获取子模块还用于获取所述归一化指数算子;
所述第二运算子模块还用于将所述归一化指数算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述归一化指数算子在输入数据的最高维度上进行归一化运算。
22.根据权利要求15所述的装置,其特征在于,所述目标参数包括维度移除参数,所述维度移除参数用于指示是否移除输入数据中的指定维度,
所述判断模块还包括第三判断子模块,用于在所述预设条件为所述维度移除参数显示需要移除输入数据中的指定维度时,判断满足预设条件,
在满足预设条件时,所述获取模块还包括第三获取子模块,用于获取人工智能算子库中的维度顺序转置算子及切分算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,所述切分算子用于将输入数据指定维度上进行切分处理。
23.根据权利要求22所述的装置,其特征在于,所述运算模块还包括第三运算子模块,用于将所述维度顺序转置算子作为所述切分算子的前级算子,
其中,所述拼接运算操作包括:
利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;
利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,P为大于1的整数。
24.根据权利要求23所述的装置,其特征在于,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为P个子数据,包括:
在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为P个子数据。
25.根据权利要求22所述的装置,其特征在于,在不满足预设条件时,所述第三获取子模块还用于获取所述切分算子;
所述第三运算子模块,还用于将所述切分算子作为所述拼接算子;
所述拼接运算操作包括:
利用所述切分算子对输入数据的指定维度的数据进行切分,从而将输入数据切分为M个子数据,M为大于1的整数。
26.根据权利要求15所述的装置,其特征在于,所述目标参数包括输入数据的维度参数,所述维度参数用于显示输入数据的维度大小,所述判断模块还包括第四判断子模块,用于在所述预设条件为所述维度参数显示输入数据的维度高于一维时,判断满足预设条件,
在满足预设条件时,所述获取模块还包括第四获取子模块,用于获取人工智能算子库中的高维数组乘法算子,所述高维数组乘法算子用于对输入数据进行高维数组乘法运算,
所述运算模块还包括第四运算子模块,用于将所述高维数组乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述高维数组乘法算子对输入数据进行高维数组乘法运算,得到运算结果。
27.根据权利要求26所述的装置,其特征在于,在不满足预设条件时,所述第四获取子模块还用于获取所述矩阵乘法算子,所述矩阵乘法算子用于对输入数据进行矩阵乘法运算;
所述第四运算子模块还用于将所述矩阵乘法算子作为所述拼接算子;
其中,所述拼接运算操作包括:
利用所述矩阵乘法算子对输入数据进行矩阵乘法运算,得到运算结果。
28.一种人工智能处理装置,其特征在于,所述装置包括:
主处理器,用于执行如权利要求1-14任一项所述的方法,以获取拼接算子,所述拼接算子用于对所述输入数据执行相应的运算操作;
人工智能处理器,电连接于所述主处理器;
所述主处理器还用于向人工智能处理器发送输入数据及所述拼接算子,所述人工智能处理器被配置为:
接收主处理器发送的所述输入数据及拼接算子;
利用所述拼接算子对所述输入数据进行人工智能运算以获得运算结果;
将所述运算结果发送给所述主处理器。
29.根据权利要求28所述的装置,其特征在于,所述主处理器还包括主处理器存储空间,用于存储所述拼接算子,其中,
所述主处理器还用于提供输入数据及存储在所述主处理器存储空间中的拼接算子。
30.根据权利要求28所述的装置,其特征在于,所述人工智能处理器将运算结果通过I/O接口传递给所述主处理器;
当所述装置包含多个所述人工智能处理器时,所述多个所述人工智能处理器间可以通过特定的结构进行连接并传输数据;
其中,多个所述人工智能处理器通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的人工智能的运算;多个所述人工智能处理器共享同一控制系统或拥有各自的控制系统;多个所述人工智能处理器共享内存或者拥有各自的内存;多个所述人工智能处理器的互联方式是任意互联拓扑。
31.根据权利要求28所述的装置,其特征在于,还包括:存储装置,该存储装置分别与所述人工智能处理器和所述主处理器连接,用于保存所述人工智能处理器装置和所述主处理器的数据。
32.一种人工智能芯片,其特征在于,所述人工智能芯片包括如权利要求28-31任一项所述的人工智能处理装置。
33.一种电子设备,其特征在于,所述电子设备包括如所述权利要求32所述的芯片。
34.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求32所述的人工智能芯片;
其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
35.根据权利要求34所述的板卡,其特征在于,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
CN201811534069.7A 2018-12-14 2018-12-14 运算方法、装置及相关产品 Active CN109726822B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811534069.7A CN109726822B (zh) 2018-12-14 2018-12-14 运算方法、装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811534069.7A CN109726822B (zh) 2018-12-14 2018-12-14 运算方法、装置及相关产品

Publications (2)

Publication Number Publication Date
CN109726822A true CN109726822A (zh) 2019-05-07
CN109726822B CN109726822B (zh) 2020-10-09

Family

ID=66295978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811534069.7A Active CN109726822B (zh) 2018-12-14 2018-12-14 运算方法、装置及相关产品

Country Status (1)

Country Link
CN (1) CN109726822B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110458285A (zh) * 2019-08-14 2019-11-15 北京中科寒武纪科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN111915003A (zh) * 2019-05-09 2020-11-10 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN112396186A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品
CN113837921A (zh) * 2021-09-26 2021-12-24 安徽寒武纪信息科技有限公司 数据处理装置、数据处理方法及相关产品
WO2023134453A1 (zh) * 2022-01-17 2023-07-20 华为技术有限公司 一种算子的处理方法及计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201203886Y (zh) * 2008-05-23 2009-03-04 首都师范大学 一种具有公式发现功能的嵌入式智能芯片
EP2062117A1 (en) * 2006-08-30 2009-05-27 Electronics and Telecommunications Research Institute Wearable computer system and method controlling information/service in wearable computer system
CN105488567A (zh) * 2015-11-30 2016-04-13 清华大学 一种带有连接学习的量子演化算法
CN106406985A (zh) * 2016-09-21 2017-02-15 北京百度网讯科技有限公司 分布式计算框架和分布式计算方法
CN107621932A (zh) * 2017-09-25 2018-01-23 威创集团股份有限公司 显示图像的局部放大方法和装置
CN107967135A (zh) * 2017-10-31 2018-04-27 平安科技(深圳)有限公司 计算引擎实现方法、电子装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2062117A1 (en) * 2006-08-30 2009-05-27 Electronics and Telecommunications Research Institute Wearable computer system and method controlling information/service in wearable computer system
CN201203886Y (zh) * 2008-05-23 2009-03-04 首都师范大学 一种具有公式发现功能的嵌入式智能芯片
CN105488567A (zh) * 2015-11-30 2016-04-13 清华大学 一种带有连接学习的量子演化算法
CN106406985A (zh) * 2016-09-21 2017-02-15 北京百度网讯科技有限公司 分布式计算框架和分布式计算方法
CN107621932A (zh) * 2017-09-25 2018-01-23 威创集团股份有限公司 显示图像的局部放大方法和装置
CN107967135A (zh) * 2017-10-31 2018-04-27 平安科技(深圳)有限公司 计算引擎实现方法、电子装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HASSANALI MOSALMAN YAZDI等: "Artificial Intelligence in Designing Non Geometric Brace Systems", 《IEEE》 *
张志刚: "基于多视点获取图像的拼接算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111915003A (zh) * 2019-05-09 2020-11-10 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN111915003B (zh) * 2019-05-09 2024-03-22 深圳大普微电子科技有限公司 一种神经网络硬件加速器
CN112396186A (zh) * 2019-08-12 2021-02-23 上海寒武纪信息科技有限公司 执行方法、装置及相关产品
CN112396186B (zh) * 2019-08-12 2024-05-03 上海寒武纪信息科技有限公司 执行方法、装置及相关产品
CN110458285A (zh) * 2019-08-14 2019-11-15 北京中科寒武纪科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110458285B (zh) * 2019-08-14 2021-05-14 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN113837921A (zh) * 2021-09-26 2021-12-24 安徽寒武纪信息科技有限公司 数据处理装置、数据处理方法及相关产品
WO2023134453A1 (zh) * 2022-01-17 2023-07-20 华为技术有限公司 一种算子的处理方法及计算机设备

Also Published As

Publication number Publication date
CN109726822B (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN109657782A (zh) 运算方法、装置及相关产品
CN109726822A (zh) 运算方法、装置及相关产品
CN109685201A (zh) 运算方法、装置及相关产品
CN109522052A (zh) 一种计算装置及板卡
CN109543832A (zh) 一种计算装置及板卡
CN109740739A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN109416756A (zh) 卷积器及其所应用的人工智能处理装置
CN112633490B (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN109670581A (zh) 一种计算装置及板卡
CN110147249A (zh) 一种网络模型的计算方法及装置
CN110909870B (zh) 训练装置及方法
CN109753319A (zh) 一种释放动态链接库的装置及相关产品
CN110163349A (zh) 一种网络模型的计算方法及装置
CN109711538A (zh) 运算方法、装置及相关产品
CN109740729A (zh) 运算方法、装置及相关产品
CN111930681B (zh) 一种计算装置及相关产品
CN110059809A (zh) 一种计算装置及相关产品
CN109740730A (zh) 运算方法、装置及相关产品
CN109583579A (zh) 计算装置及相关产品
CN109711540A (zh) 一种计算装置及板卡
CN109993290A (zh) 集成电路芯片装置及相关产品
CN110472734A (zh) 一种计算装置及相关产品
CN111260070A (zh) 运算方法、装置及相关产品
CN115470176B (zh) 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN111382853A (zh) 数据处理装置、方法、芯片及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant