运算方法、装置及相关产品与流程

文档序号:17466467发布日期:2019-04-20 05:32阅读:163来源:国知局
运算方法、装置及相关产品与流程
本公开涉及机器学习
技术领域
,尤其涉及一种运算方法、装置及相关产品。
背景技术
:神经网络算法是最近非常流行的一种机器学习算法,在各种领域中都取得了非常好的效果,比如图像识别,语音识别,自然语言处理等。随着神经网络算法的发展,算法的复杂度也越来越高,为了提高识别度,模型的规模也在逐渐增大。用gpu和cpu处理起这些大规模的模型,要花费大量的计算时间,并且耗电量很大。在这种情况下,新的人工智能处理器被提出以提高神经网络模型的运算速度,节约运算时间,降低功耗。然而,当前对新的人工智能处理器的算法支持却远远不够。技术实现要素:有鉴于此,本公开提出了一种运算方法,所述方法包括:获取人工智能算子库中的切分算子以及基础算子,所述切分算子用于将输入数据指定维度上进行切分处理,所述基础算子用于对输入数据执行相应的运算操作;将所述切分算子与所述基础算子进行拼接以形成拼接算子,其中,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。在一种可能的实施方式中,所述将所述切分算子与所述基础算子进行拼接以形成拼接算子,包括:将所述切分算子作为所述基础算子的前级算子。在一种可能的实施方式中,所述基础算子包括连接算子,所述连接算子用于对输入数据在指定维度进行连接处理,其中,所述拼接运算操作包括:利用切分算子将输入数据在指定维度进行切分处理,从而将所述输入数据在指定维度上切分为m个子数据,m为大于1的整数;利用所述连接算子将所述m个子数据中的n个子数据进行连接处理以获得处理结果,n为大于1的整数,且n≤m。在一种可能的实施方式中,所述基础算子包括维度顺序转置算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,其中,所述将所述切分算子与所述基础算子进行拼接以形成拼接算子包括:将所述维度顺序转置算子作为所述切分算子的前级算子。在一种可能的实施方式中,所述拼接运算操作包括:利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,包括:在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为p个子数据。在一种可能的实施方式中,所述拼接算子应用于软件调用层级中的应用程序层,所述深度学习算子库位于软件调用层级中的算子库层,所述人工智能处理器位于软件调用层级中的芯片层。根据本公开的另一方面,提出了一种运算装置,所述装置包括:获取模块,用于获取人工智能算子库中的切分算子以及基础算子,所述切分算子用于将输入数据指定维度上进行切分处理,所述基础算子用于对输入数据执行相应的运算操作;运算模块,连接于所述获取模块,用于将所述切分算子与所述基础算子进行拼接以形成拼接算子,其中,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。在一种可能的实施方式中,所述运算模块包括:第一运算子模块,用于将所述切分算子作为所述基础算子的前级算子。在一种可能的实施方式中,所述基础算子包括连接算子,所述连接算子用于对输入数据在指定维度进行连接处理,其中,所述拼接运算操作包括:利用切分算子将输入数据在指定维度进行切分处理,从而将所述输入数据在指定维度上切分为m个子数据,m为大于1的整数;利用所述连接算子将所述m个子数据中的n个子数据进行连接处理以获得处理结果,n为大于1的整数,且n≤m。在一种可能的实施方式中,所述基础算子包括维度顺序转置算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,其中,所述运算模块还包括:第二运算子模块,用于将所述维度顺序转置算子作为所述切分算子的前级算子。在一种可能的实施方式中,所述拼接运算操作包括:利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,包括:在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为p个子数据。根据本公开的另一方面,提出了一种人工智能处理装置,所述装置包括:主处理器,用于执行所述的方法,以获取拼接算子,所述拼接算子用于对所述输入数据执行相应的运算操作;人工智能处理器,电连接于所述主处理器;所述主处理器还用于向人工智能处理器发送输入数据及所述拼接算子,所述人工智能处理器被配置为:接收主处理器发送的所述输入数据及拼接算子;利用所述拼接算子对所述输入数据进行人工智能运算以获得运算结果;将所述运算结果发送给所述主处理器。在一种可能的实施方式中,所述主处理器还包括主处理器存储空间,用于存储所述拼接算子,其中,所述主处理器还用于提供输入数据及存储在所述主处理器存储空间中的拼接算子。在一种可能的实施方式中,所述人工智能处理器将运算结果通过i/o接口传递给所述主处理器;当所述装置包含多个所述人工智能处理器时,所述多个所述人工智能处理器间可以通过特定的结构进行连接并传输数据;其中,多个所述人工智能处理器通过快速外部设备互连总线pcie总线进行互联并传输数据,以支持更大规模的人工智能的运算;多个所述人工智能处理器共享同一控制系统或拥有各自的控制系统;多个所述人工智能处理器共享内存或者拥有各自的内存;多个所述人工智能处理器的互联方式是任意互联拓扑。在一种可能的实施方式中,所述的装置,还包括:存储装置,该存储装置分别与所述人工智能处理器和所述主处理器连接,用于保存所述人工智能处理器装置和所述主处理器的数据。根据本公开的另一方面,提出了一种人工智能芯片,所述人工智能芯片包括所述的人工智能处理装置。根据本公开的另一方面,提出了一种电子设备,所述电子设备包括所述的人工智能芯片。根据本公开的另一方面,提出了一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及所述的人工智能芯片;其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;所述存储器件,用于存储数据;所述接口装置,用于实现所述芯片与外部设备之间的数据传输;所述控制器件,用于对所述芯片的状态进行监控。在一种可能的实施方式中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:ddrsdram;所述芯片包括:ddr控制器,用于对每个所述存储单元的数据传输与数据存储的控制;所述接口装置为:标准pcie接口。根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。通过以上方法,本公开可以获取人工智能算子库中的切分算子及基础算子,将所述切分算子与所述基础算子进行拼接以形成拼接算子,形成的拼接算子可以用于支持新的人工智能处理器,以提高新的人工智能处理器在进行神经网络模型的运算时的运算效率。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出了根据本公开一实施方式的运算方法的流程图。图2示出了根据本公开一实施方式的软件调用层级关系示意图。图3示出了根据本公开一实施方式的拼接算子的示意图。图4a及图4b示出了根据本公开一实施方式的拼接算子的示意图。图5示出了根据本公开一实施方式的运算装置的框图。图6示出了根据本公开一实施方式的运算装置的框图。图7示出了根据本公开一实施方式的人工智能处理装置的框图。图8示出了根据本公开一实施方式的人工智能处理装置的框图。图9示出了根据本公开一实施方式的人工智能处理器的框图。图10示出了根据本公开一实施方式的主处理电路331的框图。图11示出了根据本公开一实施方式的人工智能处理器的示意图。图12示出了根据本公开一实施方式的人工智能处理器的示意图。图13示出了根据本公开一实施方式的一种板卡。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。请参阅图1,图1示出了根据本公开一实施方式的运算方法的流程图。所述方法可以应用于服务器或终端中,如图1所示,所述方法包括:步骤s110,获取人工智能算子库中的切分算子(split)以及基础算子,所述切分算子用于将输入数据指定维度上进行切分处理,所述基础算子用于对输入数据执行相应的运算操作;步骤s120,将所述切分算子与所述基础算子进行拼接以形成拼接算子,其中,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。通过以上方法,本公开可以获取人工智能算子库中的切分算子及基础算子,将所述切分算子与所述基础算子进行拼接以形成拼接算子,形成的拼接算子可以用于支持新的人工智能处理器,以提高新的人工智能处理器在进行神经网络模型的运算时的运算效率。通过以上方法形成的拼接算子,可以作为人工智能运算的一部分,当拼接算子运用于人工智能处理器中进行人工智能运算时,可以实现包括但不限于语音识别、图像识别等应用,通过结合变形算子及基础算子形成拼接算子,可以使得人工智能处理器可以更好地实现人工智能运算。在一种可能的实施方式中,算子(operator)可以为人工智能中常用的算法,又被称为层,操作,节点.每个神经网络都对应着一个网络结构图,而图中的节点即为算子。可预先设置有人工智能算子库,人工智能算子库中可以包括多个基础算子(例如卷积算子、全连接算子、池化算子、激活算子等),各个基础算子可以被包括但不限于中央处理器cpu、图像处理器gpu等处理器调用以实现对应的基础功能。在一种可能的实施方式中,第一输入数据的维度可以为4,当第一输入数据为图片数据时,第一输入数据的各个维度可以表示图片数量、图片通道(channel)数量、图片高度、图片宽度。在其他实施方式中,当第一输入数据为图片数据,但第一输入数据的维度小于4时(例如为3),第一输入数据的各个维度可以表示图片数量、图片通道数量、图片高度、图片宽度中的任意3种。所述切分算子在对输入数据进行切分时,对输入数据的切分数目可以根据切片数量参数(num_out)进行设定,其切分的指定维度也可以通过对应参数进行设定,本公开对切分后的子数据的具体数目及切分的维度不作限定。在一个示例中,split算子对长度为4的一维数据切两片,前两个数据为一个子数据,后两个数据为另一个子数据。在一种可能的实施方式中,步骤s120将所述切分算子与所述基础算子进行拼接以形成拼接算子,包括:将所述切分算子作为所述基础算子的前级算子。在一种可能的实施方式中,所述基础算子包括连接算子(concat),所述连接算子用于对输入数据在指定维度进行连接处理,其中,所述拼接运算操作包括:利用切分算子将输入数据在指定维度进行切分处理,从而将所述输入数据在指定维度上切分为m个子数据,m为大于1的整数;利用所述连接算子将所述m个子数据中的n个子数据进行连接处理以获得处理结果,n为大于1的整数,且n≤m。在一种可能的实施方式中,所述指定维度可以根据人工智能运算的需求及其他要求进行设定,可以在输入数据中设置相关的参数用以指定所述指定维度。在一个示例中,若输入数据为长为4宽为2的二维数据,split算子按照长度进行切片,可以将输入数据切分为四个子数据,分别为四个长度为1宽度为2的二维数据,当指定连接算子对第二个子数据-第三个子数据进行连接操作时,concat算子将第二个到第三个数据进行拼接,形成长度为2宽度为2的的二维数据。应该明白的是,对n个子数据的指定可以通过输入数据中的参数进行设定,例如可以通过起始数据(start)及结束数据(end)参数来指定,当通过start参数及end参数来定concat算子进行操作时,所述n个子数据可以是在start-end之间的数据(包括start、end),也可以是start~end-1之间的数据(包括start、end-1)。在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以利用本公开一实施方式中的拼接算子(切分算子+连接算子)来进行操作。采用本公开所述的拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。通过以上方法,本公开可以根据切分算子及连接算子获取拼接算子,该拼接算子可以在输入数据首先进行切分,将输入数据切分为预设数目的子数据,然后利用连接算子对指定的多个子数据进行连接,从而获得输出数据。在一种可能的实施方式中,所述基础算子包括维度顺序转置算子(transpose_pro),所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,其中,步骤s120将所述切分算子与所述基础算子进行拼接以形成拼接算子包括:将所述维度顺序转置算子作为所述切分算子的前级算子。在一种可能的实施方式中,所述拼接运算操作包括:利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,包括:在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为p个子数据。在一种可能的实施方式中,拼接算子可以是根据维度移除参数(squeeze_)的指示进行操作的,所述维度移除参数用于指示是否移除输入数据中的指定维度,例如,在所述维度移除参数显示需要移除输入数据中的指定维度时,拼接算子对输入数据进行维度顺序重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度,然后对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,维度移除参数(squeeze_)用于决定是否移除输出数据(所述输入数据进行切分后的数据)中大小为1的维度。比如二维输入数据具有两个维度长和宽,大小分别为1和4,将宽切成两片,得到的数据两个维度:长和宽的大小变成1和2,由于切片是在宽上进行,虽然长的大小是1,但不能移除长,这种时候squeeze_只能设置成false。仅当将宽切成4片时,squeeze_才能设置为true,得到的数据没有了宽这个维度,但还保留长这个维度,从而实现了降维的目的。具体而言,transpose_pro算子对输入数据,将其原始维度顺序按照给定顺序重排,完成转置。输入数据维度一般不高于四维,输出数据和输入数据维度一致。比如二维数据[[1,2],[3,4]]转置,维度初始顺序为12,重排顺序为21,得到的输出数据为[[1,3],[2,4]]。在一种可能的实施方式中,所述指定维度可以提前进行设置,可以是根据人工智能运算的需要进行设置,本公开对此不作限定。应该明白的是,在需要对数据的指定维度进行移除时,通常将待切片的维度换到最后一维,其他维度相对顺序不变。举例而言,当切分算子单次最大切分数量为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数据从四维降为三维。在一个应用示例中,当需要利用人工智能运算来进行语音识别、图像处理时,可以利用本公开一实施方式中的拼接算子(维度顺序转置算子(transpose_pro)及切分算子(split))来进行切分运算,从而在输入数据满足一定条件时,利用将输入数据进行切分。采用本公开所述的拼接算子,可以更加便利地执行人工智能运算以实现包括但不限于图像处理、语音识别等应用,从而提高人工智能运算的效率。请参阅图2,图2示出了根据本公开一实施方式的软件调用层级关系示意图。如图2所示,软件调用层级关系从上到下依次包括应用程序层、框架层、算子库层、驱动层、芯片层,其中,通过前述运算方法获得的拼接算子可以应用于应用程序层,人工智能算子库可以在算子库层中,人工智能处理器可以位于芯片层中,驱动层可以包括用于驱动芯片层工作的驱动程序。通过以上介绍可知,利用算子库层中的变形算子及基础算子形成拼接算子后,可以直接被应用程序层调用以应用于应用程序层中,从而在人工智能运算中实现对应的功能,避免了在应用程序层要进行人工智能运算时每一次都需要从算子库层中调取变形算子及基础算子的情况,从而改善了人工智能运算的执行过程。请参阅图3,图3示出了根据本公开一实施方式的拼接算子的示意图。如图3所示,所述拼接算子包括:切分算子10,所述切分算子10用于将输入数据指定维度上进行切分处理;基础算子20,所述基础算子20用于对输入数据执行相应的运算操作。其中,所述切分算子10及所述基础算子20来自于人工智能算子库。通过以上拼接算子,本公开可以利用切分算子将输入数据进行切分,利用基础算子对输入数据进行相应的运算操作,通过所述变形算子及基础算子,拼接算子可以执行相应的拼接运算操作。请参阅图4a及图4b,图4a及图4b示出了根据本公开一实施方式的拼接算子的示意图。如图4a所示,在一种可能的实施方式中,所述基础算子20为连接算子21,所述连接算子21用于对输入数据在指定维度进行连接处理,其中,所述拼接运算操作包括:利用切分算子将输入数据在指定维度进行切分处理,从而将所述输入数据在指定维度上切分为m个子数据,m为大于1的整数;利用所述连接算子将所述m个子数据中的n个子数据进行连接处理以获得处理结果,n为大于1的整数,且n≤m。如图4b所示,在一种可能的实施方式中,所述基础算子20为维度顺序转置算子22,所述维度顺序转置算子22用于对输入数据的维度顺序进行重新排列,其中,所述将所述切分算子10与所述基础算子20进行拼接以形成拼接算子包括:将所述维度顺序转置算子22作为所述切分算子10的前级算子。在一种可能的实施方式中,所述拼接运算操作包括:利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,包括:在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为p个子数据。请参阅图5,图5示出了根据本公开一实施方式的运算装置的框图。如图5所示,所述装置包括:获取模块80,用于获取人工智能算子库中的切分算子以及基础算子,所述切分算子用于将输入数据指定维度上进行切分处理,所述基础算子用于对输入数据执行相应的运算操作;运算模块90,连接于所述获取模块80,用于将所述切分算子与所述基础算子进行拼接以形成拼接算子,其中,所述拼接算子用于在人工智能处理器中对输入数据执行相应的拼接运算操作,以执行人工智能运算。通过以上装置,本公开可以获取人工智能算子库中的切分算子及基础算子,将所述切分算子与所述基础算子进行拼接以形成拼接算子,形成的拼接算子可以用于支持新的人工智能处理器,以提高新的人工智能处理器在进行神经网络模型的运算时的运算效率。请参阅图6,图6示出了根据本公开一实施方式的运算装置的框图。在一种可能的实施方式中,如图6所示,所述运算模块90包括:第一运算子模块910,用于将所述切分算子作为所述基础算子的前级算子。在一种可能的实施方式中,所述基础算子包括连接算子,所述连接算子用于对输入数据在指定维度进行连接处理,其中,所述拼接运算操作包括:利用切分算子将输入数据在指定维度进行切分处理,从而将所述输入数据在指定维度上切分为m个子数据,m为大于1的整数;利用所述连接算子将所述m个子数据中的n个子数据进行连接处理以获得处理结果,n为大于1的整数,且n≤m。在一种可能的实施方式中,所述基础算子包括维度顺序转置算子,所述维度顺序转置算子用于对输入数据的维度顺序进行重新排列,其中,所述运算模块90还包括:第二运算子模块920,用于将所述维度顺序转置算子作为所述切分算子的前级算子。在一种可能的实施方式中,所述拼接运算操作包括:利用所述维度顺序转置算子对输入数据的维度顺序进行重新排列,以将输入数据中的指定维度转换到输入数据的最后一个维度;利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,p为大于1的整数。在一种可能的实施方式中,所述利用所述切分算子对重新排列后的输入数据的最后一个维度的数据进行切分,从而将输入数据切分为p个子数据,包括:在所述重新排列后的输入数据的最后一个维度的数据的数量大于所述切分算子单次最大切分数量时,对输入数据进行多次切分,直到将输入数据切分为p个子数据。请参阅图7,图7示出了根据本公开一实施方式的人工智能处理装置的框图。在一种可能的实施方式中,如图7所示,主处理器50,用于执行所述的方法,以获取拼接算子,所述拼接算子用于对所述输入数据执行相应的运算操作;人工智能处理器60,电连接于所述主处理器50;所述主处理器50还用于向人工智能处理器60发送输入数据及所述拼接算子,所述人工智能处理器60被配置为:接收主处理器50发送的所述输入数据及拼接算子;利用所述拼接算子对所述输入数据进行人工智能运算以获得运算结果;将所述运算结果发送给所述主处理器50。在一种可能的实施方式中,主处理器50可以包括主处理器存储空间,用于存储主处理器50执行所述的运算方法获得的拼接算子,其中,所述主处理器50还用于提供输入数据及存储在所述主处理器存储空间中的拼接算子。应该明白的是,主处理器50可以在获得数据后,执行所述运算方法,获得拼接算子,并同时将获得的拼接算子发送给人工智能处理器60进行处理。主处理器50也可以将存储的拼接算子发送给人工智能处理器60,从而实现将预先存储的拼接算子发送给人工智能处理器60,人工智能处理器60根据接收到的拼接算子及输入数据进行人工智能运算。以上两种方式,前一种可视为线上即时处理的方式,后一种可视为线下处理方式。在一种可能的实施方式中,如图5、图6所示的装置可以在主处理器50中实现。在一种可能的实施方式中,主处理器50可以是中央处理器cpu,也可以是其他类型的处理器,例如图像处理器gpu。应该明白的是,所述拼接算子为通过前述运算方法获得的拼接算子,对拼接算子的具体介绍请参考之前的描述,在此不再赘述。在一种可能的实施方式中,人工智能处理装置可以是由多个相同的处理器形成的,例如多个处理器(xpu)形成类似于主处理器50+人工智能处理器60的架构。也可是是由一个处理器形成了,在这种情况下,处理器既可以执行前述的运算方法,从而得到拼接算子,也可以通过拼接算子对输入数据进行人工智能运算,从而得到输出结果。在本实施方式中,处理器的类型可以是现有的,也可以是新提出的新型处理器,本公开不做限定。在一种可能的实施方式中,主处理器50可以作为人工智能处理装置与外部数据和控制的接口,包括数据搬运,完成对本人工智能处理装置的开启、停止等基本控制;其他处理装置也可以和人工智能处理装置协作共同完成运算任务。在一种可能的实施方式中,人工智能处理装置可以包括一个以上人工智能处理器,人工智能处理器间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。该人工智能处理装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。请参阅图8,图8示出了根据本公开一实施方式的人工智能处理装置的框图。在一种可能的实施方式中,如图8所示,主处理器50和人工智能处理器60可以通过通用互联接口(如i/o接口)连接,用于在主处理器50和人工智能处理器60间传输数据和控制指令。该人工智能处理器60从主处理器50中获取所需的输入数据(包括拼接算子),写入人工智能处理装置片上的存储装置;可以从主处理器50中获取控制指令,写入人工智能处理装置片上的控制缓存;也可以读取人工智能处理器60的存储模块中的数据并传输给其他处理装置。在一种可能的实施方式中,人工智能处理装置还可以包括存储装置,存储装置分别与所述人工智能处理装置和所述其他处理装置连接。存储装置用于保存在所述人工智能处理装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本人工智能处理装置或其他处理装置的内部存储中无法全部保存的数据。该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。通过以上人工智能处理装置,本公开可以通过主处理器将输入数据及拼接算子传输给人工智能处理器,人工智能处理对输入数据利用拼接算子执行人工智能运算的操作,从而得到运算结果,并将运算结果发送给主处理器。应该明白的是,人工智能处理器60可以是单个的可用于人工智能运算的处理器,也可以是多种不同处理器的组合。人工智能处理器应用于人工智能运算,人工智能运算包括机器学习运算,类脑运算,等等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器60具体可以包括gpu(graphicsprocessingunit,图形处理器单元)、npu(neural-networkprocessingunit,神经网络处理器单元)、dsp(digitalsignalprocess,数字信号处理)、现场可编程门阵列(field-programmablegatearray,fpga)芯片的一种或组合。在一种可能的实施方式中,人工智能处理器60如图9所示。请参阅图9,图9示出了根据本公开一实施方式的人工智能处理器的框图。如图9所示,所述人工智能处理器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,用于对所述待运算数据执行前序处理以获得处理后的运算数据,并与所述多个从处理电路之间传输所述运算数据、中间结果及运算指令中的至少一种。请一并参阅图10,图10示出了根据本公开一实施方式的主处理电路331的框图。如图10所示,主处理电路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,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令缓存子模块内,在所述第零运算指令执行完毕后,从所述指令缓存子模块提取所述第一运算指令传输至所述运算模块;所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。请参阅图11,图11示出了根据本公开一实施方式的人工智能处理器的示意图。在一种可能的实施方式中,运算模块33如图11所示,可以包括分支处理电路333;其具体的连接结构如图11所示,其中,主处理电路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内。如图11所示的神经网络运算装置执行神经网络正向运算指令的方法具体可以为:控制模块32从存储模块31内提取运算数据(例如神经网络正向运算指令、神经网络运算指令)对应的操作域以及至少一个操作码,控制模块32将该操作域传输至数据访问模块,将该至少一个操作码发送至运算模块。控制模块32从存储模块31内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算模块的主处理电路,控制模块从存储模块31内提取输入数据xi,将该输入数据xi发送至主处理电路。主处理电路将输入数据xi拆分成n个数据块;控制模块32的指令处理子模块321依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、权值w以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制模块。另外,加法运算和乘法运算的顺序可以调换。本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。请参阅图12,图12示出了根据本公开一实施方式的人工智能处理器的示意图。在一种可能的实施方式中,运算模块33如图12所示,可以包括一个主处理电路331和多个从处理电路332。在一种可能的实施方式中,如图12所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图12所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。在一些实施例里,还申请了一种芯片,其包括了上述人工智能处理装置。在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。请参阅图13,图13示出了根据本公开一实施方式的一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-3200颗粒时,数据传输的理论带宽可达到25600mb/s。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到16000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。在一些实施例里,申请了一种电子设备,其包括了上述板卡。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。所述集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
的其它普通技术人员能理解本文披露的各实施例。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1