CN108292374A - 训练表示为计算图的神经网络 - Google Patents
训练表示为计算图的神经网络 Download PDFInfo
- Publication number
- CN108292374A CN108292374A CN201680065507.2A CN201680065507A CN108292374A CN 108292374 A CN108292374 A CN 108292374A CN 201680065507 A CN201680065507 A CN 201680065507A CN 108292374 A CN108292374 A CN 108292374A
- Authority
- CN
- China
- Prior art keywords
- node
- calculating
- control stream
- neural network
- equipment
- 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
Links
Classifications
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Feedback Control In General (AREA)
Abstract
公开了用于训练表示为计算图的神经网络的***和方法。一种示例方法开始于获得表示所述计算图的数据。然后,扩增所述计算图,以生成用于使用机器学习训练算法来训练所述神经网络的训练计算图,所述机器学习训练算法包括关于所述神经网络的参数中的每一个来计算目标函数的梯度。扩增所述计算图包括将多个梯度节点和训练边***所述计算图中,以生成通过所述计算图的反向路径,该反向路径表示用于关于所述神经网络的参数来计算所述目标函数的梯度的运算。通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络。
Description
相关申请的交叉引用
本申请依据35 U.S.C.§119(e)请求于2015年11月9日提交的、标题为“TRAININGNEURAL NETWORKS REPRESENTED AS COMPUTATIONAL GRAPHS(训练表示为计算图的神经网络)”的美国专利申请No.62/253,057的权益,其全文通过引用并入本文。
技术领域
本说明书涉及处理表示神经网络的计算图。
背景技术
神经网络是机器学习模型,其采用模型的一层或多层针对接收到的输入生成输出,例如一个或多个类别。一些神经网络除输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层的输入,即,网络的下一个隐藏层或输出层。网络的每一层根据该层的相应参数集的当前值来从接收到的输入生成输出。
在一些现有***中,神经网络的层由单独的设备来处理。该设备能够具有进行运算(operation)的处理器,例如,在一层处从输入生成输出,并且将运算的输出存储在存储器中。在神经网络中生成输出通常需要数量和规模庞大的运算,因此一台设备能够花费大量时间来处理神经网络的多层。
发明内容
本说明书描述一种在一个或多个位置的一个或多个计算机上作为计算机程序实现的训练计算图所表示的神经网络的***。
所述计算图包括节点、连接有向边、和参数有向边。每个节点表示所述神经网络所进行的相应运算,作为根据神经网络输入来确定神经网络输出的一部分,每个连接有向边将相应第一节点连接至相应第二节点,所述相应第二节点表示接收所述相应第一节点所表示的运算的输出作为输入的运算,以及每个参数有向边连接到相应节点并且表示所述神经网络的一个或多个参数的流以作为对所述相应节点所表示的运算的输入。
总体上,本说明书中所述主题的一个创新性方面能够体现为方法,其包括以下动作:获得表示所述计算图的数据;扩增所述计算图,以生成用于使用机器学习训练算法来训练所述神经网络的训练计算图,所述机器学习训练算法包括关于所述神经网络的参数中的每一个来计算目标函数的梯度,包括:将多个梯度节点和训练边***所述计算图中,以生成通过所述计算图的反向路径,所述反向路径表示用于关于沿所述计算图中的相应参数有向边流动的参数来计算所述目标函数的梯度的运算;以及通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络。
所述***通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络。具体地,作为扩增计算图的一部分,所述***可以生成包括反向路径的计算图的多个实例,以生成最终的训练计算图。然后,所述***可以跨多个设备在最终训练计算图中分配节点;并且使得所述设备中的每个设备执行分配给该设备的节点所表示的运算。以分布方式处理计算图在2015年10月28日提交的、题为“PROCESSING COMPUTATIONAL GRAPHS(处理计算图)”的美国专利申请No.62/247,709以及于2015年10月28日提交、标题为“MODIFYING COMPUTATIONAL GRAPHS(修改计算图)”的美国专利申请No.62/247,713中具体描述,所述专利申请的全部内容通过引用并入本文。
该方面的其他实施例包括对应的计算机***、装置以及一个或多个计算机存储设备上记录的计算机程序,其均被配置为进行所述方法的动作。针对一个或多个计算机的***,被配置为进行特定操作或动作意味着该***已在其上安装有软件、固件、硬件或它们的组合,所述软件、固件、硬件或它们的组合在操作中使得***进行操作或动作。针对一个或多个计算机程序被配置为进行特定操作或动作,意味着一个或多个程序包括当由数据处理装置执行时使得该装置进行操作或动作的指令。
前述及其他实施例均能够可选地单独或以组合方式包括以下特征中的一个或多个。具体地,一个实施例包括所有以下特征的组合。作为扩增计算图的一部分,所述***可以识别所述计算图中的一个或多个控制流节点。每个控制流节点表示控制流运算,该控制流运算使得所述计算图中的一个或多个其他节点所表示的运算在所述计算图的执行期间有条件地或迭代地进行。针对每个已识别的控制流节点,所述***沿通过所述计算图的反向路径***对应的反向路径控制流节点。每个反向路径控制流节点调整沿所述反向路径的控制流,以担负(account for)对应的控制流节点所表示的控制流运算。
例如,所述一个或多个控制流节点可以包括交换控制流节点。在此情况下,与所述交换控制流节点相对应的反向路径控制流节点是合并反向控制流节点。
例如,所述一个或多个控制流节点可以包括合并控制流节点。在此情况下,与所述合并控制流节点相对应的反向路径控制流节点是交换反向控制流节点。
例如,所述一个或多个控制流节点可以包括进入控制流节点。在此情况下,与所述进入控制流节点相对应的反向路径控制流节点是退出反向控制流节点。
例如,所述一个或多个控制流节点可以包括退出控制流节点。在此情况下,与所述退出控制流节点相对应的反向路径控制流节点是进入反向控制流节点。
例如,所述一个或多个控制流节点可以包括迭代计数器控制流节点。在此情况下,与所述迭代计数器控制流节点相对应的反向路径控制流节点是迭代计数器反向控制流节点。在所述计算图的执行期间可以进行所述计算图中的一个或多个特定节点所表示的一个或多个特定运算的多次迭代。一个或多个监视节点可以被***所述计算图中,所述一个或多个监视节点表示运算,所述运算在所述训练计算图的执行期间,监视所进行的特定运算的迭代次数,以及针对所述特定运算中的每个运算的每次进行的迭代,存储迭代期间由所述节点表示的特定运算的输出。在所述训练计算图中的所述反向路径的执行期间,所述一个或多个监视节点所存储的输出可以作为输入提供给所述梯度节点中的一个或多个所表示的梯度函数。确定在所述计算图的执行期间进行所述计算图中的一个或多个特定节点所表示的一个或多个特定运算的多次迭代可以包括:分析所述计算图以识别所述计算图中的一个或多个控制流节点,所述一个或多个控制流节点使得所述计算图中的所述一个或多个特定节点所表示的特定运算被多次进行。所述神经网络可以是递归神经网络,该递归神经网络在多个时间步长中的每个时间步长接收相应神经网络输入,并且在所述多个时间步长中的每个时间步长生成相应神经网络。所述特定节点中的每一个所表示的运算可以生成所述多个时间步长中的每一个的相应节点输出,以及所述监视节点可以存储所述多个时间步长中的每一个的相应节点输出。在迭代期间存储所述节点所表示的特定运算的输出可以包括:在产生数据之后,将数据从产生其的设备异步发送到中央处理单元以供存储;以及通过表示用于关于所述神经网络的参数来计算目标函数的梯度的运算的计算图,从所述中央处理单元异步检索供所述反向路径中的设备使用的数据。通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络可以包括:跨多个设备分配所述训练计算图中的节点;以及使得所述设备中的每一个进行分配给该设备的节点所表示的运算。
本说明书中所述的主题能够在特定实施例中实施,以便实现以下优点中的一个或多个。示例实施方式优点在于,它允许从包括周期性控制流结构的正向传播路径生成反向路径。一个示例***获得表示计算图的数据并且扩增计算图以生成用于使用机器学习训练算法来训练神经网络的训练计算图,该机器学习训练算法包括关于神经网络的每个参数来计算例如成本函数或损失函数的目标函数的梯度,例如,如随机梯度下降算法中那样。
在附图以及下面的描述中阐明本说明书所述主题的一个或多个实施例的细节。根据说明书、附图和权利要求书,所述主题的其他特征、方面和优势将显而易见。
附图说明
图1A图示出用于训练表示为计算图的神经网络的示例计算图***。
图1B是用于在***中分布表示为计算图的神经网络的运算和值的示例性框架的概念图。
图2是用于扩增计算图以生成用于训练神经网络的训练计算图的示例过程的流程图。
图3图示出包括正向传播路径和反向传播路径的示例计算图。
图4A图示出正向传播计算图中的控制流运算的示例。
图4B图示出与图4A所示的正向传播的控制流运算相对应的计算图中的反向传播中的控制流运算的示例。
图5是用于处理计算图的示例方法的流程图。
图6是示例计算图。
图7是用于将子图指派给设备的示例过程的流程图。
在各图中相似的附图标记和名称指示相似的元素。
具体实施方式
本说明书总体上描述一种以分布方式执行计算图所表示的运算的计算图***。具体地,本说明书描述了用于扩增计算图以生成用于使用机器学习训练算法来训练神经网络的训练计算图的技术。更具体地,这样的技术描述了当目标函数包含周期性控制流结构时,关于神经网络的每个参数来计算目标函数的梯度。示例算法使用错误的反向传播(称作反向传播)结合优化方法来计算这些梯度。当目标函数包含控制流结构时,反向传播需要关于神经网络的每个参数来区分目标函数,例如,成本函数或损失函数,这些参数可能十分复杂。
数据流计算图表达机器学习模型的计算,其中节点表示运算并且有向边表示运算之间的数据相关性。到节点的传入边表示进入该节点的输入流,即,对节点所表示的运算的输入变元。如果运算所需的全部变元可用于运算节点,则该节点被启用并且能够被执行。
自节点的传出边表示该节点所表示的运算的输出流,其用作对另一个节点所表示的运算的输入。因此,将图中的第一节点连接到图中的第二节点的有向边指示第一节点所表示的运算生成的输出被用作对第二节点所表示的运算的输入。
一般而言,在计算图中沿有向边流动的输入和输出是张量。张量是数值或例如字符串的其他值的多维数组,其具有与数组维数相对应的特定阶数。例如,标量值是0阶张量,数值向量是1阶张量,并且矩阵是2阶张量。
在一些实施方式中,计算图中所表示的运算是神经网络运算或者不同类型机器学习模型的运算。神经网络是一种机器学习模型,其采用一层或多层非线性单元针对接收到的输入来预测输出。一些神经网络是除输出层之外还包括一个或多个隐藏层的深度神经网络。每个隐藏层的输出被用作对网络中另一层——即,另一个隐藏层、输出层或这两者——的输入。网络的一些层根据相应参数集的当前值来从接收到的输入生成输出,而网络的另一些层可能不具有参数。
例如,计算图所表示的运算可以是神经网络计算推理所需的运算,即,神经网络处理通过神经网络层的输入以生成针对输入的神经网络输出所需的运算。另举一例,由计算图表示的运算可以通过以下来训练神经网络所必要的运算:进行神经网络训练过程来调整神经网络的参数值,例如,以从初始参数值确定经训练的参数值。在一些情况下,例如,在训练神经网络期间,计算图所表示的运算能够包括神经网络的多个副本所进行的运算。
举例说明,从前一层接收输入的神经网络层能够使用参数矩阵来进行参数矩阵与输入之间的矩阵乘法。在一些情况下,这种矩阵乘法能够被表示为计算图中的多个节点。例如,矩阵乘法能够分为多个乘法和加法运算,并且每个运算能够由计算图中的不同节点来表示。每个节点所表示的运算能够生成相应输出,该相应输出在有向边上流向后续节点。在最终节点所表示的运算生成矩阵乘法的结果之后,该结果在有向边上流向另一节点。该结果等同于进行矩阵乘法的神经网络层的输出。
在其他一些情况下,矩阵乘法被表示为图中的一个节点。作为输入,节点所表示的运算能够在第一有向边上接收输入张量并且在第二有向边上接收权重张量,例如,参数矩阵。节点能够处理输入张量和权重张量,例如,对它们进行矩阵乘法,以在第三有向边上输出等同于神经网络层的输出的输出张量。
可以由计算图中的节点表示的其他神经网络运算包括:其他数学运算,例如,减法、除法、和梯度计算;数组运算,例如,串接(concatenate)、拼接(splice)、拆分(split)、或排序(rank);以及神经网络积木运算,例如,SoftMax、Sigmoid、线性整流单元(ReLU)或卷积。
在一个示例***中,计算图中的一个或多个节点集合可以表示控制通过计算图的数据流的运算。例如,一个或多个节点集合可以表示包括条件语句、递归语句和/或迭代控制流语句,包括:if语句、while循环、do-while循环、for循环,for-each循环,或者包括这些语句的组合的嵌套控制流语句。例如,这样的控制流语句可以由原语数据、流运算的组合来表示。
例如,在本说明书中引用为“交换(Switch)”、“合并(Merge)”,“进入(Enter)”,“退出(Exit)”和“下一迭代(Next Iteration)”的运算可以被包括在组合中以控制计算图的条件、递归或迭代执行。
“交换”运算取输入值d并且根据接收到的控制值p的值将该输入值转发到其输出中的一个。该控制值是布尔值,其在执行控制计算时为真(TRUE)或假(FALSE)。也就是说,交换使用它接收到的控制值的值来在提供两个输出中的一个之间进行交换。交换运算要求既存在输入值又存在控制输入值,才能启用交换以供执行。
“合并”运算接收输入并且将其输入中的值转发到其输出。一个示例合并运算在存在其输入中任一个的值时被启用以供执行。通常,类似于交换运算,合并被定义为取附加控制输入来控制使用哪个输入。然而,在一个示例***中,能够对值进行唯一标记,使得无需在合并时保留顺序。
“进入”运算表示进入循环或者由给定名称唯一标识的其他执行帧。例如,该运算可以用来创建或找出由该名称标识的子帧。一个示例***能够在执行对帧的第一“进入”运算时的运行时期间使新的执行帧实例化。在此场境(context)下,帧可以包括被分配用于支持执行帧的指令模板。在一些示例中,本说明书中所述的这样的帧可以包括在任何常规动态数据流机器架构下分配的那些帧。“进入”运算可以被使用于将一个执行帧中的诸如张量的数据结构传递到执行子帧。对相同的执行子帧能够进行多次“进入”运算,每次运算均使数据结构在执行子帧中异步可用。当其输入可用时,启用“进入”运算以供执行。
“退出”运算表示从循环或其他执行帧退出。该运算将执行帧中的值转发到其执行父帧。该“退出”运算被使用于将执行子帧中的计算返回到其父帧。该运算可以返回在子执行中计算的数据结构,诸如张量。从子帧到父帧能够进行多次“退出”运算,每次运算均使数据结构异步传递回父帧。“退出”运算在其输入可用时被启用。
“迭代计数器(Iteration Counter)”运算维护给定循环的迭代次数的计数器并且在对运算输入后使计数器递增。该运算允许在递归或迭代过程中对相同节点的不同调用进行唯一标识。
为了训练神经网络,所述***获得表示计算图的数据并且扩增计算图以生成用于使用机器学习训练算法来训练神经网络的训练计算图,该机器学习训练算法包括关于神经网络的每个参数来计算例如成本函数或损失函数的目标函数的梯度,例如,如随机梯度下降算法中那样。具体地,所述***通过以下来扩增计算图:将梯度节点和训练边***计算图中,以生成通过计算图的反向路径,该反向路径表示用于关于神经网络的参数来计算目标函数的梯度的运算。每个梯度节点表示相应梯度函数,该相应梯度函数关于沿计算图中的相应参数有向边流动的参数来计算目标函数的梯度。
一个示例***修改反向传播过程以处置通过执行控制流运算而创建的周期。计算图的正向传播路径中的每个控制流运算在反向传播路径中具有对应的运算。例如,“交换”运算对应于“合并”运算,“合并”运算对应于“交换”运算,“进入”运算对应于“退出”运算,“退出”运算对应于“进入”运算,并且“迭代计数器”保持不变。为了处置while循环,所述示例***自动重写包含while循环的计算图,以记录该图进行迭代的次数以及反向传播所需的所有“历史”张量。正向传播进行迭代的次数被使用于控制反向传播进行迭代的次数。
将神经网络表示为计算图提供一种灵活而具有细粒度(granular)的方式来高效地实现神经网络,特别是在神经网络的运算跨具有不同硬件配置文件的多个设备分布的情况下。
图1A图示出示例计算图***100,其用于扩增计算图以生成用于使用机器学习训练算法来训练神经网络的训练计算图,该机器学习训练算法包括关于神经网络的每个参数计算目标函数的梯度。***100是在一个或多个位置中的一个或多个计算机上作为计算机程序实现的***的示例,其中能够实现下述的***、组件和技术。
客户端102的用户能够请求对表示神经网络的计算图进行运算。客户端102能够是在计算机上运行的应用。
作为请求的一部分,客户端102向***100提供标识计算图的数据,并且指定要对计算图进行的运算的类型。
例如,请求能够标识表示针对特定神经网络的推理的计算图并且能够标识应对其进行推理的输入。
另举一例,请求能够标识表示要训练的神经网络的计算图以及应对其进行训练的输入,诸如训练数据。
在本示例中,响应于接收到请求,***100能够扩增计算图以生成训练图。下面将对扩增图予以详细描述。
***100进行运算以生成特定输出,其通过跨多个设备116至122划分计算图所表示的运算来进行。***100通过数据通信网络114——例如,局域网(LAN)或广域网(WAN)——将运算划分到多个设备116至122。设备116至122进行运算,并且如果适用,则将相应的输出或指示返回到***100,该***能够将所请求的输出或指示返回到客户端102。
基于对计算图的分析而跨多个设备划分计算图所表示的运算能够允许给定设备内的存储器重用。它还能够允许设备之间的有效负载平衡,这会考虑到设备的能力和资源。
进行神经网络运算的任何设备、例如设备116至122能够包括用于存储指令和数据的存储器(例如,随机存取存储器(RAM))以及用于执行所存储的指令的处理器。一般而言,每个设备均为独立于其他设备进行运算的硬件资源。例如,每个设备能够具有它自己的处理单元。这些设备能够是图形处理单元(GPU)、中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或者神经网络专用处理器。举例说明,一台机器能够托管一个或多个设备,例如,多个CPU、GPU、FPGA、ASIC或神经网络专用处理器。这样的设备和机器的示例可以参阅图1B。
图1B是用于在***中分布表示为计算图的神经网络的运算的示例性框架的概念图。现参照图1B,机器的示例可以包括计算设备126、个人计算机128、移动设备130和服务器132。例如,每个机器可以包括一个或多个设备,诸如GPU 116和CPU 118或者FPGA、ASIC、以及神经网络专用处理器。
每个设备也能够具有相应的计算能力。也就是说,设备能够具有不同的存储器容量、处理速度或其他架构特征。因此,一些设备能够进行其他设备无法进行的运算。例如,一些运算需要只有特定设备才具备的一定存储器容量,或者一些设备被配置成仅进行特定类型的运算,例如,推理运算。
再次参照图1A,***100中的会话管理器104可以从客户端102接收开始会话的请求,在该会话期间进行计算图的运算。会话管理器104管理能够进行计算图的运算的一组设备,例如,设备116至122,并且能够向布置器(placer)108提供可用于进行运算的一组设备。
针对计算图中待进行的每个运算,布置器108确定进行该运算的相应目标设备,例如,设备116,并且在一些实施方式中,确定相应目标设备进行该运算的时间。一些运算能够并行进行,而其他运算则要求完成计算图中的在先运算,例如,其他运算处理在先运算的输出作为输入。
在设备进行布置器108所分配的运算来生成输出之后,执行器106能够检索输出。执行器106能够生成对该请求的适当响应,例如,已经完成处理的输出或指示。然后,执行器106能够将该响应返回到客户端102。
会话管理器104还将计算图中待进行的运算集合提供给执行器106。执行器106周期性从与运算的图执行相关的设备116至122中检索运行时统计数据。执行器106将运行时统计数据提供给布置器108,该布置器能够重新优化进一步运算的布置和调度。
在运算中,***100可以从客户端102接收处理计算图的请求。例如,该请求能够是对指定的输入进行计算图所表示的神经网络推理的请求、对指定的训练数据集进行计算图所表示的神经网络训练运算的请求、或者进行计算图所表示的其他神经网络运算的请求,如上所述。
在接收到请求后,***100可以获得表示计算图的数据。在一些情况下,该数据与来自客户端的请求一起发送。在其他情况下,该请求标识计算图,并且***100从存储器中检索表示所标识的图的数据。举例说明,表示图的数据能够是图中节点的数组。每个节点能够包含指定运算类型、名称和节点传入边和传出边列表的信息。
然后,***100可以用节点和边来扩增计算图,以生成包括运算的反向传播以供神经网络生成输入的梯度输出。
***100可以识别用于进行所请求的运算的多个可用设备。如果设备当前正进行其他运算而无法被指派进一步的运算或者无法进行图处理运算,则该设备可以被视为繁忙。如果设备能够被指派进一步的运算,则该设备可以被视为可用,例如,能够将进一步的运算排入队列以供该设备进行运算。
***100可以将计算图划分成多个子图。每个子图包括计算图中的一个或多个节点。在一些示例中,***100可以通过分解计算图中彼此相邻但指派给不同设备的节点对来获得这些子图。
***100可以针对每个子图,将该子图中的一个或多个节点所表示的运算指派到相应的可用设备。在一些实施方式中,***100可以将每个子图指派到具有进行该子图中的节点所表示的运算所需的计算能力的设备。在一些实施方式中,来自客户端的请求包括由用户指定的数据,该数据标识进行特定节点的运算的特定类型的设备。
因此,***100生成计算图跨多个设备的分配,该分配将计算图中的每个节点指派到多个设备中的相应设备。每个子图包括计算图中的一个或多个节点的给定群组,如上所述,该节点群组可以被指派到相同的设备。在图1B中可以看出到设备映射的示例性子图。在本示例中,计算图140的示例性子图140A和140B可以被相应分配到GPU 116和CPU 118。GPU116和CPU 118可以驻留在机器126至132中的不同或相同的一个中。在运算中,GPU 116和CPU 118可以进行***100已经指派给它们的子图中包括的节点所表示的运算。如上所述,计算图也可以被分配到FPGA、ASIC或者神经网络专用处理器。
***100可以使得设备进行相应指派到设备的子图中所包括的节点的运算。在一些实施方式中,***100可以向每个设备发送开始指派给相应设备的子图中所包括的节点的运算的请求。响应于从***100接收到这样的请求,每个设备可以继续进行指派给该设备的子图中所包括的节点的运算。
图2是用于扩增计算图以生成用于训练神经网络的训练计算图的示例过程200的流程图。方便起见,过程700将被描述为由位于一个或多个位置并且根据本说明书来恰当编程的一个或多个计算机的***来执行。例如,恰当编程的图1A的示例计算图***100能够执行过程200。
***获得表示包括节点和有向边的计算图的数据(202)。
***扩增计算图,以生成用于使用机器学习算法来训练神经网络的训练计算图,该机器学习算法包括关于神经网络的每个参数来计算目标函数的梯度(204)。
为了扩增计算图,***将多个梯度节点和训练边***计算图中,以生成通过计算图的反向路径,该反向路径表示用于关于神经网络的参数来计算目标函数的梯度的运算。每个梯度节点表示梯度函数,该梯度函数关于沿计算图中的相应参数有向边流动的参数来计算目标函数的梯度。
具体地,***通过***反向传播路径中的运算来扩增图,该反向传播路径中的运算是与正向传播路径中的运算相对应的微分运算。***以正向路径中的最后一个运算节点开始反向传播路径。然后,***以倒序向反向传播路径添加正向传播路径的微分运算,直至***到达正向传播路径的首个节点。例如,如果正向传播路径包括运算A、B和C,则反向传播将包括C'、B'和最后的A'。
作为扩增计算图的一部分,***100可以识别计算图中的一个或多个控制流节点。每个控制流节点表示控制流运算,该控制流运算使得计算图中的一个或多个其他节点所表示的运算在计算图的执行期间有条件地或迭代地进行。针对每个已识别的控制流节点,***100沿通过计算图的反向路径***对应的反向路径控制流节点。如上所述,反向路径控制流节点是对应的正向路径控制流节点的微分。计算图的正向传播路径中的每个控制流运算在反向传播路径中具有对应的运算。如果示例***在计算图的正向传播中遇到“交换”运算,则***在反向传播中***对应的“合并”运算。如果***遇到“合并”运算,则***在反向路径中***对应的“交换”运算。当***在正向传播路径中发现“进入”运算时,其***“退出”运算,并且当***在正向传播路径中发现“退出”运算时,其***“进入”运算。当***遇到“迭代计数器”运算时,***只在反向传播路径中***“迭代计数器”运算。
每个反向路径控制流节点调整沿反向路径的控制流,以担负对应的控制流节点所表示的控制流运算。
然后,***通过执行训练计算图而使用机器学习训练算法来训练神经网络(206)。
图3图示出包括正向传播路径300和反向传播路径301的示例计算图。如上所述,神经网络的计算被表示为数据流图。示例***生成正向传播路径300,其包括神经网络计算推理所需的运算,即,神经网络处理通过神经网络层的输入来针对该输入生成神经网络输出所需的运算。然后,示例***以包括神经网络针对输入生成梯度输出所需的运算的反向传播路径301来扩增计算图。反向传播的输出是关于神经网络的参数中的每一个的目标函数——例如,成本函数或损失函数——的梯度。为从正向传播300生成反向传播301,示例***自动对计算图的正向传播中的每个节点A至D求微分。
在一些实例中,反向传播中的运算需要对应正向运算中的值才能执行。例如,正向传播中的运算B可以计算数的平方,诸如x2,其中x是待求平方的数。该运算的微分是2x运算,其作为B'添加到反向传播运算中。为了计算2x的值,在反向传播中应将数x赋予B'。图3图示出在B与B'之间设置边302,该边302将正向传播中所需的值发送到反向传播。
图4A图示出正向传播计算图中的控制流运算的示例。本示例表示条件计算:if p(x)then f(x)else g(x)。在本示例中,G(p)、G(f)和G(g)分别表示p、f和g的图。P(x)是执行时产生真或假输出的控制计算。
条件计算在计算数据流图中由“交换”运算和“合并”运算表示。条件计算首先计算控制计算的值G(p)。控制计算的值连同输入值一起输入到“交换”运算中。如果控制计算的值为真,则“交换”运算将其输入值发送到其与真值相对应的输出。如果控制计算的值为假,则“交换”运算将其输入值发送到其与假值相对应的输出。示例计算数据流图根据“交换”运算的输出位置(表示真分支的输出或表示假分支的输出)来启用子图G(f)或G(g)。进行已启用的运算,并且通过“合并”运算将其合并。“合并”运算本质上是用于命名条件输出的占位符。
图4B图示出与图4A所示的正向传播的控制流运算相对应的计算图的反向传播中的控制流运算的示例。如图所示,当示例***在正向传播中遇到“交换”运算时,***将对应运算添加到反向传播,在本实例中,“交换”运算对应于“合并”运算,然后将该“合并”运算添加反向传播。当***在正向传播中遇到“合并”运算时,***将对应的运算“交换”添加到反向传播。***也针对正向传播路径中的所有运算添加微分运算。例如,除***与正向传播路径的“交换”运算相对应的“合并”运算以及与“合并”运算相对应的“交换”运算之外,***还***与正向传播路径中的每个运算相对应的微分运算。在本示例中,***向反向传播路径中***与G(g)相对应的G'(g)以及与G(f)相对应的G'(f)。然而,***在反向传播路径中使用与正向相同的布尔值控制计算G(p)。
在一些实施方式中,作为扩增计算图的一部分,***确定在计算图的执行期间进行计算图中的一个或多个特定节点所表示的一个或多个特定运算的多次迭代。
具体地,***能够分析计算图以识别计算图中的一个或多个控制流节点,所述一个或多个控制流节点使得计算图中的一个或多个特定节点所表示的特定运算被多次进行。例如,神经网络可以是递归神经网络,该递归神经网络在多个时间步长中的每一个接收相应的神经网络输入,并且在多个时间步长中的每一个生成相应的神经网络。
然后,***将一个或多个监视节点***计算图中。监视节点表示运算,诸如“迭代计数器”运算,其在训练计算图的执行期间,监视所进行的特定运算的迭代次数,并且针对特定运算中的每个的每次进行的迭代而存储迭代期间由节点表示的特定运算的输出,以供用于反向路径期间的梯度计算。例如,在神经网络是递归神经网络的情况下,特定节点中的每一个所表示的运算生成时间步长中的每一个的相应节点输出,并且监视节点存储时间步长中的每一个的相应节点输出,即,使得反向路径在计算了最后时间步长的神经网络输出后开始时,全部时间步长的特定节点的运算的输出都可用,换而言之,在反向传播路径中重用正向值,示例***在构建反向传播路径期间检测反向传播中所需的正向值。针对每个正向值,***引入堆栈并且在正向传播路径中添加节点,诸如“迭代计数器”运算,以将每次迭代时的正向值保存到堆栈。反向传播路径以倒序使用堆栈中的这些值。
这些相应的节点输出可以在具有有限存储器的设备上产生,诸如GPU。存储每个时间步长的相应节点输出可能导致堆栈中存储大量的值,从而减少可供其他事务使用的设备存储器。另外,旧值被存储最久时间,因为反向传播以正向传播的倒序使用这些值。为了节约设备上的存储器,示例***可以将存储器从设备调换到另一个设备,诸如CPU。这种交换可能是异步的,其中***会在产生值之后的某个时间从设备向CPU发送一个值,并且***会在需要该值之前的某个时间返回设备中检索该值。基于数据流图中定义的运算顺序和控制,***在所述值被需要时获得这些值。
图5是用于处理计算图的示例过程500的流程图。方便起见,将过程500描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,恰当编程的计算图***——例如图1A的计算图***100能够执行过程500。
***从客户端接收处理计算图的请求(步骤502)。例如,该请求能够是对指定的输入进行计算图所表示的神经网络推理的请求、对指定的训练数据集进行计算图所表示的神经网络训练运算的请求、或者进行计算图所表示的其他神经网络运算的请求,如上参照图1A所述。
***获得表示计算图的数据(步骤504)。在一些情况下,该数据与客户端的请求一起发送。在其他情况下,该请求标识计算图并且***从存储器中检索表示所标识的图的数据。举例说明,表示图的数据能够是图中节点的数组。每个节点能够包含指定运算类型、名称和节点传入边和传出边列表的信息。
***识别用于进行所请求的运算的多个可用设备(步骤506)。***能够连接到数个设备,例如,在数据中心中。***能够保持每个设备的状态,例如,通过使用图1A的执行器106。每个设备可能处于繁忙或可用状态。如果设备当前正进行其他运算而未能被指派进一步的运算或者无法进行图处理运算,则该设备繁忙。如果设备能够被指派进一步的运算,则该设备可用,例如,能够将进一步的运算排入队列以供设备进行运算。
***将计算图划分成多个子图(步骤508)。每个子图包括计算图中的一个或多个节点。在一些实施方式中,来自客户端的请求包括标签,所述标签指定应如何将计算图划分成预定子图。例如,用户能够手动生成计算图的标签并且将所述标签包括在请求中。如果请求包括这样的标签,则***将计算图划分成预定子图。
在一些其他实施方式中,***基于计算图被如何布置来划分计算图。具体地,***能够分析图以识别连接计算图中以链结构布置的一个或多个节点的有向边。呈链结构的节点是通过沿着一个从节点到节点的有向边彼此连接的节点。因此,链中的节点在计算它自己的运算之前须等待链中在先节点的运算才能完成计算。将参照图6进一步描述划分子图。
在另一些实施方式中,***将图中的节点聚类,并且然后将相同群集中的节点指派到相同的子图。具体地,***能够分析该图以识别对有向边上流动的共享数据进行运算的节点。例如,多个节点能够从前一节点接收相同的数据作为输入。***能够将在相同子图中接收相同数据的这样的节点聚类,使得当子图被指派到特定设备时,设备能够重用存储器来存储用于节点所表示的多个运算的相同数据。将参照图6进一步描述这一点。
下文将更加详细地讨论***生成子图的方式。
***针对每个子图,将该子图中的一个或多个节点所表示的运算指派到相应的可用设备(步骤510)。在一些实施方式中,***将每个子图指派到具有进行子图中的节点所表示的运算所需的计算能力的设备。在一些实施方式中,来自客户端的请求包括由用户指定的数据,该数据标识进行特定节点的运算的特定类型的设备。例如,用户能够指定应将具有数学上繁重的运算的特定节点指派到GPU。***能够将包括特定节点的子图指派到具有特定类型的设备。
在一些其他实施方式中,***确定将子图指派到的设备,这是通过估计表示子图中的节点的运算将消耗的最大资源量。例如,***能够计算子图中任何节点将消耗的最大存储器容量。具体地,***能够遍历子图来计算往返于子图的每个节点的每个有向边上的张量的维数。张量的维数指示设备进行运算会消耗的存储器大小。***能够将子图指派到具有能够存储在子图中流动的最大张量的存储器的设备。
下文将参照图7进一步描述将子图指派到设备的另一个实施方式,并且下文会更加详细地讨论***如何将子图指派到设备。
***使得设备执行指派到设备的节点的运算(步骤512)。在一些实施方式中,***向每个设备发送开始运算的请求。设备接收该请求,并且作为响应,开始进行指派到该设备的节点的运算。在一些实施方式中,设备以异步方式进行指派到该设备的节点的运算。例如,设备能够通过使用队列、非阻塞内核或这两者来以异步方式进行运算。下面描述以异步方式进行运算。
图6图示出示例计算图。举例而言,计算图***——例如图1A的***100——能够从客户端接收请求,以针对一组输入而通过使用该计算图来计算推断。具体地,客户端能够请求节点616的输出。能够在有向边上将这组输入提供给节点602。
***能够将计算图划分成三个子图618至622。为了生成子图618至622,***能够分析计算图以识别节点的链。例如,该***能够识别节点604、616的第一链,节点602、606、610的第二链以及节点608、612、614的第三链。虽然其他可能的节点链也是可能的,但***能够选择使子图数目最少化的链。***能够将节点的链分组相应的子图。
在一些实施方式中,如果节点306的输出相同,则***将节点606、608和610分组成一个子图。其原因在于,节点610和608二者皆从节点606接收到相同的输出。在此情况下,在相同的设备上进行节点610和608所表示的运算以使存储器消耗最小化。也就是说,当进行节点610和608的运算时,设备能够访问存储来自节点606的输出的相同存储器位置。
***能够将第三子图618至622指派到三个相应的可用设备。***能够开始于指派第一子图622,因为它包含初始节点602并且节点中的任何节点都不依赖于其他子图的输出。一旦指派了第一子图622,***便能够指派第二子图618。第二子图618中的节点604需要节点602的输出,该输出将由指派给第一子图622的设备计算。
在一些实施方式中,***等待直至接收到已经完成节点602所表示的运算的指示,再指派第二子图618。这允许***基于例如存储器可用性或设备可用性的当前信息来动态地指派子图,这会提高效率。在接收到指示后,***能够将第二子图618指派到能够处置节点602的输出大小的设备。在一些其他实施方式中,***分析该图以确定在从节点602到604的有向边上流动的张量的维数。然后,***能够基于张量维数来指派第二子图618。也就是说,***将第二子图618指派到能够处置第二子图618的张量的存储器需求的设备。
类似地,第三子图620的初始节点608需要节点606的输出。***能够等待直至第一子图被指派到的设备完成节点606所表示的运算,再指派第三子图620,。一旦完成了节点606所表示的运算,***便能够分析节点606的输出以将第三子图620指派到相应的可用设备。
设备能够在需要尚未计算的输入的节点处暂停运算,例如,进入空闲状态。例如,在进行节点608的运算之后,被指派给第三子图620的设备能够进行节点612的运算。然后,被指派给第三子图620的设备确定是否已经接收到来自节点610的输入。设备能够等待直至设备接收到来自节点610的输入,再进行节点312的运算。
在最终节点——即节点616进行运算之后,节点被指派到的设备能够将该节点的输出或者完成图处理的指示返回到***。视需要,***能够再将输出返回到客户端。
图7是用于将子图指派给设备的示例过程700的流程图。方便起见,将过程700描述为由位于一个或多个位置的一个或多个计算机的***执行。例如,适当编程的计算图***——例如图1A的计算图***100能够执行过程700。
***确定向设备的子图的初始指派(步骤702)。***能够通过使用贪婪算法来确定向设备的初始指派。也就是说,***通过分析子图中的一个或多个初始节点来确定子图被指派到的设备。初始节点是在子图中数据自其开始流动的节点。
在一些实施方式中,***确定初始节点所表示的运算或者连接到初始节点的节点所表示的运算所消耗的存储器容量。如上参照图5和图6所述,***能够分析往返于初始节点的张量的维数,以确定将消耗的存储器容量,如上参照图5所述。
基于所确定的容量,***将子图指派到至少具有所确定的存储器容量的设备。因考虑初始节点而非后续节点,***能够快速地将子图指派到设备,但所述指派可能并非最优,因为后续节点可能需要所指派的设备可能无法有效率处理的资源,例如,如果所指派的设备没有足够的存储器,因此必须实施分页才能执行子图中所表示的后续运算。
***监视设备对图的处理以确定统计数据(步骤704)。例如,***能够监视每个设备的运算时间、空闲时间或这两者。运算时间是设备完成客户端的请求所花费的时间。也就是说,***测量每个设备完成所指派的子图运算要花费的时间。***还能够测量每个设备在处理指派给设备的子图期间等待后续运算的闲置时间。
***通过使用统计数据来调整初始指派(步骤706)。具体地,***能够调整初始指派以使运算时间、空闲时间或这两者最小化。举例说明,基于第一子图和第二子图的相应初始节点,***能够首先指派第一设备来进行第一子图的运算并且指派第二设备来进行第二子图的运算。在追踪进行运算的时间之后,***能够比较第一设备与第二设备之间的资源利用率。如果第一设备比第二设备空闲更长的时间段,但第一设备比第二设备具有更多的处理能力和存储器,则针对使用第一子图和第二子图进行运算的后续请求,***能够调整向第二设备的第一子图的指派以及向第一设备的第二子图的指派。
***根据经调整的指派将子图重新指派到设备(步骤708)。也就是说,继续上述说明,响应于使用第一子图和第二子图进行运算的后续请求,***将第一子图指派到第二设备并且将第二子图指派到第一设备。
***能够重复步骤704至708,以持续更新指派来提高性能。例如,***能够确定调整指派以使空闲时间最小化的多种可能性。***能够有选项来将特定子图指派到众多不同的设备。在特定子图的后续运算中,***选择第一可能性并且测量完成运算的第一运算时间。在另一个后续运算中,***在第二次迭代期间选择第二可能性并且测量完成的第二运算时间。在又一个后续运算中,***选择运算时间最短的可能性并且能够针对不同的子图选择不同的指派可能性。在一些实施方式中,***能够重复这些步骤,直至已达到阈值改进量。
在将设备指派到相应子图之后,设备进行相应子图的运算,例如,以通过使用由计算图所表示的神经网络(或其他机器学习模型)来处理模型输入。在完成运算后,设备能够向***通知完成运算或者运算的输出(如果有)。在一些情况下,***接收到的请求能够指定包括计算图中的特定节点的一个或多个输出的响应。在完成运算之后,***能够从特定设备被指派到的一个或多个设备接收特定节点的输出。然后,***能够将输出提供给客户端,如上参照图1A所述。
在一些实施方式中,用户能够指定例如计算图的子图、计算图中的节点、或者计算图中多个节点的不同集合的计算图的部分,作为能够作为其他计算图的组件而被重用的函数。具体地,在这些实施方式中,在向***提供标识计算图的数据之后,用户能够提交请求来指定计算图的特定部分作为可重用的函数并且将该可重用的函数与函数名称相关联,例如,***生成的标识符或者用户指定的逻辑名称。然后,***能够保存标识该特定部分中的节点和边的数据并且将该部分与函数名称相关联。在稍后的时间,***可以接收处理包括对函数的引用的另一个计算图的请求,例如,应将另一个计算图中的特定节点的输出作为输入提供给具有该函数名称的函数并且应将该函数的输出作为输入提供给另一个计算图中的另一个特定节点的指示。响应于该请求,***能够识别与功能名称相关联的图部分并且能够生成在恰当位置处包括该图部分的扩增计算图。然后,***能够如上所述处理该扩增计算图。因此,用户能够很容易将在其计算图中包括某些常常重用的运算,例如,对神经网络层的特定配置的运算,而不必每次重新生成表示那些运算的图部分。
本说明书所述主题和函数运算的实施例能够在数字电子电路、有形体现的计算机软件或固件、包括本说明书中所公开的结构及其结构等价物的计算机硬件、或者其一个或多个的组合中实现。本说明书所述主题的实施例能够被实现为一个或多个计算机程序,即,在有形的非暂时性程序载体上编码的计算机程序指令的一个或多个模块,以供数据处理装置执行或者控制其操作。替选地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电信号、光信号或电磁信号,所述信号被生成用来编码信息以供传输到合适的接收器装置,以供数据处理装置执行。计算机存储介质能够是机器可读存储设备、机器可读存储基底、随机或串行存取存储设备、或者其一个或多个的组合。然而,计算机存储介质并非传播信号。
术语“数据处理装置”涵盖各种类型的用于处理数据的装置、设备和机器,例如包括可编程处理器、计算机或者多个处理器或计算机。该装置能够包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,该装置还能够包括为讨论中的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***、或者其一个或多个的组合的代码。
计算机程序(其也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本、或代码)能够以任何形式的编程语言来编写,包括编译语言或解释语言或者声明性语言或过程性语言,并且能够以任何形式来部署,包括作为独立程序或者作为模块、组件、子例程或者适用于计算环境的其他单元。计算机程序可以但不必对应于文件***中的文件。程序能够被存储在保持其他程序或数据的文件部分中——例如存储在被存储在标记语言文档中的一个或多个脚本中、专用于上述程序的单个文件、或者多个协同文件中,例如,存储一个或多个模块、子程序或部分代码的文件。计算机程序能够被部署成在一台计算机上或者位于一个站点或跨多个站点分布并通过通信网络互联的多台计算机上执行。
如本说明书所用,“引擎”或“软件引擎”指代提供与输入不同的输出的软件实现的输入/输出***。引擎能够是经编码的功能块,诸如库、平台、软件开发工具包(“SDK”)或对象。每个引擎能够以包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备来实现,例如,服务器、移动电话、平板型计算机、笔记本型计算机、音乐播放器、电子书阅读器、膝上型或桌面型计算机、PDA、智能电话、或者其他固定式或便携式设备。此外,这些引擎中的两个或多于两个引擎可以在相同的计算设备或不同的计算设备上实现。
本说明书所述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行运算并且生成输出来执行功能。过程和逻辑流程也能够由例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路执行,并且装置也能够被实现为专用逻辑电路。
举例而言,适用于执行计算机程序的计算机能够基于通用微处理器、专用微处理器或这两者或者任何其他类型的中央处理单元。一般而言,中央处理单元将从只读存储器、随机存取存储器或这两者接收指令和数据。计算机的基本元素是用于进行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或多个大容量存储设备——例如磁盘、磁光盘或光盘,或者可操作地与其耦合以从其接收数据、向其传送数据或者两者兼备。然而,计算机不必具有这样的设备。而且,计算机能够被嵌入另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪盘驱动器,仅举几例。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括:半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘——例如,内置硬盘或可移动盘;磁光盘;以及CD ROM盘和DVD-ROM盘。处理器和存储器能够辅以专用逻辑电路或并入其中。
为提供与用户的交互,本说明书所述主题的实施例能够在计算机上实现,该计算机具有用于将信息显示给用户的显示设备,例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器,以及用户能够借以向计算机提供输入的键盘和定点设备,例如,鼠标或者跟踪球。其他种类的设备也能够被使用于提供与用户的交互;例如,提供给用户的反馈能够是任何类型的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入能够以任何形式来接收,包括声音、语音或者触觉输入。另外,计算机能够通过以下与用户相交互:向用户使用的设备发送文档并且从该设备接收文档;例如,通过响应于从用户的客户端设备上的web浏览器接收的请求,将web页面发送到该web浏览器。
本说明书所述主题的实施例能够在计算***中实现,该计算***包括后端组件——例如作为数据服务器,或者该计算***包括中间件组件——例如应用服务器,或者该计算***包括前端组件——例如,具有用户能够借以与本说明书所述主题的实施方式相交互的图形用户界面或者web浏览器的客户端计算机,或者一个或多个这样的后端、中间件或前端组件的任意组合。***的组件能够通过例如通信网络的数字数据通信的任何形式或者介质来互联。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,互联网。
计算***能够包括客户端和服务器。客户端与服务器一般彼此远离,并且通常通过通信网络相交互。客户端与服务器的关系借助在相应计算上运行并且彼此具有客户端-服务器关系的计算机程序来实现。
虽然本说明书包含许多具体实施方式的细节,但这些不应当被解释为对任何发明或者可能保护内容的范围的限制,而应被理解为针对特定发明的特定实施例的特征的描述。本说明书中在分开的实施例的场境中描述的某些特征也能够在单个实施例的组合中实现。反之,在单个实施例的场境中描述的各个特征也能够分开地在多个实施例中或者以任何适当子组合来实现。此外,尽管上文可能将一些特征描述为以某些组合执行动作乃至最初如此要求保护这些特征,但所要求保护的组合中的一个或多个特征在一些情况下能够从所述组合中排除,并且所要求保护的组合可能涉及子组合或者子组合的变型。
类似地,虽然在图中以特定顺序来描绘运算,但这不应被理解为要求以所示的特定顺序或相继顺序来执行这样的运算,或者执行所有图示的运算,以达成期望的结果。在某些情形下,多任务和并行处理可能有利。此外,上述实施例中的各个***、模块和组件的分离不应被理解为在所有实施例中皆要求这样的分离,而应当理解,所述的程序组件和***一般能够共同整合到单个软件产品中或者封装到多个软件产品中。
已对所述主题的特定实施例予以描述。其他实施例落入所附权利要求书的范围内。例如,能够以不同的顺序执行权利要求中所述的动作并且仍能达成期望的结果。举例而言,附图中所描绘的过程并非必然要求所示的特定顺序或相继顺序来达成期望的结果。在某些实施方式中,多任务和并行处理可能有利。
Claims (20)
1.一种用于训练表示为计算图的神经网络的方法,其中,所述计算图包括多个节点、多个连接有向边、和多个参数有向边,其中,每个节点表示所述神经网络所进行的作为根据神经网络输入来确定神经网络输出的一部分的相应运算,其中,每个连接有向边将相应第一节点连接至相应第二节点,所述相应第二节点表示接收所述相应第一节点所表示的运算的输出作为输入的运算,以及其中,每个参数有向边连接到相应节点并且表示所述神经网络的一个或多个参数的流以作为对所述相应节点所表示的运算的输入,所述方法包括:
获得表示所述计算图的数据;
扩增所述计算图,以生成用于使用机器学习训练算法来训练所述神经网络的训练计算图,所述机器学习训练算法包括关于所述神经网络的参数中的每一个来计算目标函数的梯度,包括:
将多个梯度节点和训练边***所述计算图中,以生成通过所述计算图的反向路径,所述反向路径表示用于关于所述神经网络的参数来计算所述目标函数的梯度的运算,其中,每个梯度节点表示关于沿所述计算图中的相应参数有向边流动的参数来计算所述目标函数的梯度的梯度函数;以及
通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络。
2.根据权利要求1所述的方法,其中,扩增所述计算图进一步包括:
识别所述计算图中的一个或多个控制流节点,其中,每个控制流节点表示控制流运算,该控制流运算使得所述计算图中的一个或多个其他节点所表示的运算在所述计算图的执行期间有条件地或迭代地进行;以及
针对每个已识别的控制流节点,沿通过所述计算图的所述反向路径***对应的反向路径控制流节点,其中,每个反向路径控制流节点调整沿所述反向路径的控制流,以担负对应的控制流节点所表示的控制流运算。
3.根据权利要求2所述的方法,其中,所述一个或多个控制流节点包括交换控制流节点,以及其中,与所述交换控制流节点相对应的反向路径控制流节点是合并反向控制流节点。
4.根据权利要求2或3中的任一项所述的方法,其中,所述一个或多个控制流节点包括合并控制流节点,以及其中,与所述合并控制流节点相对应的反向路径控制流节点是交换反向控制流节点。
5.根据权利要求2至4中的任一项所述的方法,其中,所述一个或多个控制流节点包括进入控制流节点,以及其中,与所述进入控制流节点相对应的反向路径控制流节点是退出反向控制流节点。
6.根据权利要求2至5中的任一项所述的方法,其中,所述一个或多个控制流节点包括退出控制流节点,以及其中,与所述退出控制流节点相对应的反向路径控制流节点是进入反向控制流节点。
7.根据权利要求2至6中的任一项所述的方法,其中,所述一个或多个控制流节点包括下一迭代控制流节点,以及其中,与所述下一迭代控制流节点相对应的反向路径控制流节点是下一迭代反向控制流节点。
8.根据任一项前述权利要求所述的方法,其中,扩增所述计算图进一步包括:
确定在所述计算图的执行期间进行所述计算图中的一个或多个特定节点所表示的一个或多个特定运算的多次迭代;以及
将一个或多个监视节点***所述计算图中,所述监视节点表示以下操作:在所述训练计算图的执行期间,监视所进行的所述特定运算的迭代次数,以及针对所述特定运算中的每一个的每次所进行的迭代,存储该迭代期间由所述节点表示的特定运算的输出。
9.根据权利要求8所述的方法,其中,在所述训练计算图中的所述反向路径的执行期间,所述一个或多个监视节点所存储的输出作为输入提供给所述梯度节点中的一个或多个所表示的梯度函数。
10.根据权利要求8或9所述的方法,其中,确定在所述计算图的执行期间进行所述计算图中的一个或多个特定节点所表示的一个或多个特定运算的多次迭代包括:
分析所述计算图以识别所述计算图中的一个或多个控制流节点,所述一个或多个控制流节点使得所述计算图中的所述一个或多个特定节点所表示的特定运算被多次进行。
11.根据权利要求8至10中的任一项所述的方法,其中,所述神经网络是递归神经网络,所述递归神经网络在多个时间步长中的每个时间步长接收相应神经网络输入,并且在所述多个时间步长中的每个时间步长生成相应神经网络,其中,所述特定节点中的每一个所表示的运算生成所述多个时间步长中的每个时间步长的相应节点输出,以及其中,所述监视节点存储所述多个时间步长中的每个时间步长的相应节点输出。
12.根据权利要求8至11中的任一项所述的方法,其中,存储该迭代期间由所述节点表示的特定运算的输出包括:
在产生数据之后,将数据从产生该数据的设备异步发送到中央处理单元以供存储;以及
从所述中央处理单元异步检索该数据以供在通过所述计算图的所述反向路径中在所述设备上使用,所述反向路径表示用于关于所述神经网络的参数来计算所述目标函数的梯度的运算。
13.根据任一项前述权利要求所述的方法,其中,通过执行所述训练计算图而使用所述机器学习训练算法来训练所述神经网络包括:
跨多个设备分配所述训练计算图中的节点;以及
使得所述设备中的每一个进行分配给该设备的节点所表示的运算。
14.根据权利要求1至12中的任一项所述的方法,包括:将所述计算图划分成多个子图并且将每个子图分配给不同的设备,以及使得所述设备中的每一个进行分配给该设备的子图的节点所表示的运算。
15.根据权利要求14所述的方法,包括:基于来自客户端的包括标签的请求来将所述计算图划分成多个子图,所述标签指定应如何将所述计算图划分成子图。
16.根据权利要求14所述的方法,包括:基于所述计算图被如何布置来将所述计算图划分成多个子图。
17.根据权利要求14或16所述的方法,包括:基于分析所述图以识别连接所述计算图中以链结构布置的一个或多个节点的有向边,将所述计算图划分成多个子图。
18.根据权利要求14或16所述的方法,包括:基于分析所述图以识别对有向边上流动的共享数据进行运算的节点以及聚类在相同子图中接收相同数据的节点,将所述计算图划分成多个子图。
19.一种***,包括一个或多个计算机和一个或多个存储指令的存储设备,所述指令可操作以在由所述一个或多个计算机执行时使得所述一个或多个计算机根据如权利要求1所述的方法来进行运算。
20.一种计算机可读存储介质,包括存储于其上的指令,所述指令能够由处理设备执行并且在这样的执行后使得所述处理设备根据如权利要求1所述的方法来进行运算。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562253057P | 2015-11-09 | 2015-11-09 | |
US62/253,057 | 2015-11-09 | ||
PCT/US2016/061151 WO2017083399A2 (en) | 2015-11-09 | 2016-11-09 | Training neural networks represented as computational graphs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108292374A true CN108292374A (zh) | 2018-07-17 |
CN108292374B CN108292374B (zh) | 2022-04-15 |
Family
ID=57910102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680065507.2A Active CN108292374B (zh) | 2015-11-09 | 2016-11-09 | 训练表示为计算图的神经网络 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10970628B2 (zh) |
EP (2) | EP3374933A2 (zh) |
CN (1) | CN108292374B (zh) |
WO (1) | WO2017083399A2 (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597965A (zh) * | 2018-11-19 | 2019-04-09 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、***、终端及介质 |
CN109740751A (zh) * | 2018-12-24 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络模型的架构融合方法及相关装置 |
CN109952742A (zh) * | 2018-12-04 | 2019-06-28 | 区链通网络有限公司 | 图结构处理方法、***、网络设备及存储介质 |
CN110008028A (zh) * | 2019-04-10 | 2019-07-12 | 北京旷视科技有限公司 | 计算资源分配方法、装置、计算机设备和存储介质 |
CN110163372A (zh) * | 2019-05-31 | 2019-08-23 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110162337A (zh) * | 2019-05-31 | 2019-08-23 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110210614A (zh) * | 2019-05-31 | 2019-09-06 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110689116A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
CN110956260A (zh) * | 2018-09-27 | 2020-04-03 | 瑞士电信公司 | 神经架构搜索的***和方法 |
CN111160551A (zh) * | 2019-12-04 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 计算图执行方法、计算机设备及存储介质 |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN111340175A (zh) * | 2018-12-18 | 2020-06-26 | 赛灵思公司 | 图重写的处理方法及装置、计算设备及可读介质 |
CN111563584A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 一种神经网络模型的拆分方法及相关产品 |
CN111667060A (zh) * | 2019-03-08 | 2020-09-15 | 上海寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
CN111753983A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的定制化方法、***、设备和存储介质 |
CN111915002A (zh) * | 2019-05-09 | 2020-11-10 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
WO2021052391A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种构建中间表达的方法、编译器和服务器 |
CN112668707A (zh) * | 2019-05-31 | 2021-04-16 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
WO2021077282A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络模型转化方法、装置、服务器及存储介质 |
WO2021077283A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络计算压缩方法、***及存储介质 |
CN112836787A (zh) * | 2019-11-04 | 2021-05-25 | 百度(美国)有限责任公司 | 通过高效混合并行化减少深度神经网络训练次数 |
CN113169990A (zh) * | 2018-11-30 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 具有动态卸载的深度学习推理的分割 |
WO2022056841A1 (en) * | 2020-09-18 | 2022-03-24 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Neural architecture search via similarity-based operator ranking |
WO2022267036A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 神经网络模型训练方法和装置、数据处理方法和装置 |
WO2023093689A1 (zh) * | 2021-11-29 | 2023-06-01 | 华为技术有限公司 | 一种计算图优化方法、装置及设备 |
WO2023212975A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京灵汐科技有限公司 | 映射的方法、电子设备、计算机可读存储介质 |
CN113469354B (zh) * | 2020-03-31 | 2024-05-21 | 亚马逊技术股份有限公司 | 受存储器限制的神经网络训练 |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11615285B2 (en) * | 2017-01-06 | 2023-03-28 | Ecole Polytechnique Federale De Lausanne (Epfl) | Generating and identifying functional subnetworks within structural networks |
CN107239315B (zh) * | 2017-04-11 | 2019-11-15 | 赛灵思公司 | 面向神经网络异构计算平台的编程模型 |
US11288575B2 (en) * | 2017-05-18 | 2022-03-29 | Microsoft Technology Licensing, Llc | Asynchronous neural network training |
US10333961B2 (en) * | 2017-06-27 | 2019-06-25 | Intel Corporation | Malware detection system attack prevention |
US11138516B2 (en) * | 2017-06-30 | 2021-10-05 | Visa International Service Association | GPU enhanced graph model build and scoring engine |
EP3428746B1 (en) * | 2017-07-14 | 2021-06-02 | Siemens Aktiengesellschaft | A method and apparatus for providing an adaptive self-learning control program for deployment on a target field device |
CN111133458B (zh) * | 2017-09-15 | 2024-05-03 | 谷歌有限责任公司 | 增强神经网络 |
US11003992B2 (en) * | 2017-10-16 | 2021-05-11 | Facebook, Inc. | Distributed training and prediction using elastic resources |
CN110444214B (zh) * | 2017-11-24 | 2021-08-17 | 深圳市腾讯计算机***有限公司 | 语音信号处理模型训练方法、装置、电子设备及存储介质 |
US10818082B2 (en) * | 2018-03-05 | 2020-10-27 | Vivacity Inc. | Method and system for parametrically creating an optimal three dimensional building structure |
WO2019182590A1 (en) * | 2018-03-21 | 2019-09-26 | Visa International Service Association | Automated machine learning systems and methods |
US11954576B2 (en) | 2018-04-17 | 2024-04-09 | Shenzhen Corerain Technologies Co., Ltd. | Method for implementing and developing network model and related product |
US11715002B2 (en) * | 2018-05-10 | 2023-08-01 | Microsoft Technology Licensing, Llc | Efficient data encoding for deep neural network training |
US10956132B1 (en) * | 2018-06-11 | 2021-03-23 | Amazon Technologies, Inc. | Unified code and data management for model development |
US11972343B2 (en) | 2018-06-11 | 2024-04-30 | Inait Sa | Encoding and decoding information |
US11663478B2 (en) | 2018-06-11 | 2023-05-30 | Inait Sa | Characterizing activity in a recurrent artificial neural network |
US11893471B2 (en) | 2018-06-11 | 2024-02-06 | Inait Sa | Encoding and decoding information and artificial neural networks |
US11238368B2 (en) | 2018-07-02 | 2022-02-01 | Paypal, Inc. | Machine learning and security classification of user accounts |
WO2020041026A1 (en) * | 2018-08-23 | 2020-02-27 | D5Ai Llc | Efficently building deep neural networks |
US11037059B2 (en) * | 2018-08-31 | 2021-06-15 | D5Ai Llc | Self-supervised back propagation for deep learning |
US11531902B2 (en) | 2018-11-13 | 2022-12-20 | International Business Machines Corporation | Generating and managing deep tensor neural networks |
US11373233B2 (en) | 2019-02-01 | 2022-06-28 | Target Brands, Inc. | Item recommendations using convolutions on weighted graphs |
US11652603B2 (en) | 2019-03-18 | 2023-05-16 | Inait Sa | Homomorphic encryption |
US11569978B2 (en) | 2019-03-18 | 2023-01-31 | Inait Sa | Encrypting and decrypting information |
US20200302250A1 (en) * | 2019-03-22 | 2020-09-24 | Nvidia Corporation | Iterative spatial graph generation |
US11556756B2 (en) | 2019-04-25 | 2023-01-17 | Alibaba Group Holding Limited | Computation graph mapping in heterogeneous computer system |
EP3970012A1 (en) | 2019-07-17 | 2022-03-23 | Google LLC | Scheduling operations on a computation graph |
US11694075B2 (en) * | 2019-09-05 | 2023-07-04 | Alibaba Group Holding Limited | Partitioning control dependency edge in computation graph |
CN110942147B (zh) * | 2019-11-28 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 基于多方安全计算的神经网络模型训练及预测方法、装置 |
CN111158901B (zh) * | 2019-12-09 | 2023-09-08 | 爱芯元智半导体(宁波)有限公司 | 计算图的优化方法、装置、计算机设备和存储介质 |
US11580401B2 (en) | 2019-12-11 | 2023-02-14 | Inait Sa | Distance metrics and clustering in recurrent neural networks |
US11651210B2 (en) | 2019-12-11 | 2023-05-16 | Inait Sa | Interpreting and improving the processing results of recurrent neural networks |
US11797827B2 (en) | 2019-12-11 | 2023-10-24 | Inait Sa | Input into a neural network |
US11816553B2 (en) | 2019-12-11 | 2023-11-14 | Inait Sa | Output from a recurrent neural network |
CN113011577B (zh) * | 2019-12-20 | 2024-01-05 | 阿里巴巴集团控股有限公司 | 处理单元、处理器核、神经网络训练机及方法 |
CN110929870B (zh) * | 2020-02-17 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 图神经网络模型训练方法、装置及*** |
CN111882054B (zh) * | 2020-05-27 | 2024-04-12 | 杭州中奥科技有限公司 | 对双方加密关系网络数据交叉训练的方法及相关设备 |
CN111723935A (zh) * | 2020-06-24 | 2020-09-29 | 湖北亿咖通科技有限公司 | 神经网络计算图的处理方法、计算机存储介质及电子设备 |
CN112070213A (zh) * | 2020-08-28 | 2020-12-11 | Oppo广东移动通信有限公司 | 神经网络模型的优化方法、装置、设备及存储介质 |
CN114169491A (zh) * | 2020-09-10 | 2022-03-11 | 阿里巴巴集团控股有限公司 | 一种模型处理方法、装置、设备及计算机可读存储介质 |
CN112465116B (zh) * | 2020-11-25 | 2022-12-09 | 安徽寒武纪信息科技有限公司 | 编译方法、运算方法、电子设备和存储介质 |
US20220180243A1 (en) * | 2020-12-08 | 2022-06-09 | Atlantic Technical Organization | System and method of suggesting machine learning workflows through machine learning |
US20220345535A1 (en) * | 2021-04-26 | 2022-10-27 | Nokia Solutions And Networks Oy | Distribution of machine learning workflows on webscale infrastructures |
CN113553175B (zh) * | 2021-07-08 | 2024-04-16 | 浙江工业大学 | 面向交通数据流的最优排序算法选择方法 |
WO2023129762A2 (en) * | 2021-08-16 | 2023-07-06 | The Regents Of The University Of California | A design automation methodology based on graph neural networks to model integrated circuits and mitigate hardware security threats |
DE102021210846A1 (de) | 2021-09-28 | 2023-03-30 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zur Erzeugung einer Graphenstruktur für das Trainieren eines Graph Neural Networks |
US20230177385A1 (en) * | 2021-12-08 | 2023-06-08 | International Business Machines Corporation | Federated machine learning based on partially secured spatio-temporal data |
US20240104341A1 (en) * | 2022-09-27 | 2024-03-28 | Zhejiang Lab | Memory optimization method and apparatus for neural network compilation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184454A (zh) * | 2011-05-26 | 2011-09-14 | 浙江迦南科技股份有限公司 | 基于神经网络***的制粒机配方生成方法 |
US20150007182A1 (en) * | 2013-06-27 | 2015-01-01 | Microsoft Corporation | Iteration support in a heterogeneous dataflow engine |
CN104620236A (zh) * | 2012-03-15 | 2015-05-13 | 美国高通技术公司 | 用于神经网络的基于标记的装置和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128606A (en) | 1997-03-11 | 2000-10-03 | At&T Corporation | Module for constructing trainable modular network in which each module inputs and outputs data structured as a graph |
US8826255B1 (en) | 2007-06-18 | 2014-09-02 | The Mathworks, Inc. | Restructuring control flow graphs generated from a model |
GB201402736D0 (en) | 2013-07-26 | 2014-04-02 | Isis Innovation | Method of training a neural network |
US10282228B2 (en) * | 2014-06-26 | 2019-05-07 | Amazon Technologies, Inc. | Log-based transaction constraint management |
US9495633B2 (en) * | 2015-04-16 | 2016-11-15 | Cylance, Inc. | Recurrent neural networks for malware analysis |
US10467528B2 (en) * | 2015-08-11 | 2019-11-05 | Oracle International Corporation | Accelerated TR-L-BFGS algorithm for neural network |
-
2016
- 2016-11-09 US US15/347,618 patent/US10970628B2/en active Active
- 2016-11-09 CN CN201680065507.2A patent/CN108292374B/zh active Active
- 2016-11-09 EP EP16831657.8A patent/EP3374933A2/en not_active Ceased
- 2016-11-09 WO PCT/US2016/061151 patent/WO2017083399A2/en active Application Filing
- 2016-11-09 EP EP22210927.4A patent/EP4202782A1/en active Pending
-
2021
- 2021-04-02 US US17/221,305 patent/US20210295161A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184454A (zh) * | 2011-05-26 | 2011-09-14 | 浙江迦南科技股份有限公司 | 基于神经网络***的制粒机配方生成方法 |
CN104620236A (zh) * | 2012-03-15 | 2015-05-13 | 美国高通技术公司 | 用于神经网络的基于标记的装置和方法 |
US20150007182A1 (en) * | 2013-06-27 | 2015-01-01 | Microsoft Corporation | Iteration support in a heterogeneous dataflow engine |
Non-Patent Citations (5)
Title |
---|
ANDREAS GRIEWANK: "Who invented the reverse mode of differentiation", 《DOCUMENTA MATHEMATICA · EXTRA VOLUME ISMP》 * |
ANONYMOUS: "Automatic differentiation Wikipedia", 《HTTPS://EN.WIKIPEDIA.ORG/W/INDEX.PHP?TITLE=AUTOMATIC_DIFFERENTIATION&OLDID=688944133》 * |
DEREK G. MURRAY等: "Naiad: A Timely Dataflow System", 《PROCEEDINGS OF THE TWENTY-FOURTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES》 * |
E A WAN, F BEAUFAYS: "Diagrammatic methods for deriving and relating temporal neural network algorithms", 《ADAPTIVE PROCESSING OF SEQUENCES AND DATA STRUCTURES, INTERNATIONAL SUMMER SCHOOL ON NEURAL NETWORKS》 * |
LAURENT DINH等: "NICE: Non-linear Independent Components Estimation", 《HTTPS://ARXIV.ORG/ABS/1410.8516》 * |
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110956260A (zh) * | 2018-09-27 | 2020-04-03 | 瑞士电信公司 | 神经架构搜索的***和方法 |
CN109597965B (zh) * | 2018-11-19 | 2023-04-18 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、***、终端及介质 |
CN109597965A (zh) * | 2018-11-19 | 2019-04-09 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、***、终端及介质 |
CN113169990B (zh) * | 2018-11-30 | 2024-04-05 | 阿里巴巴集团控股有限公司 | 具有动态卸载的深度学习推理的分割 |
CN113169990A (zh) * | 2018-11-30 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 具有动态卸载的深度学习推理的分割 |
CN109952742B (zh) * | 2018-12-04 | 2022-02-22 | 区链通网络有限公司 | 图结构处理方法、***、网络设备及存储介质 |
CN109952742A (zh) * | 2018-12-04 | 2019-06-28 | 区链通网络有限公司 | 图结构处理方法、***、网络设备及存储介质 |
CN111340175B (zh) * | 2018-12-18 | 2023-12-26 | 赛灵思公司 | 图重写的处理方法及装置、计算设备及可读介质 |
CN111340175A (zh) * | 2018-12-18 | 2020-06-26 | 赛灵思公司 | 图重写的处理方法及装置、计算设备及可读介质 |
CN109740751A (zh) * | 2018-12-24 | 2019-05-10 | 北京中科寒武纪科技有限公司 | 神经网络模型的架构融合方法及相关装置 |
CN109740751B (zh) * | 2018-12-24 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 神经网络模型的架构融合方法及相关装置 |
CN111563584A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 一种神经网络模型的拆分方法及相关产品 |
CN111667060B (zh) * | 2019-03-08 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
CN111667060A (zh) * | 2019-03-08 | 2020-09-15 | 上海寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
CN110008028A (zh) * | 2019-04-10 | 2019-07-12 | 北京旷视科技有限公司 | 计算资源分配方法、装置、计算机设备和存储介质 |
CN111915002A (zh) * | 2019-05-09 | 2020-11-10 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111915002B (zh) * | 2019-05-09 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110163372B (zh) * | 2019-05-31 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110210614A (zh) * | 2019-05-31 | 2019-09-06 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN112668707B (zh) * | 2019-05-31 | 2024-05-17 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN112668707A (zh) * | 2019-05-31 | 2021-04-16 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN110163372A (zh) * | 2019-05-31 | 2019-08-23 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110162337A (zh) * | 2019-05-31 | 2019-08-23 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110162337B (zh) * | 2019-05-31 | 2020-07-03 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
WO2021052391A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种构建中间表达的方法、编译器和服务器 |
US11789709B2 (en) | 2019-09-18 | 2023-10-17 | Huawei Technologies Co., Ltd. | Intermediate representation construction method, compiler, and server |
CN110689116B (zh) * | 2019-09-24 | 2022-12-27 | 安徽寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
CN110689116A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
WO2021077282A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络模型转化方法、装置、服务器及存储介质 |
WO2021077283A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络计算压缩方法、***及存储介质 |
US11797277B2 (en) | 2019-10-22 | 2023-10-24 | Shenzhen Corerain Technologies Co., Ltd. | Neural network model conversion method server, and storage medium |
CN112836787A (zh) * | 2019-11-04 | 2021-05-25 | 百度(美国)有限责任公司 | 通过高效混合并行化减少深度神经网络训练次数 |
CN111160551B (zh) * | 2019-12-04 | 2023-09-29 | 上海寒武纪信息科技有限公司 | 计算图执行方法、计算机设备及存储介质 |
CN111160551A (zh) * | 2019-12-04 | 2020-05-15 | 上海寒武纪信息科技有限公司 | 计算图执行方法、计算机设备及存储介质 |
US11954522B2 (en) | 2020-02-14 | 2024-04-09 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method for processing tasks in parallel, device and storage medium |
CN111309479A (zh) * | 2020-02-14 | 2020-06-19 | 北京百度网讯科技有限公司 | 一种任务并行处理的实现方法、装置、设备和介质 |
CN113469354B (zh) * | 2020-03-31 | 2024-05-21 | 亚马逊技术股份有限公司 | 受存储器限制的神经网络训练 |
CN111753983A (zh) * | 2020-06-22 | 2020-10-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的定制化方法、***、设备和存储介质 |
CN111753983B (zh) * | 2020-06-22 | 2024-05-28 | 深圳鲲云信息科技有限公司 | 神经网络模型的定制化方法、***、设备和存储介质 |
WO2022056841A1 (en) * | 2020-09-18 | 2022-03-24 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Neural architecture search via similarity-based operator ranking |
WO2022267036A1 (zh) * | 2021-06-25 | 2022-12-29 | 华为技术有限公司 | 神经网络模型训练方法和装置、数据处理方法和装置 |
WO2023093689A1 (zh) * | 2021-11-29 | 2023-06-01 | 华为技术有限公司 | 一种计算图优化方法、装置及设备 |
WO2023212975A1 (zh) * | 2022-05-06 | 2023-11-09 | 北京灵汐科技有限公司 | 映射的方法、电子设备、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4202782A1 (en) | 2023-06-28 |
US20210295161A1 (en) | 2021-09-23 |
WO2017083399A3 (en) | 2017-06-22 |
EP3374933A2 (en) | 2018-09-19 |
US10970628B2 (en) | 2021-04-06 |
CN108292374B (zh) | 2022-04-15 |
WO2017083399A2 (en) | 2017-05-18 |
US20170132513A1 (en) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108292374A (zh) | 训练表示为计算图的神经网络 | |
US11769061B2 (en) | Processing computational graphs | |
JP7094262B2 (ja) | 計算グラフの修正 | |
EP3446260B1 (en) | Memory-efficient backpropagation through time | |
CN108351805A (zh) | 计算图的基于流的加速器处理 | |
CN113168569A (zh) | 去中心化分布式深度学习 | |
WO2017176333A1 (en) | Batching inputs to a machine learning model | |
US20190266218A1 (en) | Matrix computation within a reconfigurable processor fabric | |
CN114172820B (zh) | 跨域sfc动态部署方法、装置、计算机设备及存储介质 | |
US11763146B1 (en) | Processing loops in computational graphs | |
CN108460458A (zh) | 在图形处理单元上执行计算图 | |
Shi et al. | Platforms and Practice of Heterogeneous Graph Representation Learning | |
BABU et al. | Design and Development of Agent Based Architecture for Effective R Effective Resource Utilization in a Grid Environment esource Utilization in a Grid Environment |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |