CN113326137B - 深度学习计算方法、装置、芯片及介质 - Google Patents

深度学习计算方法、装置、芯片及介质 Download PDF

Info

Publication number
CN113326137B
CN113326137B CN202110710157.3A CN202110710157A CN113326137B CN 113326137 B CN113326137 B CN 113326137B CN 202110710157 A CN202110710157 A CN 202110710157A CN 113326137 B CN113326137 B CN 113326137B
Authority
CN
China
Prior art keywords
graph
computation
calculation
sub
chip
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
Application number
CN202110710157.3A
Other languages
English (en)
Other versions
CN113326137A (zh
Inventor
方智毅
丁圣阁
贾明桥
程伟
王皓
陶芝伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Suiyuan Technology Co ltd
Original Assignee
Shanghai Enflame Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202110710157.3A priority Critical patent/CN113326137B/zh
Publication of CN113326137A publication Critical patent/CN113326137A/zh
Application granted granted Critical
Publication of CN113326137B publication Critical patent/CN113326137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种深度学习计算方法、装置、芯片及介质。该方法包括:获取初始计算图;根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;通过所述芯片内的多个计算集群处理所述重构计算图。上述技术方案实现了芯片内的分布式计算,充分利用了芯片内各计算集群的计算性能和存储性能,提高了芯片对初始计算图的处理效率。

Description

深度学习计算方法、装置、芯片及介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种深度学习计算方法、装置、芯片及介质。
背景技术
随着深度学习的发展,深度学习模型可以在多个计算设备上进行训练或推理,实现了计算设备间的分布式深度学习计算。
目前,现有的ASIC(Application Specific Integrated Circuit,专用集成电路)芯片和计算框架(如TensorFlow或pytorch)不支持芯片内分布式深度学习计算,包括训练和推理,无法充分发挥芯片的计算性能。
发明内容
本发明实施例提供了一种深度学习计算方法、装置、芯片及介质,以实现芯片内分布式深度学习计算,充分利用芯片的计算性能和存储性能。
第一方面,本发明实施例提供了一种深度学习计算方法,应用于芯片中,包括:
获取初始计算图;
根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
通过所述芯片内的多个计算集群处理所述重构计算图。
第二方面,本发明实施例还提供了一种深度学习计算装置,应用于芯片中,包括:
初始计算图获取模块,用于获取初始计算图;
重构计算图生成模块,用于根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
重构计算图处理模块,用于通过所述芯片内的多个计算集群处理所述重构计算图。
第三方面,本发明实施例还提供了一种芯片,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明任意实施例中所述的深度学习计算方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例中所述的深度学习计算方法。
本发明实施例提供的技术方案,在芯片获取到初始计算图时,对所述初始计算图进行重构,使重构计算图中不同的计算节点组的执行设备分别为芯片内不同的计算集群,进而通过芯片内的多个计算集群处理所述重构计算图,以此实现了芯片内的分布式计算,充分利用了芯片内各计算集群的计算性能和存储性能,提高了芯片对初始计算图的处理效率。
附图说明
图1是本发明实施例一中的一种深度学习计算方法的流程图;
图2是本发明实施例二中的一种深度学习计算方法的流程图;
图3是本发明实施例二中的一种与数据输入节点对应的输入子图结构的重构示意图;
图4是本发明实施例二中的一种与数据输入节点对应的输入子图结构的重构示意图;
图5是本发明实施例三中的一种深度学习计算方法的流程图;
图6是本发明实施例三中的一种初始计算图的示意图;
图7是本发明实施例三中的一种重构计算图的示意图;
图8是本发明实施例四中的一种深度学习计算装置的结构示意图;
图9是本发明实施例五中的一种芯片的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种深度学习计算方法的流程图,本实施例可适用于实现芯片内分布式计算的情况,该方法可以由本发明实施例提供的深度学习计算装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在芯片中。
如图1所示,本实施例提供的深度学习计算方法,应用于芯片中,包括:
S110、获取初始计算图。
一个机器学习任务的核心是模型的定义以及模型的参数求解方式,对这两者进行抽象之后,可以确定一个唯一的计算逻辑,将这个逻辑用图表示,称之为计算图。计算图表现为有向无环图,定义了数据的流转方式,数据的计算方式,以及各种计算之间的相互依赖关系等。每一个计算图都是一个独立的计算逻辑。
初始计算图,指的是由目标深度学习框架进行计算图编译生成的在计算设备上执行的计算图。其中,目标深度学习框架指的是任意一种深度学习框架,例如可以是Tensorflow、Pytorch、Mxnet、Mindspore等。
在本实施例中,初始计算图具体可以指由目标深度学习框架进行计算图编译生成的在芯片上执行的计算图,其中,芯片可以是神经形态芯片。
在一种可选实施方式中,初始计算图可以是由目标深度学习框架进行计算图编译生成的可在多个计算设备(如神经形态芯片)上并行执行的多个计算图中的一个计算图。
S120、根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群。
在本实施例提及的芯片,在用户视角看来是一块芯片,但在逻辑架构上可以包括多个计算集群(cluster),多个计算集群可以并行地进行计算操作,以提高芯片的计算性能和存储性能。
在获取到初始计算图之后,对计算图进行重构,使计算图调整为适用于芯片内的多个计算集群上并行执行的计算图,也即重构计算图。在重构计算图中,包括多个计算节点组,每个计算节点组中包括多个计算节点(如前向计算节点、反向计算节点、损失计算节点等),不同的计算节点组由芯片内不同的计算集群来执行。
可选的,重构计算图中包括的多个计算节点组的数量可以与芯片内计算集群的数量相等,以充分利用芯片的计算性能。其中,在多个计算节点组中,一个为初始计算节点组,其余为根据所述初始计算节点组复制得到的。
示例性的,若芯片内包括四个计算集群,假设分别为cluster0、cluster1、cluster2、cluster3,初始计算图中的初始计算节点组的执行设备为cluster0(其中,cluster0为芯片对外所示的执行设备),并根据初始计算节点组进行复制得到三个复制计算节点组。由此,重构计算图中包括一个初始计算节点组和三个复制计算节点组,三个复制计算节点组的执行设备分别为cluster1、cluster2、cluster3。
作为一种可选的实施方式,所述根据所述初始计算图生成重构计算图,可以具体为:如果所述初始计算图和所述芯片的硬件结构符合片内分布式计算条件,则根据所述初始计算图生成重构计算图。
芯片在获取到初始计算图之后,首先判断初始计算图和本身硬件结构是否符合片内分布式计算条件,若符合,则对所述初始计算图进行重构,生成重构计算图,若不符合,则直接对所述初始计算图进行处理。
可选的,片内分布式计算条件包括硬件支持条件、深度学习计算类型条件和计算节点部署条件。其中,硬件支持条件可以具体为芯片驱动处于片内分布式多计算集群模式,也即芯片内驱动多个并行的计算集群;深度学习计算类型条件可以具体为属于训练计算或推理计算,调用了优化器有梯度产生;计算节点部署条件可以具体为属于异构计算,非全部计算节点都部署在CPU(Central Processing Unit,中央处理器)上,至少一个计算节点部署在芯片上。
芯片在获取到初始计算图之后,若判断出芯片驱动处于片内分布式多计算集群模式,且初始计算图的深度学习计算类型为训练或推理,且计算节点部署属于异构计算,则确定所述初始计算图和所述芯片的硬件结构符合片内分布式计算条件,进而对初始计算图进行重构生成重构计算图,以实现片内分布式深度学习计算。
S130、通过所述芯片内的多个计算集群处理所述重构计算图。
在生成重构计算图之后,使用与重构计算图中计算节点组的执行设备相匹配的计算集群,执行与相应计算节点组对应计算操作,以此实现了芯片内的多个计算集群同时对重构计算图进行处理,也即实现了芯片内的分布式计算。
需要指出的是,重构计算图中的多个计算节点组的计算操作是有多个计算集群执行的,除计算节点组之外其他节点的操作可以由其中任意一个计算集群来执行,如由与初始计算图对应的计算集群来执行。
本发明实施例提供的技术方案,在芯片获取到初始计算图时,对所述初始计算图进行重构,使重构计算图中不同的计算节点组的执行设备分别为芯片内不同的计算集群,进而通过芯片内的多个计算集群处理所述重构计算图,以此实现了芯片内的分布式计算,充分利用了芯片内各计算集群的计算性能和存储性能,提高了芯片对初始计算图的处理效率。
实施例二
图2为本发明实施例二提供的一种深度学习计算方法的流程图,本实施例在前述实施例的基础上进行具体化,其中,根据所述初始计算图生成重构计算图,可以具体为:
在所述初始计算图中确定数据输入节点、计算节点组和可训练变量节点;
调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,将与所述计算节点组对应的计算子图结构进行复制,并增加计算结果汇总子图结构,得到所述重构计算图;
其中,所述初始计算图中的计算子图结构以及复制得到的计算子图结构所对应的执行设备分别为所述芯片内不同的计算集群。
如图2所示,本实施例提供的深度学习计算方法,应用于芯片中,包括:
S210、获取初始计算图。
S220、在所述初始计算图中确定数据输入节点、计算节点组和可训练变量节点。
计算图是由节点和有向边组成的。按照功能不同,节点可以分为不同的类型;按照操作之间关系的不同,边可以分为数据边(用来传输数据)和控制边(用来定义依赖关系)。所有的节点都通过数据边或者控制边连接。
在本实施例中,针对获取到的初始计算图,对计算图上节点进行类型分类和标记,确定数据输入节点、计算节点组和可训练变量节点。
其中,数据输入节点,指的是定义输入数据的类型和形状等属性,用于对数据进行统一抽象的节点,包括循环队列、迭代器、分阶区域等;计算节点组,是由多个计算节点构成的一系列计算节点,包括正向计算节点和反向计算计算节点,是对梯度计算产生直接影响的正向和反向计算节点;可训练变量节点,指的是对应有状态的变量操作、通常用来存储模型参数的节点,变量指的是深度学习需要更新的神经网络变量。
作为一种可选的实施方式,在确定数据输入节点、计算节点组和可训练变量节点时,可以采用如下方式:
在优化器获取梯度,从梯度开始按照有向边逆向递归遍历每一个前节点。针对每一个前节点,判断该节点是否为可训练变量节点,是否为数据输入节点,以此确定出可训练变量节点和数据输入节点,遍历到的节点(均对梯度计算有影响)中除可训练变量节点和数据输入节点之外的节点均为计算节点,这些节点组合起来称之为计算节点组。需要指出的是,没有遍历到的节点是对梯度计算没有影响的节点,节点既不是可训练变量节点、非数据输入节点,也不属于计算节点组。
以Tensorflow为例,在判断节点是否为可训练变量节点时,可以通过判断算子类型来确定,当算子类型为“VariableV2”、“VarHandleOp”或“ReadVariableOp”时,节点为可训练变量节点。在判断节点是否为数据输入节点时,也可以通过判断算子类型来确定,当算子类型为“IteratorGetNext”、“Unstage”或“QueueDequeueManyV2”时,节点为数据输入节点。
S230、在初始计算图中,调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,将与所述计算节点组对应的计算子图结构进行复制,并增加计算结果汇总子图结构,得到重构计算图。
将与所述计算节点组对应的计算子图结构进行复制,使芯片内的多个计算集群可以同时并行处理;调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,使多个计算集群能够获取到计算过程所需的变量数据以及与各计算集群相应的输入数据;增加计算结果汇总子图结构使对多个计算集群的并行计算结果能够得到汇总,由此即可生成适宜片内分布式计算的计算图结构。
其中,子图结构指的是计算图中的部分图结构,子图结构中包括节点以及匹配的有向边。输入子图结构指的是与数据输入相关的子图结构,在输入子图结构中除了包括数据输入节点,还可能包括与所述数据输入节点相关的辅助节点。变量子图结构指的是与训练变量存储相关的子图结构,在变量子图结构中除了包括可训练变量节点,还可能包括与所述可训练节点相关的辅助节点。计算子图结构指的是与前向计算、反向结算以及损失计算相关的子图结构,在计算子图结构中包括与前向计算、反向结算以及损失计算对应的计算节点。计算结果汇总子图结构,指的是用于对多个计算子图结构的计算结果进行汇总的子图结构,计算结果汇总子图结构涉及的计算逻辑与汇总方式相关。
在对与所述计算节点组对应的计算子图结构进行复制时,复制的份数由片内分布式资源确定,也即可以根据芯片内包括计算集群的数量确定,复制的份数可以小于等于芯片内计算集群总数与1的差值。其中,初始计算图中的计算子图结构以及复制得到的计算子图结构所对应的执行设备分别为所述芯片内不同的计算集群。假设,芯片内包括的计算集群数量为n,初始计算图中的计算子图结构的执行设备可以为芯片的计算集群0,复制得到的各个计算子图结构的执行设备分别为芯片的计算集群1至计算集群n-1。
其中,在复制计算子图结构时,若计算子图结构与其他节点(对梯度计算不产生影响的节点)存在关系,包括数据关系和控制依赖关系,则复制得到的计算子图结构允许与所述其他节点保持一致的关系。如存在其他节点A,为计算子图结构中计算节点B的输入,且节点A与计算节点B存在关系,则复制得到的计算子图结构中计算节点B0、计算节点B1、计算节点B2等,都要以节点A为输入,且节点间关系也保持一致。
本实施方式对计算子图结构进行复制后,通过片内多个计算集群并行进行计算,能够充分利用芯片的计算和存储资源,加快深度学习计算的速度,提升系统的性能。
作为一种可选的实施方式,所述调整与所述可训练变量节点对应的变量子图结构,可以具体为:将所述变量子图结构作为所述初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构。
针对在初始计算图中确定的变量子结构,可以作为所述初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构,以使在分布式训练时使用片内共享的方式读取变量数据。
需要指出的是,可训练变量节点的数量可以有多个,针对每个可训练变量节点,均将其对应的变量子图结构作为初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构。
本实施方式将变量子图结构进行共享有利于节省存储空间并保持可训练变量数据的一致性。
作为一种可选的实施方式,所述调整与所述数据输入节点对应的输入子图结构,包括:
根据所述数据输入节点的节点类型,确定与所述数据输入节点对应的目标子图调整方式;根据所述目标子图调整方式,对所述输入子图结构中的取数据节点进行复制,得到与所述数据输入节点对应的重构子图结构;
其中,所述重构子图结构中多个取数据节点分别取得的数据共同构成与所述数据输入节点对应的缓存数据。
对与所述数据输入节点对应的输入子图结构进行重构,是其能够从数据缓存区域正确取出数据。具体的,可以复制多份与所述数据输入节点对应的取数据节点,而保留同一个数据输入节点,也即保存一个数据缓存区节点。多个取数据节点对应的一个缓存区节点,多个取数据节点取到的数据是不同的,能够共同构成与缓存区节点对应的所有缓存数据。
以数据输入节点的节点类型为迭代器(Iterator)为例,与所述数据输入节点对应的目标子图调整方式,可以参见图3所示,保持与数据输入节点IteratorV2对应的数据缓冲区不变,复制出N个数据消费者节点(也即取数据节点)IteratorGetNext。其中,N个IteratorGetNext节点分别取到的数据共同构成与IteratorV2节点对应的所有缓存数据。
以数据输入节点的节点类型为分阶区域(Iterator)为例,与所述数据输入节点对应的目标子图调整方式,可以参见图4所示,保持与数据输入节点PyFunc对应的数据缓冲区不变,复制出N个数据消费者节点(也即取数据节点)Unstage。其中,N个Unstage节点分别取到的数据共同构成与PyFunc节点对应的所有缓存数据。
作为一种可选的实施方式,所述增加计算结果汇总子图结构,包括:
根据与生成所述初始计算图的深度学习框架匹配的计算结果汇总标准子图结构,增加所述计算结果汇总子图结构。
为了与用于实现多卡分布式计算兼容,可以根据生成所述初始计算图的深度学习框架匹配的计算结果汇总标准子图结构,确定在对所述初始计算图进行重构时增加的计算结果汇总子图结果。其中,计算结果汇总标准子图结构指的是基于深度学习框架生成的适用于多卡分布式计算的计算图中与计算结果汇总对应的标准的子图结构,如与梯度汇总对应的标准子图结构。
示例性的,为了与分布式计算框架Horovod兼容,可以采用和Horovod兼容的方法处理反向计算和梯度更新的逻辑,以此可以实现与多卡分布式计算框架的兼容,进一步提升分布式计算的并行度。
多个计算子图结构的最终结果为N份梯度,需要进行Allreduce(梯度求平均)操作或Allgather(汇聚)操作。具体的,可以在对初始计算图进行重构时,在计算图中添加与Allreduce操作或Allgather操作相应的计算结果汇总子图结构。以梯度需要进行Allreduce操作为例,添加的计算结果汇总子图结构的计算逻辑为N个梯度相加再求平均,通过AddN(求和)节点和Div(求平均)节点实现;以梯度需要进行Allgather操作为例,添加的计算结果汇总子图结构的计算逻辑为在0维上进行拼接,通过concat(拼接)节点实现。
本实施方式实现了片内分布式计算与多卡分布式计算框架之间的兼容,进一步提升了分布式计算的并行度。而且,本实施方式还支持用户定义优化器的训练方式,为用户带来了极大的扩展性。
进一步的,作为一种可选的实施方式,所述根据所述初始计算图生成重构计算图,还可以包括:在所述初始计算图中确定数据汇总输出节点对应的输出子图结构;根据目标需求调整或复制与所述数据汇总输出节点对应的输出子图结构。
数据汇总输出(Summary)节点,属于除数据输入节点、计算节点组中计算节点、可训练变量节点之外的另一种节点类型,是对梯度计算不产生影响的节点之一。数据汇总输出节点,可用于对在训练或推理计算过程中用户的关心数据进行输出,例如可以是输出损失计算(Loss)的相关数据。
输出子图结构,指的是与数据输出相关的子图结构,在输出子图结构中除了包括数据汇总输出节点,还可能包括与所述数据汇总输出节点相关的辅助节点。
目标需求,指的是与数据汇总输出相关的用户需求,例如可以是在选定的一个损失计算节点上进行数据汇总输出,或者是在每一个损失计算节点上进行数据汇总输出。
在初始计算图中,输出子图结构可以是与计算子图结构中的损失计算节点相连的,用于对该损失计算节点进行数据汇总输出。在不对与所述数据汇总输出节点对应的输出子图结构进行处理时,输出子图结构依据可以只对重构计算图中原有的计算子图结构中的损失计算节点进行数据汇总输出。
根据目标需求,可以将输出子图结构由与重构计算图中原有的计算子图结构中的损失计算节点相连,修改为与重构计算图中复制得到的计算子图结构中的损失计算节点相连,以对重构计算图中复制得到的计算子图结构中的损失计算节点进行数据汇总输出。
根据目标需求,还可以对输出子图结构进行复制,将复制得到的输出子图结构与重构计算图中复制得到的计算子图结构中的损失计算节点相连,以实现对重构计算图中复制得到的一个或多个计算子图结构中的损失计算节点进行数据汇总输出。
本实施方式中数据汇总输出功能能够灵活调整,实现了汇总片内分布式计算的部分数据或者全部数据的效果。
S240、通过所述芯片内的多个计算集群处理所述重构计算图。
本实施例未尽详细解释之处请参见前述实施例,在此不再赘述。
在上述技术方案中,针对下发至芯片的初始计算图,对计算节点进行分析和分类,根据不同的输入方式、计算类型和优化器对计算图进行重构,实现自动地片内分布式并行计算。而且,本技术方案实现了对用户透明的片内分布式深度学习训练和推理,用户不需要修改已有的计算模型代码,提升了芯片计算资源的利用率,加快深度学习训练和推理的速度。
实施例三
图5为本发明实施例三提供的一种深度学习计算方法的流程图,本实施例在前述实施例的基础上提供了一种具体的实施方式。
如图5所示,本实施例提供的深度学习计算方法,应用于芯片中,包括:
S310、获取到初始计算图。
S320、判断初始计算图和芯片硬件结构是否符合片内分布式计算条件,若是,则执行S330,若否,则执行S360。
芯片在获取到初始计算图之后,若判断出芯片驱动处于片内分布式多计算集群模式,且初始计算图的深度学习计算类型为训练或推理,且计算节点部署属于异构计算,则确定所述初始计算图和所述芯片的硬件结构符合片内分布式计算条件,否则可以确定所述初始计算图和所述芯片的硬件结构不符合片内分布式计算条件。
S330、在初始计算图中确定数据输入节点、计算节点组和可训练变量节点。
S340、在初始计算图中,重构与所述数据输入节点对应的输入子图结构,将与所述计算节点组对应的计算子图结构进行复制,将与所述可训练变量节点对应的变量子图结构作为所述初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构,并增加计算结果汇总子图结构,得到所述重构计算图。
以如图6所示的基于Tensorflow和Horovod生成的初始计算图(此计算图仅为示意图,未示出所有节点和有向边)为例,数据输入节点IteratorV2的类型为迭代器,参照图3所示的方式对与数据输入节点IteratorV2对应的输入子图结构进行重构,得到的重构计算图可以如图7所示。
参照图6和图7,计算节点组示例性的由前向(forward)计算、损失(loss)计算和反向(backward)计算构成,并对与计算节点组对应的计算子图结构进行了多份复制。
如图7所示,将与变量节点(也即可训练变量)对应的变量子图结构(图6图7中并未示出变量子图完整结构)作为了初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构。其中,变量节点可以是VarHandlOp,也可以是VariableV2,对此不作具体限定,与变量节点对应的变量子图结构中还可以包括ReadVariableOp节点(图中未示出),用于执行读取变量值的操作。
在图7中还增加了计算结果汇总子图结构,为了与Horovod兼容,可以生成与Allreduce或Allgather对应的计算结果汇总子图结构,图7中以Allreduce操作为例示出,具体的,与Allreduce操作对应的计算逻辑可以由求和节点AddN与求平均节点Div构成。
S350、通过芯片内的多个计算集群处理所述重构计算图。
S360、直接处理所述初始计算图。
本实施例未尽详细解释之处请参见前述实施例,在此不再赘述。
上述技术方案实现了自动片内分布式的深度学习计算,在特定的芯片架构上采用片内分布式进行训练和推理计算,可以充分利用芯片的计算和存储资源,加快深度学习计算的速度,提升系统的性能。
实施例四
图8为本发明实施例四提供的一种深度学习计算装置的结构示意图,该装置可采用软件和/或硬件的方式实现,一般可集成在芯片中。如图8所示,该深度学习计算装置具体包括:初始计算图获取模块410、重构计算图生成模块420和重构计算图处理模块430。其中,
初始计算图获取模块410,用于获取初始计算图;
重构计算图生成模块420,用于根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
重构计算图处理模块430,用于通过所述芯片内的多个计算集群处理所述重构计算图。
本发明实施例提供的技术方案,在芯片获取到初始计算图时,对所述初始计算图进行重构,使重构计算图中不同的计算节点组的执行设备分别为芯片内不同的计算集群,进而通过芯片内的多个计算集群处理所述重构计算图,以此实现了芯片内的分布式计算,充分利用了芯片内各计算集群的计算性能和存储性能,提高了芯片对初始计算图的处理效率。
可选的,重构计算图生成模块420,包括节点类型划分单元和计算图重构单元,其中,
所述节点类型划分单元,用于在所述初始计算图中确定数据输入节点、计算节点组和可训练变量节点;
所述计算图重构单元,用于调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,将与所述计算节点组对应的计算子图结构进行复制,并增加计算结果汇总子图结构,得到所述重构计算图;
其中,所述初始计算图中的计算子图结构以及复制得到的计算子图结构所对应的执行设备分别为所述芯片内不同的计算集群。
可选的,所述计算图重构单元,具体用于将与所述可训练变量节点对应的变量子图结构作为所述初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构。
可选的,所述计算图重构单元,具体用于根据所述数据输入节点的节点类型,确定与所述数据输入节点对应的目标子图调整方式;根据所述目标子图调整方式,对所述输入子图结构中的取数据节点进行复制,得到与所述数据输入节点对应的重构子图结构;其中,所述重构子图结构中多个取数据节点分别取得的数据共同构成与所述数据输入节点对应的缓存数据。
可选的,所述计算图重构单元,具体用于根据与生成所述初始计算图的深度学习框架匹配的计算结果汇总标准子图结构,增加所述计算结果汇总子图结构。
可选的,所述计算图重构单元,具体用于在所述初始计算图中确定数据汇总输出节点对应的输出子图结构;根据目标需求调整或复制与所述数据汇总输出节点对应的输出子图结构。
可选的,重构计算图生成模块420,具体用于如果所述初始计算图和所述芯片的硬件结构符合片内分布式计算条件,则根据所述初始计算图生成重构计算图。
上述深度学习计算装置可执行本发明任意实施例所提供的深度学习计算方法,具备执行方法相应的功能模块和有益效果。
实施例五
图9是本发明实施例五提供的一种芯片的结构示意图,如图9所示,该芯片包括处理器510和存储器520;芯片中处理器510的数量可以是一个或多个,图9中以一个处理器510为例;芯片中的处理器510和存储器520可以通过总线或其他方式连接,图9中以通过总线连接为例。需要指出的是,本实施例提供的芯片为神经形态芯片,包括多个可执行并行操作的计算集群。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种深度学习计算方法对应的程序指令/模块(如图8所示的深度学习计算装置中包括的初始计算图获取模块410、重构计算图生成模块420和重构计算图处理模块430)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行芯片的各种功能应用以及数据处理,即实现上述的深度学习计算方法。
存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据芯片的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至芯片。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例六
本发明实施例六还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由芯片执行时用于执行一种深度学习计算方法,包括:
获取初始计算图;
根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
通过所述芯片内的多个计算集群处理所述重构计算图。
当然,本发明实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的深度学习计算方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台主板控制器执行本发明各个实施例的方法。
值得注意的是,上述深度学习计算装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种深度学习计算方法,其特征在于,应用于芯片中,包括:
获取初始计算图;
根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
通过所述芯片内的多个计算集群处理所述重构计算图;
所述根据所述初始计算图生成重构计算图,包括:
在所述初始计算图中确定数据输入节点、计算节点组和可训练变量节点;
调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,将与所述计算节点组对应的计算子图结构进行复制,并增加计算结果汇总子图结构,得到所述重构计算图;
其中,所述初始计算图中的计算子图结构以及复制得到的计算子图结构所对应的执行设备分别为所述芯片内不同的计算集群。
2.根据权利要求1所述的方法,其特征在于,所述调整与所述可训练变量节点对应的变量子图结构,包括:
将所述变量子图结构作为所述初始计算图中的计算子图结构以及复制得到的计算子图结构的共享结构。
3.根据权利要求1所述的方法,其特征在于,所述调整与所述数据输入节点对应的输入子图结构,包括:
根据所述数据输入节点的节点类型,确定与所述数据输入节点对应的目标子图调整方式;
根据所述目标子图调整方式,对所述输入子图结构中的取数据节点进行复制,得到与所述数据输入节点对应的重构子图结构;
其中,所述重构子图结构中多个取数据节点分别取得的数据共同构成与所述数据输入节点对应的缓存数据。
4.根据权利要求1所述的方法,其特征在于,所述增加计算结果汇总子图结构,包括:
根据与生成所述初始计算图的深度学习框架匹配的计算结果汇总标准子图结构,增加所述计算结果汇总子图结构。
5.根据权利要求1所述的方法,其特征在于,所述根据所述初始计算图生成重构计算图,还包括:
在所述初始计算图中确定数据汇总输出节点对应的输出子图结构;
根据目标需求调整或复制与所述数据汇总输出节点对应的输出子图结构。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述初始计算图生成重构计算图,包括:
如果所述初始计算图和所述芯片的硬件结构符合片内分布式计算条件,则根据所述初始计算图生成重构计算图。
7.一种深度学习计算装置,其特征在于,应用于芯片中,包括:
初始计算图获取模块,用于获取初始计算图;
重构计算图生成模块,用于根据所述初始计算图生成重构计算图;其中,所述重构计算图中包括多个计算节点组,不同的计算节点组对应的执行设备为所述芯片内不同的计算集群;
重构计算图处理模块,用于通过所述芯片内的多个计算集群处理所述重构计算图;
所述重构计算图生成模块包括:节点类型划分单元和计算图重构单元;
其中,所述节点类型划分单元,用于在所述初始计算图中确定数据输入节点、计算节点组和可训练变量节点;
所述计算图重构单元,用于调整与所述数据输入节点对应的输入子图结构、与所述可训练变量节点对应的变量子图结构,将与所述计算节点组对应的计算子图结构进行复制,并增加计算结果汇总子图结构,得到所述重构计算图;
其中,所述初始计算图中的计算子图结构以及复制得到的计算子图结构所对应的执行设备分别为所述芯片内不同的计算集群。
8.一种芯片,其特征在于,所述芯片包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
CN202110710157.3A 2021-06-25 2021-06-25 深度学习计算方法、装置、芯片及介质 Active CN113326137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110710157.3A CN113326137B (zh) 2021-06-25 2021-06-25 深度学习计算方法、装置、芯片及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110710157.3A CN113326137B (zh) 2021-06-25 2021-06-25 深度学习计算方法、装置、芯片及介质

Publications (2)

Publication Number Publication Date
CN113326137A CN113326137A (zh) 2021-08-31
CN113326137B true CN113326137B (zh) 2022-07-12

Family

ID=77424728

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110710157.3A Active CN113326137B (zh) 2021-06-25 2021-06-25 深度学习计算方法、装置、芯片及介质

Country Status (1)

Country Link
CN (1) CN113326137B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840322B (zh) * 2022-05-17 2022-12-09 北京百度网讯科技有限公司 任务调度方法及装置、电子设备和存储

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200249998A1 (en) * 2019-02-01 2020-08-06 Alibaba Group Holding Limited Scheduling computation graph heterogeneous computer system
CN110689115B (zh) * 2019-09-24 2023-03-31 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
US20220092439A1 (en) * 2020-09-23 2022-03-24 EMC IP Holding Company LLC Decoupled architecture for artificial intelligence model management
CN112734011B (zh) * 2021-01-04 2021-12-28 北京大学 一种基于增量综合的深度神经网络加速器协同设计方法
CN114418127B (zh) * 2022-03-23 2022-07-12 阿里云计算有限公司 机器学习计算优化方法和平台

Also Published As

Publication number Publication date
CN113326137A (zh) 2021-08-31

Similar Documents

Publication Publication Date Title
Ooi et al. SINGA: A distributed deep learning platform
US11500959B2 (en) Multiple output fusion for operations performed in a multi-dimensional array of processing units
Murray et al. {CIEL}: A universal execution engine for distributed {Data-Flow} computing
KR102361155B1 (ko) 특정 데이터 포트 연결의 식별에 기반한 그래프 구성요소의 자동화된 클러스터링을 통한 그래프 기반 프로그램 명세의 컴파일
Zhang et al. FastSV: A distributed-memory connected component algorithm with fast convergence
JP2634144B2 (ja) プログラムの並列化実行方法及び並列化実行コンパイラ
Breß et al. Efficient co-processor utilization in database query processing
US8209703B2 (en) Apparatus and method for dataflow execution in a distributed environment using directed acyclic graph and prioritization of sub-dataflow tasks
US11900113B2 (en) Data flow processing method and related device
US11694075B2 (en) Partitioning control dependency edge in computation graph
Habermaier et al. On the correctness of the SIMT execution model of GPUs
CN112559053B (zh) 可重构处理器数据同步处理方法及装置
US20230076473A1 (en) Memory processing unit architecture mapping techniques
US7770162B2 (en) Statement shifting to increase parallelism of loops
CN113326137B (zh) 深度学习计算方法、装置、芯片及介质
US9280382B1 (en) Parallel processing of multidimensional arrays
Kuhn Parallel Programming
WO2018076979A1 (zh) 一种指令间数据依赖的检测方法和装置
Murray A distributed execution engine supporting data-dependent control flow
Geng et al. The importance of efficient fine-grain synchronization for many-core systems
Kessler et al. Skeleton Programming for Portable Many‐Core Computing
Goyal et al. A High Performance Computing framework for data mining
Walker et al. Composing and executing parallel data-flow graphs with shell pipes
Nogueira Lobo de Carvalho et al. Performance analysis of distributed GPU-accelerated task-based workflows
Jammer Characterization and translation of OpenMP use cases to MPI using LLVM

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee after: Shanghai Suiyuan Technology Co.,Ltd.

Country or region after: China

Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.

Country or region before: China