用于处理机器学习模型的方法、设备和计算机程序产品与流程

文档序号:23797958发布日期:2021-02-02 11:16阅读:114来源:国知局
用于处理机器学习模型的方法、设备和计算机程序产品与流程

[0001]
本公开的实施例涉及人工智能领域,具体地涉及用于处理机器学习模型的方法、设备和计算机程序产品。


背景技术:

[0002]
近年来,随着人工智能技术的进步,机器学习或深度学习(dl)已经推动了许多领域的发展。与此同时,机器学习模型也变得越来越复杂,需要使用数据集越大,因此执行这样的机器学习模型需要更多的计算资源。目前,由于cpu的计算能力以及与外围计算设备之间通信带宽的限制,单个机器的计算能力往往难以满足大规模机器学习模型的要求。因此,如何有效地部署机器学习模型已经成为当前关注的焦点。


技术实现要素:

[0003]
本公开的实施例提供一种用于处理机器学习模型的方法、设备和计算机程序产品。
[0004]
根据本公开的第一方面,提供了一种用于处理机器学习模型的方法。该方法包括获得由源语言编写的机器学习模型的中间表示,中间表示与源语言和目标语言无关并且包括结构化的文本。该方法还包括基于中间表示生成计算图,计算图中的节点表示与机器学习模型有关的函数,计算图中的有向边表示函数之间的依赖关系。该方法还包括将计算图划分为有顺序的多个部分,使得多个部分将按照顺序被执行并且每个部分中的节点所对应的函数能够被并行执行。
[0005]
根据本公开的第二方面,提供了一种用于处理机器学习模型的电子设备。该电子设备包括处理器;以及存储器,存储有计算机程序指令,处理器运行存储器中的计算机程序指令控制电子设备执行动作,该动作包括:获得由源语言编写的机器学习模型的中间表示,中间表示与源语言和目标语言无关并且包括结构化的文本;基于中间表示生成计算图,计算图中的节点表示与机器学习模型有关的函数,计算图中的有向边表示函数之间的依赖关系;以及将计算图划分为有顺序的多个部分,使得多个部分将按照顺序被执行并且每个部分中的节点所对应的函数能够被并行执行。
[0006]
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行本公开的第一方面中的方法的步骤。
附图说明
[0007]
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
[0008]
图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境
100的示意图;
[0009]
图2图示了根据本公开的实施例的计算图200的示意图;
[0010]
图3图示了根据本公开的实施例的用于处理机器学习模型的方法300的流程图;
[0011]
图4图示了根据本公开的实施例的用于将计算图划分为多个部分方法400的流程图;
[0012]
图5图示了适于用来实施本公开内容的实施例的示例设备500的示意性框图。
[0013]
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
[0014]
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0015]
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
[0016]
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
[0017]
在使用机器学习模型处理数据时,最初采用数据并行的方式进行。通过这种方式,每个机器上都运行机器学习模型来处理部分数据。然而,由于机器学习模型的发展,单个的计算设备已经难以运行整个机器学习模型。因此,模型并行的方式被用来运行较大的且复杂的机器学习模型。
[0018]
程序开发人员通常使用特定框架编写机器学习模型程序,并逐层定义神经网络。因此,在采用模型并行方式处理机器学习模型时,通常把机器学习模型中的不同的层分布到不同的计算设备上。然而,框架或编译器在对机器学习模型程序进行编译时,通常生成单个二进制程序。此时的程序已经具有非常少的关于如何组织层的信息。此时,框架和开发人员很难将整个计算任务从这个单个二进制程序逐层拆分到不同的计算节点中。
[0019]
此外,在不同神经网络中采用不同的参数格式组织,诸如卷积神经网络cnn和递归神经网络rnn中参数格式并不相同。即使在相同类型的神经网络(例如cnn)中,由于层的数目不同和层中的节点不同,不同的划分方案也将导致不同的参数格式。因此,机器学习模型的模型并行很难实现。
[0020]
为了解决上述问题,本公开提出了一种用于处理机器学习模型的方法。在该方法中,获得由源语言编写的机器学习模型的中间表示。然后基于中间表示来生成计算图。管理器按照计算图中节点的入度来将计算图划分为多个有顺序的部分,使得可以按序执行多个部分,其中各部分中的函数可以被并行执行。通过上述方法,机器学习模型的处理是在函数级别,而非在指令级别。因此,机器学习模型的处理更有效并且更通用可行。而且该方法不需要深度学习模型的层间和层内通信,也不需要划分参数张量和误差张量等。此外,该自动
划分方法在时间和空间上更有效,并且可以在运行机器学习模型之前进行划分,节省了训练时间。
[0021]
下面图1图示了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图。
[0022]
如图1所示,在示例环境100中,机器学习模型的中间表示102是由源语言编写的机器学习模型得到的。在一些实施例中,源语言编写的机器学习模型可以采用不同的源语言编写,这些源语言例如可以包括:cuda、java、python、c++、fortran、ada和c#等。在一些实施例中,源语言编写的机器学习模型可以由不同的框架确定的。上述示例仅是用于描述本公开,而非对本公开的具体限定。
[0023]
在一些实施例中,机器学习模型的中间表示102可以由编译器对由源语言编写的机器学习模型进行编译获得。编译是将以编程语言编写的源代码/原始代码转换成目标架构的机器代码或本地代码的过程。中间表示102是编译器或虚拟机内部使用的用于表示源代码的数据结构或代码,并且与源语言和目标语言无关。在一些实施例中,机器学习模型的中间表示102可以通过其他方式获得,例如编程人员依据编译器的编译规则将由源语言编写的机器学习模型编写为机器学习模型的中间表示102。上述示例仅是用于描述本公开,而非对本公开的具体限定。可以采用任意合适的方式获得由源语言编写的机器学习模型的中间表示102。
[0024]
在一些实施例中,机器学习模型的中间表示102可以由结构化文本描述。例如,中间表示102可以包括以javascript对象简谱(json)或者可扩展标记语言(xml)格式描述的机器学习模型的中间表示。图1中所示的机器学习模型的中间表示102仅是用于说明本公开,而非对本公开的具体限定,本领域技术人员可以依据需要以任意合适的语言来描述机器学习模型的中间表示。
[0025]
机器学习模型的中间表示102被传送到管理器。管理器用于对接收的机器学习模型的中间表示102进行处理以实现对机器学习模型的划分。管理器可以以软件或硬件实现。
[0026]
管理器可以基于机器学习模型的中间表示102来生成计算图104。计算图104中的节点表示机器学习模型中的函数。计算图104还包括函数之间的依赖关系。例如,计算图104中的有向边表示与有向边的终点相对应的函数的输入依赖于与有向边的起点相对应的函数的输出。备选地或附加地,计算图104为有向无环图。
[0027]
如图1所示,由机器学习模型的中间表示102获得的计算图104包括:节点106、节点108、节点110、节点112、节点114、节点116、节点118、节点120和节点122。在该计算图104中每个节点表示机器学习模型中的一个函数,节点间的连线表示函数之间的依赖关系。例如,节点106的输出传给节点112,节点110的输出也传递给节点112,因此节点112依赖于节点106和节点110。图1中的计算图104仅是作为示例来描述计算图。计算图中的节点数目和计算图的结构可以基于机器学习模型的中间表示102设置为任意合适的形式。
[0028]
管理器会将从机器学习模型的中间表示102生成的计算图104划分为有序的多个部分:第一部分124,第二部分126,第三部分128,第四部分130,第五部分132。在一些实施例中,管理器将基于计算图104中节点的入度来划分计算图104,一个节点的入度表示指向该节点的有向边的数目。
[0029]
管理器然后将获得的第一部分124、第二部分126、第三部分128、第四部分130和第
五部分132用于机器学习模型的部署和执行134。各个部分在执行时顺序执行,各个部分中的函数可以并行执行。
[0030]
上面结合图1描述了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100。图2图示了根据本公开的实施例的计算图200的示意图。
[0031]
作为示例,图2中示出了基于机器学习模型的中间表示获得的包括十一个节点的计算图200:节点a 202、节点b 204、节点c 206、节点d 208、节点e 210、节点f 212、节点g 214、节点h 216、节点i 218、节点j 220和节点k 222。在该计算图中每个节点表示机器学习模型中的一个函数,节点间的连线表示函数之间的依赖关系。例如,节点a 202的输出传给节点f 212,节点b 214的输出也传递给节点f 212,因此节点f 212依赖于节点a和节点b 204。图2仅是作为示例来描述计算图。计算图中的节点数目和计算图的结构可以基于需要设置为任意合适的形式。
[0032]
在计算图200中,节点a 202、节点b204、节点c 206、节点d 208和节点e 210没有指向其的有向边,因此节点a 202、节点b204、节点c 206、节点d 208和节点e 210的入度为0。节点f 212和节点g 214分别有两个有向边指向它们,因此节点f 212和节点g 214的入度为2。类似地,节点h 216的入度为2,节点i 218的入度为1,节点j 220的入度为2,节点k 222的入度为1。
[0033]
上面图2图示了根据本公开的实施例的计算图200的示意图。下面将结合图2来描述图3的用于处理机器学习模型的方法300。
[0034]
在框302处,管理器获得由源语言编写的机器学习模型的中间表示,其中该机器学习模型的中间表示与源语言和目标语言无关并且包括结构化的文本。
[0035]
在一些实施例中,机器学习模型的中间表示可以由编译器对由源语言编写的机器学习模型进行编译获得。编译是将以编程语言编写的源代码/原始代码转换成目标架构的机器代码或本地代码的过程。中间表示102是编译器或虚拟机内部使用的用于表示源代码的数据结构或代码,并且与源语言和目标语言无关。
[0036]
在一些实施例中,机器学习模型的中间表示可以通过其他方式获得,例如编程人员依据编译器的编译规则将由源语言编写的机器学习模型编写为机器学习模型的中间表示。上述示例仅是用于描述本公开,而非对本公开的具体限定。可以采用任意合适的方式获得由源语言编写的机器学习模型的中间表示。
[0037]
在一些实施例中,机器学习模型的中间表示可以由结构化文本描述。例如,中间表示可以包括以javascript对象简谱(json)或者可扩展标记语言(xml)格式描述的机器学习模型的中间表示。
[0038]
在框304处,管理器基于机器学习模型的中间表示生成计算图,计算图中的节点表示与机器学习模型有关的函数,计算图中的有向边表示函数之间的依赖关系。
[0039]
机器学习模型的中间表示中存在函数间的输入和输出的依赖关系。管理器可以基于该函数依赖关系来生成计算图。
[0040]
在一些实施例中,计算图中的节点表示机器学习模型中的函数。计算图中的有向边表示与有向边的终点相对应的函数的输入依赖于与有向边的起点相对应的函数的输出。备选地或附加地,计算图为有向无环图。
[0041]
在框306处,管理器将计算图划分为有顺序的多个部分,使得多个部分将按照顺序
被执行并且每个部分中的节点所对应的函数能够被并行执行。管理器将生成的计算图进行划分,将其划分为需要顺序执行的多组函数,每组函数中的函数并不相互依赖,可以并行执行。对于将计算图划分为多个部分的过程将在下面结合图4进行详细描述。
[0042]
如图2所示,计算图200可以被划分成多个部分,其中第一部分为节点a 202、节点b204、节点c 206、节点d 208和节点e 210,第二部分为节点f212、节点g 214,第三部分节点h 216,第四部分节点i 218,第五部分节点j 220,第六部分节点k 222。上述多个部分需要顺序执行,因为后面一个部分中的函数的输入需要依赖于前面部分中函数的输出,而各部分中的函数可以并行执行。
[0043]
通过上述方法,处理机器学习模型的处理是在函数级别进行,而非在指令级别。使得机器学习模型的处理更有效并且更通用可行,并且使得不需要在深度学习模型的层间和层内进行通信,也不需要划分参数张量和误差张量等。此外,该自动划分方法在时间和空间上更有效,并且可以在运行机器学习模型之前进行划分,节省了机器学习模型的训练时间。
[0044]
上面结合图3描述了根据本公开的实施例的用于处理机器学习模型的方法300的流程图,下面结合图4详细描述图3框306中用于划分计算图的过程,其中图4中图示了用于将计算图划分为多个部分的方法400。
[0045]
在框402处,管理器确定计算图的多个节点中的至少部分节点的入度,其中一个节点的入度表示指向该节点的有向边的数目。在计算图中,每个节点均具有一些有向边,例如起点为该节点的有向边或终点为该节点的有向边。为了划分节点,采用节点的入度来对计算图进行划分,即通过确定终点为该节点的有向边的数目来对节点进行划分。在一些实施例中,该计算图为有向无环图。
[0046]
如图2所示,在计算图200中,节点a 202、节点b204、节点c 206、节点d 208和节点e 210没有指向其的有向边,因此节点a 202、节点b204、节点c 206、节点d 208和节点e 210的入度为0。节点f 212和节点g 214分别由两个有向边指向它们,因此节点f 212和节点g 214的入度为2。类似地,节点h 216的入度为1,节点j 220的入度为2,节点k 222的入度为1。
[0047]
在框404处,管理器选择计算图的第一部分,第一部分中的每个节点具有预定的阈值入度。在一些实施例中,阈值入度为零。管理器在确定了计算图中的每个节点的入度后,可以从所有节点中选取具有阈值入度的节点作为选取的计算图的第一部分。
[0048]
如图2所示,从计算图中选取阈值入度为0的节点为第一部分。因此,节点a 202、节点b204、节点c 206、节点d 208和节点e 210被选择作为第一部分。
[0049]
在框406处,管理器移除计算图中与第一部分中的节点有关的有向边和第一部分,以更新计算图。管理器在选择出节点的第一部分之后,为了选取其他有序的部分,将计算图中的第一部分中的节点和与节点有关的有向边去掉来形成更新的计算图,并更新节点的入度。
[0050]
如图2所示,管理器在划分计算图时,选入度为0的节点作为第一组。然后入度为0的节点被去掉,即去掉节点a 202、节点b204、节点c 206、节点d 208和节点e 210。管理器还删除与第一组中的节点有关的有向边以形成更新的计算图。此外,管理器调整更新的计算图中的节点的入度。
[0051]
在框408处,管理器确定更新的计算图中是否还包括节点。如果在更新的计算图中不包括节点,则在框410处,管理器确定完成对计算图的划分。
[0052]
如果更新的计算图中还包括节点,则操作返回到框404来将更新后的计算图作为要处理的计算图。然后管理器基于节点的入度从更新后的计算图中选出入度为0的节点作为第二组,例如图2中的节点f 212和节点g 214。然后依据上述方式进行迭代处理,直到所有的节点均被划分。
[0053]
最终,计算图200可以分为多个部分,其中第一部分为节点a 202、节点b204、节点c 206、节点d 208和节点e 210,第二部分为节点f212、节点g 214,第三部分节点h 216,第四部分节点i 218,第五部分节点j 220,第六部分节点k 222。由于后面的一部分中的函数的输入依赖于前面部分的函数的输出,因此,各部分要顺序执行。然而,各部分中的节点之间并不存在依赖关系,因此可以并行执行。
[0054]
通过上述方法,处理机器学习模型的在函数级别对机器学习模型进行了划分,使得机器学习模型的处理更有效并且更通用可行。此外,该划分时间复杂度较低,而且也不需要过多的辅助数据,在空间上更有效。
[0055]
图5示出了可以用来实施本公开内容的实施例的示例设备500的示意性框图。例如,用于用于图1中的管理器可以由设备500来实施。如图所示,设备500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序指令,来执行各种适当的动作和处理。在ram 503中,还可存储设备500操作所需的各种程序和数据。cpu 501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0056]
设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0057]
上文所描述的各个过程和处理,例如方法300和400可由处理单元501执行。例如,在一些实施例中,方法300和400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序被加载到ram 503并由cpu 501执行时,可以执行上文描述的方法300和400的一个或多个动作。
[0058]
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
[0059]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0060]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0061]
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0062]
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0063]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0064]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0065]
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动
作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0066]
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1