CN111338635A - 计算图的图编译方法、装置、设备及存储介质 - Google Patents
计算图的图编译方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111338635A CN111338635A CN202010103996.4A CN202010103996A CN111338635A CN 111338635 A CN111338635 A CN 111338635A CN 202010103996 A CN202010103996 A CN 202010103996A CN 111338635 A CN111338635 A CN 111338635A
- Authority
- CN
- China
- Prior art keywords
- graph
- calculation
- node
- operator
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种用于计算图的图编译方法、装置、设备及存储介质,涉及深度学习领域。该方法用于编译深度学习的计算图,该方法包括:获取输入的计算图,计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,至少两层节点中存在目标节点;对计算图进行图改写,得到优化后的计算图;对于优化后的计算图,生成目标节点的前向计算序列;对前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的第一算子代码;输出目标节点的前向计算序列和第一算子代码。通过对计算图进行改写后,简化了计算图的复杂结构,提升了计算图的编译效率。
Description
技术领域
本申请涉及深度学习领域,特别涉及一种计算图的图编译方法、装置、设备及存储介质。
背景技术
计算图(Computational Graph)是一种用于描述函数的有向无环图,用于表示机器学习模型涉及的计算逻辑。
相关技术中,采用计算图表示神经网络的算法,将计算图转化为计算机可识别的计算机语言,即完成对该神经网络的编译过程。
基于上述情况,当神经网络的算法较为复杂时,该神经网络对应有比较复杂的计算图,需要对计算图进行大量的计算。
发明内容
本申请实施例提供了一种计算图的图编译方法、装置、设备及存储介质,可以提高终端对计算图的编译效率,所述技术方案如下:
根据本申请的一个方面,提供了一种计算图的图编译方法,用于编译深度学习的计算图,所述方法包括:
获取输入的所述计算图,所述计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,所述至少两层节点中存在目标节点;
对所述计算图进行图改写,得到优化后的计算图;
对于所述优化后的计算图,生成所述目标节点的前向计算序列;
对所述前向计算序列中的各个节点进行算子代码编译,得到所述前向计算序列的第一算子代码;
输出所述目标节点的所述前向计算序列和所述第一算子代码。
根据本申请的另一方面,提供了一种计算图的图编译装置,所述图编译装置用于编译深度学习的计算图,所述图编译装置包括:
第一获取模块,用于获取输入的所述计算图,所述计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,所述至少两层节点中存在目标节点;
第一改写模块,用于对所述计算图进行图改写,得到优化后的计算图;
生成模块,用于对于所述优化后的计算图,生成所述目标节点的前向计算序列;
编译模块,对所述前向计算序列中的各个节点进行算子代码编译,得到所述前向计算序列的第一算子代码;
输出模块,用于输出所述目标节点的所述前向计算序列和所述第一算子代码。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上方面所述的计算图的图编译方法。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如上方面所述的计算图的图编译方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过对获取输入的计算图进行改写,得到优化后的计算图,并生成目标节点的前向计算序列,对前向计算序列中各个节点进行算子代码编译,得到前向计算序列的第一算子代码,通过上述图改写的方式简化了计算图的重复部分和/或复杂部分,从而提高了终端对计算图的编译效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的计算图的改写示意图;
图2是本申请一个示例性实施例提供的计算机系统框图;
图3是本申请一个示例性实施例提供的计算图的图编译方法的流程图;
图4是本申请一个示例性实施例提供的计算图的示意图;
图5是本申请另一个示例性实施例提供的计算图的示意图;
图6是本申请一个示例性实施例提供的结合后向计算过程的计算图的图编译方法的流程图;
图7是本申请一个示例性实施例提供的结合后向计算的计算图的示意图;
图8是本申请另一个示例性实施例提供的计算图的图编译方法的流程图;
图9是本申请另一个示例性实施例提供的进行子图改写过程的计算图的示意图;
图10是本申请一个示例性实施例提供的结合子图改写过程的计算图的图编译方法的流程图;
图11是本申请一个示例性实施例提供的子图重建规则中矩阵乘法的规则示意图;
图12是本申请一个示例性实施例提供的子图重建规则中矩阵乘法的计算图的改写示意图;
图13是本申请一个示例性实施例提供的子图重建规则中改变张量形状的规则示意图;
图14是本申请一个示例性实施例提供的子图重建规则中常数表达式的规则示意图;
图15是本申请一个示例性实施例提供的子图重建规则中计算图简化的规则示意图;
图16是本申请一个示例性实施例提供的在静态编译情况下的指令的示意图;
图17是本申请一个示例性实施例提供的在经过即时编译器优化后的指令的示意图;
图18是本申请另一个示例性实施例提供的经过即时编译器优化后的指令的示意图;
图19是本申请一个示例性实施例提供的计算图的图运行方法的流程图;
图20是本申请另一个示例性实施例提供的计算图的图运行方法的流程图;
图21是本申请一个示例性实施例提供的计算图的图编译装置的结构框图;
图22是本申请一个示例性实施例提供的计算图的图运行装置的结构框图;
图23是本申请另一个示例性实施例提供的计算图的图运行装置的结构框图;
图24是本申请一个示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例涉及的名词进行介绍:
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、示教学习等技术。通常以计算图来表示机器学习模型对应的神经网络。
计算图:机器学习任务的核心是机器学习模型的定义及机器学习模型的参数求解方式,将两者抽象后,确定一个唯一的计算逻辑,将表示该计算逻辑的图命名为计算图。计算图是有向无环图,定义了数据的流向方式、数据的计算方式以及各种计算之间的关系等。计算图包括两种基本的要素:节点(Node)和有向边(Edge),节点包括变量节点、算子节点和样本节点中的至少一种。每个变量节点对应有张量,张量可以是标量、矢量或矩阵。两个节点之间的有向边(Edge)用于表示两个节点间的依赖关系,每个算子节点对应有算子,算子是指数学运算,如,计算图包括变量节点a和算子节点b,算子节点b对应的算子是“+1”,且有向边是由变量节点a指向算子节点b,则算子节点b对应的计算关系是b=a+1。计算图可进行前向计算和后向计算,分别对应神经网络中反向传播法的前向传播和后向传播。
目标节点:是指计算图中的任意节点,本申请实施例中的目标节点包括变量节点、样本节点和算子节点中的至少一种。
前向计算:是指前向传播过程中,计算计算图表示的数学表达式或函数的值,也即从神经网络的输入侧到输出侧。示意性的,从输入节点开始,执行输入节点对应的算子,将执行后的结果传递至下一个节点,以此类推,直至输出最终结果,如计算图包括变量节点x、算子节点y和算子节点z,依赖关系是由变量节点x指向算子节点y,由算子节点y指向算子节点z,算子节点y对应的算子是“-2”,算子节点z对应的算子是“×3”,则算子节点z对应的计算关系是z=(x-2)×3。示意性的,令x=3,则输出z=3。在前向计算过程中节点对应的张量的计算路径为节点对应的前向计算序列。
后向计算:是指在后向传播过程中,计算每个输入相对于最终输出的梯度,其计算过程与前向计算的过程相反,也即从神经网络的输出侧到输入侧。示意性的,以最终的输出节点开始,执行输出节点对一个输入节点的输出梯度。仍以上述前向传播中,算子节点z与变量节点x之间的关系为例。反向传播是计算算子节点z对变量节点x的导数,公式如下:
在后向计算过程中节点对应的张量的计算路径为节点对应的后向计算序列。
随着机器学习技术研究和进步,机器学习技术在多个领域展开研究和应用,例如语音识别、图像识别、人脸识别、自然语言处理等,相信随着技术的发展,机器学习技术将在更多的领域得到应用,并发挥越来越重要的价值。
在现代深度学习系统中,存在两种用户编程范式:命令式(imperative)和符号式(symbolic),在符号编程范式中,计算图引擎是核心内容,计算图又分为动态计算图(简称动态图)和静态计算图(简称静态图)。
相关技术中,大多是对动态计算图的编译方法,本申请实施例提供了一种关于静态计算图的编译技术方案,可提高静态计算图的计算效率。
图1示出了本申请一个示例性实施例提供的计算图。图1中的左图是输入终端的计算图100,在计算图100中包括变量节点C、变量节点D、算子节点E、算子节点F和算子节点G。其中,算子节点E对应有算子1,变量节点C对应的张量和变量节点D对应的张量通过算子1得到算子节点E对应的张量,算子节点F对应有算子1,变量节点C对应的张量和变量节点D对应的张量通过算子1得到算子节点F对应的张量,算子节点G对应有算子3,算子节点E对应的张量和算子节点F对应的张量通过算子3得到算子节点G对应的张量,算子节点G输出结果。
响应于计算图100中存在不同的节点对应的相同的子图,对计算图进行改写。示意性的,算子1为将变量节点C对应的张量和变量节点D对应的张量进行相加。通过对计算图100进行改写,得到如右图所示的计算图101。
计算图101包括变量节点C、变量节点D、算子节点E和算子节点G。其中,算子节点E对应有算子1、算子节点G对应有算子3。同样变量节点对应的张量C和变量节点D对应的张量通过算子1得到算子节点E对应的张量,算子节点E对应的张量通过算子3得到算子节点G对应的张量。算子节点E只需要将计算出的张量向算子节点G输出两次,即可得到算子节点G的输出结果。
计算图101是优化后的计算图,根据计算图101编译目标节点的前向计算序列,终端对该前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的算子代码,算子代码是终端可以识别或运行的机器语言。终端输出目标节点的前向计算序列。
上述终端可以是智能手机、笔记本电脑、平板电脑、台式计算机、服务器计算机、工作站计算机等类型,本申请对终端的类型不加以限定。
图2示出了本申请一个示例性实施例提供的计算机系统框图。该计算机系统200包括第一计算机201和第二计算机202。
可选地,第一计算机201用于编译计算图,第二计算机202用于运行计算图,该计算图是用于深度学习的计算图。可选地,编译计算图和运行计算图可在同一台计算机上实现。第一计算机201将编译完成的计算图传输给第二计算机202,第二计算机202运行该编译完成的计算图。可选地,第一计算机201和第二计算机202可通过网络连接传输计算图,或第一计算机201和第二计算机202之间通过数据线进行连接传输计算图,或第一计算机201通过外接设备向第二计算机202传输计算图。
上述第一计算机201泛指一个或多个计算机,上述第二计算机202泛指一个或多个计算机,本申请实施例仅以第一计算机201和第二计算机202为例进行说明,上述计算机设备的类型可以是笔记本电脑、台式计算机、平板电脑、服务器计算机、工作站计算机中的至少一种,本申请对计算机设备的类型不加以限定。
本申请实施例提供了一种计算图的图编译方法和一种计算图的图运行方法,通过图改写优化、即时编译器优化、内存分配优化、梯度计算优化和零拷贝优化五种优化方式提高了计算图的编译效率和计算效率。下述实施例将分别对计算图的图编译方法、图运行方法和上述五种优化方式进行说明。
图3示出了本申请一个示例性实施例提供的计算图的图编译方法的流程图,该方法可应用于如图2所示的第一计算机201中或计算机系统200中的其他计算机中,该方法包括如下步骤:
步骤301,获取输入的计算图,计算图包括至少两层节点,相邻两层节点存在数据流动方向的节点之间连接有有向边,至少两层节点中存在目标节点。
计算图是一个有向无环图,计算图中的节点包括样本节点(instance)、变量节点(variable)、算子节点(operator,简称op)。其中,样本节点是可选的节点。示意性的,如图4所示,在计算图10中包括两层节点,即变量节点A、变量节点B、变量节点C和变量节点D所在的输入层节点,算子节点E、算子节点F和算子节点G所在的输出层节点。可选地,节点A和节点B还可以是样本节点。本申请实施例中的计算图是静态计算图。
样本节点是指用于向神经网络输入训练样本对应的节点,变量节点是指向神经网络输入的值对应的节点。算子节点是指用于前向计算中,计算各层节点之间的计算逻辑,直到产生输出值的节点。目标节点可以是计算图中的任意节点,本实施例以变量节点为目标节点。
样本节点和变量节点又被命名为叶子节点或根节点,算子节点又被命名为非叶子节点,每个节点对应有至少一个输出张量(output tensor),本申请实施例以每个节点对应有一个输出张量为例进行说明。张量可表示任意维度的物理量,张量包括标量、矢量和矩阵。节点的输出张量包括样本节点读入的张量,变量节点对应的张量,算子节点计算出的张量。
计算图中的边表示节点间的依赖关系,即数据(张量)流动的方向。示意性的,节点A与节点B之间对应有一条边,该边是由节点A指向节点B,表示节点A对应的张量是节点B的输入张量,即张量由节点A流向节点B。
步骤302,对计算图进行图改写,得到优化后的计算图。
计算图的改写过程包括:子图去重过程和子图重建过程中的至少一种。
子图去重过程是指通过把运算内容完全相同的子图进行合并的过程,以减少计算量或减少其他计算资源。
子图重建过程是指将子图重写成另一种更高效的子图的过程,以减少计算量或减少其他计算资源,该过程对应有改写规则。本申请对改写规则的类型不加以限定。
步骤303,对于优化后的计算图,生成目标节点的前向计算序列。
优化后的计算图更加简洁,计算量减少。根据目标节点的前向计算路径生成前向计算序列,前向计算路径是指在前向计算过程中,从变量节点至目标节点之间的节点组成的路径。后向计算路径是指在后向计算过程中从目标节点至变量节点(输入层节点)之间的节点组成的路径。
如图5所示,计算图11中包括四层节点,节点A和节点B为样本节点,节点C和节点D为变量节点,节点E至节点L为算子节点,其中,节点J、节点K和节点L是输出层节点。按照每个算子节点的输入和输出,以目标节点是输出层节点为例,算子节点J的前向计算序列是[A,B,E,C,F,H,J],算子节点K的前向计算序列是[A,B,E,C,F,H,D,G,I,K],算子节点L的前向计算序列是[B,C,F,D,G,I,L]。
步骤304,对前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的第一算子代码。
算子代码(op_code)是指计算机可执行的计算代码,计算机执行算子代码,输出对应的执行结果。
在一个示例中,该步骤包括如下子步骤:
步骤3041,对前向计算序列中的各个节点,根据每个节点的节点类型采用即时编译器进行即时编译,得到节点对应的算子代码。
即时编译器(Just-in-Time-complier)是指能够将一种编程语言编写源码即时编译转换为处理器可以处理的指令的程序。即时编译器将静态编译与动态解释结合。示意性的,样本节点采用即时编译器编译后,得到样本节点对应的算子代码是Y,变量节点采用即时编译器编译后,得到变量节点对应的算子代码是B,算子节点采用即时编译器编译后,得到算子节点对应的算子代码是S,本申请对算子代码的类型不加以限定。
步骤3042,根据每个节点对应的算子代码,得到前向计算序列的第一算子代码。
前向计算序列由目标节点对应的前向计算路径组成,该前向计算路径上的每个节点的算子代码组成前向计算序列的第一算子代码。
步骤305,输出目标节点的前向计算序列和第一算子代码。
以目标节点是输出层节点为例,示意性的,目标节点是算子节点J和算子节点K,输出算子节点J的前向计算序列是[A(实际是节点A和它的算子代码,以A表示,下同),B,E,C,F,H,J],算子节点K的前向计算序列是[A,B,E,C,F,H,D,G,I,K]。其中,输出层中的每个节点还输出有该节点对应的前向序列的算子代码,如算子节点J输出其对应的前向计算序列和前向计算序列的第一算子代码。
输出结果如下:
forward_chain_map={
节点J:[A(实际是节点A和它的op_code,为了简洁记作为A,下同),B,E,C,F,H,J],
节点K:[A,B,E,C,F,H,D,G,I,K],
节点L:[B,C,F,D,G,I,L],
}
上述步骤304和步骤305是针对计算图的前向计算过程进行编译的方法,可替换为下述步骤601至步骤605,步骤601至步骤605是针对计算图的后向计算过程进行编译的方法。
图6示出了本申请一个示例性实施例提供的计算图的图编译方法的流程图。
该方法包括如下步骤:
步骤601,将计算图中的变量节点直接或者间接到达的节点进行标记。
直接到达的节点是指与变量节点直接相连的节点,间接到达节点是从输入节点(变量计算)至输出节点之间的路径上,除直接到达节点之外的节点。如图7所示,计算图120中包括样本节点A、样本节点B、变量节点C、变量节点D、算子节点E至J。在计算图120中被标记的节点为变量节点C、变量节点D、算子节点F、算子节点G、算子节点H、算子节点I、算子节点J、算子节点K和算子节点L。其中,算子节点F、算子节点G是与变量节点直接连接的节点,算子节点I、算子节点H、算子节点J、算子节点K和算子节点L是与变量节点间接连接的节点。
步骤602,将前向计算序列进行反转,得到第一后向计算序列。
以算子节点L为例进行说明,算子节点L的前向计算序列反转后是[L,I,G,D,F,C,B]。
步骤603,将第一后向计算序列中未被标记的节点进行删除,得到第二后向计算序列。
将未被标记的节点B删除,则算子节点L的第二后向计算序列是[L,I,G,D,F,C]。
步骤604,对第二后向计算序列中的各个节点进行算子代码编译,得到第二后向计算序列的第二算子代码。
该步骤与图3所示的步骤304原理一致,此处不再赘述。
步605,输出目标节点的第二后向计算序列和第二算子代码。
以目标节点为算子节点L为例,输出算子节点L的前向计算序列是[B,C,F,D,G,I,L],第二后向计算序列是[L,I,G,D,F,C]。
输出结果如下:
backward_chain_map={
节点J:[J,H,F,C],
节点K:[K,I,G,D,H,F,C],
节点L:[L,I,G,D,F,C],
}
综上所述,本实施例的方法,通过对获取输入的计算图进行改写,得到优化后的计算图,并生成目标节点的前向计算序列,对前向计算序列中各个节点进行算子代码编译,得到前向计算序列的第一算子代码;通过对变量节点和部分算子节点进行标记,并反转前向计算序列,得到第一后向序列,将第一序列中未标记的节点删除,得到第二后向计算序列,对第二后向计算序列中各个节点进行算子代码编译,得到第二后向计算序列的第二算子代码,通过上述图改写的方式简化了计算图的重复部分和/或复杂部分,从而提高了终端对计算图的编译效率和计算效率。
下面对子图去重过程进行说明。
图8示出了本申请一个示例性实施例提供的计算图的图编译方法,该方法可应用于如图2所示的第一计算机201中或计算机系统200中的其他计算机中,该方法包括如下步骤:
步骤801,获取输入的计算图,计算图包括至少两层节点,相邻两层节点存在数据流动方向的节点之间连接有有向边,至少两层节点中存在目标节点。
可选地,计算图中包括第一目标节点和第二目标节点。第一目标节点和第二目标节点是除了输入层节点(变量节点或样本节点)之外的任意两个节点。步骤801与图3所示的步骤301一致,此处不再赘述。
步骤802,响应于第一目标节点和第二目标节点存在相同的子图,合并第一目标节点和第二目标节点的子图,得到优化后的计算图。
该过程是子团去重过程。当第一目标节点对应的前向计算序列的子图,与第二目标节点对应的前向计算序列的子图一致时,将相同的部分进行合并。
在一个示例中,该步骤包括如下子步骤:
步骤8021,响应于第一目标节点和第二目标节点存在相同的子图且子图中的节点数大于阈值,保留第一目标节点对应的第一子图,删除第二目标节点对应的第二子图与第一子图的差集。
结合图9进行说明,其中,计算图110包括变量节点A、变量节点B、变量节点C和变量节点D,还包括算子节点E、算子节点F算子节点G、算子节点H、算子节点I和算子节点J。以第一目标节点是变量节点A,第二目标节点是变量节点B为例进行说明。变量节点A对应的张量和变量节点B对应的张量通过算子“Add”(也即相加计算),得到算子节点E对应的张量,变量节点A和变量节点B经过相同的算子得到算子节点F对应的张量,变量节点E对应的张量经过算子“Exp”(也即以自然常数e为底的指数函数运算),得到算子节点H对应的张量,算子节点F对应的张量经过相同的算子得到算子节点I对应的张量。变量节点A、变量节点B、算子节点E和算子节点H构成第一子图,变量节点A、变量节点B、算子节点F和算子节点I构成第二子图。示意性的,阈值为2。第一子图中的节点数量和第二子图中的节点数量均大于2,示意性的,保留变量节点A对应的第一子图,删除变量节点B对应的第二子图与变量节点A对应的第一子图的差集,第一子图与第二子图的差集是指除交集节点之外的其他节点,交集节点是第一子图和第二子图共用的节点,也即删除算子节点F和算子节点I对应的子图部分。
步骤8022,将第二目标节点的后续节点的输入修改为第一子图的输出,得到优化后的计算图。
计算图110改写为计算图111,计算图111中包括变量节点A、变量节点B、变量节点C和变量节点D,算子节点E、算子节点H、算子节点G和算子节点J。算子节点J是第二目标节点(变量节点B)的后续节点(算子节点I和算子节点F)对应的输入节点,将该后续节点的输入修改为第一子图的输出,算子节点H输出两次具有相同结果的输出值,并向算子节点J传递两次该输出值。
步骤803,对于优化后的计算图,生成目标节点的前向计算序列。
步骤804,对前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的第一算子代码。
结合图9,以目标节点是节点J为例进行说明,目标节点J的前向计算序列是[A,B,E,H,C,D,G,J]。对该前向计算序列进行算子代码编译,得到第一算子代码。
步骤805,输出目标节点的前向计算序列和第一算子代码。
步骤803至步骤805与图3示出的步骤303至步骤305一致,此处不再赘述。
综上所述,本实施例的方法,当第一目标节点和第二目标节点存在相同的子图,且子图的节点数大于阈值时,通过删除第一子图和第二子图的差集,保留相同子图中的一个子图,得到优化后的计算图。根据优化后的计算图生成目标节点的前向计算序列,对前向计算序列中各个节点进行算子代码编译,得到前向计算序列的第一算子代码,从而使得终端能够运行该前向计算序列。通过优化计算图来提高计算图的计算效率,提升了终端运行计算图时的运行效率。
下面对子图重建过程进行说明,子图重建是将计算图重写成另一种更高效的计算图,以达到减少计算量的目的。
图10示出了本申请一个示例性实施例提供的计算图的图编译方法,该方法可应用于图2所示的第一计算机201中或其他计算机系统中,该方法包括如下步骤:
步骤1001,响应于目标节点的子图属于第一类型,将属于第一类型的子图重写为属于第二类型的子图,得到优化后的子图,其中,第一类型的子图和第二类型的子图具有相同的计算结果,且第二类型的子图的计算性能优于第一类型的子图的计算性能。
以子图重建过程的四个典型重建规则为例进行说明,重建规则包括但不局限于下述列举的四个重建规则。
第一,转置后矩阵乘法→矩阵乘法。
上述步骤1001可替换为以下步骤:
步骤1001A,响应于目标节点的子图属于转置后矩阵乘法类型,将需要多步矩阵计算操作对应的子图改写为一步矩阵计算操作对应的子图,得到优化后的计算图。
图11示出了本申请一个示例性实施例提供的子图重建的规则的示意图。
以图11中的(1)为例进行说明。算子是指数学运算。算子“Transpose”表示将矩阵进行转置变换;算子“Matmul”表示矩阵进行乘法运算,以两个矩阵相乘为例(矩阵a和矩阵b),该算子可计算如下四种算式:矩阵a与矩阵b相乘,矩阵a的转置矩阵与矩阵b相乘,矩阵a与矩阵b的转置矩阵相乘,以及矩阵a的转置矩阵与矩阵b的转置矩阵相乘。参数“axes=(1,0)”是算子“Transpose”的参数,表示将矩阵X的轴,0代表矩阵X的行,1代表矩阵X的列。算子“Transpose(X,axes=[1,0])”表示将矩阵X的行和列进行调换,即对矩阵X进行转置变换。将矩阵X进行转置变换后的矩阵与矩阵Y相乘,如图12的左图所示。
可利用算子“Matmul”对子图进行重建,可直接将转置过程设置在算子“Matmul”中,参数“transX=1”是算子“Matmul”的参数,表示对矩阵X进行转置,由于算子“Matmul”本身可以计算矩阵与转置矩阵相乘,因此只需向变量节点中输入矩阵X和矩阵Y即可。算子“Matmul”自动将X矩阵进行转置变换后与矩阵Y相乘,如图12的右图所示。
图11中的(2)时将矩阵Y的转置矩阵与矩阵X相乘,其计算原理与(1)的原理一致,此处不再赘述。
第二,多层变形(Reshape)→单层变形。
上述步骤1001可替换为以下步骤:
步骤1001B,响应于目标节点的子图属于改变张量形状类型,将多次嵌套的形状修改子图改写为单次嵌套的形状修改子图,得到优化后的计算图。
参数“shape”是算子“Reshape”的参数,表示张量的形状,即计算张量的维度;算子“Reshape”表示只改变张量的形状,不改变张量的数据。以图13中的(1)为例进行说明,“Reshape(X,shape1)”表示将矩阵X转换为shape1的形状,“Reshape(Reshape(X,shape1))”表示在矩阵X已转换为shape1的形状的基础上,将矩阵X转换为shape2的形状。因此,shape2是矩阵X转换的目标形状,可直接将矩阵X转换为shape2的形状,即“Reshape(X,shape2)”。
图13中的(2)与(1)的原理一致,此处不再赘述。
第三,常数表达式。
上述步骤1001可替换为以下步骤:
步骤1001C,响应于目标节点的子图属于数学表达式类型,将目标节点的子图按照数学表达式的运算规则进行改写,得到优化后的计算图。
示意性的,如图14的(1)所示,该算式满足乘法分配律,因此将公因数2提取出来,对A、B、C进行相加,算子“AddN”代表对括号中的张量进行加和运算。
如图14的(2)所示,“AddN(1,A,2,B)”中的1与2可进行加和,因此转换为“AddN(3,A,B)”。
第四,计算图简化(Self-attention)。
上述步骤1001可替换为如下步骤:
步骤1001D,将算子节点间的多层运算替换为一层运算,复用运算中间结果。
示意性的,将算子节点间的多层矩阵运算合并为一层矩阵矩阵运算,复用中间结果;或,将算子节点间的多层张量运算合并为一层张量运算,复用运算中间结果。
在一个示例中,如图15的左图所示,变量节点为X、Wq、Wk、Wv,算子节点为Q、K、V、Z1、S、Z2、Z3、Z4,以输入变量节点的张量为m*n阶矩阵进行说明(m、n为正整数),以输入变量节点X的矩阵是x,以输入变量节点Wq的矩阵是q,以输入输入变量节点Wk的矩阵是k,以输入变量节点Wv的矩阵是v为例。
算子“Matmul”表示对两个矩阵进行乘法运算,以算子节点Q计算矩阵x和矩阵q相乘为例进行说明。将矩阵x分成若干子矩阵(Block),该子矩阵的维度小于矩阵x的维度,同理,将矩阵q也分成若干子矩阵。在进行矩阵乘法运算时,将矩阵x的子矩阵与矩阵q的子矩阵分别进行矩阵乘法运算,将所有子矩阵的运算结果(中间结果)累加得到矩阵x和矩阵q的乘法运算结果。若矩阵x和矩阵q是具有较高维度的矩阵,需要放入内存中,计算机在每次进行子矩阵的运算时,需要将子矩阵拉取至缓存中再进行运算。若一个子矩阵的维度是m1*n1(m1和n1为正整数,且m1<m,n1<n),在计算机在获取该子矩阵时会产生m1次或者n1次的缓存数据的缺失问题(Cachemiss),导致该过程耗费时间较长。
可以理解的是,如图15的左图所示,矩阵x分别与矩阵k、矩阵v进行相同的乘法运算,则完成算子节点Q、算子节点K和算子节点V对应的计算需要矩阵x进行三次上述划分子矩阵的过程,因此,将该过程进行优化,得到图15的右图。利用算子“Fused3Matmul”将算子节点间的多层运算合并为一层运算,复用中间结果,也即只需要对矩阵x进行一次划分子矩阵的过程,将划分后的子矩阵分别与矩阵q、矩阵k和矩阵v三者对应的子矩阵相乘累加,得到算子节点Q、算子节点K和算子节点V三者的输出结果。
步骤1002D,将算子节点间的多级运算替换为一级运算。
示意性的,将算子节点间的多级矩阵运算合并为一级矩阵运算;或,将算子节点间多级张量运算合并为一级张量运算。
在一个示例中,如图15的图左所示,算子“BatchGEMM”表示对两个算子节点输出的矩阵中的部分矩阵进行矩阵运算,算子“Constant”表示进行常数运算,算子“BroadcastMul”表示对算子节点Z1输出的矩阵和常数进行乘法运算,算子“Softmax”表示对算子节点Z2输出的矩阵进行归一化指数运算。
图15的右图是优化后的结果,经过算子“Fused3Matmul”计算后的输出结果只需要利用算子“FusedBatchGEMMSoftmax”即可得到算子节点Z4的输出结果。将算子“BatchGEMM”、算子“Softmax”进行合并,由于算子“BroadcastMul”表示对算子节点Z1输出的矩阵和常数进行乘法运算,根据公式:D=αAB+βC,其中,A、B、C、D均表示矩阵,α和β为常数,则算子“BroadcastMul”和算子“Constant”可被合并至算子“FusedBatchGEMMSoftmax”中。
可以理解的是上述子图重建规则中每个规则可以单独实施,也可以在优化计算图的编译过程中多个子图重建规则组合实施,上述子图重建规则还可以与子图去重过程组合实施。
综上所述,本实施例的方法,通过列举四种子图重建规则来优化计算图,使得优化后的计算图提高了计算效率,从而提升了终端运行计算图时的运行效率。
下面针对上述步骤604和步骤605中的编译方法对应的即时编译优化方式进行说明。
在深度学习平台中,每个算子节点都至少有一种静态编译的默认实现方式,该默认实现方式包括默认前向计算实现方式和默认后向计算实现方式。在一些情况下,默认实现方式可进行工作,此时计算图中的各个节点的前向计算序列和后向计算序列的算子代码以默认实现方式进行编译。
但在另一些情况下,默认实现方式不是最优的算子代码的实现方式,原因如下:
默认实现方式不假定输入张量和参数组合,在一些组合下,存在更优实现;
默认实现方式不假定型号的中央处理器(CPU,Central Processing Unit)和图形处理器(GPU,Graphics Processing Unit),只提供通用实现方式,无法将硬件的深层计算潜力体现出来。
对于默认实现方式不能进行优化的情况,可通过即时编译器(Just-in-Time-Complier)的优化方式进行解决。为了提高热点代码的执行效率,在运行时,虚拟机(Virtual Machine)将会把这些代码编译成本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器是即时编译器。热点代码是指当虚拟机发现某个方法或代码块运行的特别频繁时,就会将这些代码认定为热点代码。虚拟机是指通过程序模拟的具有完整硬件系统功能的,且运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作在虚拟机中都能够实现。
本申请实施例中的即时编译器通过如下几种手段优化虚拟机的性能:
1、针对特定大小的张量生成特定的代码,相比于通用的静态编译代码,具有针对性的生成代码,提高计算图的运行效率。
2、针对CPU型号的编译优化。虚拟机会利用不同CPU支持的单指令多数据流(SIMD,Single Instruction Multiple Data)指令集来编译热点代码,提升虚拟机的性能。
3、寄存器分配。部分变量分配在寄存器中,相对于主存读取,更大的提升读取性能。
4、针对热点代码编译好的机器码进行缓存。代码缓存具有固定的大小,并且一旦被填满,虚拟机不能再编译更多的代码。
不同类型的节点进行即时编译优化的方式不同,本实施例以算子节点进行向量加法为例对优化即时编译的方法进行说明。
在未进行即时编译优化之前,静态编译代码如图16所示。
当n=8时,执行约48条指令;当n=16时,执行约96条指令(n代表张量的总维度,总维度是指张量每一维的维度相乘)。
对n=8时的静态编译代码进行优化后如图17所示。
当n=8时,执行3条指令,计算总维度为8的张量,相比于静态编译要执行约48条指令,运行指令大大减少,提升了运行速度。
对n=16时的静态编译代码进行优化后如图18所示。
当n=16时,执行6条指令,计算总维度为16的张量,相比于静态编译要执行约96条指令,运行指令大大减少,提升了运行速度。
下面对计算图的图运行方法进行说明。本实施例中运行的计算图是通过上述实施例中提供的计算图的图编译方法编译后得到的计算图。
图19示出了本申请一个示例性实施例提供的计算图的图运行方法,该方法可应用于如图2所示的第二计算机202中或其他计算机系统中,该方法包括如下步骤:
步骤1901,获取输入的计算图,计算图包括目标节点和目标节点的前向计算序列,前向计算序列对应有第一算子代码。
前向计算序列的第一算子代码是在上述计算图编译过程中输出的算子代码。
步骤1902,按照目标节点在计算图中的相对顺序,对计算图中的各个目标节点的前向计算序列进行合并,得到上下文前向计算序列。
可选地,先对对计算图上下文(context)进行初始化。初始化包括加载计算图上下文对应的计算图结构、各个目标节点、各个目标节点的前向计算序列。
在计算图中包括多个目标节点,各个目标节点在计算图中对应有前向计算路径,每条前向计算路径对应有前向计算序列,相对顺序是指计算图中各个节点之间的依赖关系,即输入节点与目标节点之间的遍历关系。终端将各个目标节点对应的前向计算序列进行合并,形成整个计算图对应的前向计算序列,即上下文前向计算序列。
可选地,在计算图上下文中,初始化前向计算需要的资源,该资源可以是前向计算对应的目标节点、前向计算序列、需要使用的内存大小等。
步骤1903,基于第一算子代码,对上下文前向计算序列进行前向计算。
该步骤包括如下子步骤:
步骤19031,根据计算图中的各个目标节点的第一算子代码,得到上下文前向计算序列的第三算子代码。
通过各个目标节点的前向计算序列合并,前向计算序列对应的第一算子代码也进行合并,得到上下文前向计算序列的第三算子代码。
步骤19032,执行第三算子代码对上下文前向计算序列进行前向计算。
在计算图进行前向计算时,终端执行上下文前向计算序列的第三算子代码,以完成上下文前向计算序列的前向计算任务,从计算图的目标节点运行至输出节点(算子节点)。
可选地,为上下文前向计算序列中的各个节点的输出张量,分配第一内存空间。前向计算可单独使用,用于根据输入推理出输出。可选地,对于上下文前向计算序列属于第一指定类型的节点,将节点的输出张量的数据缓存器指针指向下一个节点的输入张量的数据缓存器。
对于一些只改变张量的形状,不改变数据的算子节点的算子,如算子Reshape,算子ExpanDim,算子Squeeze,在前向计算时,只修改输出张量的形状,将节点输出的张量的数据缓存器指针指向下一个节点的输入张量的数据缓存器,不用重复拷贝数据,节省了数据存储资源。
可以理解的是,本实施例与上述计算图的图编译方法的实施例可分别单独实施,也可组合实施。
综上所述,本实施例提供的方法,通过获取输入的计算图中的目标节点和前向计算序列,将前向计算序列合并得到上下文前向计算序列,从而基于上下文前向计算序列的第三算子代码,执行对上下文前向计算序列的前向计算过程。提高了计算图的前向计算的计算效率,从而提高了终端运行计算图的运行效率。
本实施例中运行的计算图是通过上述实施例中提供的计算图的图编译方法编译后得到的计算图。
图20示出了本申请另一个示例性实施例提供的计算图的图运行方法,该方法可应用于如图2所示的第二计算机202中或其他计算机系统中,该方法包括如下步骤:
步骤2001,获取输入的计算图,计算图包括目标节点和目标节点的第二后向计算序列,第二后向计算序列对应有第二算子代码。
步骤2002,按照目标节点在计算图中的相对顺序,对计算图中的各个目标节点的第二后向计算序列进行合并,得到上下文后向计算序列。
终端得到上下文后向计算序列与得到上下文前向计算序列的方式一致,此处不再赘述。
步骤2003,基于第二算子代码,对上下文后向计算序列进行后向计算。
在计算图进行计算之前,需要在计算机内分配空间指针。
计算图的内存分配模式包括懒惰模式(lazy)和急切模式(eager)。lazy模式主要在计算图初始化时进行基本的检查和初始化工作;eager模式可在计算图初始化时进行基本的检查和初始化工作,为所有输出张量分配空间。在计算图中,“初始化”的输出,可以用与后续的若干次“前向计算”和“后向计算”,因此eager模式可将内存分配次数降低为常数级别,即均摊到每次“前向计算”和“后向计算”。
后向计算是可选的计算过程,前向计算和后向计算配合优化器(optimizer)使用,可以通过所有变量节点张量集合训练模型,优化器是把变量节点的梯度应用到变量节点上去,更新变量节点的梯度累计。
可选地,为上下文后向计算序列中的所有节点的输出梯度,分配第二内存空间。计算图进行后向计算时是计算输出节点相对于输入节点的输出梯度。可选地,对于上下文后向计算序列中属于指定第二类型的节点,将节点的输出梯度的数据缓存器指针指向下一个节点的输入梯度的数据缓存器。
可选地,还可计算所有节点的梯度,将相同节点的梯度进行合并,减少梯度的输出时间。
可选地,对梯度计算进行优化的过程包括如下步骤:
步骤1,对上下文后向计算序列中的节点的梯度进行清零;
步骤2,采用累计模式计算上下文后向计算序列中的节点的梯度。
采用累计式对节点的梯度进行计算。累计模式可明显降低内存占用复杂度,小幅度降低计算时间复杂度。
对于一些只改变输出梯度的形状,不改变数据的算子节点的算子,第二类型节点可以是修改形状的算子,如算子Reshape,算子ExpanDim,算子Squeeze中的至少一种算子对应的节点,在后向计算时,只修改输出梯度的形状,将节点输出的梯度的数据缓存器指针指向下一个节点的输入梯度的数据缓存器,不用重复拷贝数据,节省了数据存储资源。
步骤2003包括如下子步骤:
步骤20031,根据计算图中的各个目标节点的第二算子代码,得到上下文后向计算序列的第四算子代码。
步骤20032,执行第四算子代码对上下文后向计算序列进行后向计算。
可以理解的是,本实施例与上述计算图的图编译方法的实施例、上述计算图的图运行方法的实施例可分别单独实施,也可两两组合实施,也可三者组合实施。
综上所述,本实施例提供的方法,通过获取输入的计算图中的目标节点和第二后向计算序列,将第二后向计算序列合并得到上下文后向计算序列,从而基于上下文后向计算序列的第四算子代码,执行对上下文后向计算序列的后向计算过程。提高了计算图的后向计算的计算效率,从而提高了终端运行计算图的运行效率。
下面对本申请实施例提供的计算图的应用场景进行说明,应用场景包括:图像处理、语音或音频识别、自然语言处理、互联网数据预测中的至少一种。以识别图像中的人脸、语音识别和广告点击率预测为例进行说明。
1、识别图像中的人脸
通过人脸识别模型识别图像中的人脸,人脸识别模型是具有人脸识别能力的机器学习模型。示意性的,该人脸识别模型包括卷积神经网络(Convolutional NeuralNetwork,CNN),CNN网络由第一计算图表示,该第一计算图与用于进行图像处理的深度学习模型对应,该第一计算图包括第一样本节点、第一变量节点、第一算子节点。在该第一计算图未优化之前,需要进行重复计算,计算过程繁琐。
本申请实施例提供了一种计算图的图编译方法,通对该第一计算图进行图改写,得到优化后的第一计算图,改写方式包括上述实施例中子图去重过程和子图重建过程,对于优化后的第一计算图,生成目标节点的前向计算序列,对前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的第一算子代码,输出目标节点的前向计算序列和第一算子代码。
将第一计算图中的变量节点直接或者间接到达的节点进行标记,将前向计算序列进行反转,得到第一后向计算序列,将第一后向计算序列中未被标记的节点进行删除,得到第二后向计算序列,对第二后向计算序列中的各个节点进行算子代码编译,得到第二后向计算序列的算子代码,输出目标节点的第二后向计算序列和第二算子代码。
按照目标节点在第一计算图中的相对顺序,对第一计算图中的各个目标节点的前向计算序列进行合并,得到上下文前向计算序列;同理,对计算图中的各个目标节点的后向计算序列进行合并,得到上下文后向计算序列。基于第一算子代码,对上下文前向计算序列进行前向计算;基于第二算子代码,对上下文后向计算序列进行后向计算。通过优化第一计算图,使得第一计算图计算效率更高。
对该人脸识别模型进行训练。将图像样本集合输入至第一样本节点,对该人脸识别模型进行训练(此时的人脸识别模型由优化后的第一计算图表示),图像样本集合是含有人脸的静态图像或动态视频。通过调节第一变量节点对应的损失函数,不断优化该人脸识别模型,得到训练后的人脸识别模型。基于训练后的人脸识别模型,在进行人脸识别时,将一张含有人脸的照片输入至第一计算图中的第一样本节点,第一变量节点提供对应的参数,由第一算子节点输出结果,该输出结果为输入的照片含有人脸。
2、语音识别
通过语音识别模型识别语音代表的意思,语音识别模型是具有语音识别能力的机器学习模型,该语音识别模型包括循环神经网络(RecurrentNeuralNetwork,RNN),RNN网络由第二计算图表示,该第二计算图与用于进行语音或音频处理的深度学习模型对应,该第二计算图包括第二样本节点、第二变量节点、第二算子节点,通过上述实施例提供的方法得到优化后的第二计算图,使得第二计算图的计算效率更高。
对该语音识别模型进行训练。将语音样本集合输入至第二样本节点,对该语音识别模型进行训练(此时的语音识别模型由优化后的第二计算图表示),语音样本集合是包含语音的音频样本。通过调节第二变量节点对应的损失函数,不断优化该语音识别模型,得到训练后的语音识别模型。基于训练后的语音识别模型,进行语音识别时,将含有语音的音频输入至第二计算图中的第二样本节点时,第二变量节点提供对应的参数,第二算子节点输出结果,该输出结果包括语音中表达的语义。如语音助手接收到用户的语音“播放歌曲a”,自动对歌曲a进行播放操作。
上述RNN网络也可用于进行自然语言处理的深度学习模型中,自然语言处理是指将人类使用的语言转化为计算机能够识别的机器语言,使得计算机能够确定用户的输入语句对应的指令,并完成该指令对应的任务。该深度学习模型与第三计算图对应,第三计算图的优化方式与运行方式与上述实施例相同,此处不再赘述。
3、广告点击率预测
通过广告点击率模型对广告的点击率进行预测,输出具有上下文的广告的点击率。具有上下文的广告是指结合用户个人倾向和其它信息进行点击或浏览的广告。其它信息包括时间和流量,时间是指广告投放时间、观看广告的时间、广告的时长等,流量是指广告所在的平台的流量,如社交平台、信息交互平台(公众号)等。广告点击率模型是具有点击率预测的机器学习模型,该广告点击率模型包括宽深神经网络(WideandDeep,WD),WD神经网络由第四计算图表示,该第四计算图与用于互联网数据预测的深度学习模型对应,该第四计算图包括第四样本节点、第四变量节点、第四算子节点,由上述实施例提供的方法得到优化后的第四计算图,使得第四计算图的计算效率更高。
对该广告点击率模型进行训练。将含有特征信息的广告样本集合输入至第四样本节点,对该广告点击率模型进行训练(此时的广告点击率模型由优化后的第四计算图表示)。特征信息包括广告特征信息(如关键词、标题等)、上下文特征信息(如用户性别、用户年龄、用户兴趣、浏览时间)等等。通过调节第四变量节点对应的损失函数,不断优化该广告点击率模型,得到训练后的广告点击率模型。基于训练后的广告点击率模型,对广告的点击率进行预测时,将特征信息输入第四计算图中的第四样本节点,第四变量节点提供对应的参数,第四算子节点输出结果,该输出结果是具有上下文的广告的点击率。基于对该点击率的分析,利用点击率函数对广告的点击率进行排序,从而针对目标用户推送点击率高的广告。如用户A对化妆品类的广告的点击率较高,则针对化妆品类的点击率,应用程序可据此增加向用户A推送化妆品类广告频率,或者,应用程序在进行广告推送时,将化妆品类的广告展示在其他类型广告的前面,优先向用户A推送化妆品类的广告。
需要说明的是上述各个模型的神经网络的实现方式不唯一,本申请实施例仅以上述神经网络为例进行说明。
图21示出了本申请一个示例性实施例提供的计算图的图编译装置的结构框图,该图编译装置用于编译用于深度学习的计算图,该图编译装置包括:
第一获取模块2110,用于获取输入的计算图,计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,至少两层节点中存在目标节点;
第一改写模块2120,用于对计算图进行图改写,得到优化后的计算图;
生成模块2130,用于对于优化后的计算图,生成目标节点的前向计算序列;
编译模块2140,用于对前向计算序列中的各个节点进行算子代码编译,得到前向计算序列的第一算子代码;
输出模块2150,用于输出目标节点的前向计算序列和第一算子代码。
在一个可选的实施例中,计算图中包括:第一目标节点和第二目标节点;
所述第一改写模块2120,用于响应于第一目标节点和第二目标节点存在相同的子图,合并第一目标节点和第二目标节点的子图,得到优化后的计算图。
在一个可选的实施例中,所述第一改写模块2120,用于响应于第一目标节点和第二目标节点存在相同的子图且子图中的节点数大于阈值,保留第一目标节点对应的第一子图,删除第二目标节点对应的第二子图与第一子图的差集;将第二目标节点的后续节点的输入修改为第一子图的输出,得到优化后的计算图。
在一个可选的实施例中,所述第一改写模块2120,用于响应于目标节点的子图属于第一类型,将属于第一类型的子图重写为属于第二类型的子图,得到优化后的计算图;其中,第一类型的子图和第二类型的子图具有相同的计算结果,且第二类型的子图的计算性能优于第一类型的子图的计算性能。
在一个可选的实施例中,所述编译模块2140,用于对前向计算序列中的各个节点,根据各个节点的节点类型采用即时编译器进行即时编译,得到节点对应的算子代码;根据各个节点对应的算子代码,得到前向计算序列的第一算子代码。
在一个可选的实施例中,所述编译模块2140,用于将计算图中的变量节点直接或者间接到达的节点进行标记;将前向计算序列进行反转,得到第一后向计算序列;将第一后向计算序列中未被标记的节点进行删除,得到第二后向计算序列;述第二后向计算序列中的各个节点进行算子代码编译,得到所述第二后向计算序列的第二算子代码;
所述输出模块2150,用于输出目标节点的第二后向计算序列和第二算子代码。
在一个可选的实施例中,该图编译装置还包括计算模块2160;
所述第一改写模块2120,用于按照目标节点在计算图中的相对顺序,对计算图中的各个目标节点的前向计算序列进行合并,得到上下文前向计算序列;
所述第一计算模块2160,用于对上下文前向计算序列进行前向计算。
在一个可选的实施例中,所述装置包括第一分配模块2170;
所述第一分配模块2170,用于为上下文前向计算序列中的各个节点的输出张量,分配第一内存空间。
在一个可选的实施例中,所述编译模块2140,用于按照所述目标节点在所述计算图中的相对顺序,对所述计算图中的各个目标节点的所述第二后向计算序列进行合并,得到上下文后向计算序列;
所述第一计算模块2160,用于对上下文后向计算序列进行后向计算。
在一个可选的实施例中,该图编译装置包括第一分配模块2170;
所述第一分配模块2170,用于为上下文后向计算序列中的各个节点的输出梯度,分配第二内存空间。
在一个可选的实施例中,计算图包括:用于进行图像处理的深度学习模型对应的第一计算图、用于进行自然语言处理的深度学习模型对应的第二计算图、用于进行语音或音频处理的深度学习模型对应的第三计算图、用于进行互联网数据预测的深度学习模型的第四计算图中的任意一种。
图22示出了本申请一个示例性实施例提供的计算图的图运行装置的结构框图,该图运行装置用于运行用于深度学习的计算图,该图运行装置包括:
第二获取模块2210,用于获取输入的计算图,计算图包括目标节点和目标节点的前向计算序列,前向计算序列对应有第一算子代码;
第二改写模块2220,用于按照目标节点在计算图中的相对顺序,对计算图中的各个目标节点的前向计算序列进行合并,得到上下文前向计算序列;
第二计算模块2230,用于基于第一算子代码,对上下文前向计算序列进行前向计算。
在一个可选的实施例中,所述第二计算模块2230,用于根据计算图中的各个目标节点的第一算子代码,得到上下文前向计算序列的第三算子代码;执行第三算子代码对上下文前向计算序列进行前向计算。
在一个可选的实施例中,该图运行装置包括第二分配模块2240;
所述第二分配模块2240,用于为上下文前向计算序列中的所有节点的输出张量,分配第一内存空间。
图23示出了本申请另一个示例性实施例提供的计算图的图运行装置的结构框图,该图运行装置用于运行用于深度学习的计算图,该图运行装置包括:
第三获取模块2310,用于获取输入的计算图,计算图包括目标节点和目标节点的第二后向计算序列,第二后向计算序列对应有第二算子代码;
第三改写模块2320,用于按照目标节点在计算图中的相对顺序,对计算图中的各个目标节点的第二后向计算序列进行合并,得到上下文后向计算序列;
第三计算模块2330,用于基于第二算子代码,对上下文后向计算序列进行后向计算。
在一个可选的实施例中,所述第三计算模块2330,用于根据计算图中的各个节点的第二算子代码,得到上下文后向计算序列中的第四算子代码;
执行第四算子代码对上下文后向计算序列进行后向计算。
在一个可选的实施例中,该图运行装置包括第三分配模块2340;
所述第三分配模块2340,用于为上下文后向计算序列中的所有节点的输出张量,分配第二内存空间。
图24示出了本申请一个示例性实施例提供的服务器的结构示意图。该服务器可以是后台服务器集群140中的服务器。具体来讲:
服务器2400包括中央处理单元(CPU,Central Processing Unit)2401、包括随机存取存储器(RAM,Random Access Memory)2402和只读存储器(ROM,Read Only Memory)2403的系统存储器2404,以及连接系统存储器2404和中央处理单元2401的系统总线2405。服务器2400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统,Input Output System)2406,和用于存储操作系统2413、应用程序2414和其他程序模块2415的大容量存储设备2407。
基本输入/输出系统2406包括有用于显示信息的显示器2407和用于用户输入信息的诸如鼠标、键盘之类的输入设备2409。其中显示器2407和输入设备2409都通过连接到系统总线2405的输入输出控制器2410连接到中央处理单元2401。基本输入/输出系统2406还可以包括输入输出控制器2410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器2410还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备2407通过连接到系统总线2405的大容量存储控制器(未示出)连接到中央处理单元2401。大容量存储设备2407及其相关联的计算机可读介质为服务器2400提供非易失性存储。也就是说,大容量存储设备2407可以包括诸如硬盘或者紧凑型光盘只读存储器(CD-ROM,Compact Disc Read Only Memory)驱动器之类的计算机可读介质(未示出)。
计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(DVD,Digital Versatile Disc)或固态硬盘(SSD,Solid State Drives)、其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器2404和大容量存储设备2407可以统称为存储器。
根据本申请的各种实施例,服务器2400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器2400可以通过连接在系统总线2405上的网络接口单元2411连接到网络2412,或者说,也可以使用网络接口单元2411来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
在一个可选的实施例中,提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的计算图的图编译方法和计算图的图运行方法。
在一个可选的实施例中,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的计算图的图编译方法和计算图的图运行方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种计算图的图编译方法,其特征在于,用于编译深度学习的计算图,所述方法包括:
获取输入的所述计算图,所述计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,所述至少两层节点中存在目标节点;
对所述计算图进行图改写,得到优化后的计算图;
对于所述优化后的计算图,生成所述目标节点的前向计算序列;
对所述前向计算序列中的各个节点进行算子代码编译,得到所述前向计算序列的第一算子代码;
输出所述目标节点的所述前向计算序列和所述第一算子代码。
2.根据权利要求1所述的方法,其特征在于,所述计算图中包括:第一目标节点和第二目标节点;
所述对所述计算图进行图改写,得到优化后的计算图,包括:
响应于所述第一目标节点和所述第二目标节点存在相同的子图,合并所述第一目标节点和所述第二目标节点的子图,得到所述优化后的计算图。
3.根据权利要求2所述的方法,其特征在于,所述响应于所述第一目标节点和所述第二目标节点存在相同的子图,合并所述第一目标节点和所述第二目标节点的子图,得到所述优化后的计算图,包括:
响应于所述第一目标节点和所述第二目标节点存在相同的子图且所述子图中的节点数大于阈值,保留所述第一目标节点对应的第一子图,删除所述第二目标节点对应的第二子图与所述第一子图的差集;
将所述第二目标节点的后续节点的输入修改为所述第一子图的输出,得到所述优化后的计算图。
4.根据权利要求1至3任一所述的方法,其特征在于,所述对所述计算图进行图改写,得到优化后的计算图,包括:
响应于所述目标节点的子图属于第一类型,将属于所述第一类型的子图重写为属于第二类型的子图,得到所述优化后的计算图;
其中,所述第一类型的子图和所述第二类型的子图具有相同的计算结果,且所述第二类型的子图的计算性能优于所述第一类型的子图的计算性能。
5.根据权利要求1至3任一所述的方法,其特征在于,所述对所述前向计算序列中的各个节点进行算子代码编译,得到所述前向计算序列的第一算子代码,包括:
对所述前向计算序列中的各个节点,根据各个节点的节点类型采用即时编译器进行即时编译,得到所述节点对应的算子代码;
根据所述各个节点对应的算子代码,得到所述前向计算序列的第一算子代码。
6.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
将所述计算图中的变量节点直接或者间接到达的节点进行标记;
将所述前向计算序列进行反转,得到第一后向计算序列;
将所述第一后向计算序列中未被标记的节点进行删除,得到第二后向计算序列;
对所述第二后向计算序列中的各个节点进行算子代码编译,得到所述第二后向计算序列的第二算子代码;
输出所述目标节点的所述第二后向计算序列和所述第二算子代码。
7.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
按照所述目标节点在所述计算图中的相对顺序,对所述计算图中的各个目标节点的所述前向计算序列进行合并,得到上下文前向计算序列;
对所述上下文前向计算序列进行前向计算。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
为所述上下文前向计算序列中的各个节点的输出张量,分配第一内存空间。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
按照所述目标节点在所述计算图中的相对顺序,对所述计算图中的各个目标节点的所述第二后向计算序列进行合并,得到上下文后向计算序列;
对所述上下文后向计算序列进行后向计算。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
为所述上下文后向计算序列中的各个节点的输出梯度,分配第二内存空间。
11.根据权利要求1至3任一所述的方法,其特征在于,所述计算图包括:用于进行图像处理的深度学习模型对应的第一计算图、用于进行语音或音频处理的深度学习模型对应的第二计算图、用于进行自然语言处理的深度学习模型对应的第三计算图、用于进行互联网数据预测的深度学习模型对应的第四计算图中的任意一种。
12.一种计算图的图编译装置,其特征在于,所述图编译装置用于编译深度学习的计算图,所述图编译装置包括:
第一获取模块,用于获取输入的所述计算图,所述计算图包括至少两层节点,相邻两层节点中存在数据流动方向的节点之间连接有有向边,所述至少两层节点中存在目标节点;
第一改写模块,用于对所述计算图进行图改写,得到优化后的计算图;
生成模块,用于对于所述优化后的计算图,生成所述目标节点的前向计算序列;
编译模块,对所述前向计算序列中的各个节点进行算子代码编译,得到所述前向计算序列的第一算子代码;
输出模块,用于输出所述目标节点的所述前向计算序列和所述第一算子代码。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至11任一所述的计算图的图编译方法。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如权利要求1至11任一所述计算图的图编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103996.4A CN111338635B (zh) | 2020-02-20 | 2020-02-20 | 计算图的图编译方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103996.4A CN111338635B (zh) | 2020-02-20 | 2020-02-20 | 计算图的图编译方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338635A true CN111338635A (zh) | 2020-06-26 |
CN111338635B CN111338635B (zh) | 2023-09-12 |
Family
ID=71183505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010103996.4A Active CN111338635B (zh) | 2020-02-20 | 2020-02-20 | 计算图的图编译方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338635B (zh) |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111782219A (zh) * | 2020-07-16 | 2020-10-16 | 矩阵元技术(深圳)有限公司 | 基于TensorFlow的自定义类型实现方法和装置 |
CN112149828A (zh) * | 2020-09-29 | 2020-12-29 | 北京百度网讯科技有限公司 | 基于深度学习框架的算子精度检测方法和装置 |
CN112270413A (zh) * | 2020-10-22 | 2021-01-26 | 北京百度网讯科技有限公司 | 算子合并方法、装置、电子设备及存储介质 |
CN112527272A (zh) * | 2020-12-25 | 2021-03-19 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
CN112561081A (zh) * | 2020-12-18 | 2021-03-26 | 北京百度网讯科技有限公司 | 深度学习模型的转换方法、装置、电子设备和存储介质 |
CN112711422A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN112767230A (zh) * | 2021-02-26 | 2021-05-07 | 清华大学 | Gpu图神经网络优化方法及装置 |
CN112818663A (zh) * | 2021-01-15 | 2021-05-18 | 北京有竹居网络技术有限公司 | 用于语言模型的处理方法、文本生成方法、装置及介质 |
CN112862109A (zh) * | 2021-02-09 | 2021-05-28 | 上海商汤智能科技有限公司 | 深度学习模型的执行方法、装置、电子设备及存储介质 |
CN112947933A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 一种算子的执行方法、装置、计算机设备及存储介质 |
CN113626652A (zh) * | 2021-10-11 | 2021-11-09 | 北京一流科技有限公司 | 数据处理网络系统、数据处理网络部署系统及其方法 |
CN114003306A (zh) * | 2021-10-27 | 2022-02-01 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN114168154A (zh) * | 2022-02-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
WO2022057303A1 (zh) * | 2020-09-21 | 2022-03-24 | 华为技术有限公司 | 一种图处理的方法,系统以及装置 |
WO2022056841A1 (en) * | 2020-09-18 | 2022-03-24 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Neural architecture search via similarity-based operator ranking |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
WO2022142662A1 (zh) * | 2020-12-29 | 2022-07-07 | 华为技术有限公司 | 计算图的算子映射方法以及装置 |
CN114756211A (zh) * | 2022-05-13 | 2022-07-15 | 北京百度网讯科技有限公司 | 模型训练方法、装置、电子设备和存储介质 |
CN114880537A (zh) * | 2022-05-13 | 2022-08-09 | 深圳宏鹏数字供应链管理有限公司 | 一种企业风险评估方法、系统及存储介质 |
CN115033391A (zh) * | 2022-08-10 | 2022-09-09 | 之江实验室 | 一种用于神经网络计算的数据流动方法和装置 |
CN115145965A (zh) * | 2022-09-01 | 2022-10-04 | 浙江大华技术股份有限公司 | 数据流的生成方法、电子设备及计算机可读存储介质 |
CN115268936A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
CN115268877A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算并行执行的中间表示方法及装置 |
CN115511644A (zh) * | 2022-08-29 | 2022-12-23 | 易保网络技术(上海)有限公司 | 用于目标保单的处理方法、电子设备和可读存储介质 |
WO2023029589A1 (zh) * | 2021-08-31 | 2023-03-09 | 上海商汤智能科技有限公司 | 用于神经网络编译的方法、装置、设备及存储介质 |
CN116167461A (zh) * | 2023-04-21 | 2023-05-26 | 之江实验室 | 一种模型训练的方法、装置、存储介质及电子设备 |
CN116166275A (zh) * | 2023-04-24 | 2023-05-26 | 之江实验室 | 一种深度学习任务构图方法、装置、介质 |
WO2023092626A1 (zh) * | 2021-11-25 | 2023-06-01 | 之江实验室 | 基于统一后端引擎的深度学习框架与硬件设备适配方法 |
WO2023123266A1 (zh) * | 2021-12-30 | 2023-07-06 | 华为技术有限公司 | 子图的编译、执行方法及相关设备 |
US11782723B1 (en) | 2022-09-27 | 2023-10-10 | Zhejiang Lab | Intermediate representation method and apparatus for parallel execution of graph computation |
WO2024012491A1 (zh) * | 2022-07-15 | 2024-01-18 | 北京有竹居网络技术有限公司 | 优化神经网络模块算力的方法、芯片、电子设备和介质 |
WO2024082679A1 (zh) * | 2022-10-19 | 2024-04-25 | 华为技术有限公司 | 计算图的处理方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116514A (zh) * | 2013-03-15 | 2013-05-22 | 清华大学 | 基于系统扩展调用图的操作系统自动优化方法和系统 |
US20150089484A1 (en) * | 2013-09-24 | 2015-03-26 | Qualcomm Incorporated | Fast, Combined Forwards-Backwards Pass Global Optimization Framework for Dynamic Compilers |
CN104899853A (zh) * | 2014-03-04 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 图像区域的划分方法及装置 |
US20170124452A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Processing computational graphs |
US9798527B1 (en) * | 2017-01-06 | 2017-10-24 | Google Inc. | Loop and library fusion |
CN108090179A (zh) * | 2017-12-15 | 2018-05-29 | 北京海致星图科技有限公司 | 一种Spark并发子图查询的方法 |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110574051A (zh) * | 2017-05-31 | 2019-12-13 | 英特尔公司 | 计算高效的基于四元数的机器学习系统 |
CN110689116A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
-
2020
- 2020-02-20 CN CN202010103996.4A patent/CN111338635B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116514A (zh) * | 2013-03-15 | 2013-05-22 | 清华大学 | 基于系统扩展调用图的操作系统自动优化方法和系统 |
US20150089484A1 (en) * | 2013-09-24 | 2015-03-26 | Qualcomm Incorporated | Fast, Combined Forwards-Backwards Pass Global Optimization Framework for Dynamic Compilers |
CN104899853A (zh) * | 2014-03-04 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 图像区域的划分方法及装置 |
US20170124452A1 (en) * | 2015-10-28 | 2017-05-04 | Google Inc. | Processing computational graphs |
US9798527B1 (en) * | 2017-01-06 | 2017-10-24 | Google Inc. | Loop and library fusion |
CN110574051A (zh) * | 2017-05-31 | 2019-12-13 | 英特尔公司 | 计算高效的基于四元数的机器学习系统 |
CN108090179A (zh) * | 2017-12-15 | 2018-05-29 | 北京海致星图科技有限公司 | 一种Spark并发子图查询的方法 |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
CN110764744A (zh) * | 2018-07-25 | 2020-02-07 | 赛灵思公司 | 用于神经网络计算的中间表示生成方法和装置 |
CN110689116A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 一种神经网络剪枝方法、装置、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
吴林阳;杜伟健;陈小兵;庄毅敏;: "一种运算和数据协同优化的深度学习编译框架", 高技术通讯, no. 02 * |
孙延维;周谦;: "基于k边连通最小生成子图的网络拓扑管理算法", 江西师范大学学报(自然科学版), no. 02 * |
陈江婷: "图形化组态的图像处理实验系统的设计与优化", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, vol. 2011, no. 02 * |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111708641B (zh) * | 2020-07-14 | 2024-03-19 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111782219A (zh) * | 2020-07-16 | 2020-10-16 | 矩阵元技术(深圳)有限公司 | 基于TensorFlow的自定义类型实现方法和装置 |
CN111782219B (zh) * | 2020-07-16 | 2024-03-22 | 矩阵元技术(深圳)有限公司 | 基于TensorFlow的自定义类型实现方法和装置 |
WO2022056841A1 (en) * | 2020-09-18 | 2022-03-24 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Neural architecture search via similarity-based operator ranking |
WO2022057303A1 (zh) * | 2020-09-21 | 2022-03-24 | 华为技术有限公司 | 一种图处理的方法,系统以及装置 |
CN112149828A (zh) * | 2020-09-29 | 2020-12-29 | 北京百度网讯科技有限公司 | 基于深度学习框架的算子精度检测方法和装置 |
CN112270413B (zh) * | 2020-10-22 | 2024-02-27 | 北京百度网讯科技有限公司 | 算子合并方法、装置、电子设备及存储介质 |
CN112270413A (zh) * | 2020-10-22 | 2021-01-26 | 北京百度网讯科技有限公司 | 算子合并方法、装置、电子设备及存储介质 |
CN112561081A (zh) * | 2020-12-18 | 2021-03-26 | 北京百度网讯科技有限公司 | 深度学习模型的转换方法、装置、电子设备和存储介质 |
CN112527272A (zh) * | 2020-12-25 | 2021-03-19 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
CN112527272B (zh) * | 2020-12-25 | 2023-11-17 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
WO2022135028A1 (zh) * | 2020-12-25 | 2022-06-30 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
WO2022142662A1 (zh) * | 2020-12-29 | 2022-07-07 | 华为技术有限公司 | 计算图的算子映射方法以及装置 |
CN112711422B (zh) * | 2020-12-31 | 2024-01-19 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN112711422A (zh) * | 2020-12-31 | 2021-04-27 | 北京清微智能科技有限公司 | 一种神经网络编译的优化方法及系统 |
CN112818663A (zh) * | 2021-01-15 | 2021-05-18 | 北京有竹居网络技术有限公司 | 用于语言模型的处理方法、文本生成方法、装置及介质 |
CN112862109A (zh) * | 2021-02-09 | 2021-05-28 | 上海商汤智能科技有限公司 | 深度学习模型的执行方法、装置、电子设备及存储介质 |
CN112947933A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 一种算子的执行方法、装置、计算机设备及存储介质 |
CN112767230A (zh) * | 2021-02-26 | 2021-05-07 | 清华大学 | Gpu图神经网络优化方法及装置 |
WO2023029589A1 (zh) * | 2021-08-31 | 2023-03-09 | 上海商汤智能科技有限公司 | 用于神经网络编译的方法、装置、设备及存储介质 |
CN113626652A (zh) * | 2021-10-11 | 2021-11-09 | 北京一流科技有限公司 | 数据处理网络系统、数据处理网络部署系统及其方法 |
CN114003306B (zh) * | 2021-10-27 | 2024-03-15 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
CN114003306A (zh) * | 2021-10-27 | 2022-02-01 | 上海商汤科技开发有限公司 | 一种显存优化方法、装置、设备及存储介质 |
WO2023092626A1 (zh) * | 2021-11-25 | 2023-06-01 | 之江实验室 | 基于统一后端引擎的深度学习框架与硬件设备适配方法 |
WO2023123266A1 (zh) * | 2021-12-30 | 2023-07-06 | 华为技术有限公司 | 子图的编译、执行方法及相关设备 |
CN114168154A (zh) * | 2022-02-11 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 模型数据处理方法、装置、电子设备及存储介质 |
WO2023082567A1 (zh) * | 2022-04-13 | 2023-05-19 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
US11861505B2 (en) | 2022-04-13 | 2024-01-02 | Zhejiang Lab | Method and apparatus of executing dynamic graph for neural network computation |
CN114756211B (zh) * | 2022-05-13 | 2022-12-16 | 北京百度网讯科技有限公司 | 模型训练方法、装置、电子设备和存储介质 |
CN114880537A (zh) * | 2022-05-13 | 2022-08-09 | 深圳宏鹏数字供应链管理有限公司 | 一种企业风险评估方法、系统及存储介质 |
CN114756211A (zh) * | 2022-05-13 | 2022-07-15 | 北京百度网讯科技有限公司 | 模型训练方法、装置、电子设备和存储介质 |
WO2024012491A1 (zh) * | 2022-07-15 | 2024-01-18 | 北京有竹居网络技术有限公司 | 优化神经网络模块算力的方法、芯片、电子设备和介质 |
US11941507B2 (en) | 2022-08-10 | 2024-03-26 | Zhejiang Lab | Data flow method and apparatus for neural network computation by determining input variables and output variables of nodes of a computational graph of a neural network |
CN115033391A (zh) * | 2022-08-10 | 2022-09-09 | 之江实验室 | 一种用于神经网络计算的数据流动方法和装置 |
CN115511644A (zh) * | 2022-08-29 | 2022-12-23 | 易保网络技术(上海)有限公司 | 用于目标保单的处理方法、电子设备和可读存储介质 |
CN115145965A (zh) * | 2022-09-01 | 2022-10-04 | 浙江大华技术股份有限公司 | 数据流的生成方法、电子设备及计算机可读存储介质 |
US11782723B1 (en) | 2022-09-27 | 2023-10-10 | Zhejiang Lab | Intermediate representation method and apparatus for parallel execution of graph computation |
CN115268877A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于图计算并行执行的中间表示方法及装置 |
CN115268936A (zh) * | 2022-09-27 | 2022-11-01 | 之江实验室 | 一种用于计算图编译的优化方法及装置 |
WO2024082679A1 (zh) * | 2022-10-19 | 2024-04-25 | 华为技术有限公司 | 计算图的处理方法和装置 |
CN116167461A (zh) * | 2023-04-21 | 2023-05-26 | 之江实验室 | 一种模型训练的方法、装置、存储介质及电子设备 |
CN116166275A (zh) * | 2023-04-24 | 2023-05-26 | 之江实验室 | 一种深度学习任务构图方法、装置、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111338635B (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338635B (zh) | 计算图的图编译方法、装置、设备及存储介质 | |
Hung et al. | Optimizing agent behavior over long time scales by transporting value | |
US11741342B2 (en) | Resource-efficient neural architects | |
Cortez et al. | Modern optimization with R | |
Kiesl et al. | Extended resolution simulates DRAT | |
CN110569979A (zh) | 面向嘈杂中型量子设备的逻辑-物理比特重映射方法 | |
US20150220315A1 (en) | Method and apparatus for compiling | |
Hodnett et al. | R Deep Learning Essentials: A step-by-step guide to building deep learning models using TensorFlow, Keras, and MXNet | |
US20210295158A1 (en) | End-to-end optimization | |
Perez et al. | MDDs: Sampling and probability constraints | |
Polson et al. | Deep learning: Computational aspects | |
CN110308909B (zh) | 针对神经网络处理器的可执行程序生成装置和方法 | |
Nayak et al. | TeAAL: A Declarative Framework for Modeling Sparse Tensor Accelerators | |
CN114091414A (zh) | 用于改写叙事性文本的方法、设备、装置和介质 | |
Bourez | Deep learning with Theano | |
US11829764B2 (en) | Address manipulation using indices and tags | |
Ma et al. | Accelerating deep neural network filter pruning with mask-aware convolutional computations on modern CPUs | |
CN108460453B (zh) | 一种用于ctc训练的数据处理方法、装置及系统 | |
Reeves et al. | Propositional proof skeletons | |
Lobeiras et al. | Parallelization of shallow water simulations on current multi-threaded systems | |
Chen et al. | TANGO: re-thinking quantization for graph neural network training on GPUs | |
Dinov | Function Optimization | |
Smith | Theory and practice of classical matrix-matrix multiplication for hierarchical memory architectures | |
Nandy et al. | Neural networks in Unity | |
Singh et al. | Fundamentals of Deep Learning and Computer Vision: A Complete Guide to Become an Expert in Deep Learning and Computer Vision |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40023265 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |