CN115033391B - 一种用于神经网络计算的数据流动方法和装置 - Google Patents
一种用于神经网络计算的数据流动方法和装置 Download PDFInfo
- Publication number
- CN115033391B CN115033391B CN202210952808.4A CN202210952808A CN115033391B CN 115033391 B CN115033391 B CN 115033391B CN 202210952808 A CN202210952808 A CN 202210952808A CN 115033391 B CN115033391 B CN 115033391B
- Authority
- CN
- China
- Prior art keywords
- node
- variable
- variables
- input
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 57
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 31
- 239000002243 precursor Substances 0.000 claims abstract description 7
- 230000014509 gene expression Effects 0.000 claims description 99
- 238000009795 derivation Methods 0.000 claims description 5
- 238000012549 training Methods 0.000 abstract description 3
- 238000013135 deep learning Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
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/04—Architecture, e.g. interconnection topology
-
- 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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于神经网络计算的数据流动方法和装置,包括以下步骤:步骤1、初始化计算图中变量的生命周期,初始化从变量的定义开始到使用结束之间的时间段为所述变量在计算图中的生命周期;步骤2、定义使用中变量流过节点的传播规则,定义计算图某节点处的变量被使用,在该节点的前驱节点产生该变量的定义,使得流过该节点的有效变量的输入集合包含该变量;本发明公开了深度学习训练系统中一种用于神经网络计算的数据流动的建模方法和装置,可以从全局作用域的视角分析出局部循环里的每个计算子图的节点所需分配的内存单元块。所述的用于神经网络计算的数据流动方法提高整个计算图的计算效率,节约时间成本。
Description
技术领域
本发明涉及特定计算模型的计算机系统领域,特别涉及一种用于神经网络计算的数据流动方法和装置。
背景技术
随着人工智能产业化应用的快速发展,大规模深度神经网络模型的训练系统越来越成为学术界和工业界的研究热点。在局部作用域下,已有的用于神经网络计算的子图之间的数据传递方式是通过计算节点与内存进行频繁交换,并且需要为每个子图设计数据流动算法。在全局作用域内,这种方式不能满足带循环结构计算子图的数据流动效率。
发明内容
本发明的目的在于提供一种用于神经网络计算的数据流动方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本发明公开了一种用于神经网络计算的数据流动方法,包括以下步骤:
步骤1、初始化计算图中变量的生命周期,初始化从变量的定义开始到使用结束之间的时间段为所述变量在计算图中的生命周期;
步骤2、定义使用中变量流过节点的传播规则,定义计算图某节点处的变量被使用,在该节点的前驱节点产生该变量的定义,使得流过该节点的有效变量的输入集合包含该变量;
步骤3、设计重定义变量流过节点的传播规则,当变量在计算图某节点处被重新定义,则使该节点的前驱节点中的该变量的生命周期在流过该节点时被终结;
步骤4、定义计算图中关联变量流过节点的传播规则;
步骤5、基于数据流分析每个节点的输入和输出的有效变量;
步骤6、收集流过节点前后的有效变量的集合,收集基于计算图的变量的生命周期分析所得的流经每个节点的有效变量的集合;
步骤7、为计算图边上的有效变量分配内存单元块;
步骤8、定义计算图中可用表达式的传播规则;
步骤9、基于数据流分析每个节点的输入和输出的可用表达式;
步骤10、优化计算图中的可用表达式:将计算图节点处的可用表达式的计算结果保存到中间变量中,再次出现在后继节点中的所述可用表达式将替换为所述中间变量。
作为优选的,所述步骤3中重定义变量流过节点的传播规则具体为:若该变量在所述计算图某节点处没有被重新定义,则流过所述节点的有效变量的输出集合中的变量可以穿过该节点传播至其输出集合的变量;若该变量在所述计算图某节点处被重新定义,则所述变量不可以穿过该节点。
作为优选的,所述步骤4的具体子步骤如下:
步骤4.1、定义流过计算图某节点的变量等于使用变量;
步骤4.2、定义该节点的输出变量的集合为该节点的所有后继节点的输入集合的并集;
步骤4.3、定义该节点的输入变量的集合为输出变量的集合去除该节点处定义的该变量集合,再与该节点处使用变量集合取并集。
作为优选的,所述步骤5的具体子步骤如下:
步骤5.1、初始化输出节点的输入有效变量集合,对于整张计算图的输出节点,其输出有效变量集合为空集,其输入有效变量集合推导方法为:其输出有效变量集合移除所述节点处被重新定义的变量,再与所述节点处被使用的变量取并集;
步骤5.2、初始化输入节点的输出有效变量集合,对于整张计算图的输入节点,初始化其输出的有效变量集合元素为所述节点处定义的变量;
步骤5.3、推导中间节点的输出有效变量集合,所述节点的输出有效变量集合为取其后继节点的输入有效变量的并集;
步骤5.4、推导中间节点的输入有效变量集合,所述节点的输入有效变量集合为其输出有效变量结合移除所述节点处被重新定义的变量集合,再取与所述节点处被使用的变量集合的并集;
作为优选的,所述步骤7中,定义为计算图某节点的变量分配单元内存块的条件为:所述节点处的该变量在生命周期内,即计算图边上的有效变量才分配单元内存块,在计算图编译期间,根据上述收集的有效变量的集合中变量的个数,提前为每个变量预分配内存单元块。
作为优选的,所述步骤8的具体子步骤如下:
步骤8.1、定义流过计算图某节点的变量等于使用变量;
步骤8.2、定义该节点的输入变量的集合为该节点的所有前驱节点的输出变量集合的交集;
步骤8.3、定义该节点的输出变量的集合为该节点的所有输入变量的集合与使用变量的并集,再去除包含重定义变量的表达式。
作为优选的,所述步骤9的具体子步骤如下:
步骤9.1、可用表达式集合的初始化,将流入整个计算图入口节点的可用表达式的集合初始化为空集;
步骤9.2、可用表达式集合添加后继节点中新出现的表达式,对于存在多条输入边的节点,所述节点的可用表达式是取多条输入边上的可用表达式集合的交集作为所述节点的可用表达式集合新添加的元素;
步骤9.3、对于存在可用节点中的变量被重新定义的后继节点,需要将包含所述重定义变量的表达式从所述可用表达式集合中移除。
作为优选的,所述步骤10的具体子步骤如下:
步骤10.1、单独计算可用表达式;
步骤10.2、将计算图节点处的可用表达式的计算结果保存到中间变量中;
步骤10.3、对于没有可用表达式中的变量被重定义的后继节点,将后继节点中的可用表达式替换为中间变量的值;
步骤10.4、对于存在可用表达式中的变量被重定义的后继节点,插入可用表达式的更新节点。
本发明还公开了一种用于神经网络计算的数据流动装置,所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述用于神经网络计算的数据流动方法。
本发明的有益效果:本发明公开了深度学习训练系统中一种用于神经网络计算的数据流动方法和装置,可以从全局作用域的视角分析出局部循环里的每个计算子图的节点所需分配的内存单元块。所述的用于神经网络计算的数据流动方法提高整个计算图的计算效率,节约时间成本。研究人员和工程应用者开发分布式模型的过程中,利用所述的一种用于神经网络计算的数据流动方法搭建模型,神经网络的计算效率高,节约内存资源,推动了深度神经网络大模型落地应用的发展。
附图说明
图1是本发明实施例使用中变量的传播规则示意图;
图2是本发明实施例重定义变量的传播规则示意图;
图3是本发明实施例数据流图的定义示意图;
图4是本发明实施例基于数据流图进行的计算图的变量的生命周期的分析示意图;
图5是本发明实施例定义计算图中可用表达式的数据流图;
图6是本发明实施例基于数据流分析每个节点的输入和输出的可用表达式示意图;
图7是本发明实施例优化计算图中的可用表达式示意图;
图8是本发明实施例用于神经网络计算的数据流动装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明实施例提供一种用于神经网络计算的数据流动方法,包括以下步骤:
步骤一、初始化计算图中变量的生命周期;
步骤二、定义使用中变量流过节点的传播规则;
步骤三、设计重定义变量流过节点的传播规则;
步骤四、定义计算图中关联变量流过节点的传播规则;
步骤五、基于数据流分析每个节点的输入和输出的有效变量;
步骤六、收集流过节点前后的有效变量的集合;
步骤七、为计算图边上的有效变量分配内存单元块;
步骤八、定义计算图中可用表达式的传播规则;
步骤九、基于数据流分析每个节点的输入和输出的可用表达式;
步骤十、优化计算图中的可用表达式;
步骤一中初始化计算图中变量的生命周期:初始化从变量的定义开始到使用结束之间的时间段为所述变量在计算图中的生命周期,计算图中只有在生命周期内的变量才是有效的。
步骤二中定义使用中变量流过节点的传播规则。已知给定计算图G(E,V),其中 E是计算图G的边,V是计算图G的节点。在节点V处,如果变量1被使用,那么在节点V的前驱节点一定产生变量1的定义,因此流过节点V的有效变量的输入集合一定包含变量1。使用中变量的传播规则如图1所示。本实施例中出现的标识“■”,表示所述位置的表达式可以为任意表达式。
步骤三中设计重定义变量流过节点的传播规则。在节点V处,如果变量1被重新定义,那么节点V 的前驱节点中的变量1的生命周期在流过节点V时被终结。也就是说,输出节点V的变量1是无效的,流过节点V的有效变量的输入集合中不包含变量1。而且由于变量1在节点V被重新定义,所以流过节点V的有效变量的输出集合包含了变量1。输出集合中的变量1无法穿过节点V传播至输入集合中。重定义变量的传播规则如图2所示。从节点V的视角可以总结为:如果变量在节点V处没有被重新定义,那么流过节点V的有效变量的输出集合中的变量可以穿过节点V传播至其输入集合的变量,如图2中的变量2;反之,所述变量就不可以穿过节点V,如图2中的变量1。
步骤四中定义计算图中关联变量流过节点的传播规则。如图3所示。所述定义计算图中关联变量流过节点的传播规则包含如下过程:
(1) 对于计算图的节点V:定义变量v=使用变量E;
(2) 定义节点输出变量的集合。节点V的输出变量的集合定义为节点V的所有后继节点的输入集合的并集。节点V的输出变量的集合表示为:输出(节点V)=U输入(后继节点Vs),Vs∈后继节点(V);
(3) 定义节点的输入变量的集合。节点V的输入变量的集合定义为输出变量的集合去除节点V处定义的变量v集合,再与节点V处使用变量E集合的并集。节点V的输入变量的集合表示为:输入(节点V)=(输出(节点V)\{定义变量v})∪{使用变量E}。
步骤五中基于数据流分析每个节点的输入和输出的有效变量,如图4所示:
基于数据流图逐步骤分析计算图中全局变量的生命周期,其中Si:{……}表示第i步分析所得的流经对应节点的有效变量的集合。如图4所示了流经整个计算图中每个节点的输入和输出的全局有效变量集合。本实施例中出现的“{ }”表示空集;x=input表示将输入的张量变量赋予张量变量x。
所述基于数据流分析每个节点的输入和输出的有效变量包含如下过程:
(1) 初始化输出节点的输入有效变量集合。对于整张计算图的输出节点,其输出有效变量集合为空集,其输入有效变量集合推导方法是:其输出有效变量集合移除所述节点处被重新定义的变量,再与所述节点处被使用的变量取并集。所以其输入有效变量集合为:空集与输出变量取并集,输入有效变量集合包含输出变量元素。如图4中的S1:{x}。
(2) 初始化输入节点的输出有效变量集合。对于整张计算图的输入节点,初始化其输出的有效变量集合元素为所述节点处定义的变量。如图4中的S3:{x}。
(3) 推导中间节点的输出有效变量集合。所述节点的输出有效变量集合为取其后继节点的输入有效变量的并集。如图4中,对于x.shape[0]>520节点,其输出有效变量集合为:其后继节点y=x/8的输入有效变量集合S2:{x} 的并集,因此其输出有效变量集合为S2:{x}。同理,对于z=tf.nn.relu(z) 节点,其输出有效变量集合为S5:{x}。
推导中间节点的输入有效变量集合。所述节点的输入有效变量集合为其输出有效变量结合移除所述节点处被重新定义的变量集合,再取与所述节点处被使用的变量集合的并集。如图4中,对于x.shape[0]>520节点,其输入有效变量集合为:其输入有效变量集合S2:{x}移除所述节点处被重新定义的变量,再取与所述节点处被使用的变量集合的{x}的并集,最终其输入有效变量集合为S3:{x}。同理,对于z=tf.nn.relu(z) 节点,其输入有效变量集合为入边上的S7:{x,z}集合和入边上的S6:{x,z}集合。对于x=x/3 节点,其输入有效变量集合为其输入有效变量集合S6:{x,z} 移除被重定义变量{x},再取与被使用变量{x}的并集,所述输入有效变量集合最终为S8:{x,z}。对于|z|>0节点,其输入有效变量集合为其后继节点的输入有效变量集合的并集,所以为S9:{x,z}。
步骤六中收集流过节点前后的有效变量的集合。收集基于上述数据流图进行的计算图的变量的生命周期分析所得的流经每个节点的有效变量的集合。
步骤七中为计算图边上的有效变量分配内存单元块。定义为节点V处的变量1分配单元内存块的条件为:所述节点V处的变量1在生命周期内,也就是说,有效变量才分配单元内存块。在计算图编译期间,根据上述收集的有效变量的集合中的变量的个数,提前为每个变量预分配内存单元块。
步骤八中定义计算图中可用表达式的传播规则。如图5所示。
所述定义计算图中可用表达式的传播规则包含如下过程:
(1) 对于计算图的节点V:定义变量v=使用变量E;
(2) 定义节点的输入变量的集合。节点V的输入变量的集合定义为:节点V的所有前驱节点的输出变量集合的交集。节点V的输入变量的集合表示为:输入(节点V)=∩输出(前驱节点Vs),Vs∈前驱节点(V);
(3) 定义节点输出变量的集合。节点V的输出变量的集合定义为节点V的所有输入变量的集合与使用变量E的并集,再去除包含重定义变量的表达式。节点V的输出变量的集合表示为:输出(节点V)=(输出(节点V)∪{使用变量E})\{表达式(重定义变量v)}。
步骤九中基于数据流分析每个节点的输入和输出的可用表达式,如图6所示:
基于数据流图逐步骤分析计算图中全局表达式的可用表达式,其中Si:{……}表示第i步分析所得的流经对应节点的可用表达式的集合。如图6所示了流经整个计算图中每个节点的输入和输出的全局可用表达式的集合。
tf.add(x,y):表示张量x与张量y进行相加操作;
tf.abs(y):表示取张量y的绝对值;
tf.matmul(x,y):表示张量x与张量y进行矩阵乘法操作;
tf.ones(a.shape):表示创建一个与张量a形状相同且所有元素都为1的张量。
所述基于数据流分析每个节点的输入和输出的可用表达式包含如下步骤:
步骤1、可用表达式集合的初始化。将流入整个计算图入口节点的可用表达式的集合初始化为空集。如图6中的步骤s1。
步骤2、可用表达式集合添加后继节点中新出现的表达式。对于存在多条输入边的节点,所述节点的可用表达式是取多条输入边上的可用表达式集合的交集作为所述节点的可用表达式集合新添加的元素。如图6中的步骤s2、s3和s4,其中,对于s4集合对应的tf.abs(y)>tf.abs(tf.add(a,b))节点,所述节点的可用表达式集合的推导过程如下:由于所述节点存在两条输入边,所以所述节点的可用表达式的集合是取两条输入边上的可用表达式集合的交集,也就是取s3和s6的交集。
步骤3、对于存在可用节点中的变量被重新定义的后继节点,需要将包含所述重定义变量的表达式从所述可用表达式集合中移除。如图6中的步骤s5。对于s5集合对应的节点x=tf.add(a,b),所述节点的可用表达式的推导过程如下:由于其前驱节点a=tf.add(a,tf.ones(a.shape)) 重新定义了变量a,导致前驱节点的可用表达式集合s4:{tf.add(a,b)} 包含的可用表达式tf.add(a,b)的计算结果发生变化。所以所述节点需要将包含所述重定义变量a的表达式tf.add(a,b)从所述可用表达式集合s4:{tf.add(a,b)}中移除,所述节点对应的可用表达式集合最终为空集。
步骤十中优化计算图中的可用表达式。将计算图节点处的可用表达式的计算结果保存到中间变量中,再次出现在后继节点中的所述可用表达式将替换为所述中间变量。优化可用表达式的目的是减少后继节点相同可用表达式的重计算,提高整个计算图的计算效率,节约时间成本。所述优化计算图中的可用表达式包含如下过程:
(1) 计算可用表达式。单独计算可用表达式。
(2) 将可用表达式计算结果保存到中间变量中。
(3) 对于没有可用表达式中的变量被重定义的后继节点,将后继节点中的可用表达式替换为中间变量的值。
(4) 对于存在可用表达式中的变量被重定义的后继节点,插入可用表达式的更新节点。由于可用表达式中的变量在后继节点中被重新定义,导致前驱节点包含的可用表达式的计算结果发生变化,那么就需要插入可用表达式计算结果的更新节点。
所述优化计算图中的可用表达式的过程如图7所示。在s2步骤,将可用表达式tf.add(a,b)的计算结果保存在变量w中,将后继节点tf.abs(y)>tf.abs(tf.add(a,b)) 中的可用表达式tf.add(a,b)替换为变量w的值。由于步骤s5没有可用表达式,导致前驱节点包含的可用表达式tf.add(a,b)的计算结果发生变化,所以需要插入一个更新变量w的节点,如w=x。
参见图8,本发明实施例还提供了一种用于神经网络计算的数据流动装置,还包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的用于神经网络计算的数据流动方法。
本发明一种用于神经网络计算的数据流动装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本发明一种用于神经网络计算的数据流动装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图8所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的用于神经网络计算的数据流动方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种用于神经网络计算的数据流动方法,其特征在于:包括以下步骤:
步骤1、初始化计算图中变量的生命周期,初始化从变量的定义开始到使用结束之间的时间段为所述变量在计算图中的生命周期;
步骤2、定义使用中变量流过节点的传播规则,定义计算图某节点处的变量被使用,在该节点的前驱节点产生该变量的定义,使得流过该节点的有效变量的输入集合包含该变量;
步骤3、设计重定义变量流过节点的传播规则,当变量在计算图某节点处被重新定义,则使该节点的前驱节点中的该变量的生命周期在流过该节点时被终结;
步骤4、定义计算图中关联变量流过节点的传播规则;
步骤5、基于数据流分析每个节点的输入和输出的有效变量,包括如下子步骤:
步骤5.1、初始化输出节点的输入有效变量集合,对于整张计算图的输出节点,其输出有效变量集合为空集,其输入有效变量集合推导方法为:其输出有效变量集合移除所述节点处被重新定义的变量,再与所述节点处被使用的变量取并集;
步骤5.2、初始化输入节点的输出有效变量集合,对于整张计算图的输入节点,初始化其输出的有效变量集合元素为所述节点处定义的变量;
步骤5.3、推导中间节点的输出有效变量集合,所述节点的输出有效变量集合为取其后继节点的输入有效变量的并集;
步骤5.4、推导中间节点的输入有效变量集合,所述节点的输入有效变量集合为其输出有效变量结合移除所述节点处被重新定义的变量集合,再取与所述节点处被使用的变量集合的并集;
步骤6、收集流过节点前后的有效变量的集合,收集基于计算图的变量的生命周期分析所得的流经每个节点的有效变量的集合;
步骤7、为计算图边上的有效变量分配内存单元块,定义为计算图某节点的变量分配单元内存块的条件为:所述节点处的该变量在生命周期内,即计算图边上的有效变量才分配单元内存块,在计算图编译期间,根据上述收集的有效变量的集合中变量的个数,提前为每个变量预分配内存单元块;
步骤8、定义计算图中可用表达式的传播规则;
步骤9、基于数据流分析每个节点的输入和输出的可用表达式;
步骤10、优化计算图中的可用表达式:将计算图节点处的可用表达式的计算结果保存到中间变量中,再次出现在后继节点中的所述可用表达式将替换为所述中间变量。
2.如权利要求1所述的一种用于神经网络计算的数据流动方法,其特征在于:所述步骤3中重定义变量流过节点的传播规则具体为:若该变量在所述计算图某节点处没有被重新定义,则流过所述节点的有效变量的输出集合中的变量可以穿过该节点传播至其输出集合的变量;若该变量在所述计算图某节点处被重新定义,则所述变量不可以穿过该节点。
3.如权利要求1所述的一种用于神经网络计算的数据流动方法,其特征在于:所述步骤4的具体子步骤如下:
步骤4.1、定义流过计算图某节点的变量等于使用变量;
步骤4.2、定义该节点的输出变量的集合为该节点的所有后继节点的输入集合的并集;
步骤4.3、定义该节点的输入变量的集合为输出变量的集合去除该节点处的定义的变量集合,再与该节点处使用变量集合取并集。
4.如权利要求1所述的一种用于神经网络计算的数据流动方法,其特征在于:所述步骤8的具体子步骤如下:
步骤8.1、定义流过计算图某节点的变量等于使用变量;
步骤8.2、定义该节点的输入变量的集合为该节点的所有前驱节点的输出变量集合的交集;
步骤8.3、定义该节点的输出变量的集合为该节点的所有输入变量的集合与使用变量的并集,再去除包含重定义变量的表达式。
5.如权利要求1所述的一种用于神经网络计算的数据流动方法,其特征在于:所述步骤9的具体子步骤如下:
步骤9.1、可用表达式集合的初始化,将流入整个计算图入口节点的可用表达式的集合初始化为空集;
步骤9.2、可用表达式集合添加后继节点中新出现的表达式,对于存在多条输入边的节点,所述节点的可用表达式是取多条输入边上的可用表达式集合的交集作为所述节点的可用表达式集合新添加的元素;
步骤9.3、对于存在可用节点中的变量被重新定义的后继节点,需要将包含所述重定义变量的表达式从所述可用表达式集合中移除。
6.如权利要求1所述的一种用于神经网络计算的数据流动方法,其特征在于:所述步骤10的具体子步骤如下:
步骤10.1、单独计算可用表达式;
步骤10.2、将计算图节点处的可用表达式的计算结果保存到中间变量中;
步骤10.3、对于没有可用表达式中的变量被重定义的后继节点,将后继节点中的可用表达式替换为中间变量的值;
步骤10.4、对于存在可用表达式中的变量被重定义的后继节点,插入可用表达式的更新节点。
7.一种用于神经网络计算的数据流动装置,其特征在于:所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-6任一项所述用于神经网络计算的数据流动方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210952808.4A CN115033391B (zh) | 2022-08-10 | 2022-08-10 | 一种用于神经网络计算的数据流动方法和装置 |
PCT/CN2022/116171 WO2023093185A1 (zh) | 2022-08-10 | 2022-08-31 | 一种用于神经网络计算的数据流动方法和装置 |
US17/954,109 US11941507B2 (en) | 2022-08-10 | 2022-09-27 | 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 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210952808.4A CN115033391B (zh) | 2022-08-10 | 2022-08-10 | 一种用于神经网络计算的数据流动方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115033391A CN115033391A (zh) | 2022-09-09 |
CN115033391B true CN115033391B (zh) | 2022-11-11 |
Family
ID=83130104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210952808.4A Active CN115033391B (zh) | 2022-08-10 | 2022-08-10 | 一种用于神经网络计算的数据流动方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11941507B2 (zh) |
CN (1) | CN115033391B (zh) |
WO (1) | WO2023093185A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268877B (zh) * | 2022-09-27 | 2022-12-13 | 之江实验室 | 一种用于图计算并行执行的中间表示方法及装置 |
US11782723B1 (en) | 2022-09-27 | 2023-10-10 | Zhejiang Lab | Intermediate representation method and apparatus for parallel execution of graph computation |
CN115658331B (zh) * | 2022-12-28 | 2023-03-21 | 杭州登临瀚海科技有限公司 | 动态神经网络的编译方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268023A (zh) * | 2014-10-10 | 2015-01-07 | 西安电子科技大学 | 一种msvl程序内存管理方法 |
CN111045959A (zh) * | 2019-11-18 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于存储优化的复杂算法变量映射方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190279086A1 (en) * | 2017-08-19 | 2019-09-12 | Wave Computing, Inc. | Data flow graph node update for machine learning |
US11531902B2 (en) * | 2018-11-13 | 2022-12-20 | International Business Machines Corporation | Generating and managing deep tensor neural networks |
DE102019205081A1 (de) * | 2019-04-09 | 2020-10-15 | Robert Bosch Gmbh | Verfahren, Vorrichtung und Computerprogramm zum Betreiben eines tiefen neuronalen Netzes |
WO2021077284A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳鲲云信息科技有限公司 | 神经网络运行系统和方法 |
CN110941494A (zh) * | 2019-12-02 | 2020-03-31 | 哈尔滨工程大学 | 一种面向深度学习的gpu并行计算的数据处理方法 |
US11521062B2 (en) * | 2019-12-05 | 2022-12-06 | International Business Machines Corporation | Neural network training using a data flow graph and dynamic memory management |
CN111338635B (zh) * | 2020-02-20 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 计算图的图编译方法、装置、设备及存储介质 |
WO2021219211A1 (en) * | 2020-04-29 | 2021-11-04 | Huawei Technologies Co., Ltd. | Memory allocation in a neural network |
US11347442B2 (en) * | 2020-04-30 | 2022-05-31 | Sap Se | In-memory database service abstraction component |
CN112527502A (zh) * | 2020-12-09 | 2021-03-19 | 北京百瑞互联技术有限公司 | 一种优化音视频编解码器内存的方法、装置及介质及设备 |
CN114186687B (zh) * | 2022-02-17 | 2022-05-17 | 之江实验室 | 一种面向神经网络模型计算的中间表示方法和装置 |
CN114461351B (zh) * | 2022-04-13 | 2022-06-17 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
-
2022
- 2022-08-10 CN CN202210952808.4A patent/CN115033391B/zh active Active
- 2022-08-31 WO PCT/CN2022/116171 patent/WO2023093185A1/zh unknown
- 2022-09-27 US US17/954,109 patent/US11941507B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268023A (zh) * | 2014-10-10 | 2015-01-07 | 西安电子科技大学 | 一种msvl程序内存管理方法 |
CN111045959A (zh) * | 2019-11-18 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于存储优化的复杂算法变量映射方法 |
Also Published As
Publication number | Publication date |
---|---|
US11941507B2 (en) | 2024-03-26 |
CN115033391A (zh) | 2022-09-09 |
WO2023093185A1 (zh) | 2023-06-01 |
US20240054319A1 (en) | 2024-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115033391B (zh) | 一种用于神经网络计算的数据流动方法和装置 | |
CN114186687B (zh) | 一种面向神经网络模型计算的中间表示方法和装置 | |
CN114936099B (zh) | 一种用于神经网络计算的图优化方法和装置 | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
US11805025B1 (en) | Neural network computing-oriented modeling method and apparatus for distributed data routing | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
CN111708641A (zh) | 一种内存管理方法、装置、设备及计算机可读存储介质 | |
Martínez del Amor et al. | Parallel simulation of probabilistic P systems on multicore platforms | |
CN115268936B (zh) | 一种用于计算图编译的优化方法及装置 | |
CN115269205B (zh) | 一种面向神经网络计算的内存优化方法和装置 | |
El Hajj | Techniques for optimizing dynamic parallelism on graphics processing units | |
US20240104016A1 (en) | Intermediate Representation Method and Apparatus for Compiling Computation Graphs | |
US20240028886A1 (en) | Graph Optimization Method and Apparatus for Neural Network Computation | |
CN115268877B (zh) | 一种用于图计算并行执行的中间表示方法及装置 | |
US20240104395A1 (en) | Memory optimization method and device oriented to neural network computing | |
WO2024065866A1 (zh) | 一种用于计算图编译的中间表示方法及装置 | |
US20240104341A1 (en) | Memory optimization method and apparatus for neural network compilation | |
Rashid et al. | Parallel Combinatorial Optimization Heuristics with GPUs | |
Ghidouche et al. | Two parallel implementations of Ehrlich-Aberth algorithm for root-finding of polynomials on multiple GPUs with OpenMP and MPI | |
CN115545192A (zh) | 一种基于层级调度优化的高效仿真方法及装置 | |
Symons et al. | Design and application of Parsim—a message-passing computer simulator | |
CN117193633A (zh) | 基于NetCDF的数据可视化并行IO优化方法及系统 | |
CN116166425A (zh) | 基于神经网络中动态计算图的内存优化方法及电子设备 | |
Ma et al. | Integration of Linear Constraints with a Temporal Logic Programming Language | |
Saldana et al. | Parallel implementations of cellular automata algorithms on the agila high performance computing system |
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 |