CN114186687B - 一种面向神经网络模型计算的中间表示方法和装置 - Google Patents

一种面向神经网络模型计算的中间表示方法和装置 Download PDF

Info

Publication number
CN114186687B
CN114186687B CN202210144108.2A CN202210144108A CN114186687B CN 114186687 B CN114186687 B CN 114186687B CN 202210144108 A CN202210144108 A CN 202210144108A CN 114186687 B CN114186687 B CN 114186687B
Authority
CN
China
Prior art keywords
tensor
memory
physical
node
computation
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
CN202210144108.2A
Other languages
English (en)
Other versions
CN114186687A (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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202210144108.2A priority Critical patent/CN114186687B/zh
Publication of CN114186687A publication Critical patent/CN114186687A/zh
Priority to US17/714,454 priority patent/US11823053B2/en
Priority to PCT/CN2022/086809 priority patent/WO2022222839A1/zh
Application granted granted Critical
Publication of CN114186687B publication Critical patent/CN114186687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/098Distributed learning, e.g. federated learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种面向神经网络模型计算的中间表示方法和装置,包括如下步骤:S1:解析输入的模型文件以获取神经网络的拓扑结构信息;S2:构建逻辑计算图;S21:推导逻辑计算图中每个算子的物理布局信息;S22:推导逻辑计算图中每个算子的元属性;S23:推导逻辑计算图中每个算子的输入输出逻辑张量的描述信息;S3:构建物理计算图;S31:生成物理计算图;等步骤,本发明公开的基于元属性的用于神经网络模型计算的中间表示从算子层面原生地支持数据并行和模型并行以及流水并行。本发明公开的面向神经网络模型计算的中间表示方法和装置以计算表达式为基本单元,以张量作为整个计算表达式组成的计算图中流动的数据,以构图的方式实现神经网络模型的计算过程。

Description

一种面向神经网络模型计算的中间表示方法和装置
技术领域
本发明涉及深度学习领域,特别涉及一种面向神经网络模型计算的中间表示方法和装置。
背景技术
随着人工智能产业化应用的快速发展,实际应用场景对大模型的需求变得越来越紧迫。已有深度学习框架大多数为单个设备上的面向神经网络模型计算的表达和神经网络模型的训练提供了高效的接口。然而,在面向新型的大规模深度神经网络模型训练的分布式设备时,已有的深度学习操作系统可能不够灵活和有效,因为分布式设备需要比单设备更复杂的并行性。另外已经开发的分布式训练接口加强了已有深度学习框架的模型的并行性,但使得分布式深度学习的使用和实现复杂化。
发明内容
本发明的目的在于提供一种面向神经网络模型计算的中间表示方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本发明公开了一种面向神经网络模型计算的中间表示方法,包括如下步骤:
S1:解析输入的模型文件以获取神经网络的拓扑结构信息:解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图,其中所述的逻辑上的计算表达式简称为算子;
S2:构建逻辑计算图;
S21:推导逻辑计算图中每个算子的物理布局信息;
S22:推导逻辑计算图中每个算子的元属性;
S23:推导逻辑计算图中每个算子的输入输出逻辑张量的描述信息;
S3:构建物理计算图:根据逻辑计算图生成物理计算图;
S31:生成物理计算图的每个节点;
S32: 生成物理计算图的每个节点的输入输出张量边;
S4:推导物理计算图中每个节点输入输出张量边的信息;
S5:执行每个物理节点的构建过程;
S6:设计物理计算图中张量边的三级内存结构;
S61:在物理计算图被执行之前,提前一次性分配一整块第一级内存;
S62:各个子图执行引擎在运行时会根据各个子图所需内存大小对应的内存偏移再从所述第一级内存中申请所需的第二级内存,所述第二级内存为所述第一级内存的子内存;
S63:在每个子图内部的每个计算节点的输入输出张量边所需的内存从各自子图对应的第二级内存中申请所需内存,所述的每个节点的张量边所需的内存为第三级内存;
S7:物理计算图中张量边的内存优化;
S71:物理计算图中张量边内存共享;
S72:物理计算图中张量边的内存复用;
S8:优化物理计算图。
作为优选的,所述步骤S21中逻辑计算图是由逻辑上的计算表达式所组成的拓扑结构,保存着这个图中所有由计算表达式组成的节点和节点之间生产和消费的张量连边,所述物理布局信息表示逻辑计算图搭建过程中,当前逻辑上的算子将来部署到的对应机器和设备的信息。
作为优选的,所述步骤S22中逻辑计算图中每个算子的元属性是指一种逻辑上的每个算子输入输出张量跟物理上的每个算子输入输出张量的映射关系,所述的元属性是每个算子包括的合法的属性列表,描述了一个逻辑上的算子与各个设备上的多个物理上算子的输入输出张量的映射关系。
作为优选的,所述元属性包括以下三种类型属性:
切分属性:每个算子的切分属性表示物理上的张量是由逻辑张量按照指定维度切分后得到的, 切分属性具有表示切分维度的参数。按照切分维度对多个物理上的张量进行拼接可还原出逻辑张量。
广播属性:所述每个算子的广播属性表示物理上的张量是与逻辑上的张量完全相同的,也表示了每个物理上的算子需要整个逻辑上的张量数据。
局部求和属性:所述每个算子的局部求和属性表示物理上的张量与逻辑上的张量的形状一致,但是物理上的张量里的值是逻辑张量里对应位置的一部分,物理上的多个张量按照对应位置相加可还原出逻辑张量。
作为优选的,所述步骤S23具体过程为:利用每个算子分布信息的元属性推导当前逻辑算子输入输出的逻辑张量的形状、数据类型信息。
作为优选的,所述步骤S31具体过程为:遍历逻辑计算图的每个逻辑节点,根据每个逻辑节点的物理布局信息生成有拓扑顺序的物理计算节点。
作为优选的,所述步骤S32具体过程为:遍历逻辑计算图的每个逻辑张量边,根据前后逻辑节点的类型,生成逻辑节点对应的物理计算节点的连边、新增节点构图。
作为优选的,所述生成逻辑节点对应的物理计算节点的连边的具体过程如下:遍历当前连接的前后两个节点的物理布局信息,根据两个节点物理布局信息判断两个节点是否在同一设备上:当连接的两个物理节点在同一设备上时,内部的连接张量边采取一对一直连方式;当两个物理计算节点不在同一设备上时,插入传输节点使得一对一直连的目标节点可以获取到对应的张量,所述传输节点包括从设备端拷贝到主机端的节点、网络传输的节点、从主机端拷贝到设备端的节点。
作为优选的,所述步骤S4具体过程如下:
S41:生成每个物理节点输入张量边:所述生成每个物理节点输入张量边是指从内存中为每个物理节点分配其输入张量,并把输入张量绑定到每个物理节点的输入张量边上;
S42:生成每个物理节点输出张量边。所述生成每个物理节点输出张量边是指从内存中为每个物理节点分配其输出张量,并把输出张量绑定到每个物理节点的输出张量边上。
作为优选的,步骤S5的子步骤如下:
S51:构建每个物理节点:根据逻辑计算图中的算子新建一个物理节点;
S52:绑定每个物理节点的输入输出张量边:每个物理节点输入张量边消费的张量和输出张量边生产的张量内部都维护了一个或多个逻辑张量身份字段,用于标识一个张量,物理节点的构建过程中需要把张量里的身份字段跟逻辑节点内部的身份字段一一绑定;
S53:推导每个物理计算图中张量边的描述信息:推导每个物理计算图中张量边的描述信息并存储到对应的张量信息中。
作为优选的,所述步骤S71物理计算图中张量边内存共享是指物理计算图中物理节点的输出张量边直接在原来输入张量边的内存上进行原地计算,直接修改物理节点的输入张量的值,所述物理计算图中张量边内存共享的过程包括如下子步骤:
S711: 收集内存共享的物理节点:按照拓扑顺序遍历整个网络物理计算图中的所有节点,找到满足前后两个节点之间存在输入输出关系,并且在同一个设备的所有节点,则其前后两节点之间连接张量边的内存标记为 0; 如果不存在输入输出关系,则其前后两节点之间连接张量边的内存标记为 1,然后根据所标识的内存标记生成一个带标记的物理节点拓扑序列;
S712:分配共享内存,每一个带标记的物理节点拓扑序列上有多个节点,检查输入输出节点之间有没有共享内存操作。如果有,就做一个共享内存标记,下一个节点的输入复用当前节点的输出。
作为优选的,所述步骤S72物理计算图中张量边的内存复用是指对于生命周期不重叠的内存之间,后面使用的内存可以复用前面已经用完的内存,具体步骤如下:
S721:构建互斥内存的映射表,遍历所有内存,获取每个内存生命周期的起始点和终止点,并保留两个内存的生命周期有交叠的互斥点,构建一个内存互斥的哈希表;
S722:分配复用内存:所述复用内存是指满足内存复用条件的内存,内存复用条件是指两段内存的生命周期不交叠,也就是指这两段内存没有互斥关系。 遍历上述构建的内存互斥哈希表,对于没有互斥关系两个内存,只需要分配一块内存,所述分配的内存大小等于二者中较大的内存,较小的内存可以复用两者中较大的内存,并标记复用内存的标签;对于有互斥关系的两段内存,分配前一内存后,当分配后一内存时,在前一内存的偏移后继续扩充偏移为后一内存的大小。
作为优选的,所述步骤S8的子步骤如下:
S81:移除空的张量边:所述移除空的张量边是指构建完成物理计算图之后,提前从内存中分配的张量仍然未被消费,为了减少内存开销,移除空的张量边;
S82:推导整个网络执行单批次数据时生产张量的次数,所述的推导整个网络执行单批次数据生产张量的次数是表示整个网络执行一个批次的数据时需要生产张量的次数。
本发明还还公开了一种面向神经网络模型计算的中间表示生成装置,包括:解析单元、逻辑计算图生成单元、物理计算图生成单元、内存分配单元、内存优化单元、图优化单元;
解析单元:用于解析输入的模型文件以获取神经网络的拓扑结构信息;
逻辑计算图生成单元:用于推导所述解析单元编译的逻辑计算图中每个算子的物理布局信息、元属性和输入输出逻辑张量的描述信息,并生成图形式的逻辑计算图中间表示;
物理计算图生成单元:用于构建和推导物理计算图中每个节点输入输出张量边的信息以及执行每个物理节点的构建过程;输入所述逻辑计算图生成单元所得的用于网络模型计算的图形式的逻辑计算图中间表示,将逻辑计算图映射到具体的计算任务上,生成一种图形式表达的计算任务抽象的中间表示;
内存分配单元:用于根据所述的物理计算图中张量边的三级内存结构分配内存;
内存优化单元:利用内存共享和内存复用技术优化物理计算图中张量边所需要的内存;
图优化单元:通过感知资源的变化,推导整个网络执行单批次数据时生产张量的次数和移除空的张量边来优化物理计算图。
作为优选的,所述解析单元具体用于解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图。
作为优选的,所述逻辑计算图生成单元用于推导逻辑计算图中每个算子的物理布局信息以及包含切分、广播和局部求和的元属性、每个算子输入输出逻辑张量的描述信息;输入所述解析单元所得的网络模型的拓扑结构信息中的算子和算子输入输出张量分别作为节点和边,根据用户定义的不同模型和异构集群,基于算子元属性和物理布局抽象的面向分布式训练的神经网络模型计算的中间表示从算子层面原生地对模型进行切分和资源配置,以生成图形式的逻辑计算图中间表示。
作为优选的,所述内存分配单元采用三级内存结构:第一级内存为所述物理计算图生成单元构建和推导物理计算图之前一次性分配的内存;第二级内存为物理计算图子图执行引擎在运行时从所述第一级内存中分配的所需内存;第三级内存为从所述第二级内存中分配的物理计算图子图内部的每个计算节点的输入输出张量边所需的内存。
本发明还还公开了一种面向神经网络模型计算的中间表示生成装置,所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现所述的面向神经网络模型计算的中间表示方法。
本发明的有益效果:本发明提供了一种简洁易用的面向深度神经网络计算的中间表示方法和装置。针对各种并行模式,提出了一种基于元属性的抽象的新型的分布式训练的用于神经网络模型计算的中间表示。本发明公开的基于元属性的用于神经网络模型计算的中间表示从算子层面原生地支持数据并行和模型并行以及流水并行。本发明公开的面向神经网络模型计算的中间表示方法和装置以计算表达式为基本单元,以张量作为整个计算表达式组成的计算图中流动的数据,以构图的方式实现神经网络模型的计算过程。在大规模深度神经网络的分布式应用场景下,本发明对用户的使用门槛较低,并且能够使模型学习到大量分批次流入神经网络的数据的内在关联,从而获得对应场景中的“智能”感知与判断能力。本发明为深度学习相关的算法工程师提供了一套简洁易用的神经网络模型的编译装置,使之能方便的搭建深度学习模型,进行深度学习模型不同格式之间的转换和描述、迭代优化以及灵活部署。
附图说明
图1是面向神经网络模型计算的中间表示方法的主要步骤流程图;
图2是面向神经网络模型计算的中间表示方法的架构图;
图3是推导逻辑计算图中每个算子的物理布局信息的过程示意图;
图4是逻辑计算图中每个算子的元属性示意图;
图5是两个物理节点的直连方式示意图;
图6是设计物理计算图中张量边的三级内存结构的示意图;
图7是内存复用过程示意图;
图8是面向神经网络模型计算的中间表示生成装置的实施方法的流程图;
图9是本发明实施例装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明实施例提供了一种面向神经网络模型计算的中间表示方法和装置,提供了一种能够获取和解析输入的深度学习神经网络模型的拓扑结构的方法,并能够将面向神经网络计算的拓扑结构转换为基于张量之间的计算表达式所组成的中间表示的生成方法和装置。所述的面向神经网络模型计算的中间表示方法和装置输入用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图,并生成可以由计算图执行引擎直接读取并生成运行时执行图的中间表示。
如图1所示,本发明实施例提供一种面向神经网络模型计算的中间表示方法,包括如下步骤:
S1:解析输入的模型文件以获取神经网络的拓扑结构信息:解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图,其中所述的逻辑上的计算表达式简称为算子;
S2:构建逻辑计算图;
S21:推导逻辑计算图中每个算子的物理布局信息;
S22:推导逻辑计算图中每个算子的元属性;
S23:推导逻辑计算图中每个算子的输入输出逻辑张量的描述信息;
S3:构建物理计算图:根据逻辑计算图生成物理计算图;
S31:生成物理计算图的每个节点;
S32: 生成物理计算图的每个节点的输入输出张量边;
S4:推导物理计算图中每个节点输入输出张量边的信息;
S5:执行每个物理节点的构建过程;
S6:设计物理计算图中张量边的三级内存结构;
S61:在物理计算图被执行之前,提前一次性分配一整块第一级内存;
S62:各个子图执行引擎在运行时会根据各个子图所需内存大小对应的内存偏移再从所述第一级内存中申请所需的第二级内存,所述第二级内存为所述第一级内存的子内存;
S63:在每个子图内部的每个计算节点的输入输出张量边所需的内存从各自子图对应的第二级内存中申请所需内存,所述的每个节点的张量边所需的内存为第三级内存;
S7:物理计算图中张量边的内存优化;
S71:物理计算图中张量边内存共享;
S72:物理计算图中张量边的内存复用;
S8:优化物理计算图。
图2展示了所述一种面向神经网络模型计算的中间表示方法的架构图,基于逻辑计算图和物理计算图两个统一表示来支持任意模型、资源输入,根据输入的动态变化,触发深度学习框架端到端地自动更新深度学习模型的学习参数。所述的面向神经网络模型计算的中间表示方法解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图,并生成可以由计算图执行引擎直接读取并生成运行时执行图的中间表示,其中所述的逻辑上的计算表达式以下都简称为算子。
所述步骤S21中逻辑计算图是由逻辑上的计算表达式所组成的拓扑结构,保存着这个图中所有由计算表达式组成的节点和节点之间生产和消费的张量连边,所述物理布局信息表示逻辑计算图搭建过程中,当前逻辑上的算子将来部署到的对应机器和设备的信息。
如图3所示,推导逻辑计算图中每个算子的物理布局信息的过程,用户定义了一个由3个算子组成的网络,其中算子0和算子1的物理布局信息是设备0,算子2的物理布局信息是设备1。
所述步骤S22中逻辑计算图中每个算子的元属性是指一种逻辑上的每个算子输入输出张量跟物理上的每个算子输入输出张量的映射关系,所述的元属性是每个算子包括的合法的属性列表,描述了一个逻辑上的算子与各个设备上的多个物理上算子的输入输出张量的映射关系。
所述元属性包括以下三种类型属性:切分、广播、局部求和。
切分属性:所述每个算子的切分属性表示物理上的张量是由逻辑张量按照指定维度切分后得到的, 切分属性具有表示切分维度的参数。如果把多个物理上的张量按照切分的维度进行拼接,就能还原出逻辑张量。
广播属性:所述每个算子的广播属性表示物理上的张量是与逻辑上的张量完全相同的,也表示了每个物理上的算子需要整个逻辑上的张量数据。
局部求和属性:所述每个算子的局部求和属性表示物理上的张量与逻辑上的张量的形状一致,但是物理上的张量里的值是逻辑张量里对应位置的一部分,如果把物理上的多个张量按照对应位置相加,即可还原出逻辑上的张量。
当用户构建的逻辑上的计算图确定以后,深度学习框架生成分布式的物理上的执行图时,首先推导每个算子允许的合法的分布信息的属性列表,从所述属性列表中选择一个传输开销最小的属性作为本次训练的分布策略,用于指导深度学习框架编译器生成最高效的执行图。图4 展示了所述逻辑计算图中每个算子的元属性。
所述步骤S23推导逻辑计算图中每个算子输入输出逻辑张量的描述信息,具体为:利用每个算子分布信息的元属性推导当前逻辑算子输入输出的逻辑张量的形状、数据类型信息。
所述步骤S3中物理计算图描述整个运行时计算图的全貌,所述构建物理计算图的过程是根据逻辑计算图生成物理计算图的过程,所述步骤S3子步骤如下:
S31:生成物理计算图的每个节点,具体为:遍历逻辑计算图的每个逻辑节点,根据每个逻辑节点的物理布局信息生成有拓扑顺序的物理计算节点;
S32:生成物理计算图的每个节点的输入输出张量边,具体为:遍历逻辑计算图的每个逻辑张量边,根据前后逻辑节点的类型,生成逻辑节点对应的物理计算节点的连边、新增节点构图,根据前后逻辑节点的类型推导生成对应的物理节点的连边过程如下:
推导生成对应的物理节点的连接张量边采用一对一直接连接的方式。由于逻辑张量边的两端节点的切分、广播、局部求和的元属性对中间逻辑张量的看待方式完全一致。在常见的数据并行情况下,前向和后向算子都采取一对一直接连接的方式。遍历当前连接的前后两个节点的物理布局信息,根据两个节点物理布局信息判断两个节点是否在同一设备上:当连接的两个物理节点在同一设备上时,内部的连接张量边采取一对一直连方式;当两个物理计算节点不在同一设备上时,插入传输节点使得一对一直连的目标节点可以获取到对应的张量,所述传输节点包括从设备端拷贝到主机端的节点、网络传输的节点、从主机端拷贝到设备端的节点。
图5展示了两种一对一直接连接方式的情况。图5左边是两个物理节点在同一设备上时,内部的一对一直连方式。图5右边是当两个物理计算节点不在同一设备上时,插入传输节点:从设备端拷贝到主机端的节点、网络传输的节点、从主机端拷贝到设备端的节点,使得一对一直连的目标节点可以获取到对应的张量。
在物理计算图的构图完毕之后,根据物理计算图中物理节点的拓扑顺序遍历计算图,依次构建每个物理节点对应的各种信息,所述步骤S4子步骤如下:
S41:生成每个物理节点输入张量边:所述生成每个物理节点输入张量边是指从内存中为每个物理节点分配其输入张量,并把输入张量绑定到每个物理节点的输入张量边上;
S42:生成每个物理节点输出张量边。所述生成每个物理节点输出张量边是指从内存中为每个物理节点分配其输出张量,并把输出张量绑定到每个物理节点的输出张量边上。
步骤S5的子步骤如下:
S51:构建每个物理节点:根据逻辑计算图中的算子新建一个物理节点。
S52:绑定每个物理节点的输入输出张量边:每个物理节点输入张量边消费的张量和输出张量边生产的张量内部都维护了一个或多个逻辑张量身份字段,用于标识一个张量,物理节点的构建过程中需要把张量里的身份字段跟逻辑节点内部的身份字段一一绑定。
S53:推导每个物理计算图中张量边的描述信息:推导每个物理计算图中张量边的描述信息并存储到对应的张量信息中。
所述步骤S6中所述三级内存设计是指在物理计算图被执行之前,提前一次性分配一整块较大的内存,所述的一整块较大的内存为第一级内存;各个子图执行引擎在运行时会根据各个子图所需内存大小对应的内存偏移再从所述第一级内存中申请所需的一小块子内存,所述的一小块子内存为第二级内存;最终在每个子图内部的每个计算节点的输入输出张量边所需的内存从各自子图对应的第二级内存中申请所需内存,所述的每个节点的张量边所需的内存为第三级内存。所述的第一级内存的设计减少了主机内存的访问次数,所述的第二级内存设计增加了各个物理计算子图内存调度的灵活性,提高了整个系统的内存使用效率。图6是设计物理计算图中张量边的三级内存结构的示意图。
所述步骤S71物理计算图中张量边内存共享是指物理计算图中物理节点的输出张量边直接在原来输入张量边的内存上进行原地计算,直接修改物理节点的输入张量的值,所述物理计算图中张量边内存共享的过程包括如下子步骤:
S711: 收集内存共享的物理节点:按照拓扑顺序遍历整个网络物理计算图中的所有节点,找到满足前后两个节点之间存在输入输出关系,并且在同一个设备的所有节点,则其前后两节点之间连接张量边的内存标记为 0; 如果不存在输入输出关系,则其前后两节点之间连接张量边的内存标记为 1,然后根据所标识的内存标记生成一个带标记的物理节点拓扑序列;
S712:分配共享内存,每一个带标记的物理节点拓扑序列上有多个节点,检查输入输出节点之间有没有共享内存操作。如果有,就做一个共享内存标记,下一个节点的输入复用当前节点的输出,比如:0节点->1节点,0节点和1节点之间有内存共享操作,那么 1 节点的输入张量复用 0 节点的输出张量。则对于 0 节点输出和 1 节点的输入,只需要分配一份内存;
所述步骤S72物理计算图中张量边的内存复用是指对于生命周期不重叠的内存之间,后面使用的内存可以复用前面已经用完的内存,具体步骤如下:
S721:构建互斥内存的映射表,遍历所有内存,获取每个内存生命周期的起始点和终止点,并保留两个内存的生命周期有交叠的互斥点,构建一个内存互斥的哈希表;
S722:分配复用内存。所述复用内存是指满足内存复用条件的内存,内存复用条件是指两段内存的生命周期不交叠,也就是指这两段内存没有互斥关系。 遍历上述构建的内存互斥哈希表,对于没有互斥关系两个内存 a 和 b,只需要分配一块内存,所述分配的内存大小与a 和 b二者中较大的内存相等。较小的内存可以复用两者较大的内存,并标记复用内存的标签;对于有互斥关系的两段内存 a 和 b,如果分配内存a,当分配内存 b 时,在内存a的偏移后继续扩充偏移为内存b的大小。
如图7 展示了所述的内存复用过程。内存0、内存1、内存2的生命周期互相有交叠,所以内存0、内存1和内存2互相标记为互斥内存。内存3与内存0的生命周期不交叠,且内存3与内存0在同设备上,所以内存3与内存0满足内存复用条件。对于存在互斥关系的内存0、内存1、内存2分配方式是依此在内存0的基础上继续扩充内存1大小的偏移,在内存1的基础上继续扩充内存2大小的偏移;对于没有互斥关系的内存0和内存3的内存分配方式是内存3可以复用内存0的内存,如果内存3的大小小于内存0,则直接从内存0中分配内存3,如果内存3的大小大于内存0,则内存3首先复用内存0,内存3比内存0大于的那部分内存使用扩充的方式从主机申请。
所述步骤S8的子步骤如下:
S81:移除空的张量边:所述移除空的张量边是指构建完成物理计算图之后,提前从内存中分配的张量仍然未被消费,为了减少内存开销,移除空的张量边;
S82:推导整个网络执行单批次数据时生产张量的次数,所述的推导整个网络执行单批次数据生产张量的次数是表示整个网络执行一个批次的数据时需要生产张量的次数。所述的整个网络执行单批次数据生产张量的次数是一个2维数据,如(1,1)表示整个网络执行一个批次数据需要生产张量一次。当网络中插入一个广播节点,会将张量发送k次,则整个网络执行一个批次的数据时需要生产张量的次数就是(1,k)。所述的推导整个网络执行单批次数据时生产张量的次数的优化方法可以提前静态地为整个网络物理节点所需的张量分配内存,提高了整个网络物理计算图的内存调度效率。
本发明实施例还提供了一种面向神经网络模型计算的中间表示生成装置,所述装置作为深度学习框架的编译引擎,下面将以一种面向神经网络模型计算的中间表示生成装置的实施过程为例对本发明的技术方案做进一步的详细描述。图8展示了面向神经网络模型计算的中间表示生成装置的实施方法的流程图。
所述一种面向神经网络模型计算的中间表示生成装置的实施过程包括如下步骤:
一、解析单元:解析输入的模型文件以获取神经网络的拓扑结构信息。具体地,解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图,其中所述的逻辑上的计算表达式以下都简称为算子。
二、逻辑计算图生成单元:推导逻辑计算图中每个算子的物理布局信息以及包含切分、广播和局部求和的元属性、每个算子输入输出逻辑张量的描述信息。输入所述解析单元所得的网络模型的拓扑结构信息中的算子和算子输入输出张量分别作为节点和边,根据用户定义的不同模型和异构集群,基于算子元属性和物理布局抽象的面向分布式训练的神经网络模型计算的中间表示从算子层面原生地对模型进行切分和资源配置,以生成图形式的逻辑计算图中间表示。
逻辑计算图生成单元,执行三个步骤:
(1)推导逻辑计算图中每个算子的物理布局信息;
所述逻辑计算图是由逻辑上的计算表达式所组成的拓扑结构,保存着这个图中所有由计算表达式组成的节点和节点之间生产和消费的张量连边。构建逻辑计算图的过程首先推导逻辑计算图中每个算子的物理布局信息。所述物理布局信息表示逻辑计算图搭建过程中,当前逻辑上的算子将来部署到的对应机器和设备的信息。对于常见的数据并行,就是所有的算子都部署到所有的设备上。
(2)推导逻辑计算图中每个算子的元属性;
所述构建逻辑计算图过程的第二步是推导逻辑计算图中每个算子的元属性。所述逻辑计算图中每个算子的元属性是指一种逻辑上的每个算子输入输出张量跟物理上的每个算子输入输出张量的映射关系。所述的元属性是每个算子包括的合法的属性列表,描述了一个逻辑上的算子与各个设备上的多个物理上算子的输入输出张量的映射关系。所述元属性包括三种类型属性:切分、广播、局部求和;
切分属性:所述每个算子的切分属性表示物理上的张量是由逻辑张量按照指定维度切分后得到的, 切分属性具有表示切分维度的参数。如果把多个物理上的张量按照切分的维度进行拼接,就能还原出逻辑张量;
广播属性:所述每个算子的广播属性表示物理上的张量是与逻辑上的张量完全相同的,也表示了每个物理上的算子需要整个逻辑上的张量数据;
局部求和属性:所述每个算子的局部求和属性表示物理上的张量与逻辑上的张量的形状一致,但是物理上的张量里的值是逻辑张量里对应位置的一部分,如果把物理上的多个张量按照对应位置相加,即可还原出逻辑上的张量;
当用户构建的逻辑上的计算图确定以后,深度学习框架生成分布式的物理上的执行图时,首先推导每个算子允许的合法的分布信息的属性列表,从所述属性列表中选择一个传输开销最小的属性作为本次训练的分布策略,用于指导深度学习框架编译器生成最高效的执行图。
(3)推导逻辑计算图中每个算子输入输出逻辑张量的描述信息;
所述构建逻辑计算图过程的第三步是推导逻辑计算图中每个算子输入输出逻辑张量的描述信息。利用每个算子分布信息的元属性推导当前逻辑算子输入输出的逻辑张量的形状、数据类型信息。
三、物理计算图生成单元:用于构建物理计算图、推导物理计算图中每个节点输入输出张量边的信息以及执行每个物理节点的构建过程。输入所述逻辑计算图生成单元所得的用于网络模型计算的图形式的逻辑计算图中间表示,将逻辑计算图映射到具体的计算任务上,生成一种图形式表达的计算任务抽象的中间表示,包括三个过程:
(1)生成物理计算图;
所述物理计算图描述了整个运行时计算图的全貌。所述构建物理计算图的过程是根据逻辑计算图生成物理计算图的过程。包括如下子步骤:
(1.1) 生成物理计算图的每个节点。遍历逻辑计算图的每个逻辑节点,根据每个逻辑节点的物理布局信息生成有拓扑顺序的物理计算节点;
(1.2)生成物理计算图的每个节点的输入输出张量边。遍历逻辑计算图的每个逻辑张量边,根据前后逻辑节点的类型,生成逻辑节点对应的物理计算节点的连边、新增节点构图。根据前后逻辑节点的类型推导生成对应的物理节点的连边过程如下:
所述推导生成对应的物理节点的连接张量边采用一对一直接连接的方式。由于逻辑张量边的两端节点的切分、广播、局部求和的元属性对中间逻辑张量的看待方式完全一致。在常见的数据并行情况下,前向和后向算子都采取一对一直接连接的方式。遍历当前连接的前后两个节点的物理布局信息,根据两个节点物理布局信息判断两个节点是否在同一设备上:当连接的两个物理节点在同一设备上时,内部的连接张量边采取一对一直连方式;当两个物理计算节点不在同一设备上时,插入传输节点:从设备端拷贝到主机端的节点、网络传输的节点、从主机端拷贝到设备端的节点,使得一对一直连的目标节点可以获取到对应的张量。
(2)推导物理计算图中每个节点输入输出张量边的信息;
在物理计算图的构图完毕之后,根据物理计算图中物理节点的拓扑顺序遍历计算图,依次构建每个物理节点对应的各种信息。所述推导物理计算图中每个节点输入输出张量边信息包括如下子步骤:
(2.1)生成每个物理节点输入张量边。所述生成每个物理节点输入张量边是指从内存中为每个物理节点分配其输入张量,并把输入张量绑定到每个物理节点的输入张量边上;
(2.2)生成每个物理节点输出张量边。所述生成每个物理节点输出张量边是指从内存中为每个物理节点分配其输出张量,并把输出张量绑定到每个物理节点的输出张量边上。
(2.3)执行每个物理节点的构建过程;
(3)执行每个物理节点的构建过程包括如下子步骤:
(3.1)构建每个物理节点。所述执行每个物理节点的构建过程是根据逻辑计算图中的算子新建一个物理节点;
(3.2)绑定每个物理节点的输入输出张量边。每个物理节点输入张量边消费的张量和输出张量边生产的张量内部都维护了一个或多个逻辑张量身份字段,用于标识一个张量。物理节点的构建过程中需要把张量里的身份字段跟逻辑节点内部的身份字段一一绑定;
(3.3)推导每个物理计算图中张量边的描述信息。推导每个物理计算图中张量边的描述信息并存储到对应的张量信息中。
四、内存分配单元:用于根据所述的物理计算图中张量边的三级内存结构分配内存。
所述三级内存设计是指在物理计算图被执行之前,提前一次性分配一整块较大的内存,所述的一整块较大的内存为第一级内存;各个子图执行引擎在运行时会根据各个子图所需内存大小对应的内存偏移再从所述第一级内存中申请所需的一小块子内存,所述的一小块子内存为第二级内存;最终在每个子图内部的每个计算节点的输入输出张量边所需的内存从各自子图对应的第二级内存中申请所需内存,所述的每个节点的张量边所需的内存为第三级内存。
所述的第一级内存的设计减少了主机内存的访问次数,所述的第二级内存设计增加了各个物理计算子图内存调度的灵活性,提高了整个系统的内存使用效率。
五、内存优化单元:利用所述的内存共享和内存复用技术优化物理计算图中张量边所需要的内存。内存优化单元,执行两个步骤:
(1)物理计算图中张量边内存共享;
所述物理计算图中张量边内存共享是指物理计算图中物理节点的输出张量边直接在原来输入张量边的内存上进行原地计算,直接修改物理节点的输入张量的值。通过所述的物理计算图中张量边内存共享的优化过程,提高了内存的使用效率。所述物理计算图中张量边内存共享的过程包括如下子步骤:
(1.1)收集内存共享的物理节点。按照拓扑顺序遍历整个网络物理计算图中的所有节点,找到满足前后两个节点之间存在输入输出关系,并且在同一个设备的所有节点,则其前后两节点之间连接张量边的内存标记为 0;如果不存在输入输出关系,则其前后两节点之间连接张量边的内存标记为 1。 然后根据所标识的内存标记生成一个带标记的物理节点拓扑序列。
(1.2)分配共享内存。每一个带标记的物理节点拓扑序列上有多个节点,检查输入输出节点之间有没有共享内存操作。如果有,就做一个共享内存标记,下一个节点的输入复用当前节点的输出。比如:0节点->1节点,0节点和1节点之间有内存共享操作,那么 1 节点的输入张量复用 0 节点的输出张量。则对于 0 节点输出和 1 节点的输入,只需要分配一份内存。
(2)物理计算图中张量边的内存复用;
所述物理计算图中张量边的内存复用是指对于生命周期不重叠的内存之间,后面使用的内存可以复用前面已经用完的内存,减少主机内存的访问次数,提高系统内存的使用效率。所述内存复用过程包括如下步骤:
(2.1)构建互斥内存的映射表:所述构建互斥内存的映射表。遍历所有内存,获取每个内存生命周期的起始点和终止点,并保留两个内存的生命周期有交叠的互斥点。构建一个内存互斥的哈希表。
(2.2)分配复用内存:所述复用内存是指满足内存复用条件的内存,内存复用条件是指两段内存的生命周期不交叠,也就是指这两段内存没有互斥关系。 遍历上述构建的内存互斥哈希表,对于没有互斥关系两个内存 a 和 b,只需要分配一块内存,所述分配的内存大小与a 和 b二者中较大的内存相等。较小的内存可以复用两者较大的内存,并标记复用内存的标签;对于有互斥关系的两段内存 a 和 b,如果分配内存a,当分配内存 b 时,在内存a的偏移后继续扩充偏移为内存b的大小。
六、图优化单元:通过感知资源的变化,推导整个网络执行单批次数据时生产张量的次数和移除空的张量边来优化物理计算图。图优化单元,执行两个步骤:
(1)移除空的张量边;
所述移除空的张量边是指构建完成物理计算图之后,提前从内存中分配的张量仍然未被消费,为了减少内存开销,移除空的张量边。
(2)推导整个网络执行单批次数据时生产张量的次数;
所述的推导整个网络执行单批次数据生产张量的次数是表示整个网络执行一个批次的数据时需要生产张量的次数。所述的整个网络执行单批次数据生产张量的次数是一个2维数据,如(1,1)表示整个网络执行一个批次数据需要生产张量一次。当网络中插入一个广播节点,会将张量发送k次,则整个网络执行一个批次的数据时需要生产张量的次数就是(1,k)。所述的推导整个网络执行单批次数据时生产张量的次数的优化方法可以提前静态地为整个网络物理节点所需的张量分配内存,提高了整个网络物理计算图的内存调度效率。
经过上述步骤,完成了所述面向神经网络模型计算的中间表示生成装置的实施的全过程。下面对面向神经网络模型计算的中间表示生成装置进行评测。
所述评测选择了经典主流的深度学习模型 ResNet-50 v1.5,其中ResNet-50是计算机视觉领域最主流的深度学习模型,所述测试环境共有4台机器,每台机器配置了8张V100 GPU显卡。针对深度学习框架的神经网络模型,测试其分布式环境下的吞吐率。所述吞吐率表示了深度学习框架的处理速度,吞吐率越高,则训练一个深度学习模型所需的时间越短,深度学习框架的性能就越高。所述吞吐率具体指训练过程中深度学习框架每秒处理的样例个数。对于图片分类任务而言,表示每秒处理多少张图片。
测试结果如下:
表格1. 面向神经网络模型计算的中间表示生成装置测试。
Figure 403892DEST_PATH_IMAGE001
评测结果表明:在ResNet50 模型中,所述面向神经网络模型计算的中间表示生成装置的性能表现优于其他已有的主流深度学习框架。
参见图9,本发明实施例还提供的一种面向神经网络模型计算的中间表示生成装置,还包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的面向神经网络模型计算的中间表示生成方法。
本发明一种面向神经网络模型计算的中间表示生成装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图9所示,为本发明一种面向神经网络模型计算的中间表示生成装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图9所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的面向神经网络模型计算的中间表示生成方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种面向神经网络模型计算的中间表示方法,其特征在于:包括如下步骤:
S1:解析输入的模型文件以获取神经网络的拓扑结构信息:解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为逻辑计算图,所述逻辑计算图是由逻辑上的计算表达式所组成的计算图,其中所述的逻辑上的计算表达式简称为算子;
S2:构建逻辑计算图;
S21:推导逻辑计算图中每个算子的物理布局信息,所述物理布局信息表示逻辑计算图搭建过程中,当前逻辑上的算子将来部署到的对应机器和设备的信息;
S22:推导逻辑计算图中每个算子的元属性,所述逻辑计算图中每个算子的元属性是指一种逻辑上的每个算子输入输出张量跟物理上的每个算子输入输出张量的映射关系;
S23:推导逻辑计算图中每个算子的输入输出逻辑张量的描述信息,利用每个算子分布信息的元属性推导当前逻辑算子输入输出的逻辑张量的形状、数据类型信息;
S3:构建物理计算图:根据逻辑计算图生成物理计算图;
S31:生成物理计算图的每个节点;
S32:生成物理计算图的每个节点的输入输出张量边;
S4:推导物理计算图中每个节点输入输出张量边的信息;
S5:执行每个物理节点的构建过程;
S6:设计物理计算图中张量边的三级内存结构;
S61:在物理计算图被执行之前,提前一次性分配一整块第一级内存;
S62:各个子图执行引擎在运行时会根据各个子图所需内存大小对应的内存偏移再从所述第一级内存中申请所需的第二级内存,所述第二级内存为所述第一级内存的子内存;
S63:在每个子图内部的每个计算节点的输入输出张量边所需的内存从各自子图对应的第二级内存中申请所需内存,所述的每个节点的张量边所需的内存为第三级内存;
S7:物理计算图中张量边的内存优化;
S71:物理计算图中张量边内存共享;
S72:物理计算图中张量边的内存复用;
S8:优化物理计算图。
2.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S21中逻辑计算图是由逻辑上的计算表达式所组成的拓扑结构,保存着这个图中所有由计算表达式组成的节点和节点之间生产和消费的张量连边。
3.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S22中所述的元属性是每个算子包括的合法的属性列表,描述了一个逻辑上的算子与各个设备上的多个物理上算子的输入输出张量的映射关系。
4.如权利要求3所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述元属性包括以下三种类型属性:
切分属性:每个算子的切分属性表示物理上的张量是由逻辑张量按照指定维度切分后得到的,切分属性具有表示切分维度的参数,按照切分维度对多个物理上的张量进行拼接可还原出逻辑张量;
广播属性:所述每个算子的广播属性表示物理上的张量是与逻辑上的张量完全相同的,也表示了每个物理上的算子需要整个逻辑上的张量数据;
局部求和属性:所述每个算子的局部求和属性表示物理上的张量与逻辑上的张量的形状一致,但是物理上的张量里的值是逻辑张量里对应位置的一部分,物理上的多个张量按照对应位置相加可还原出逻辑张量。
5.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S31具体过程为:遍历逻辑计算图的每个逻辑节点,根据每个逻辑节点的物理布局信息生成有拓扑顺序的物理计算节点。
6.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S32具体过程为:遍历逻辑计算图的每个逻辑张量边,根据前后逻辑节点的类型,生成逻辑节点对应的物理计算节点的连边、新增节点构图。
7.如权利要求6所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述生成逻辑节点对应的物理计算节点的连边的具体过程如下:遍历当前连接的前后两个节点的物理布局信息,根据两个节点物理布局信息判断两个节点是否在同一设备上:当连接的两个物理节点在同一设备上时,内部的连接张量边采取一对一直连方式;当两个物理计算节点不在同一设备上时,插入传输节点使得一对一直连的目标节点可以获取到对应的张量,所述传输节点包括从设备端拷贝到主机端的节点、网络传输的节点、从主机端拷贝到设备端的节点。
8.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S4具体过程如下:
S41:生成每个物理节点输入张量边:所述生成每个物理节点输入张量边是指从内存中为每个物理节点分配其输入张量,并把输入张量绑定到每个物理节点的输入张量边上;
S42:生成每个物理节点输出张量边:所述生成每个物理节点输出张量边是指从内存中为每个物理节点分配其输出张量,并把输出张量绑定到每个物理节点的输出张量边上。
9.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S5的子步骤如下:
S51:构建每个物理节点:根据逻辑计算图中的算子新建一个物理节点;
S52:绑定每个物理节点的输入输出张量边:每个物理节点输入张量边消费的张量和输出张量边生产的张量内部都维护了一个或多个逻辑张量身份字段,用于标识一个张量,物理节点的构建过程中需要把张量里的身份字段跟逻辑节点内部的身份字段一一绑定;
S53:推导每个物理计算图中张量边的描述信息:推导每个物理计算图中张量边的描述信息并存储到对应的张量信息中。
10.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S71物理计算图中张量边内存共享是指物理计算图中物理节点的输出张量边直接在原来输入张量边的内存上进行原地计算,直接修改物理节点的输入张量的值,所述物理计算图中张量边内存共享的过程包括如下子步骤:
S711: 收集内存共享的物理节点:按照拓扑顺序遍历整个网络物理计算图中的所有节点,找到满足前后两个节点之间存在输入输出关系,并且在同一个设备的所有节点,则其前后两节点之间连接张量边的内存标记为 0; 如果不存在输入输出关系,则其前后两节点之间连接张量边的内存标记为 1,然后根据所标识的内存标记生成一个带标记的物理节点拓扑序列;
S712:分配共享内存,每一个带标记的物理节点拓扑序列上有多个节点,检查输入输出节点之间有没有共享内存操作,如果有,就做一个共享内存标记,下一个节点的输入复用当前节点的输出。
11.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S72物理计算图中张量边的内存复用是指对于生命周期不重叠的内存之间,后面使用的内存可以复用前面已经用完的内存,具体步骤如下:
S721:构建互斥内存的映射表,遍历所有内存,获取每个内存生命周期的起始点和终止点,并保留两个内存的生命周期有交叠的互斥点,构建一个内存互斥的哈希表;
S722:分配复用内存:所述复用内存是指满足内存复用条件的内存,内存复用条件是指两段内存的生命周期不交叠,也就是指这两段内存没有互斥关系,遍历上述构建的内存互斥哈希表,对于没有互斥关系两个内存,只需要分配一块内存,所述分配的内存大小等于二者中较大的内存,较小的内存可以复用两者中较大的内存,并标记复用内存的标签;对于有互斥关系的两段内存,分配前一内存后,当分配后一内存时,在前一内存的偏移后继续扩充偏移为后一内存的大小。
12.如权利要求1所述的一种面向神经网络模型计算的中间表示方法,其特征在于:所述步骤S8的子步骤如下:
S81:移除空的张量边:所述移除空的张量边是指构建完成物理计算图之后,提前从内存中分配的张量仍然未被消费,为了减少内存开销,移除空的张量边;
S82:推导整个网络执行单批次数据时生产张量的次数,所述的推导整个网络执行单批次数据生产张量的次数是表示整个网络执行一个批次的数据时需要生产张量的次数。
13.一种面向神经网络模型计算的中间表示生成装置,其特征在于,包括:解析单元、逻辑计算图生成单元、物理计算图生成单元、内存分配单元、内存优化单元、图优化单元;
解析单元:用于解析输入的模型文件以获取神经网络的拓扑结构信息;
逻辑计算图生成单元:用于推导所述解析单元编译的逻辑计算图中每个算子的物理布局信息、元属性和输入输出逻辑张量的描述信息,并生成图形式的逻辑计算图中间表示,所述物理布局信息表示逻辑计算图搭建过程中,当前逻辑上的算子将来部署到的对应机器和设备的信息,所述逻辑计算图中每个算子的元属性是指一种逻辑上的每个算子输入输出张量跟物理上的每个算子输入输出张量的映射关系;
物理计算图生成单元:用于构建和推导物理计算图中每个节点输入输出张量边的信息以及执行每个物理节点的构建过程;输入所述逻辑计算图生成单元所得的用于网络模型计算的图形式的逻辑计算图中间表示,将逻辑计算图映射到具体的计算任务上,生成一种图形式表达的计算任务抽象的中间表示;
内存分配单元:用于根据所述的物理计算图中张量边的三级内存结构分配内存,所述内存分配单元采用三级内存结构:第一级内存为所述物理计算图生成单元构建和推导物理计算图之前一次性分配的内存;第二级内存为物理计算图子图执行引擎在运行时从所述第一级内存中分配的所需内存;第三级内存为从所述第二级内存中分配的物理计算图子图内部的每个计算节点的输入输出张量边所需的内存;
内存优化单元:利用内存共享和内存复用技术优化物理计算图中张量边所需要的内存;
图优化单元:通过感知资源的变化,推导整个网络执行单批次数据时生产张量的次数和移除空的张量边来优化物理计算图。
14.如权利要求13所述的一种面向神经网络模型计算的中间表示生成装置,其特征在于:所述解析单元具体用于解析用户定义的包含输入和输出参数的函数体,将所述函数体编译为由逻辑上的计算表达式所组成的计算图。
15.如权利要求13所述的一种面向神经网络模型计算的中间表示生成装置,其特征在于:所述逻辑计算图生成单元用于推导逻辑计算图中每个算子的物理布局信息以及包含切分、广播和局部求和的元属性、每个算子输入输出逻辑张量的描述信息;输入所述解析单元所得的网络模型的拓扑结构信息中的算子和算子输入输出张量分别作为节点和边,根据用户定义的不同模型和异构集群,基于算子元属性和物理布局抽象的面向分布式训练的神经网络模型计算的中间表示从算子层面原生地对模型进行切分和资源配置,以生成图形式的逻辑计算图中间表示。
16.一种面向神经网络模型计算的中间表示生成装置,其特征在于:所述装置包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-12任一项所述的面向神经网络模型计算的中间表示方法。
CN202210144108.2A 2022-02-17 2022-02-17 一种面向神经网络模型计算的中间表示方法和装置 Active CN114186687B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210144108.2A CN114186687B (zh) 2022-02-17 2022-02-17 一种面向神经网络模型计算的中间表示方法和装置
US17/714,454 US11823053B2 (en) 2022-02-17 2022-04-06 Method of neural network model computation-oriented intermediate representation by constructing physical computation graph, inferring information of input and output tensor edges of each node therein, performing memory optimization on tensor edges, and optimizing physical computation graph
PCT/CN2022/086809 WO2022222839A1 (zh) 2022-02-17 2022-04-14 一种面向神经网络模型计算的中间表示方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210144108.2A CN114186687B (zh) 2022-02-17 2022-02-17 一种面向神经网络模型计算的中间表示方法和装置

Publications (2)

Publication Number Publication Date
CN114186687A CN114186687A (zh) 2022-03-15
CN114186687B true CN114186687B (zh) 2022-05-17

Family

ID=80546094

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210144108.2A Active CN114186687B (zh) 2022-02-17 2022-02-17 一种面向神经网络模型计算的中间表示方法和装置

Country Status (3)

Country Link
US (1) US11823053B2 (zh)
CN (1) CN114186687B (zh)
WO (1) WO2022222839A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114186687B (zh) * 2022-02-17 2022-05-17 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
US20230305721A1 (en) * 2022-03-25 2023-09-28 Electronics And Telecommunications Research Institute Method and apparatus for memory management in memory disaggregation environment
CN114461351B (zh) * 2022-04-13 2022-06-17 之江实验室 一种用于神经网络计算的动态图执行方法及装置
CN114548383A (zh) * 2022-04-27 2022-05-27 之江实验室 一种面向神经网络模型计算的图执行流水并行方法和装置
CN114598631B (zh) 2022-04-28 2022-08-09 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置
CN115018064A (zh) * 2022-06-27 2022-09-06 中国科学技术大学 一种计算节点的空间分配方法及装置
CN115033391B (zh) 2022-08-10 2022-11-11 之江实验室 一种用于神经网络计算的数据流动方法和装置
US20240095541A1 (en) * 2022-09-16 2024-03-21 Apple Inc. Compiling of tasks for streaming operations at neural processor
CN115269204B (zh) * 2022-09-27 2022-12-30 之江实验室 一种用于神经网络编译的内存优化方法及装置
CN115756474A (zh) * 2022-09-27 2023-03-07 之江实验室 一种用于计算图编译的中间表示方法及装置
CN115268877B (zh) * 2022-09-27 2022-12-13 之江实验室 一种用于图计算并行执行的中间表示方法及装置
CN115268936B (zh) * 2022-09-27 2022-12-27 之江实验室 一种用于计算图编译的优化方法及装置
US11782723B1 (en) 2022-09-27 2023-10-10 Zhejiang Lab Intermediate representation method and apparatus for parallel execution of graph computation
CN116126365B (zh) * 2023-04-18 2023-07-28 之江实验室 一种模型部署的方法、系统、存储介质及电子设备
CN116166275B (zh) * 2023-04-24 2023-07-18 之江实验室 一种深度学习任务构图方法、装置、介质
CN116227585B (zh) * 2023-05-10 2023-07-25 之江实验室 集群任务的并行执行方法、装置、计算机设备和存储介质
CN116402090B (zh) * 2023-06-09 2023-09-12 深圳比特微电子科技有限公司 神经网络计算图的处理方法、装置和设备
CN117009093B (zh) * 2023-10-07 2024-03-12 之江实验室 降低神经网络推理所需内存占用量的重计算方法和系统
CN117093509B (zh) * 2023-10-18 2024-01-26 上海为旌科技有限公司 一种基于贪婪算法的片上内存地址分配方法和系统
CN117453376B (zh) * 2023-12-20 2024-05-03 宁德时代新能源科技股份有限公司 高通量计算的控制方法、装置、设备及存储介质
CN117806835B (zh) * 2024-02-29 2024-06-04 浪潮电子信息产业股份有限公司 一种任务分配方法、装置及电子设备和存储介质
CN118034660B (zh) * 2024-04-12 2024-07-02 清华大学 针对大语言模型融合算子的图编译方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021141716A1 (en) * 2020-01-09 2021-07-15 Microsoft Technology Licensing, Llc Resource usage prediction for deep learning model
WO2021190761A1 (en) * 2020-03-27 2021-09-30 Huawei Technologies Co., Ltd. Parallel computing scheme generation for neural networks

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11501152B2 (en) * 2017-05-05 2022-11-15 Intel Corporation Efficient learning and using of topologies of neural networks in machine learning
US11645358B2 (en) * 2019-01-29 2023-05-09 Hewlett Packard Enterprise Development Lp Generation of executable files corresponding to neural network models
EP3938963A1 (en) 2019-03-13 2022-01-19 DeepMind Technologies Limited Scheduling computation graphs using neural networks
US20190391796A1 (en) * 2019-06-28 2019-12-26 Intel Corporation Control of scheduling dependencies by a neural network compiler
CN113313241A (zh) * 2020-02-27 2021-08-27 阿里巴巴集团控股有限公司 确定深度学习模型的张量信息的方法和计算装置
CN115456159A (zh) * 2020-03-27 2022-12-09 华为技术有限公司 一种数据处理方法和数据处理设备
CN111488211A (zh) * 2020-04-09 2020-08-04 北京嘀嘀无限科技发展有限公司 基于深度学习框架的任务处理方法、装置、设备及介质
EP3923199A1 (en) 2020-06-09 2021-12-15 Toyota Jidosha Kabushiki Kaisha Method and system for compressing a neural network
CN111723935A (zh) 2020-06-24 2020-09-29 湖北亿咖通科技有限公司 神经网络计算图的处理方法、计算机存储介质及电子设备
CN115699058A (zh) * 2020-07-14 2023-02-03 阿里巴巴集团控股有限公司 通过边缘搜索的特征交互
CN111930519B (zh) * 2020-09-22 2020-12-15 北京一流科技有限公司 用于分布式数据处理的并行决策系统及其方法
CN112084038B (zh) 2020-09-23 2021-10-15 安徽寒武纪信息科技有限公司 神经网络的内存分配方法及装置
CN112465108B (zh) 2020-11-11 2022-07-22 上海交通大学 一种面向存算一体平台的神经网络编译方法
US20220327637A1 (en) * 2021-04-12 2022-10-13 Microsoft Technology Licensing, Llc Interaction based social distance quantification
US20210390460A1 (en) 2021-06-12 2021-12-16 Intel Corporation Compute and memory based artificial intelligence model partitioning using intermediate representation
US20230089148A1 (en) * 2021-09-17 2023-03-23 Robert Bosch Gmbh Systems and methods for interactive image scene graph pattern search and analysis
CN113918351B (zh) * 2021-12-08 2022-03-11 之江实验室 深度学习框架与ai加速卡片内分布式训练适配方法和装置
CN114186687B (zh) * 2022-02-17 2022-05-17 之江实验室 一种面向神经网络模型计算的中间表示方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021141716A1 (en) * 2020-01-09 2021-07-15 Microsoft Technology Licensing, Llc Resource usage prediction for deep learning model
WO2021190761A1 (en) * 2020-03-27 2021-09-30 Huawei Technologies Co., Ltd. Parallel computing scheme generation for neural networks

Also Published As

Publication number Publication date
US11823053B2 (en) 2023-11-21
US20230259774A1 (en) 2023-08-17
WO2022222839A1 (zh) 2022-10-27
CN114186687A (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
CN114186687B (zh) 一种面向神经网络模型计算的中间表示方法和装置
CN112132287B (zh) 一种分布式的量子计算仿真方法和装置
CN115543639B (zh) 分布式执行深度学习任务的优化方法和分布式系统
CN114598631B (zh) 面向神经网络计算的分布式数据路由的建模方法和装置
CN112199086A (zh) 自动编程控制系统、方法、装置、电子设备及存储介质
CN112543918A (zh) 神经网络切分方法、预测方法及相关装置
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
CN115269204B (zh) 一种用于神经网络编译的内存优化方法及装置
CN115033391B (zh) 一种用于神经网络计算的数据流动方法和装置
CN114936099A (zh) 一种用于神经网络计算的图优化方法和装置
CN111967271A (zh) 分析结果的生成方法、装置、设备及可读存储介质
CN114237918A (zh) 一种面向神经网络模型计算的图执行方法和装置
CN109154908A (zh) 具有精确垃圾收集报告的动态大小的局部
Prosvirnova et al. Automated generation of minimal cut sets from AltaRica 3.0 models
CN115240048A (zh) 面向图像分类的深度学习的算子定位融合方法及装置
CN113885871A (zh) 支持机器学习训练的专用后端代码生成方法及装置
CN111626311A (zh) 一种异构图数据处理方法和装置
CN105511867A (zh) 一种优化模式自动生成方法及优化装置
CN110018831A (zh) 程序处理方法、装置及相关产品
CN115904394A (zh) 一种面向众核架构的神经网络增量编译方法和装置
Zou et al. Parallel in situ detection of connected components in adaptive mesh refinement data
Zhao et al. AutoGraph: Optimizing DNN computation graph for parallel GPU kernel execution
CN116933841A (zh) 算子融合方法及装置、电子设备、计算机可读介质
US11915135B2 (en) Graph optimization method and apparatus for neural network computation
Anand et al. Synthesizing and verifying multicore parallelism in categories of nested code graphs

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