CN114008594A - 调度计算图上的操作 - Google Patents
调度计算图上的操作 Download PDFInfo
- Publication number
- CN114008594A CN114008594A CN202080044760.6A CN202080044760A CN114008594A CN 114008594 A CN114008594 A CN 114008594A CN 202080044760 A CN202080044760 A CN 202080044760A CN 114008594 A CN114008594 A CN 114008594A
- Authority
- CN
- China
- Prior art keywords
- node
- computational graph
- schedule
- nodes
- graph
- 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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- 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/08—Learning methods
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于调度在计算图上表示的操作。方法中的一个包括:由计算图系统接收生成用于处理计算图的调度的请求,获得表示计算图的数据,生成计算图的分隔器;以及生成调度以执行计算图中表示的操作,其中生成调度包括:利用零节点来初始化调度;对于分隔器中的每个节点:确定节点在计算图中是否具有任何前趋节点,当节点具有任何前趋节点时,将该前趋节点添加到调度,以及将该节点添加在调度中,以及将每个子图中的既不在分隔器中也不是计算图上的分隔器中的任何节点的前趋的每个节点添加到调度。
Description
相关申请的交叉引用
本申请要求2019年7月17日提交的美国专利申请No.62/875,433的优先权,其全部内容通过引用的方式并入本文中。
技术领域
本说明书涉及在执行计算图时优化峰值存储器使用。
背景技术
神经网络是采用非线性单元的一层或多层来预测所接收的输入的输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层的输入,即,下一隐藏层或输出层。网络的每一层根据相应参数集的当前值从所接收的输入生成输出。
为了允许神经网络对各种任务,例如,语音、语言和视觉处理任务,更好地执行,神经网络被设计为具有更大尺寸的层、更大量的层和/或越来越复杂和错综的数据相关性。然而,由于计算成本和所需的存储器容量高,所以难以训练大且复杂的神经网络。为了促进计算速度,在训练复杂神经网络模型时通常采用诸如GPU和AI加速器的专用硬件。在越来越近的神经网络中,当训练这些大模型时,硬件的峰值存储器容量达不到对存储器的峰值需求,从而将存储容量变成训练的瓶颈。
发明内容
本说明书总体上描述用于调度计算图的操作以由一个或多个设备执行以优化峰值存储器使用的技术。
根据一个方面,一种调度计算图的操作的方法包括:由计算图系统接收生成用于处理计算图的调度的请求,获得表示计算图的数据,生成计算图的分隔器,并且生成调度以执行计算图中表示的操作。该调度定义由计算图表示的根据排序来执行的操作序列。计算图包括多个节点和有向边,其中每个节点表示相应操作。从相应第一节点到相应第二节点的每个有向边表示由相应第二节点表示的第二操作需要通过执行由相应第一节点表示的第一操作而生成的至少一个输出作为输入。该分隔器满足从计算图中移除分隔器中的节点和将其他节点连接到分隔器的边使得计算图的剩余节点和边形成多个连接分量的特性。生成所述调度包括:(1)利用零节点来初始化调度;(2)对于分隔器中的每个节点,确定节点在计算图中是否具有任何前趋节点,当节点具有任何前趋节点时,将前趋节点添加到调度,以及将该节点添加在调度中,以及(3)将在计算图上既不在分隔器中也不是分隔器中的任何节点的前趋的每个子图中的每个节点添加到调度。
本说明书中描述的主题能够在特定实施例中实现以便实现以下优势中的一个或多个。
所描述的系统能够被用于在计算有向或非有向非循环图时,即,当在一个或多个计算设备上执行由该图表示的操作时,优化存储器使用。例如,所描述的技术能够被用于在计算用于训练大型和复杂神经网络的图形时优化存储器使用。为了在计算图时优化存储器使用,系统生成按照执行顺序指定图中表示的操作的序列的调度。系统生成的调度是有效的,并且通过利用重新具体化减少了计算图的峰值存储器使用,使得在执行期间的任何给定时间仅必要的操作输入和输出被保持在存储器中。一些实施方式当计算有向或非有向非循环图到给定存储器大小时,例如在特定硬件上可用的存储器时,能够被用于满足峰值存储器要求。
当生成调度时,系统仅重新排列执行每个操作的顺序,决定在存储器中保留哪个操作,如果这样的话,则在何时和多长时间保持操作。因为图中所表示的操作都没有被修改,所以这种调度操作的技术避免了在使用诸如重复使用存储器区域以及CPU与GPU存储器之间的通信等减少存储器使用的其他技术时存在的降低计算图的最终输出的精度的风险。
此外,与传统调度生成技术相比,能够在更快的时钟时间中生成调度。系统能够基于计算图的图特性生成调度,包括计算图的树分解输出的树宽度。该系统能够在根据该调度执行计算图的同时利用其他图特性来进一步降低存储器成本。
在附图和下面的描述中阐述了本说明书的主题的一个或多个实施例的细节。根据描述、附图和权利要求,主题的其他特征、方面和优点将变得明显。
附图说明
图1示出示例有向非循环计算图的示例的调度。
图2是示例操作调度系统的示意图。
图3A是有向非循环计算图的示例。
图3B是图3A中的计算图的示例性非有向对应物。
图3C是图3B中的非有向对应物的示例树分解。
图4是用于基于树分解来调度计算图的操作的示例处理的流程图。
图5是操作调度系统调度计算图的操作的示例处理的流程图。
图6图示基于路径分解来生成执行计算图中的操作的调度的示例处理。
图7图示修改计算图以便定义长脊(long spine)的示例处理。
图8图示用于基于路径分解来调度计算图的操作的示例处理。
具体实施方式
本说明书描述了一种被实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统,该系统调度用于处理输入计算图的操作以减少用于执行操作的峰值存储器要求。为了减少峰值存储器使用,系统能够接收表示操作和该操作对输入计算图中的其他操作的输入依赖性的输入计算图。然后,系统能够生成表示操作序列的调度,以便执行。系统能够通过识别操作之间的中间输入在哪里能够被重新具体化来生成调度,以减少或完全消除将中间输入存储在存储器中直到需要它们的需要。
有向非循环计算图能够表示用于通过神经网络处理输入的操作。神经网络能够被配置为接收任何种类的数字数据输入作为网络输入,并且基于网络输入生成任何种类的网络输出,即,任何种类的分值、分类或回归输出。例如,在图像分类中,如果神经网络的输入是图像或从图像中已经被提取的特征,则由神经网络针对给定图像生成的输出可以是对象类别集合中的每一个的分值,其中每个分值表示图像包含属于该类别的对象的图像的估计可能性。神经网络通过执行多个操作来处理输入以生成网络输出。每个操作能够接收零个或多个输入,并且能够生成输出。能够在图表示神经网络中被表示的操作的示例包括激活函数,例如,基于来自前一层的输入取中间变量并且生成用于下一层的输出的非线性映射、前向梯度传播操作,例如,与计算和存储每一层的中间变量和按从第一输入层到输出层的顺序的用于神经网络的输出有关的操作、后向梯度传播操作,例如,与计算和存储损耗函数相对于神经网络中的从输出层到第一输入层的每一层的参数的梯度有关的操作、以及优化操作,例如,由优化器使用的操作,诸如(随机)梯度下降、动量、RMSProp和Adam,以基于损耗函数的计算出的梯度来辅助更新神经网络的参数。任何给定操作的输入和输出能够是,例如,标量值、类别值、向量、矩阵或高阶张量。
图1示出示例有向非循环计算图100的调度。如图1所示,多个操作能够被表示为具有多个节点(103、105、107、109和111)和边(135、157、179、191、131和159)的有向非循环计算图100。计算图的每个节点表示多个操作中的相应操作。每个节点消耗来自其(多个)进入边的输入集合,对输入执行其相应操作,并且将操作结果输出到通过离开边连接到该节点的任何节点。例如,节点105将经由进入边135的节点103操作的输出作为输入,执行其相应操作,并且经由两个离开边157和159发送输出分别作为节点107和109的输入。通常,在整个计算期间,计算图的输入和输出都应当被存储在存储器中,并且计算节点的顺序,即,调度,将确定峰值存储器使用。如图1所示,当存储每个节点的输出占用一个存储器单元时,按{103,105,107,109,111}的顺序计算节点将需要四个存储器单元,而按{103,105,107,109,103,111}的顺序计算它们将仅需要三个存储器单元。后一种顺序在这里涉及将节点103的输出重新具体化,即,在需要它作为另一个节点的输入之前再次生成节点103的输出,而不是总是将它保持在存储器中。对操作的执行进行排序和可能使一些中间节点重新具体化的组合在本说明书中被称为调度。
图2示出包括树分解引擎215和调度引擎220的示例操作调度系统200。
操作调度系统200被实现为在实现以下描述的系统、组件和技术的一个或多个位置中的一个或多个计算机上的计算机程序。
操作调度系统200能够采用计算图205,例如,有向非循环图,作为输入。计算图205能够是有向非循环的。
树分解引擎215取输入计算图205的输入,并且执行树分解处理以生成多个集合的树分解输出230的(1)多个集合,多个集合中的每个集合包括计算图205的一个或多个节点,以及(2)连接多个集合中的每个集合的有向路径。简而言之,在(1)中的节点集合能够被称为“包”,并且在(2)中的有向路径能够被称为“树”。在此注意,通过对每个计算图应用一个或多个分解处理,该计算图能够具有多个不同的可能的树分解。
调度引擎220取原始计算图205和树分解输出230作为输入,并且输出用于计算图205的调度210。
更具体地,有向非循环计算图可以由G=(V,E)表示,其中V是包括计算图G的所有节点的节点集合,并且E是包括计算图G的所有有向边的边集合。对于节点集合V中的任意两个节点u和v,有向边表示(u,v)从u到v的数据依赖性。从u到v的数据依赖性意味着由节点u表示的操作生成输入到由节点v表示的操作的输出。因此,节点u操作必须在执行节点v操作之前被执行。
另外,节点中的一个或一些节点被指定为最终节点f集合。在结束对计算图的计算时,f中的节点需要被保持在存储器中,例如,因为f中的节点的输出是由计算图表示的机器学习模型的输出。在本说明书中,我们假设这些虚节点为出度零,即,节点集合f中的每个节点的输出将不会被同一图中的任何其他节点使用。
用于计算图的调度是属于V的节点序列,其具有以下特性:(1)最终节点集合f被表示在调度中,以及(2)调度中的每个节点仅在其所有前趋已经被添加到调度至少一次之后才发生。对于有向边(u,v),节点v的前趋是通过计算图中从u到v的外出路径连接的节点u。第二要求防止调度在调度与节点具有数据依赖性的计算图中的所有其它节点之前将该节点包括在调度中。如果节点的前趋节点具有其自己的一个或多个前趋,则那些前趋节点在调度中出现在该前趋节点之前,以此类推,直到到达没有前趋的节点,例如,接收计算图的输入的输入节点。
另外,节点能够不止一次地出现在调度中。如下所述,系统能够生成能够不止一次地将相同节点添加到调度的调度,从而以另外的计算时间换取减少的存储器需求来执行计算图。
调度自然意味着用于计算图G的时间和存储器界限。节点的长度包括执行该节点的对应操作所需的时间,并且调度的长度是计算图G的调度中的每个节点的长度的总和。因此,调度的长度的下限是一次执行计算图G的每个操作所需的时间。
通过在根据调度执行图时在任何给定时间步要求的最大存储器来定义调度的峰值存储器使用。通过在一个时间步对节点的所有直接前趋的张量输出的大小求和来定义在一个时间步所需的最大存储器。因此,在时间步需要被保持在存储器中的张量的集合取决于当前节点、当前节点的每个前趋、以及当前节点的每个前趋的所有前趋。
计算图G能够被分解成(1)多个集合,每个集合包括计算图的一个或多个节点(多个包)和(2)连接多个集合中的每个集合的路径(树)。每个包是计算图中的节点的子集,并且树是连接所有包的树结构。树是一种非有向非循环计算图,其中任何两个节点正好由一条边可连接,或者等价地,每个节点至多具有一个最近前趋。该分解被称为树分解,其满足以下三个特性:(1)原始计算图G中的每个节点在包中的至少一个中,(2)对于原始计算图中的每个有向边(u,v),该边的两个节点一起在至少一个包中出现,(3)对于原始计算图中的每个节点,包含相同节点的包形成树的连接子图。换句话说,节点能够被指配给多于一个包,并且包含给定节点的所有包必须形成树的连接子图。每个连接子图能够被视为子树。
如图3A所示,有向非循环计算图301具有节点A到J,并且边313是有向的,因为节点I是节点J的前趋(311)。在一些实现方式中,在执行树分解之前,系统通过移除计算图301中的边的方向来将有向计算图变换成非有向计算图。如图3B所示,基于计算图301的非有向计算图303中所有边的每条边都没有方向。图3C示出非有向计算图303的示例树分解输出305,其中树分解输出是(1)多个包和(2)连接这些包的树。树分解输出305满足树分解的3个特性:
(1)原始非有向计算图303中的每个节点在至少一个包中。例如,节点D在包331、333和335中。对于另一个示例,节点B在包333、335和337中。
(2)对于计算图303中的每条边,该边的两个端节点在树分解中被指配给相同的包至少一次。例如,计算图303中的边323具有两个端节点A和B,现在在树分解输出305中,节点A和B一起在包335中。又例如,计算图303中的边325连接两个端节点C和D,因此在树分解输出305中,节点C和D都出现在包333和包341中。
(3)对于被指配给多于一个包的任何节点,包含该节点的所有包能够形成子树。例如,包333、335和337同时包含节点B,并且包333、335和337以及连接这些包的边能够一起形成树分解输出305的连接分量子图,如图3C中的虚线套索所强调的。
计算图G的树宽度(treewidth)tw(G)是所有树分解输出的最小宽度,并且树分解输出的宽度被定义为最大包大小减1,其中给定包的包大小基于包中的节点数量。例如,树分解输出305的宽度是1。假设来自非有向计算图303的可能的树分解输出仅有两个,一个具有宽度2,另一个具有宽度5。然后,在三个树分解输出中,最小宽度是1,即,计算图303的树宽度tw(G)是1。
在一些实施方式中,系统保持宽度阈值,即,预定阈值,使得计算图G的任何树分解输出的宽度小于该宽度阈值。换句话说,系统不选择任何树分解输出,除非树具有小于树宽度的宽度。
分隔器是这样的节点集合:当以分隔器中的节点和链接到分隔器中的每个节点的边被移除的方式从计算图中移除时,分隔器将计算图的剩余节点和边,即,不在分隔器中的节点和仅连接不在分隔器中的节点的边,分离成使得剩余节点和边形成计算图的多个连接分量子图。每个连接分量子图包括多个利用边彼此连接的节点,但是没有连接分量子图被连接到任何其它连接分量子图。
用于树分解的分隔器是这样的包:当以分隔器中的节点和将来自其它包的节点连接到分隔器中的节点的边被移除的方式从树结构中被移除时,从剩余的包和边形成多个连接子树的树分解中的所有包中选择的包。
用于树分解的平衡分隔器是当如上所述从树结构中移除时,剩余包和边形成多个连接子树的分隔器,其中子树的大小至多是树分解的原始树大小的一半。
在一些实施方式中,系统能够生成连接分量子图的分区,其中每个分量子图在尺寸上比原始图小得多。
例如,系统能够通过针对计算图的树分解生成平衡分隔器并且然后从树分解中移除平衡分离符来做这个操作。
然后,系统能够通过递归地生成用于由分区产生的每个连接分量子图的调度来高效地生成用于计算图的调度。递归可以被重复直到满足阈值条件。阈值条件可以是,例如,用于执行有向或非有向非循环图的峰值存储器需求降到与用于在特定硬件上执行有向或非有向非循环图的可用存储器相对应的阈值以下。
在一些实施方式中,能够针对每个连接分量子图并行地执行该处理。由于分区的特性,每个连接分量子图彼此独立,即,不通过任何边连接在一起,因此系统能够独立地生成用于每个分量子图的调度,而没有数据依赖性问题。
然后,系统能够将针对每个子图获得的每个调度添加到有效最终调度。
被配置成执行计算图的系统或其他设备然后能够根据最终调度来执行计算图。
图4图示用于基于树分解来调度计算图的操作的示例处理400的流程图。为了方便起见,处理400将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,被适当编程的操作调度系统,例如图2的操作调度系统200,能够执行处理400。
为了使用处理400调度操作,系统取(a)非循环计算图G和(b)树分解作为输入,该树分解具有(1)多个包和(2)通过树分解处理从计算图G获得的树。在一些实施方式中,该系统取(a)作为限制集合的计算图G的节点子集、(b)基于该限制集合的树分解、(c)作为计算集合的限制集合的节点子集、以及(d)计算图G作为输入。即,根据调度执行计算图的操作的设备能够使用调度中的任何给定节点的注释来确定是将节点所表示的操作的输出存储在存储器中还是一旦它已经被另一操作作为输入消耗就丢弃它。在一些实施方式中,向节点添加注释能够通过定义与节点相关联的标量变量来执行,该标量变量描述是否将节点的输出保存在存储器中。
如前所述,系统找到计算图G的平衡分隔器(410)。平衡分隔器在移除之后能够使树分解中的剩余包和边形成连接分量子图集合(子树),其中其大小至多是树分解的原始树大小的一半。
然后,系统在从所有包中移除平衡分隔器和与该分隔器相关联的所有节点之后确定连接分量子图集合(420)。包含来自计算图G的任何相同节点的包能够使用树分解的对应树边来形成连接分量子图。由于分隔器被标识的方式,如果节点在两个或更多个连接分量子图中,则该节点也必须在平衡分隔器中。因此,保证了剩余节点和边能够在移除平衡分隔器之后形成连接分量子图集合。
接下来,系统初始化调度列表(430)。通常,调度列表被初始化为空集。
此后,系统在分隔器中找到每个节点的所有前趋,并且将可选地具有对应注释的节点添加到调度(440)。例如,系统能够根据随机顺序或根据当生成调度时的固定顺序在分隔器中的节点上迭代。具体地,对于分隔器中的给定节点,系统找到该节点的所有直接前趋并且将具有注释的直接前趋添加到调度,然后系统找到该直接前趋的所有前趋并且将具有注释的所有前趋添加到调度,并且最终系统将具有注释的节点添加到调度中直到找到该节点的所有前趋并且将其添加到调度。
此外,系统找到每个连接分量子图中的所有最终节点并且将它们添加到调度(450)。所有最终节点都是不在分隔器中的节点以及不是任何其它节点的前趋。每个最终节点也将可选地与注释一起被添加到调度。
最后,系统通过释放不需要的平衡分隔器节点来优化调度长度(460)。不需要的平衡分隔器节点是没有被添加到调度而最初由步骤410包括在平衡分隔器中的节点。
在一些实施方式中,能够基于分治策略递归地调用步骤440和450。例如,当步骤440第一次被执行时,一些内部参数,例如限制集合和计算集合,被更新。然后系统通过将更新的内部参数作为输入从步骤410再一次调用并且执行相同处理。当系统递归地调用该处理时,更新的内部参数能够影响搜索前趋的范围和/或跟踪调度。当满足某些标准时,系统递归地停止调用该处理。例如,标准能够是未定义的最后递归调用的输入参数。作为另一个示例,标准可以包括用于执行调度的峰值存储器需求降到阈值以下,例如用于在特定硬件上执行调度的可用存储器。类似地,对于步骤450,系统从步骤410再一次递归地调用并且执行相同处理。递归调用保证树分解的大小在每个递归调用减小,从而保证有效调度,并且每个操作至少被执行一次。
图5进一步图示操作调度系统调度计算图的操作的示例处理500的流程图。处理500将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,被适当编程的操作调度系统,例如图2的操作调度系统200,能够执行处理500。
操作调度系统接收生成用于处理计算图的调度的请求(510)、获得表示计算图的数据(520)、生成计算图的分隔器(530)、并且然后生成执行计算图中表示的操作的调度(540)。为了生成调度,系统首先初始化计算图中要被执行的操作的调度(540a),然后对于分隔器中的每个节点,确定该节点是否具有任何前趋节点,如果有的话将前趋节点添加到调度,并且将该节点添加到调度中(540b),并且最终将每个连接分量子图中的既不在分隔器中也不是对计算图上的该分隔器中的任何节点的前趋的每个节点添加到调度(540c)。在步骤530中生成分隔器在上面图4的步骤410中被更详细地描述。在步骤540b中将来自分隔器的节点的前趋添加到调度在上面图4的步骤440中被更详细地描述。将既不在分隔器中也不是前趋的节点添加到调度中在上面图4的步骤450中被更详细地描述。
在一些实施方式中,系统能够替代地使用路径分解,即,替代树分解,来生成用于计算图的调度。在这些实施方式中,计算图定义了遍历计算图中的每个节点的有向路径。
计算图G中的路径是计算图中的不同节点的序列,使得该序列中的每对连续节点具有来自计算图的连接它们的边。当序列中的每对节点由有向边连接时,路径被称为有向路径,其中该边从序列中的较早节点走到序列中紧接在该节点之后的节点。在本说明书中,遍历计算图中的每个节点的有向路径也被称为计算图的长脊(long spine)。在一些实施方式中,如果计算图不包括长脊,则系统能够例如通过添加节点和边来修改计算图,使得计算定义长脊。
对于定义长脊的有向非循环计算图,系统能够基于计算图的长脊来生成执行操作的调度。对于没有定义长脊的有向非循环计算图,系统能够通过首先生成用于计算图的路径分解来生成执行该图中的操作的调度。路径分解是计算图的特定树分解,其指定(1)多个集合,每个集合包括计算图的一个或多个节点(多个包)和(2)通过多个集合中的每个集合的有向路径(树),但是其具有另外的要求,即该树定义顺序地遍历多个包中的每个包的路径。根据由路径分解定义的路径对路径分解的多个节点集合进行排序。例如,将多个包定义为路径分解中的包的集合X,例如,X={X1,X2,X3},其中,X1,X2,X3按使得包X1在该路径中在包X2(其在包X3之前)之前的顺序,表示相应包,或路径分解中的多个集合中的节点集合。
在计算图没有定义长脊的一些实施方式中,系统能够修改计算图以定义长脊,使得路径分解仍然能够从计算图被形成。在一实施方式中,在控制其路径分解的路径宽度的同时,长脊能够被添加到计算图。这里注意,计算图G的路径宽度pw(G)的定义是计算图G的任意路径分解的最小宽度,与树宽度tw(G)的定义类似。
图6图示了基于路径分解来生成执行计算图中的操作的调度的示例处理600。该处理600将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,被适当编程的操作调度系统,例如图2的操作调度系统200,能够执行该处理600。
首先,调度操作系统接收生成用于处理计算图的调度的请求(610),该调度定义计算图中的节点序列,并且每个节点表示操作。
然后,系统获得表示具有多个节点和有向边的计算图的数据(620)。每个有向边将前一节点连接到将前一节点的输出作为输入的连续节点。
接下来,系统确定计算图是否已经定义了遍历计算图中的每个节点的长脊(630)。
如果计算图已经定义了长脊,则系统生成用于计算图的路径分解(640),其中路径分解包括(1)多个节点集合(多个包)和(2)通过多个节点集合中的每个节点集合的有向路径。
如果计算图尚未定义长脊,则系统修改计算图以添加遍历计算图中的每个节点的新长脊(680)。下面将更详细地描述在控制计算图的路径分解的路径宽度的同时将长脊添加到计算图。一旦长脊被添加到计算图,系统就如上所述生成用于该计算图的路径分解(640)。
接下来,系统初始化执行计算图中的操作的调度(650)。例如,初始调度能够是具有零节点的空集。
此后,系统从路径分解中的所有节点集合,即,从所有包中识别特定节点集合,即,包(660)。
对于特定节点集合中的每个节点并且按根据计算图中的长脊的顺序,系统确定该节点是否具有任何前趋,将该节点的每个前趋添加到调度,并且最终将该节点添加到调度(670)。下面将更详细地描述将这些节点添加到调度。
如上所述,在控制其路径分解的宽度的同时长脊能够被添加到计算图。在一些实施方式中,将长脊添加到仅使计算图的路径宽度增加因数2。
图7图示出修改计算图以便在定义到该计算图的长脊同时维持计算图的低路径宽度的示例处理700。该处理700将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,被适当编程的操作调度系统,例如图2的操作调度系统200,能够执行该处理700。
系统首先将节点u添加到计算图,将其连接到所有其它节点,并且将其添加到路径分解中的所有节点集合(所有包)(710),然后系统将节点u设置为路径分解中的有向路径的当前最终节点(720)。在一些实施方式中,能够递归地调用系统以获得不具有内邻的当前最终节点。这里注意,计算图中的节点以拓扑顺序被处理,因此任何节点在其内邻已被处理之前不被处理。节点的内邻是按照拓扑顺序连接到该节点的节点。例如,在路径分解中必须有至少一个这样的节点v的内邻节点r,使得当节点r已经被处理时,节点v没有未探索的内邻节点,因此v然后应当被处理。
接下来,系统添加从节点u开始的路径以与直接下一节点连接(730)。该路径应当覆盖以递归方式被处理的所有节点。然后,系统更新计算图的路径分解以处理新路径(740),并且最终,系统从计算图和从该图的更新的路径分解中的所有包中移除节点u(750)。
当生成用于图的调度时,该系统能够依赖于具有长脊的计算图的路径分解的结构特性。例如,在路径分解的两个节点集合(两个包)之间经过的任何有向路径(例如,长脊)也必须在任何中间节点集合(中间包)之间经过。又例如,计算图的路径分解中的包的每个最后节点能够基于(1)有向路径(例如,长脊)的最终节点和(2)包含最终节点的包而被排序。
作为另一示例,给定具有路径分解和其子图之一的计算图,从计算图的每个包中移除不在该子图中的所有节点导致路径分解的其余部分是用于子图的有效路径分解。通过移除节点,连接这些节点的边也被移除。因此,原始路径分解的剩余节点和边形成有效路径分解。
作为另一示例,基于路径分解的计算图的子图的调度能够被交织,并且能够将计算图的交织的调度合并、展平或压缩在一起以形成用于计算图的调度。
上述结构特性允许分治策略递归地调度路径分解的右侧和左侧的操作。可以重复递归直到满足一个或多个标准。该标准可以包括用于执行调度的峰值存储器需求降到阈值以下,例如用于在特定硬件上执行调度的可用存储器。
图8图示了用于基于路径分解来调度计算图的操作的示例处理800。该处理800将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,被适当编程的操作调度系统,例如图2的操作调度系统200,能够执行该处理800。
图8中的系统首先将计算图的路径分解划分成左路径分解和右路径分解(810)。计算图已经定义了按顺序遍历计算图中的每个节点的长脊。路径分解的划分基于计算图中的特定节点。在脊线中排序在特定节点之后的节点在路径分解中从每个包中被移除。例如,将从路径分解获得的多个节点集合的集合(例如,所有包的集合)定义为X,其中X=(X1,X2,...,Xb)。将u定义为特定节点。然后,系统移除X中的按根据长脊的顺序在节点u之后的任何节点,以导致新路径分解X’=(X’1,X’2,...,X’b)。包含特定节点u的节点集合(包)将新路径分解X’分成左路径分解和右分解。例如,如果特定节点u在包Xi’中,则新路径分解X’被划分为左路径分解Xl=(X’i-1,X’i-2,...,X’1)和右分解Xr=(X’i+1,X’i+2,...,X’b)。
然后,系统通过取左路径分解作为输入,根据长脊的顺序确定在左路径分解的多个节点集合中是否存在特定节点u的任何前趋,并且返回注释被注释到所有特定节点u的前趋的交织调度(820)。这里注意,能够递归地调用步骤810和步骤820,以便进一步将左路径分解划分成更小的大小,这反映了分治技术。
类似地,系统通过将右路径分解作为输入,根据长脊的顺序确定在右路径分解的多个节点集合中是否存在特定节点u的任何前趋,并且将注释所有前趋的交织调度返回给特定节点u(830)。再次,步骤810和步骤830能够被递归地调用。在一些实施方式中,步骤820和步骤830能够共享相同系统结构,而不区分左路径分解或右路径分解。例如,步骤820和步骤830能够是递归地回调到步骤810的相同系统。
最终,系统通过组合来自左路径分解和右路径分解两者的交织调度来输出用于计算图的调度(840)。为此,系统能够采取合并、展平和/或压缩操作以基于路径分解的结构特性将交织调度集成到调度中。
作为集成交织调度的说明,首先定义σ为调度,并且u定义为节点。然后定义级联操作使得代表调度σ由节点u跟随,然后由调度σ′跟随。定义节点集合X,X上的交织调度是元组集合{L={<σ1,x1>,<σ2,x2>,...<σk,xk>}使得每个xi∈X并且每个σi是调度。然后将合并操作定义为
接下来,将展平操作定义为
此外,Condense(X′,L)=Condense(X′,Merge(L))并且Flatten(L)=Flatten(Merge(L))=Flatten(Condense(X',L))。
本说明书连同系统和计算机程序组件一起使用术语“被配置”。对于要被配置成执行特定操作或动作的一个或多个计算机的系统意指系统已在其上安装了在操作中使该系统执行这些操作或动作的软件、固件、硬件或软件、固件、硬件的组合。对于要被配置成执行特定操作或动作的一个或多个计算机程序意指该一个或多个程序包括指令,该指令当由数据处理装置执行时使该装置执行操作或动作。
本说明书中描述的主题和功能操作的实施例能够以数字电子电路、有形地具体实现的计算机软件或固件、包括本说明书中公开的结构及其结构等同物的计算机硬件或者它们中的一个或多个的组合来实现。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,该一个或多个计算机程序即在有形非暂时性存储介质上编码以供由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质能够是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备或它们中的一个或多个的组合。可替代地或另外,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,该传播信号被生成来对信息进行编码以用于传输到适合的接收器装置以由数据处理装置执行。
术语“数据处理装置”指代数据处理硬件并且涵盖用于处理数据的所有种类的装置、设备和机器,作为示例包括可编程处理器、计算机或多个处理器或计算机。装置还能够是或者进一步包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。装置除了包括硬件之外还能够可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
也可以被称为或者描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码的计算机程序能够以包括编译或解释语言或声明或处理语言的任何形式的编程语言被编写;并且它能够以任何形式被部署,包括作为独立程序或者作为模块、组件、子例行程序或适合于在计算环境中使用的其它单元。程序可以但是不必对应于文件系统中的文件。程序能够被存储在保持其它程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本;在专用于所述程序的单个文件中或者在多个合并的文件中,例如,存储代码的一个或多个模块、子程序或部分的文件。计算机程序能够被部署成在一个计算机上或者在位于一个站点或者分布在多个站点上并通过数据通信网络互连的多个计算机上被执行。
在本说明书中,术语“数据库”广泛地被用于指代任何数据集:数据不需要以任何特定方式被构造,或者根本不被构造,并且它能够被存储在一个或多个位置中的存储设备上。因此,例如,索引数据库能够包括多个数据集,其中的每一个可以被不同地组织和访问。
类似地,在本说明书中术语“引擎”广泛地被用于指代被编程来执行一个或多个具体功能的基于软件的系统、子系统或处理。通常,引擎将作为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件被实现。在一些情况下,一个或多个计算机将被专用于特定引擎;在其它情况下,能够在同一计算机或多个计算机上安装并运行多个引擎。
本说明书中描述的处理和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程计算机执行以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流还能够由例如FPGA或ASIC的专用逻辑电路执行,或者通过专用逻辑电路和一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机能够基于通用微处理器或专用微处理器或两者,或任何其它种类的中央处理器。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行或者实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器能够由专用逻辑电路补充或者被并入在专用逻辑电路中。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或者操作上被耦合以从所述一个或多个大容量存储设备接收数据或者将数据传送到一个或多个大容量存储设备或者两者以用于存储数据。然而,计算机不必具有这样的设备。此外,计算机能够被嵌入在另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制器、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器等。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,作为示例包括半导体存储设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。
为了提供与用户的交互,能够在计算机上实现本说明书中描述的主题的实施例,该计算机具有用于向用户显示信息的显示设备例如,CRT(阴极射线管)或LCD(液晶显示器)监视器以及用户能够通过其向该计算机提供输入的键盘和定点设备,例如,鼠标或轨迹球。其它种类的设备也能够被用于提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声、语音或触觉输入。另外,计算机能够通过向由用户使用的设备发送文档并从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到请求而向用户的设备上的web浏览器发送网页。另外,计算机能够通过向个人设备例如,是正在运行消息传送应用的智能电话,发送文本消息或其它形式的消息并且继而从用户接收响应消息来与用户交互。
用于实现机器学习模型的数据处理装置还能够包括,例如,用于处理机器学习训练或生产——即推理、工作负载——的公共和计算密集部分的专用硬件加速器单元。
能够使用机器学习框架,例如TensorFlow框架、Microsoft Cognitive Toolkit框架、Apache Singa框架或Apache MXNet框架来实现和部署机器学习模型。
本说明书中描述的主题的实施例能够被实现在计算系统中,该计算系统包括后端组件,例如,作为数据服务器;或者包括中间件组件,例如,应用服务器;或者包括前端组件,例如,具有用户能够通过其与本说明书中描述的主题的实施方式交互的图形用户界面、web浏览器或app的客户端计算机;或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件能够通过例如通信网络的任何形式或介质的数字数据通信而被互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,互联网。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器向用户设备传输例如HTML页面的数据,例如,以出于向与作为客户端的设备交互的用户显示数据并从该用户接收用户输入的目的。能够在服务器从设备接收在用户设备生成的数据,例如,用户交互的结果。
虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对任何发明的或可能要求保护的范围的限制,而是相反地被解释为对可能特定于特定发明的特定实施例的特征的描述。也能够在单个实施例中组合地实现在本说明书中在单独的实施例的上下文中描述的某些特征。相反地,也能够单独地或者按照任何适合的子组合在多个实施例中实现在单个实施例的上下文中描述的各种特征。此外,尽管特征可能在上面被描述按照某些组合起作用并且甚至最初被如此要求保护,但是来自要求保护的组合的一个或多个特征能够在一些情况下被从该组合中除去,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然操作按照特定次序在附图中被描绘并在权利要求书中被记载,但是这不应该被理解为要求按照所示的特定次序或者按照顺序次的序执行这样的操作,或者要求执行所有图示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有益的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这样的分离,并且应该理解的是,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或者被包装到多个软件产品中。
已经描述了主题的特定实施例。其它实施例在所附权利要求的范围内。例如,权利要求中记载的动作能够以不同的次序被执行并仍然实现期望的结果。作为一个示例,附图中描绘的处理不一定要求所示的特定次序或顺序的次序以实现期望的结果。在一些情况下,多任务处理和并行处理可能是有益的。
Claims (13)
1.一种方法,包括:
由计算图系统接收生成用于处理计算图的调度的请求,其中,所述调度定义由所述计算图表示的根据排序来执行的操作序列;
获得表示所述计算图的数据,所述计算图包括多个节点和有向边,其中,每个节点表示相应操作,
其中,从相应第一节点到相应第二节点的每个有向边表示由所述相应第二节点表示的第二操作需要通过执行由所述相应第一节点表示的第一操作而生成的至少一个输出作为输入;
生成所述计算图的分隔器,其中,所述分隔器满足从所述计算图中移除所述分隔器中的节点和将其他节点连接到所述分隔器的边使得所述计算图的剩余节点和边形成多个连接分量的特性;以及
生成所述调度以执行所述计算图中表示的操作,其中,生成所述调度包括:
利用零节点来初始化所述调度;
对于所述分隔器中的每个节点:
确定所述节点在所述计算图中是否具有任何前趋节点,
当所述节点具有任何前趋节点时,将所述前趋节点添加到所述调度,以及
将所述节点添加在所述调度中,以及
将在所述计算图上既不在所述分隔器中也不是所述分隔器中的任何节点的前趋的每个子图中的每个节点添加到所述调度。
2.根据前述权利要求中的任一项所述的方法,还包括根据所述调度来处理所述计算图。
3.根据前述权利要求中的任一项所述的方法,其中,所述计算图中表示的每个操作是与处理神经网络的输入相关联的操作。
4.根据前述权利要求中的任一项所述的方法,其中,生成所述分隔器包括生成用于所述计算图的树分解。
5.根据前述权利要求中的任一项所述的方法,其中,所述分隔器是所述树分解的平衡分隔器,并且其中,生成用于所述计算图的所述树分解包括将所述树分解生成为小于预定宽度。
6.根据任一项前述权利要求所述的方法,其中,所述调度包括注释,每个注释与所述调度中的相应节点相对应并且指示通过执行与所述相应节点相对应的相应操作而生成的输出是否被保存在存储器中。
7.一种方法,包括:
由计算图系统接收生成用于处理计算图的调度的请求,其中,所述调度定义由所述计算图表示的根据排序来执行的操作序列;
获得表示所述计算图的数据,所述计算图包括多个节点和有向边,
其中,每个节点表示相应操作,以及
其中,从相应第一节点到相应第二节点的每个有向边表示由所述相应第二节点表示的第二操作需要通过执行由所述相应第一节点表示的第一操作而生成的至少一个输出作为输入;
确定所述计算图是否包括遍历所述计算图中的每个节点的通过所述计算图的第一有向路径,包括通过特定节点;
响应于确定所述计算图包括所述第一有向路径:
生成路径分解,所述路径分解定义(i)多个集合,所述多个集合中的每个集合包括所述计算图的一个或多个节点,以及(ii)通过所述多个集合中的每个集合的第二有向路径,
利用零节点来初始化所述调度,
标识所述路径分解的所述多个集合中的包括所述特定节点的特定集合,
对于所述特定集合中的每个节点并且按照根据所述第一有向路径的顺序:
确定所述节点在所述计算图中是否具有任何前趋节点
当所述节点在所述计算图中具有任何前趋节点时,将所述前趋节点添加到所述调度,以及
在所述前趋节点之后将所述节点添加到所述调度。
8.根据权利要求7所述的方法,还包括:
确定所述计算图不包括所述第一有向路径;
响应于确定所述计算图不包括所述第一有向路径,修改所述计算图,其中,作为修改所述计算图的结果,所述计算图定义通过所述计算图的每个节点的第三有向路径,包括通过所述特定节点;以及
响应于所述请求,生成所述调度,包括:
利用零节点来初始化所述调度,
生成定义所述多个集合的所述路径分解,
标识所述多个集合中的包括所述特定节点的所述特定集合,
对于所述特定集合中的每个节点并且按照根据所述第三有向路径的顺序,将所述节点添加到所述调度:
确定所述节点在所述计算图中是否具有任何前趋节点,
当所述节点在所述计算图中具有任何前趋节点时,将所述前趋节点添加到所述调度,以及
在所述前趋节点之后将所述节点添加到所述调度。
9.根据权利要求7或8中的任一项所述的方法,还包括:
在生成用于所述计算图的所述路径分解之后:
将所述计算图的所述路径分解划分成左路径分解和右路径分解,其中,所述左路径分解包括根据所述第二有向路径在所述特定集合之前排序的所述多个集合中的每个集合,并且其中,所述右路径分解包括根据所述第二有向路径在所述特定集合之后排序的所述多个集合中的每个集合;以及
其中,确定所述计算图的一个或多个节点是所述节点的前趋包括执行操作,所述操作包括:
确定所述计算图的一个或多个节点是所述节点的前趋并且被包括在所述左路径分解中,并且作为响应,将所述左路径分解中的所述一个或多个节点中的每个节点添加到所述调度,以及
确定所述计算图的一个或多个节点是所述节点的前趋并且被包括在所述右路径分解中,并且作为响应,将所述右路径分解中的所述一个或多个节点中的每个节点添加到所述调度。
10.根据前述权利要求7-9中的任一项所述的方法,还包括:在生成所述路径分解之后,移除在所述第一有向路径中被排序在所述特定节点之后的所述路径分解中的所有节点。
11.根据前述权利要求中的任一项所述的方法,其中,生成所述调度包括优化所述分隔器大小。
12.一种系统,包括一个或多个计算机和存储指令的一个或多个存储设备,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机执行根据权利要求1至11中的任一项所述的方法的操作。
13.一种存储指令的一个或多个计算机存储介质,所述指令在由一个或多个计算机执行时使所述一个或多个计算机执行根据权利要求1至11中的任一项所述的方法的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962875433P | 2019-07-17 | 2019-07-17 | |
US62/875,433 | 2019-07-17 | ||
PCT/US2020/042646 WO2021011914A1 (en) | 2019-07-17 | 2020-07-17 | Scheduling operations on a computation graph |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114008594A true CN114008594A (zh) | 2022-02-01 |
Family
ID=72193568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080044760.6A Pending CN114008594A (zh) | 2019-07-17 | 2020-07-17 | 调度计算图上的操作 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10963301B2 (zh) |
EP (1) | EP3970012A1 (zh) |
CN (1) | CN114008594A (zh) |
WO (1) | WO2021011914A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114008594A (zh) * | 2019-07-17 | 2022-02-01 | 谷歌有限责任公司 | 调度计算图上的操作 |
US11526761B2 (en) * | 2019-08-24 | 2022-12-13 | Microsoft Technology Licensing, Llc | Neural network training with decreased memory consumption and processor utilization |
US11521062B2 (en) * | 2019-12-05 | 2022-12-06 | International Business Machines Corporation | Neural network training using a data flow graph and dynamic memory management |
US20210191765A1 (en) * | 2019-12-18 | 2021-06-24 | Deep Vision Inc. | Method for static scheduling of artificial neural networks for a processor |
CN114330735A (zh) * | 2020-09-30 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 处理机器学习模型的方法、电子设备和计算机程序产品 |
KR20220064665A (ko) * | 2020-11-12 | 2022-05-19 | 삼성전자주식회사 | 인공지능 모델을 분산 처리하는 전자 장치 및 그 동작 방법 |
CN114003306B (zh) * | 2021-10-27 | 2024-03-15 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN114510338B (zh) * | 2022-04-19 | 2022-09-06 | 浙江大华技术股份有限公司 | 一种任务调度方法、任务调度设备和计算机可读存储介质 |
CN115268936B (zh) * | 2022-09-27 | 2022-12-27 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
US20240104341A1 (en) * | 2022-09-27 | 2024-03-28 | Zhejiang Lab | Memory optimization method and apparatus for neural network compilation |
CN116166405B (zh) * | 2023-04-21 | 2023-08-01 | 北京燧原智能科技有限公司 | 异构场景下的神经网络任务调度策略确定方法及装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044222A (en) * | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US7102641B2 (en) * | 2004-03-29 | 2006-09-05 | International Business Machines Corporation | Method, data processing system, and computer program product for determining inversion edges for a cyclic compound directed graph |
US20060224432A1 (en) * | 2005-03-31 | 2006-10-05 | British Telecommunications Public Limited Company | Workflow scheduling system |
JP4379894B2 (ja) * | 2006-11-28 | 2009-12-09 | 株式会社エスグランツ | カップルドノードツリーの分割/結合方法及びプログラム |
US9218209B2 (en) * | 2008-12-31 | 2015-12-22 | Pivotal Software, Inc. | Apparatus and method for parallel processing of a query |
US8332862B2 (en) * | 2009-09-16 | 2012-12-11 | Microsoft Corporation | Scheduling ready tasks by generating network flow graph using information receive from root task having affinities between ready task and computers for execution |
US9715560B2 (en) * | 2012-04-24 | 2017-07-25 | International Business Machines Corporation | Optimizing sparse schema-less data in data stores |
US9563470B2 (en) * | 2013-12-23 | 2017-02-07 | International Business Machines Corporation | Backfill scheduling for embarrassingly parallel jobs |
US10152557B2 (en) * | 2014-01-31 | 2018-12-11 | Google Llc | Efficient similarity ranking for bipartite graphs |
US9652286B2 (en) * | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
US10291696B2 (en) * | 2014-04-28 | 2019-05-14 | Arizona Board Of Regents On Behalf Of Arizona State University | Peer-to-peer architecture for processing big data |
US9684546B2 (en) * | 2014-12-16 | 2017-06-20 | Microsoft Technology Licensing, Llc | Job scheduling and monitoring in a distributed computing environment |
KR102628902B1 (ko) * | 2015-10-28 | 2024-01-24 | 구글 엘엘씨 | 계산 그래프들 프로세싱 |
EP4202782A1 (en) | 2015-11-09 | 2023-06-28 | Google LLC | Training neural networks represented as computational graphs |
CN108132838B (zh) * | 2016-11-30 | 2021-12-14 | 华为技术有限公司 | 一种图数据处理的方法、装置及系统 |
US10599482B2 (en) * | 2017-08-24 | 2020-03-24 | Google Llc | Method for intra-subgraph optimization in tuple graph programs |
CN109960570B (zh) * | 2017-12-14 | 2021-09-03 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及系统 |
US20190317812A1 (en) * | 2018-04-16 | 2019-10-17 | State Street Corporation | Guaranteed quality of service in cloud computing environments |
GB2580284B (en) * | 2018-08-13 | 2021-01-06 | Metaswitch Networks Ltd | Generating packet processing graphs |
US10474497B1 (en) * | 2018-11-14 | 2019-11-12 | Capital One Services, Llc | Computing node job assignment using multiple schedulers |
US20200249998A1 (en) * | 2019-02-01 | 2020-08-06 | Alibaba Group Holding Limited | Scheduling computation graph heterogeneous computer system |
US20200293838A1 (en) * | 2019-03-13 | 2020-09-17 | Deepmind Technologies Limited | Scheduling computation graphs using neural networks |
CN114008594A (zh) * | 2019-07-17 | 2022-02-01 | 谷歌有限责任公司 | 调度计算图上的操作 |
US11709059B2 (en) * | 2019-12-23 | 2023-07-25 | Waymo Llc | Asynchronous execution graphs for autonomous vehicles |
-
2020
- 2020-07-17 CN CN202080044760.6A patent/CN114008594A/zh active Pending
- 2020-07-17 WO PCT/US2020/042646 patent/WO2021011914A1/en unknown
- 2020-07-17 EP EP20760981.9A patent/EP3970012A1/en active Pending
- 2020-07-17 US US16/932,581 patent/US10963301B2/en active Active
-
2021
- 2021-03-26 US US17/214,699 patent/US11755367B2/en active Active
-
2023
- 2023-07-18 US US18/223,495 patent/US20240126596A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US10963301B2 (en) | 2021-03-30 |
WO2021011914A1 (en) | 2021-01-21 |
US20210216367A1 (en) | 2021-07-15 |
EP3970012A1 (en) | 2022-03-23 |
US20210019184A1 (en) | 2021-01-21 |
US20240126596A1 (en) | 2024-04-18 |
US11755367B2 (en) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114008594A (zh) | 调度计算图上的操作 | |
US20200293838A1 (en) | Scheduling computation graphs using neural networks | |
US20220391665A1 (en) | Method for splitting neural network model by using multi-core processor, and related product | |
US10970628B2 (en) | Training neural networks represented as computational graphs | |
EP4036803A1 (en) | Neural network model processing method and apparatus, computer device, and storage medium | |
WO2018099085A1 (zh) | 一种神经网络模型的训练方法、装置及芯片 | |
US11074107B1 (en) | Data processing system and method for managing AI solutions development lifecycle | |
US8959138B2 (en) | Distributed data scalable adaptive map-reduce framework | |
CN111242321A (zh) | 一种数据处理方法及相关产品 | |
CN114756383A (zh) | 一种分布式计算方法、系统、设备及存储介质 | |
US20160378809A1 (en) | Massive time series correlation similarity computation | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
Han et al. | Signal processing and networking for big data applications | |
CN114610474B (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
EP4198771A1 (en) | Data processing method and apparatus, computer readable medium, and electronic device | |
CN111133458A (zh) | 增强神经网络 | |
US9229980B2 (en) | Composition model for cloud-hosted serving applications | |
CN113449842A (zh) | 一种分布式自动微分方法及相关装置 | |
Yu et al. | A sum-of-ratios multi-dimensional-knapsack decomposition for DNN resource scheduling | |
CN115481730A (zh) | 一种注意力机制模型训练方法、装置、终端及存储介质 | |
Bengre et al. | A learning-based scheduler for high volume processing in data warehouse using graph neural networks | |
WO2024087844A1 (zh) | 图神经网络的训练方法、训练系统及异常账号识别方法 | |
CN107025099B (zh) | 一种基于双队列模型的异步图计算实现方法及系统 | |
CN117201319B (zh) | 一种基于边缘计算的微服务部署方法及系统 | |
CN116755714B (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 |