CN114330735A - 处理机器学习模型的方法、电子设备和计算机程序产品 - Google Patents
处理机器学习模型的方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN114330735A CN114330735A CN202011068896.9A CN202011068896A CN114330735A CN 114330735 A CN114330735 A CN 114330735A CN 202011068896 A CN202011068896 A CN 202011068896A CN 114330735 A CN114330735 A CN 114330735A
- Authority
- CN
- China
- Prior art keywords
- execution
- portions
- computational graph
- node
- nodes
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开的实施例涉及处理机器学习模型的方法、电子设备和计算机程序产品。该方法包括:获取计算图,其中节点表示与机器学习模型有关的函数,有向边表示函数之间的依赖关系;确定计算图的有顺序的多个部分,它们将按照该顺序被执行并且每个部分中的节点所对应的函数能够被并行执行;以及向多个部分分配用于执行相应部分中的节点所对应的函数的执行实例,被分配给每个部分的执行实例的数目与执行该部分中的节点所对应的函数所需的时间相关联。使用本公开的技术方案,可以通过动态调节每个部分中的执行实例的数目、充分利用每个处理单元的计算资源以及尽可能保存更少的模型参数来促进机器学习模型的并行计算以及提高处理机器学习模型的效率。
Description
技术领域
本公开的实施例总体上涉及人工智能领域,具体地涉及处理机器学习模型的方法、电子设备和计算机程序产品。
背景技术
近年来,随着人工智能技术的进步,机器学习或深度学习(DL)已经推动了许多领域的发展。与此同时,机器学习模型也变得越来越复杂,需要使用数据集越大,因此执行这样的机器学习模型需要更多的计算资源。目前,由于诸如中央处理单元等处理单元的计算能力以及与外围计算设备之间通信带宽的限制,单个机器的计算资源往往难以满足大规模机器学习模型的要求,从而无法有效地部署机器学习模型。
发明内容
本公开的实施例提供了管理磁盘的方法、电子设备和计算机程序产品。
在本公开的第一方面中,提供了一种处理机器学习模型的方法。该方法包括:获取计算图,所述计算图中的节点表示与所述机器学习模型有关的函数,所述计算图中的有向边表示所述函数之间的依赖关系;确定所述计算图的有顺序的多个部分,所述多个部分将按照所述顺序被执行并且每个部分中的节点所对应的函数能够被并行执行;以及向所述多个部分分配用于执行相应部分中的节点所对应的函数的执行实例,被分配给每个部分的执行实例的数目与执行所述部分中的节点所对应的函数所需的时间相关联。
在本公开的第二方面中,提供了一种电子设备。该设备包括:至少一个处理单元;以及至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:获取计算图,所述计算图中的节点表示与所述机器学习模型有关的函数,所述计算图中的有向边表示所述函数之间的依赖关系;确定所述计算图的有顺序的多个部分,所述多个部分将按照所述顺序被执行并且每个部分中的节点所对应的函数能够被并行执行;以及向所述多个部分分配用于执行相应部分中的节点所对应的函数的执行实例,被分配给每个部分的执行实例的数目与执行所述部分中的节点所对应的函数所需的时间相关联。
在本公开的第三方面中,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行使得机器执行根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的实施例的关键特征或必要特征,也无意限制本公开的实施例的范围。
附图说明
通过结合附图对本公开的示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开的示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图;
图2示出了根据本公开的实施例的处理机器学习模型的方法200的流程图;
图3示出了根据本公开的实施例的将计算图划分为多个部分的方法300的流程图;
图4A至图4D分别示出了根据本公开的实施例的执行实例分配过程401至404的示意图;以及
图5示出了可以用来实施本公开的实施例的示例设备500的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以按照各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,例如,“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在使用机器学习模型处理数据时,推理应用可以同时针对许多用户设备,例如,移动电话或自动驾驶车辆,提供服务。从推理应用的角度来看,所有这些数据帧都是在来自相同或不同用户设备的其他数据帧上具有独立推理结果的应用程序的独立样本。
在传统的机器学习模型处理中,可以采取N实例解决方案或者诸如流水线并行解决方案。然而,在采取N实例解决方案时,需要将整个模型加载到每个执行实例中,因此这种解决方案即使在具有充足的计算资源时,例如,在具有充足的中央处理单元核心或者诸如图形处理单元(GPU)的专用处理单元核心时,可以可能导致没有足够的存储器用于新的推理应用实例。尽管有些传统解决方案涉及对机器学习模型进行划分,但所采用的划分算法是基于每秒浮点运算次数(FLOP)的计算成本,但由于估计偏差或者由于计算图所限定的计算输入/输出限制,有可能导致所划分的不同部分的负载无法被平衡,从而导致流水线的停滞。同时,针对不同处理单元,例如,中央处理单元、专用处理单元或者现场可编程门阵列,用于每秒浮点运算次数计算的时间也是不同的。因此,这样的传统解决方案只能在同种类计算单元中使用。再者,这样的传统解决方案中的所划分的部分的数目是通过计算单元的数目而被静态确定的,因此有时由于计算图所限定的计算输入/输出限制,对部分的划分将非常难以实现。此外,上述传统解决方案中的流水线对于每个所划分的部分仅使用单个执行实例,因此即使在计算设备中具有充足的计算资源,这些计算资源也无法被流水线充分使用。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种处理机器学习模型的方案。采用这种方案,处理机器学习模型的流水线中的所划分的部分的数目是基于对计算图的划分,从而对于不同的计算图,流水线中的所划分的部分的数目是动态地。因此,本公开的处理机器学习模型的方案能够适应性地处理不同的机器学习模型,并且能够针对不同的机器学习模型向所划分出的不同部分分配与执行各个部分中的节点所对应的函数所需数目的执行实例。
图1示出了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100的示意图。根据本公开的实施例,图1中所示的计算图102是示例环境100中的初始输入数据。计算图102包括节点A 104、节点B 106、节点C 108、节点D 110和节点E 112。计算图102中的节点表示与机器学习模型有关函数。计算图102还包括函数之间的依赖关系,例如,计算图102中的有向边表示与有向边的终点相对应的函数的输入依赖于与有向边的起点相对应的函数的输出。
计算图102中每个节点表示机器学习模型中的一个函数,节点间的连线表示函数之间的依赖关系。例如,节点B 106的输出传给节点D 110,节点C 108的输出也传递给节点D110,因此节点D 110依赖于节点B 106和节点C 108。图1中的计算图102仅是作为示例来描述计算图。计算图中的节点数目和计算图的结构。此外,根据本公开的实施例,计算图102可以是有向无环图。
此外,在计算图102中,节点A 104没有指向其的有向边,因此节点A 104的入度为0。节点B 106和节点C 108各自有一个有向边指向它们,因此节点B 106和节点C 108的入度为1。节点D 110和节点E 112各自有两个有向边指向它们,因此节点D 110和节点E 112的入度为2。
根据本公开的实施例,示例环境100中可以包括管理器(未示出),管理器可以接收机器学习模型的中间表示并且生成计算图102。
机器学习模型的中间表示可以由编译器对由源语言编写的机器学习模型进行编译获得。编译是将以编程语言编写的源代码/原始代码转换成目标架构的机器代码或本地代码的过程。中间表示是编译器或虚拟机内部使用的用于表示源代码的数据结构或代码,并且与源语言和目标语言无关。在一些实施例中,机器学习模型的中间表示可以通过其他方式获得,例如,编程人员依据编译器的编译规则将由源语言编写的机器学习模型编写为机器学习模型的中间表示。应当理解,可以采用任意合适的方式获得由源语言编写的机器学习模型的中间表示。
机器学习模型的中间表示可以由结构化文本描述。例如,中间表示可以包括以Javascript对象简谱(JSON)或者可扩展标记语言(XML)格式描述的机器学习模型的中间表示。应当理解,本领域技术人员可以依据需要以任意合适的语言来描述机器学习模型的中间表示。
机器学习模型的中间表示被传送到管理器。管理器用于对接收的机器学习模型的中间表示进行处理以实现对机器学习模型的划分。管理器可以按照软件或硬件而被实现。
在本公开的处理机器学习模型的方案中,可以同时使用中央处理单元和专用处理单元,并且也可以支持仅使用中央处理单元或者仅使用专用处理单元。此外,在本公开的处理机器学习模型的方案中,每个所划分的部分可以由多个实例共同执行,也可以由多个处理单元的实例共同执行。最后,在本公开的处理机器学习模型的方案中,向每个所划分的部分所分配的执行实例是在运行时被动态地划分,并且分配是基于针对每个计算所需要的时间。
如图1中所示,计算图102由管理器划分为有序的部分集合114,部分集合114包括第一部分116、第二部分118、第三部分120、第四部分122和第五部分124。在图1中所示的部分集合114中,第一部分116包括节点A 104,第二部分118包括节点B 106、第三部分120包括节点C 108、第四部分122包括节点D 110并且第五部分124包括节点E 112。在一些实施例中,管理器将基于计算图102中的节点的入度来划分计算图102,一个节点的入度表示指向该节点的有向边的数目。
管理器然后为获得的第一部分116、第二部分118、第三部分120、第四部分122和第五部分124分配执行实例。在图1中所示的分配了执行实例的部分集合126中,第一部分116被分配了执行实例A1 128和执行实例A2 130,第二部分118被分配了执行实例B1 132、执行实例B2 134、执行实例B3 136、执行实例B4 138和执行实例B5 140,第三部分120被分配了执行实例C1 142、执行实例C2 144、执行实例C3 146和执行实例C4 148,第四部分122被分配了执行实例D1150、执行实例D2 152和执行实例D3 154,第五部分124被分配了执行实例E1 156。
根据本公开的实施例,为每个部分分配的执行实例的数目基于执行相应部分中的节点所对应的函数所需的时间。在本实施例中,执行实例A1 128和执行实例A2 130由中央处理单元1提供,执行实例B1 132、执行实例B2 134、执行实例B3 136、执行实例B4 138和执行实例B5 140由专用处理单元1和专用处理单元2提供,执行实例C1 142、执行实例C2 144、执行实例C3 146和执行实例C4 148由专用处理单元3提供,执行实例E1 156由中央处理单元2提供。
因此,在示例环境100中,能够实现针对不同的机器学习模型向所划分出的不同部分分配与执行各个部分中的节点所对应的函数所需数目的执行实例。
图2示出了根据本公开的实施例的处理机器学习模型的方法200的流程图。方法200可以由参照示例环境100而被描述但未示出的管理器来实现,也可以由其他适当的设备来实现。应当理解,处理机器学习模型的方法200还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的实施例的范围在此方面不受限制。
在框202,管理器获取计算图。根据本公开的实施例,计算图中的节点表示与机器学习模型有关的函数,计算图中的有向边表示函数之间的依赖关系。
在一些实施例中,计算图中的节点表示机器学习模型中的函数。计算图中的有向边表示与有向边的终点相对应的函数的输入依赖于与有向边的起点相对应的函数的输出。备选地或附加地,计算图为有向无环图。
在框204,管理器确定计算图的有顺序的多个部分。根据本公开的实施例,所确定的多个部分将按照前述顺序被执行并且每个部分中的节点所对应的函数能够被并行执行。管理器对计算图进行划分,将其划分为需要顺序执行的多组函数,每组函数中的函数并不相互依赖,因此可以被并行执行。对于将计算图划分为多个部分的过程将在下面结合图3被详细描述。
如图1中所示,计算图102可以被划分为部分集合114,部分集合114包括第一部分116、第二部分118、第三部分120、第四部分122和第五部分124。上述多个部分需要顺序执行,因为后面一个部分中的函数的输入需要依赖于前面部分中函数的输出,而各部分中的函数可以并行执行。
由于处理机器学习模型的处理是在函数级别进行,而非在指令级别进行,因此对计算图120的上述划分使得机器学习模型的处理更有效并且更通用可行,并且使得不需要在深度学习模型的层间和层内进行通信,也不需要划分参数张量和误差张量等。此外,上述划分方法在时间和空间上更有效,并且可以在运行机器学习模型之前进行划分,节省了机器学习模型的训练时间。
根据本公开的一些实施例,管理器还可以对划分出的多个部分进行进一步划分。管理器可以确定待分配一个部分的执行实例,如果这些执行实例来自多个处理单元,则管理器可以将这一个部分分为多个子部分,并且向每个子部分分配执行实例,被分配给每个子部分的执行实例来自不同的处理单元,并且被分配给每个子部分的执行实例的数目与执行该子部分中的节点所对应的函数所需的时间相关联。例如,关于计算图102被划分成的部分集合114,管理器可以确定待分配给第二部分118的执行实例B1 132、执行实例B2 134、执行实例B3 136、执行实例B4 138和执行实例B5 140分别由专用处理单元1和专用处理单元2提供。这时,管理器可以将第二部分118划分为第一子部分和第二子部分,将由专用处理单元1提供的执行实例B1 132和执行实例B2 134分配给第一子部分,并且将由专用处理单元2提供的执行实例B3 136、执行实例B4 138和执行实例B5 140分配给第二子部分。
通过将一个部分进一步划分成多个子部分,可以更加细分每个处理单元所执行的函数。
在框206,管理器向在框204中确定的多个部分分配用于执行相应部分中的节点所对应的函数的执行实例。根据本公开的实施例,被分配给每个部分的执行实例的数目与执行该部分中的节点所对应的函数所需的时间相关联。
根据本公开的实施例,向在框204中确定的多个部分分配的执行实例可以来自由不同处理单元提供的执行实例池,提供执行实例池中的执行实例的处理单元例如可以包括中央处理单元和专用处理单元,并且这些执行实例可以例如是线程、进程等。由于所划分的每个部分中的节点所对应的函数对处理能力和计算量的要求不同,因此适合每个部分的执行实例的提供方也可以不同。因此,管理器可以基于一个部分中的节点所对应的函数,确定用于提供被分配给这一部分的执行实例的处理单元的类型,并且可以而后从执行实例池中向这一部分分配由所确定的类型的处理单元提供的执行实例,例如,由中央处理单元或者专用处理单元提供的执行实例。
根据本公开的实施例,管理器可以在执行所划分的部分中的节点所对应的函数时向这些部分分配用于执行相应部分中的节点所对应的函数的执行实例。管理器可以向在在框204中确定的计算图102的多个部分中的一个部分分配预定数目的执行实例,并且在执行该一个部分中的节点所对应的函数期间,调整被分配给该一个部分的执行实例。
根据本公开的一些实施例,管理器可以例如根据统计数据、对计算图102的分析或者机器学习来向在框204中确定的计算图102的多个部分中的每个部分分配足以执行每个部分中的节点所对应的函数的较多预定数目的执行实例。由于根据本公开的实施例的处理机器学习模型的方案采取流水线处理的方式,因此当一个数据帧进入某个部分时,会向这个数据帧分配执行实例来针对这一数据帧执行计算。同时,当一个执行实例完成了针对某个数据帧的计算之后,这个执行实例可以被用于进入这一部分的后续数据帧的计算。因此,根据本公开的实施例,在每个部分的计算中,当一个新数据帧进入这一部分后,首先确定是否有之前用于计算其他数据帧的执行实例已完成了计算而处于被释放状态,如果存在此类执行实例,则优先使用这些执行实例来用于新数据帧的计算,如果没有此类执行实例,则使用从未被使用的执行实例来用于新数据帧的计算。采取这种方式可以避免所有执行实例都被稀疏地使用,并且可以保证所分配的某些执行实例被连续地使用,从而可以提高这些执行实例的使用效率。
而后,管理器可以在执行每个部分中的节点所对应的函数期间,回收较多预定数目的执行实例、在执行相应部分中的节点所对应的函数期间未被使用的执行实例。每个部分中经过回收之后剩余的执行实例即为用于执行相应部分中的节点所对应的函数所需的执行实例。
应当理解,管理器向在框204中确定的计算图102的多个部分中的每个部分分配的较多预定数目的执行实例的数目也可以并不相同,而是可以由管理器根据统计数据、对计算图102的分析或者机器学习来向每个部分分配数目不同的执行实例。
采取这些实施例中的方式,可以保证处理机器学习模型的流水线的不间断运行,因此有助于高效处理机器学习模型。
根据本公开的另一些实施例,管理器可以向在框204中确定的计算图102的多个部分中的每个部分分配较少预定数目的执行实例。而后,管理器在执行每个部分中的节点所对应的函数期间,如果确定该预定数目少于执行一个部分中的节点所对应的函数所需要的执行实例的数目,则确定需要向该一个部分增加的执行实例的数目,并且随后向该一个部分分配所确定的数目的执行实例。
应当理解,管理器确定需要向该一个部分增加的执行实例的数目以及向该一个部分分配所确定的数目的执行实例可以被重复地执行。例如,管理器可以首先确定需要向该一个部分增加1个执行实例并且向该一个部分分配1个执行实例。而后,随着计算的进一步进行,管理器可以继续确定还需要向该一个部分增加1个执行实例并且进一步向该一个部分分配1个执行实例。
另外,管理器如果确定该预定数目少于执行一个部分中的节点所对应的函数所需要的执行实例的数目,也可以并不确定需要向该一个部分增加的执行实例的数目,而是通过直接向该一个部分分配另一预定数目的执行实例的方式来增加向该一个部分提供的执行实例的数目。该另一个预定数目可以与预定数目相同或者不同。
此外,管理器向在框204中确定的计算图102的多个部分中的每个部分分配的较少预定数目的执行实例的数目也可以并不相同,而是可以由管理器根据统计数据、对计算图102的分析或者机器学习来向每个部分分配数目不同的执行实例。
采取这些实施例中的方式,可以使得初始无需分配过多的执行实例,从而只需维持大小适度的执行实例池,因此有助于节省处理单元的计算资源。
上面结合图2描述了根据本公开的实施例的用于处理机器学习模型的方法200的流程图,下面结合图3详细描述图2框204中用于划分计算图的过程,其中图3图示了根据本公开的实施例的将计算图划分为多个部分的方法300的流程图
在框302处,管理器确定计算图的多个节点中的至少部分节点的入度,其中一个节点的入度表示指向该节点的有向边的数目。在计算图中,每个节点均具有一些有向边,例如起点为该节点的有向边或终点为该节点的有向边。为了划分节点,采用节点的入度来对计算图进行划分,即通过确定终点为该节点的有向边的数目来对节点进行划分。在一些实施例中,该计算图为有向无环图。
如图1所示,在计算图102中,节点A 104没有指向其的有向边,因此节点A 104的入度为0。节点B 106和节点C 108各自有一个有向边指向它们,因此节点B 106和节点C 108的入度为1。节点D 110和节点E 112各自有两个有向边指向它们,因此节点D 110和节点E112的入度为2。
在框304处,管理器选择计算图的第一部分,使得第一部分中的每个节点具有预定的阈值入度。在一些实施例中,阈值入度为零。管理器在确定了计算图中的每个节点的入度后,可以从所有节点中选取具有阈值入度的节点作为选取的计算图的第一部分。
如图1所示,从计算图102选取阈值入度为0的节点为第一部分。因此,节点A 104被选择作为第一部分。
在框306处,管理器移除计算图中与第一部分中的节点有关的有向边和第一部分,以更新计算图。管理器在选择出节点的第一部分之后,为了选取其他有序的部分,将计算图中的第一部分中的节点和与节点有关的有向边去掉来形成更新的计算图,并更新节点的入度。
如图1所示,管理器在划分计算图102时,选入度为0的节点作为第一部分。然后入度为0的节点被去掉,即去掉节点A 104。管理器还删除与第一部分中的节点有关的有向边以形成更新的计算图。此外,管理器调整更新的计算图中的节点的入度。
在框308处,管理器确定更新的计算图中是否还包括节点。如果在更新的计算图中不包括节点,则在框310处,管理器确定完成对计算图的划分。
如果更新的计算图中还包括节点,则操作返回到框304来将更新后的计算图作为要处理的计算图。然后管理器基于节点的入度从更新后的计算图中选出入度为0的节点作为第二部分,例如图2中的节点B 106。然后依据上述方式进行迭代处理,直到所有的节点均被划分。
最终,计算图102可以被划分为多个部分,第一部分116包括节点A 104,第二部分118包括节点B 106、第三部分120包括节点C 108、第四部分122包括节点D 110并且第五部分124包括节点E 112。由于后面的一部分中的函数的输入依赖于前面部分的函数的输出,因此,各部分要顺序执行。然而,各部分中的节点之间并不存在依赖关系,因此可以并行执行。
通过上述方法,处理机器学习模型的在函数级别对机器学习模型进行了划分,使得机器学习模型的处理更有效并且更通用可行。此外,该划分时间复杂度较低,而且也不需要过多的辅助数据,在空间上更有效。
根据本公开的实施例,管理器还可以分析划分的多个部分中的节点所对应的函数的计算所需要的参数。这是为了有助于让处理单元中的所有执行实例仅共享一个预训练参数的副本,以节省对存储器的需求。在一些实施例中,如果由于计算资源的限制而无法将用于某个函数的计算的所有执行实例容纳到单个处理单元中,管理器可以将所需的一些执行实例部署到其他处理单元中。在这种情况下,用于这个函数的计算的每个处理单元都将具有用于这个函数的计算所需的参数的副本。
图4A至图4D分别示出了根据本公开的实施例的执行实例分配过程401、402、403和404的示意图。在图4A至图4D中,标号429至445分别表示在时间T<0、T=0……T=15时计算图102被划分成的部分集合参与处理数据帧的情况。根据本公开的实施例,T的单位为1秒,但这一单位仅出于示例目的,而不构成对本公开的限定。在图4A至图4D中,标号116、118、120、122和124分别表示计算图102被划分成的第一部分、第二部分、第三部分、第四部分和第五部分。每个部分中的虚线或者实线的圆形表示向这一部分分配的执行实例,虚线圆形表示未被使用的执行实例,实线圆形表示正在用于执行函数的执行实例,实线源泉上的标号410至425分别表示在时间T0至T15进入针对机器学习模型的计算而被执行计算处理的数据帧0至数据帧15。
在由标号429指示的时间T<0,第一部分116被分配了8个执行实例,但此时没有数据帧进入针对机器学习模型的计算。
在由标号430指示的时间T=0,数据帧0 410进入了第一部分116,并且由未被使用过的第一个执行实例执行。
在由标号431指示的时间T=1,数据帧1 411进入了第一部分116,由于第一部分116的节点所对应的函数的执行时间为2秒,因此此时数据帧0 410尚未完成执行,于是数据帧1 411由第一部分116中的未被使用过的第二个执行实例执行。
在由标号432指示的时间T=2,数据帧2 412进入了第一部分116,由于第一部分116的节点所对应的函数的执行时间为2秒,因此此时数据帧0 410已经完成执行并且进入第二部分118。第二部分118同样被分配了8个执行实例,并且第二部分118的第一个执行实例开始执行数据帧0 410。同时,由于第一部分116中的第一个执行实例已经完成对数据帧0410的执行,因此其开始执行进入第一部分116的数据帧2 412。此时,由于每当一个新的数据帧进入第一部分116时,第一部分116都会有一个之前的执行实例完成执行函数、并且可以用于执行这一个新的数据帧,因此第一部分116不再需要使用其他未使用过的执行实例,因而达到了平衡状态。
在由标号433至436指示的时间T=3至时间T=6,数据帧3 413至数据帧6 416相继进入针对机器学习模型的计算,并且数据帧3 413和数据帧4 414已经完成在第一部分116中的执行并且进入第二部分118。由于第二部分118的节点所对应的函数的执行时间为5秒,因此数据帧0 410至数据帧4 414仍然在第二部分118中处于被执行状态。
在由标号437指示的时间T=7,数据帧7 417进入了第一部分116。由于第二部分118的节点所对应的函数的执行时间为5秒,因此此时数据帧0 410已经完成执行并且进入第三部分120。在时间T=6中执行数据帧0 410的第二部分118中的第一个执行实例此时用于执行在时间T=7完成在第一部分116中的执行并且进入第二部分118中的数据帧5 415。此时,由于每当一个新的数据帧进入第二部分118时,第二部分118都会有一个之前的执行实例完成执行函数、并且可以用于执行这一个新的数据帧,因此第二部分118不再需要使用其他未使用过的执行实例,因而达到了平衡状态。
在由标号438至440指示的时间T=8至时间T=10,数据帧8 418至数据帧10 420相继进入针对机器学习模型的计算,数据帧6 416至数据帧8 418已经完成在第一部分116中的执行并且进入第二部分118,数据帧1 411至数据帧3 413已经完成在第二部分118中的执行并且进入第三部分120。由于第三部分120的节点所对应的函数的执行时间为4秒,因此数据帧0 410至数据帧3 413仍然在第三部分120中处于被执行状态。
在由标号441指示的时间T=11,数据帧11 421进入了第一部分116。由于第三部分120的节点所对应的函数的执行时间为4秒,因此此时数据帧0 410已经完成执行并且进入第四部分122。在时间T=10中执行数据帧0 410的第三部分120中的第一个执行实例此时用于执行在时间T=11完成在第二部分118中的执行并且进入第三部分120中的数据帧4 414。此时,由于每当一个新的数据帧进入第三部分120时,第三部分120都会有一个之前的执行实例完成执行函数、并且可以用于执行这一个新的数据帧,因此第三部分120不再需要使用其他未使用过的执行实例,因而达到了平衡状态。
在由标号442和443指示的时间T=12和时间T=13,数据帧12 422至数据帧13 423相继进入针对机器学习模型的计算,数据帧10 420和数据帧11 421已经完成在第一部分116中的执行并且进入第二部分118,数据帧5 415和数据帧6 416已经完成在第二部分118中的执行并且进入第三部分120,数据帧1 411和数据帧2 412已经完成在第三部分120中的执行并且进入第四部分122。由于第四部分122的节点所对应的函数的执行时间为3秒,因此数据帧0 410至数据帧2 412仍然在第四部分122中处于被执行状态。
在由标号444指示的时间T=14,数据帧14 414进入了第一部分116。由于第四部分122的节点所对应的函数的执行时间为3秒,因此此时数据帧0 410已经完成执行并且进入第五部分124。在时间T=13中执行数据帧0 410的第四部分122中的第一个执行实例此时用于执行在时间T=14完成在第三部分120中的执行并且进入第四部分122中的数据帧3 413。此时,由于每当一个新的数据帧进入第四部分122时,第四部分122都会有一个之前的执行实例完成执行函数、并且可以用于执行这一个新的数据帧,因此第四部分122不再需要使用其他未使用过的执行实例,因而达到了平衡状态。
在由标号445指示的时间T=15,数据帧15 415进入了针对机器学习模型的计算的第一部分116。由于第五部分124的节点所对应的函数的执行时间为1秒,因此此时数据帧0410已经完成执行并且被用于针对机器学习模型的计算机器运算输出。在时间T=14中执行数据帧0 410的第五部分124中的第一个执行实例此时用于执行在时间T=15完成在第四部分122中的执行并且进入第五部分124中的数据帧1 411。此时,由于每当一个新的数据帧进入第五部分124时,第五部分124都会有一个之前的执行实例完成执行函数、并且可以用于执行这一个新的数据帧,因此第五部分124不再需要使用其他未使用过的执行实例,因而达到了平衡状态。此时,第一部分116、第二部分118、第三部分120、第四部分122和第五部分124均达到了平衡状态。
根据本公开的实施例,对数据帧执行的函数所需的时间并不一定是整数时间,而是也可以是非整数时间,例如,0.03秒。对于非整数时间的函数执行,如果有N个数据帧进入针对机器学习模型的计算,在极端情况下,针对最终负载的第K部分将会有N个实例,如果第K部分的节点所对应的函数的执行需要TK秒,则针对每个i≠K,阶段i将有TK/i个实例。
在参考图4A至图4D描述的根据本公开的实施例的执行实例分配过程401至404中,当第一部分116、第二部分118、第三部分120、第四部分122和第五部分124均达到平衡状态时,第一部分116、第二部分118、第三部分120、第四部分122和第五部分124分别使用了2个、5个、4个、3个和1个执行实例。由于初始向这几个部分分配的执行实例均为8个,因此这几个部分中分别有6个、3个、4个、5个和7个执行实例未被使用,此时管理器可以从被分配给第一部分116、第二部分118、第三部分120、第四部分122和第五部分124的执行实例中分别回收6个、3个、4个、5个和7个执行实例。
以上参考图1到图4A至图4D描述了根据本公开的实施例的设备和/或方法可以在其中被实施的示例环境100、根据本公开的实施例的处理机器学习模型的方法200、根据本公开的实施例的将计算图划分为多个部分的方法300以及根据本公开的实施例的执行实例分配过程401至404的相关内容。应当理解,上述描述是为了更好地展示本公开的实施例中所记载的内容,而不是以任何方式进行限制。
应当理解,本公开的实施例以及各个附图中所采用的各种元件的数目和物理量的大小仅为举例,而并不是对本公开的实施例的保护范围的限制。上述数目和大小可以根据需要而被任意设置,而不会对本公开的实施例的正常实施产生影响。
通过以上参考图1到图4A至图4D的描述,根据本公开的实施例的技术方案相对于传统方案具有诸多优点。例如,使用本公开的技术方案,可以通过动态调节每个部分中的执行实例的数目、充分利用每个处理单元的计算资源以及尽可能保存更少的模型参数来促进机器学习模型的并行计算以及提高处理机器学习模型的效率。
图5图示出了可以用来实施本公开的实施例的示例设备500的示意性框图。根据本公开的实施例,用于参照图1中的示例环境100而被描述但未示出的管理器可以由设备500来实施。如图所示,设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的例如方法200和方法300的各个过程和处理,可由处理单元501执行。例如,在一些实施例中,方法200和方法300可以被实现为计算机软件程序,其被有形地包含于例如存储单元508的机器可读介质中。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序被加载到RAM 503并由CPU 501执行时,可以执行上文描述的方法200和方法300的一个或多个动作。
本公开的实施例可以涉及方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是、但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的作为非穷举的列表的更具体的示例包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、例如通过光纤电缆的光脉冲的通过波导或其他传输媒介传播的电磁波、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开的实施例的操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以例如利用因特网服务提供方来通过因特网连接连接到外部计算机。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的实施例的各个方面。
这里参照根据本公开的实施例的方法、设备/系统和计算机程序产品的流程图和/或框图描述了本公开的实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种处理计算图的方法,所述方法包括:
获取计算图,所述计算图中的节点表示与所述机器学习模型有关的函数,所述计算图中的有向边表示所述函数之间的依赖关系;
确定所述计算图的有顺序的多个部分,所述多个部分将按照所述顺序被执行并且每个部分中的节点所对应的函数能够被并行执行;以及
向所述多个部分分配用于执行相应部分中的节点所对应的函数的执行实例,被分配给每个部分的执行实例的数目与执行所述部分中的节点所对应的函数所需的时间相关联。
2.根据权利要求1所述的方法,其中向所述多个部分分配执行实例包括:
基于所述多个部分中的第一部分中的节点所对应的函数,确定用于提供被分配给所述第一部分的执行实例的处理单元的类型;以及
向所述第一部分分配由所述类型的处理单元提供的执行实例。
3.根据权利要求1所述的方法,其中向所述多个部分分配执行实例包括:
确定待分配给所述多个部分中的第一部分的执行实例;
如果待分配给所述第一部分的执行实例来自多个处理单元,将所述第一部分分为多个子部分;以及
向每个子部分分配执行实例,被分配给每个子部分的执行实例来自不同的处理单元,被分配给每个子部分的执行实例的数目与执行所述子部分中的节点所对应的函数所需的时间相关联。
4.根据权利要求1所述的方法,其中向所述多个部分分配执行实例包括:
向所述多个部分中的第一部分分配预定数目的执行实例;并且
其中所述方法还包括:
在执行所述第一部分中的节点所对应的函数期间,调整被分配给所述第一部分的执行实例。
5.根据权利要求4所述的方法,其中调整被分配给所述第一部分的执行实例包括:
回收所述预定数目的执行实例中的、在执行所述第一部分中的节点所对应的函数期间未被使用的执行实例。
6.根据权利要求4所述的方法,其中调整被分配给所述第一部分的执行实例包括:
如果确定所述预定数目少于执行所述第一部分中的节点所对应的函数所需要的执行实例的数目,确定需要向所述第一部分增加的执行实例的数目;
向所述第一部分分配所确定的数目的执行实例。
7.根据权利要求1所述的方法,其中确定所述计算图的所述多个部分包括:
确定所述计算图的多个节点的入度,一个节点的入度表示指向该节点的有向边的数目;以及
基于所述入度来确定所述计算图的所述多个部分。
8.根据权利要求7所述的方法,其中基于所述入度来确定所述计算图的所述多个部分包括迭代地执行如下动作:
选择所述计算图的第一部分,使得所述第一部分中的每个节点具有预定的阈值入度;以及
移除所述计算图中与所述第一部分中的节点有关的有向边和所述第一部分,以更新计算图。
9.根据权利要求1至8中的任一项所述的方法,其中所述执行实例由以下至少一项提供:
中央处理单元;以及
专用处理单元。
10.一种电子设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:
获取计算图,所述计算图中的节点表示与所述机器学习模型有关的函数,所述计算图中的有向边表示所述函数之间的依赖关系;
确定所述计算图的有顺序的多个部分,所述多个部分将按照所述顺序被执行并且每个部分中的节点所对应的函数能够被并行执行;以及
向所述多个部分分配用于执行相应部分中的节点所对应的函数的执行实例,被分配给每个部分的执行实例的数目与执行所述部分中的节点所对应的函数所需的时间相关联。
11.根据权利要求10所述的设备,其中向所述多个部分分配执行实例包括:
基于所述多个部分中的第一部分中的节点所对应的函数,确定用于提供被分配给所述第一部分的执行实例的处理单元的类型;以及
向所述第一部分分配由所述类型的处理单元提供的执行实例。
12.根据权利要求10所述的设备,其中向所述多个部分分配执行实例包括:
确定待分配给所述多个部分中的第一部分的执行实例;
如果待分配给所述第一部分的执行实例来自多个处理单元,将所述第一部分分为多个子部分;以及
向每个子部分分配执行实例,被分配给每个子部分的执行实例来自不同的处理单元,被分配给每个子部分的执行实例的数目与执行所述子部分中的节点所对应的函数所需的时间相关联。
13.根据权利要求10所述的设备,其中向所述多个部分分配执行实例包括:
向所述多个部分中的第一部分分配预定数目的执行实例;并且
其中所述操作还包括:
在执行所述第一部分中的节点所对应的函数期间,调整被分配给所述第一部分的执行实例。
14.根据权利要求13所述的设备,其中调整被分配给所述第一部分的执行实例包括:
回收所述预定数目的执行实例中的、在执行所述第一部分中的节点所对应的函数期间未被使用的执行实例。
15.根据权利要求13所述的设备,其中调整被分配给所述第一部分的执行实例包括:
如果确定所述预定数目少于执行所述第一部分中的节点所对应的函数所需要的执行实例的数目,确定需要向所述第一部分增加的执行实例的数目;
向所述第一部分分配所确定的数目的执行实例。
16.根据权利要求10所述的设备,其中确定所述计算图的所述多个部分包括:
确定所述计算图的多个节点的入度,一个节点的入度表示指向该节点的有向边的数目;以及
基于所述入度来确定所述计算图的所述多个部分。
17.根据权利要求16所述的设备,其中基于所述入度来确定所述计算图的所述多个部分包括迭代地执行如下动作:
选择所述计算图的第一部分,使得所述第一部分中的每个节点具有预定的阈值入度;以及
移除所述计算图中与所述第一部分中的节点有关的有向边和所述第一部分,以更新计算图。
18.根据权利要求10至17中的任一项所述的设备,其中所述执行实例由以下至少一项提供:
中央处理单元;以及
专用处理单元。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行使得机器执行根据权利要求1至9中的任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011068896.9A CN114330735A (zh) | 2020-09-30 | 2020-09-30 | 处理机器学习模型的方法、电子设备和计算机程序产品 |
US17/082,867 US20220101194A1 (en) | 2020-09-30 | 2020-10-28 | Method, electronic device, and computer program product for processing machine learning model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011068896.9A CN114330735A (zh) | 2020-09-30 | 2020-09-30 | 处理机器学习模型的方法、电子设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114330735A true CN114330735A (zh) | 2022-04-12 |
Family
ID=80822745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011068896.9A Pending CN114330735A (zh) | 2020-09-30 | 2020-09-30 | 处理机器学习模型的方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220101194A1 (zh) |
CN (1) | CN114330735A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023212975A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京灵汐科技有限公司 | 映射的方法、电子设备、计算机可读存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020132833A1 (en) * | 2018-12-24 | 2020-07-02 | Intel Corporation | Methods and apparatus to process machine learning model in multi-process web browser environment |
US20230004365A1 (en) * | 2021-06-24 | 2023-01-05 | Marvell Asia Pte Ltd | Multistage compiler architecture |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652875B2 (en) * | 2012-10-29 | 2017-05-16 | Yahoo! Inc. | Systems and methods for generating a dense graph |
US20140130056A1 (en) * | 2012-11-05 | 2014-05-08 | Rational Systems Llc | Parallel Execution Framework |
US9208257B2 (en) * | 2013-03-15 | 2015-12-08 | Oracle International Corporation | Partitioning a graph by iteratively excluding edges |
CN109669775B (zh) * | 2018-12-10 | 2024-06-25 | 平安科技(深圳)有限公司 | 分布式任务调度方法、系统及存储介质 |
CN111814002B (zh) * | 2019-04-12 | 2024-06-04 | 阿里巴巴集团控股有限公司 | 一种有向图识别方法及系统和服务器 |
WO2021011914A1 (en) * | 2019-07-17 | 2021-01-21 | Google Llc | Scheduling operations on a computation graph |
US11153228B1 (en) * | 2019-12-11 | 2021-10-19 | Juniper Networks, Inc. | Synchronizing device resources for element management systems |
-
2020
- 2020-09-30 CN CN202011068896.9A patent/CN114330735A/zh active Pending
- 2020-10-28 US US17/082,867 patent/US20220101194A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023212975A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京灵汐科技有限公司 | 映射的方法、电子设备、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20220101194A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390387B (zh) | 对深度学习应用所用资源进行评估 | |
US20200334544A1 (en) | Method, device and computer program product for processing machine learning model | |
CN114330735A (zh) | 处理机器学习模型的方法、电子设备和计算机程序产品 | |
US10754709B2 (en) | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis | |
US7694290B2 (en) | System and method for partitioning an application utilizing a throughput-driven aggregation and mapping approach | |
CN106796522A (zh) | 用于更新源代码文件的系统和方法 | |
CN111507476A (zh) | 部署机器学习模型的方法、设备和计算机程序产品 | |
US10656970B2 (en) | Scheduling graph computing on heterogeneous processing resources based on energy efficiency | |
US8856060B2 (en) | Creating stream processing flows from sets of rules | |
CN111753983B (zh) | 神经网络模型的定制化方法、系统、设备和存储介质 | |
CN110058936B (zh) | 用于确定专用处理资源的资源量的方法、设备和计算机程序产品 | |
US11461291B2 (en) | Method, electronic device and computer program product for processing machine learning model | |
CN107526639B (zh) | 资源编排的方法、介质、装置和计算设备 | |
US11416289B2 (en) | Task scheduling method, electronic device, and computer storage medium | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
US10268461B2 (en) | Global data flow optimization for machine learning programs | |
CN111133458A (zh) | 增强神经网络 | |
Cecilia et al. | Enhancing GPU parallelism in nature-inspired algorithms | |
CN112270413A (zh) | 算子合并方法、装置、电子设备及存储介质 | |
CN113127430B (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
US20240104016A1 (en) | Intermediate Representation Method and Apparatus for Compiling Computation Graphs | |
US20180143812A1 (en) | Control flow graph analysis | |
CN114897664A (zh) | 图模型部署方法及装置、gpu和存储介质 | |
CN114428615B (zh) | Css编译方法、样式更新方法、装置、介质及设备 | |
US8543971B2 (en) | Specifying on the fly sequential assembly in SOA environments |
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 |