CN114548383A - 一种面向神经网络模型计算的图执行流水并行方法和装置 - Google Patents

一种面向神经网络模型计算的图执行流水并行方法和装置 Download PDF

Info

Publication number
CN114548383A
CN114548383A CN202210447287.7A CN202210447287A CN114548383A CN 114548383 A CN114548383 A CN 114548383A CN 202210447287 A CN202210447287 A CN 202210447287A CN 114548383 A CN114548383 A CN 114548383A
Authority
CN
China
Prior art keywords
executive
execution
memory block
batch
data
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.)
Pending
Application number
CN202210447287.7A
Other languages
English (en)
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 CN202210447287.7A priority Critical patent/CN114548383A/zh
Priority to PCT/CN2022/092481 priority patent/WO2023082575A1/zh
Publication of CN114548383A publication Critical patent/CN114548383A/zh
Priority to US17/838,342 priority patent/US20230351145A1/en
Pending legal-status Critical Current

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/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/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • 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/5022Mechanisms to release resources
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提出了一种面向神经网络模型计算的图执行流水并行方法和装置,提供了一种深度学习训练系统中面向神经网络模型计算的图执行流水并行方法和装置。包括面向神经网络模型计算过程中的图执行流程和各功能模块协同工作的过程。所述面向神经网络模型计算的图执行流水并行方法是根据深度学习框架编译生成的物理计算图创建本机上的图执行体,通过设计为每个图执行体分配多个空闲内存块的方案,实现了整张计算图以流水并行的方式同时参与到不同批次数据的深度学习训练任务中,充分提高了内存的使用率和数据的并行速率。

Description

一种面向神经网络模型计算的图执行流水并行方法和装置
技术领域
本发明涉及深度学习技术领域,特别涉及一种面向神经网络模型计算的图执行流水并行方法和装置。
背景技术
随着人工智能产业化应用的快速发展,实际应用场景对大模型的需求变得越来越紧迫,机器学习工作负载的结构越来越趋于复杂的大模型,导致用于大模型计算的图的执行成本非常高。已有的用于神经网络模型计算的图执行方法多数基于同步的方法,导致整个图执行系统的资源利用率不高,限制了分布式系统的加速比和吞吐率。
为解决以上问题,本发明提供的用于神经网络模型计算的图执行流水并行方法隔离了各批次的训练数据与不同子图,每批次的训练数据按照1F1B前向后向的方式依次流过前向计算图和反向计算图。本发明可使得每个设备进程上都会有一个批次的数据正在被处理,使所有设备进程保持忙碌,而不会出现管道暂停,整个流水线是比较均衡的。同时能确保以固定周期执行每个子图上的参数更新,也有助于防止同时处理过多小批量并确保模型收敛。
发明内容
本发明的目的在于提供一种面向神经网络模型计算的图执行流水并行方法和装置,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本申请公开了一种面向神经网络模型计算的图执行流水并行方法,所述神经网络模型中设有若干个执行体,所述执行体共有2*N个,所述N为正整数,所述执行体设有若干个内存块;所述方法具体包括如下步骤:
S1、将训练数据分成若干个批次子数据;
S2、若干个批次子数据依次输入神经网络模型中,当第i批次的子数据输入后,第n执行体对第i批次的子数据执行自身核函数计算,并将执行结果写入第n执行体空闲的内存块中;接着输入第i+1批次的子数据;所述i,n均为正整数;
S3、当第i+1批次的子数据输入后,第n执行体对第i+1批次的子数据执行S2操作的同时,将第i批次所在的内存块的地址发送至第n+1执行体;第n+1执行体解析第i批次所在的内存块,得到第n执行体对第i批次的子数据的执行结果,并将第n执行体的执行结果作为第n+1执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+1执行体空闲的内存块中;接着输入第i+2批次的子数据;
S4、当第i+2批次的子数据输入后,第n执行体对第i+2批次的子数据执行S2操作,第n执行体和第n+1执行体对第i+1批次的子数据执行S3的操作;同时第n+1执行体将第i批次所在的内存块的地址发送至第n+2执行体,第n+2执行体解析第i批次所在的内存块,得到第n+1执行体对第i批次的子数据的执行结果,并将第n+1执行体的执行结果作为第n+2执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+2执行体空闲的内存块中;
S5、第n执行体回收发送给第n+1执行体的内存块;
S6、最后一个执行体执行自身核函数计算,并将执行结果写入最后一个执行体的内存块,执行完毕即刻自行回收内存块。
作为优选,执行体在执行自身核函数计算前,执行体会检查自身是否存在空闲的内存块;若存在,则对第i批次的子数据执行自身核函数计算;若不存在,则令第i批次等待存在空闲的内存块。
作为优选,对于第N*n+1批次的子数据,执行体在执行自身核函数计算前,会检查第N*(n-1)+1批次的子数据所在的执行体是否执行完毕,所述n为正整数。
作为优选,步骤S5具体包括如下操作:
S51、第n+1执行体通知第n执行体已消费完发送给第n+1执行体的内存块;
S52、第n执行体回收发送给第n+1执行体的内存块,并将其标记为空闲。
作为优选,还包括执行体的构造,所述执行体的构造具体包括如下子步骤:
S01、创建算子核函数的任务队列:将当前算子核函数的计算任务依次加入当前核函数任务队列;
S02、创建执行体的线程:所述执行体的线程负责从所述核函数任务队列中依次获取当前待处理任务,并提交给线程池;
S03、创建核函数的执行体:根据当前核函数任务和当前线程的上下文信息创建用于算子核函数计算的执行体;并使用执行体运行任务队列中的核函数任务;
S04、创建事件召回队列:将任务执行体处理完的任务添加到事件召回队列中;
S05、创建事件召回队列的线程:所述事件召回队列的线程负责将事件召回队列中已处理的任务依次取出并返回。
本发明还公开了一种面向神经网络模型计算的图执行装置,包括执行体构造模块和执行体流水并行工作模块,所述执行体构造模块用于执行体的构造,所述执行体流水并行工作模块用于执行上述一种面向神经网络模型计算的图执行流水并行方法。
本发明还公开了一种面向神经网络模型计算的图执行装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于上述一种面向神经网络模型计算的图执行流水并行方法。
本发明还公开了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的一种面向神经网络模型计算的图执行流水并行方法。
本发明的有益效果:
提供了一种面向神经网络模型计算的图执行流水并行方法和装置,根据深度学习框架编译生成的物理计算图创建本机上的图执行体,通过设计为每个图执行体分配多个空闲内存块的方案,实现了整张计算图以流水并行的方式同时参与到不同批次数据的深度学习训练任务中。本发明公开的基于多个空闲张量存储块的图执行体并行执行方法比已有方法更加容易实现大模型的分布式训练。在大规模深度神经网络的分布式应用场景下,本发明对用户的使用门槛较低,并且能够使模型学习到大量分批次流入神经网络的数据的内在关联,从而获得对应场景中的“智能”感知与判断能力。本发明为深度学习相关的算法工程师提供了一套简洁易用的神经网络模型的运行装置,使之能方便地训练深度学习模型。
本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1面向神经网络模型计算的图执行流水并行方法的架构图;
图2创建管理任务执行体线程模块的流程图;
图3任务执行体流水并行工作模块基本动作;
图4执行体流水并行的执行过程;
图5是本发明一种面向神经网络模型计算的图执行装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
如图1所示,所述一种面向神经网络模型计算的图执行流水并行方法的架构图。如图将训练数据分批次喂入神经网络模型,根据深度学习框架编译生成的物理计算图创建本机上的图执行体,为每个图执行体分配多个空闲内存块,使得整张计算图以流水并行的方式同时参与深度学习训练任务中,具体操作如下:
S1、将训练数据分成若干个批次子数据;
S2、若干个批次子数据依次输入神经网络模型中,当第i批次的子数据输入后,第n执行体对第i批次的子数据执行自身核函数计算,并将执行结果写入第n执行体空闲的内存块中;接着输入第i+1批次的子数据;所述i,n均为正整数;
S3、当第i+1批次的子数据输入后,第n执行体对第i+1批次的子数据执行S2操作的同时,将第i批次所在的内存块的地址发送至第n+1执行体;第n+1执行体解析第i批次所在的内存块,得到第n执行体对第i批次的子数据的执行结果,并将第n执行体的执行结果作为第n+1执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+1执行体空闲的内存块中;接着输入第i+2批次的子数据;
S4、当第i+2批次的子数据输入后,第n执行体对第i+2批次的子数据执行S2操作,第n执行体和第n+1执行体对第i+1批次的子数据执行S3的操作;同时第n+1执行体将第i批次所在的内存块的地址发送至第n+2执行体,第n+2执行体解析第i批次所在的内存块,得到第n+1执行体对第i批次的子数据的执行结果,并将第n+1执行体的执行结果作为第n+2执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+2执行体空闲的内存块中;
S5、第n执行体回收发送给第n+1执行体的内存块。
S6、最后一个执行体执行自身核函数计算,并将执行结果写入最后一个执行体的内存块,执行完毕即刻自行回收内存块。
在一种可行的实施例中,执行体在执行自身核函数计算前,执行体会检查自身是否存在空闲的内存块;若存在,则对第i批次的子数据执行自身核函数计算;若不存在,则令第i批次等待存在空闲的内存块。
在一种可行的实施例中,对于第N*n+1批次的子数据,执行体在执行自身核函数计算前,会检查第N*(n-1)+1批次的子数据所在的执行体是否执行完毕,所述n为正整数。
在一种可行的实施例中,步骤S5具体包括如下操作:
S51、第n+1执行体通知第n执行体已消费完发送给第n+1执行体的内存块;
S52、第n执行体回收发送给第n+1执行体的内存块,并将其标记为空闲。
在一种可行的实施例中,还包括执行体的构造,所述执行体的构造具体包括如下子步骤:
S01、创建算子核函数的任务队列:将当前算子核函数的计算任务依次加入当前核函数任务队列;
S02、创建执行体的线程:所述执行体的线程负责从所述核函数任务队列中依次获取当前待处理任务,并提交给线程池;
S03、创建核函数的执行体:根据当前核函数任务和当前线程的上下文信息创建用于算子核函数计算的执行体;并使用执行体运行任务队列中的核函数任务;
S04、创建事件召回队列:将任务执行体处理完的任务添加到事件召回队列中;
S05、创建事件召回队列的线程:所述事件召回队列的线程负责将事件召回队列中已处理的任务依次取出并返回。
本发明一种面向神经网络模型计算的图执行装置,包括执行体构造模块和执行体流水并行工作模块,
参阅图2,所述执行体构造模块包括如下基本动作:
创建算子核函数的任务队列:将当前算子核函数的计算任务依次加入当前核函数任务队列;
创建任务执行体的线程:创建任务执行体的线程。所述任务执行体的线程负责从所述任务队列中依次获取当前待处理任务;当服务器收到一个请求时,将请求提交给线程池,并继续等待其他请求。如果池中有一个可用的线程,它就会被唤醒,请求就会立即得到服务。如果池子里没有可用的线程,任务就会被排队,直到有一个空闲的线程。一旦一个线程完成了它的服务,它就会返回到池子里,等待更多的工作。当提交给线程池的任务可以异步执行时,线程池就能很好地工作。
创建核函数的任务执行体:根据当前核函数任务和当前线程的上下文信息创建用于算子核函数计算的任务执行体。并使用所述任务执行体运行任务队列中的核函数任务。
创建事件召回队列:当处理完上述任务队列中的全部任务执行体时,创建事件召回队列,依次将上述任务执行体处理完的任务添加到事件召回队列中;
创建事件召回队列的线程: 创建事件召回队列的线程。所述事件召回队列的线程负责将事件召回队列中已处理的任务依次取出并返回。
参阅图3,所述执行体流水并行工作模块包括如下基本动作:执行体输入数据、当前执行体向下游执行体发送消息、下游执行体准备待消费的张量数据、当前执行体向上游执行体发送消息、上游执行体回收已被消费完的张量数据、尾执行体自行回收计算数据。
执行体输入数据:在t时刻,对于第i批次数据,执行体输入第i批次数据,加载其内部的算子核函数计算任务,执行核函数计算,生成核函数计算任务的输出张量数据,将执行结果写入内存空闲块;
当前执行体向下游执行体发送消息:在t时刻,对于第i批次数据,将当前执行体生产所得的张量数据存储到空的存储单元中,再将存储单元的地址和当前执行体对应的下游执行体的身份标识号打包成消息,之后发送消息至目标执行体,所述目标执行体就是当前执行体对应的下游执行体;
下游执行体准备待消费的张量数据:在t时刻,对于第i批次数据,下游执行体收到消息,从消息中解析出上述当前执行体生产的张量数据,所述张量数据将作为下游执行体运行其算子核函数时的输入张量,并检查自己生产的内存块是否有空闲内存块可用,如发现有可用的空闲内存块,则下游执行体执行对应算子的核函数计算任务,读取空闲内存块,下游执行体将执行生成的输出张量结果写入内存块;
当前执行体向上游执行体发送消息:在t时刻,对于第i批次数据,执行体给上游的生产者执行体发消息通知上游的生产者执行体执行体消费完了上游的生产者执行体的内存块,上游执行体可以回收其输出张量数据的存储单元;
上游执行体回收已被消费完的数据:在t时刻,对于第i批次数据,上游执行体收到下游执行体发送的回收消息,就开始检查内存块是否都已被所有的消费者执行体消费完毕,如是,则将内存块回收,标记为空闲块;
尾执行体自行回收计算数据:在t时刻,对于第i批次数据,尾执行体执行对应算子的核函数计算任务,写入自己内存块空闲, 执行体A执行完毕即刻自行回收内存块。
本发明一种面向神经网络模型计算的图执行装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本发明一种面向神经网络模型计算的图执行装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种面向神经网络模型计算的图执行装置。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
实施例:
参阅图4,构建物理计算图由正向算子x->正向算子y->正向算子z及反向算子Z->反向算子Y->反向算子X组成,分别根据各个算子创建运行自身核函数的执行体,对应构成执行体a->执行体b->执行体c->执行体C->执行体B->执行体A的执行计算图;启动运行时的执行体,并行运行整张计算图。
T1时刻:
输入第1批次数据,执行体a输入数据:执行体a运行正向算子x的核函数,将运行结果的输出张量写入内存空闲块r11。
执行体b,执行体c,执行体C,执行体B,执行体A由于没有可读的输入张量数据,所以执行体b,c,C,B,A处在等待状态。
步骤3: 并行运行整张计算图。
T2时刻:
对于第2批次数据,执行体a输入数据:执行体a还会检查自己是否有空闲块可写,发现有,T2时刻执行体a也在执行第2批次输入数据,将执行结果写入内存空闲块r12。
同时对于第1批次数据,当前执行体a向下游执行体b发送消息、下游执行体b准备待消费的张量数据:执行体a给执行体b发消息通知执行体b读取执行体a产出的内存块r11,执行体b收到消息,并检查自己生产的内存块b是否有空闲内存块可用,发现有可用的空闲内存块r21,于是T2时刻执行体b执行前向算子b的核函数计算任务,读取内存块r11,执行体b将执行生成的输出张量结果写入内存块r21。
于是执行体a和执行体b就开始并行工作。执行体c,C,B,A由于没有数据可读,仍在等待。
T3时刻:
对于第3批次数据,执行体a输入数据:执行体a还会检查自己是否有空闲块可写,发现有,则执行体a也在执行第3批次输入数据,将执行结果写入内存空闲块r13。
同时对于第1批次数据,当前执行体b向下游执行体c发送消息、下游执行体c准备待消费的张量数据、当前执行体b向上游执行体a发送消息、上游执行体a回收已被消费完的张量数据:执行体b 生产出了内存块r21,于是给下游的消费者执行体c发消息通知执行体c读取执行体b产出的内存块r21,执行体c收到内存块r21,发现自己有内存块r31空闲,于是执行体c开始执行,读内存块r21, 写入内存块r31。同时执行体b给上游的生产者执行体a发消息通知执行体a执行体b用完了执行体a的内存块r11,执行体a收到了执行体b用完还回来的内存块r11,检查内存块r11所有的消费者都用完了,于是将内存块r11回收,标记为空闲块。
同时对于第2批次数据,当前执行体a向下游执行体b发送消息、下游执行体b准备待消费的张量数据:执行体a给执行体b发消息通知执行体b读取执行体a产出的内存块r12,执行体b收到消息,并检查自己生产的内存块b是否有空闲内存块可用,发现有可用的空闲内存块r22,于是执行体b执行前向算子b的核函数计算任务,读取内存块r12,执行体b将执行生成的输出张量结果写入内存块r22。
于是执行体a,执行体b,执行体c就开始并行工作。执行体C,B,A由于没有数据可读,仍在等待。
T4时刻:
对于第4批次数据,执行体a输入数据:执行体a还会同时检查自己是否有空闲块可写和执行体A执行完毕,发现没有,则等待不进入流水线。
同时对于第1批次数据,当前执行体c向下游执行体C发送消息、下游执行体C准备待消费的张量数据、当前执行体c向上游执行体b发送消息、上游执行体b回收已被消费完的张量数据:执行体c生产出了内存块r31,于是给下游的消费者执行体C发消息通知执行体C读取执行体c产出的内存块r31,执行体C收到内存块r31,发现自己有内存块r11空闲,于是执行体C开始执行,读内存块r31, 写入内存块r11。同时执行体c给上游的生产者执行体b发消息通知执行体b执行体c用完了执行体b的内存块r21,执行体b收到了执行体c用完还回来的内存块r21,检查内存块r21所有的消费者都用完了,于是将内存块r21回收,标记为空闲块。
同时对于第2批次数据,当前执行体b向下游执行体c发送消息、下游执行体c准备待消费的张量数据、当前执行体b向上游执行体a发送消息、上游执行体a回收已被消费完的张量数据:执行体b 生产出了内存块r22,于是给下游的消费者执行体c发消息通知执行体c读取执行体b产出的内存块r22,执行体c收到内存块r22,发现自己有内存块r32空闲,于是执行体c开始执行,读内存块r22, 写入内存块r32。同时执行体b给上游的生产者执行体a发消息通知执行体a执行体b用完了执行体a的内存块r12,执行体a收到了执行体b用完还回来的内存块r12,检查内存块r12所有的消费者都用完了,于是将内存块r12回收,标记为空闲块。
同时对于第3批次数据,当前执行体a向下游执行体b发送消息、下游执行体b准备待消费的张量数据:执行体a给执行体b发消息通知执行体b读取执行体a产出的内存块r13,执行体b收到消息,并检查自己生产的内存块b是否有空闲内存块可用,发现有可用的空闲内存块r23,于是执行体b执行前向算子b的核函数计算任务,读取内存块r13,执行体b将执行生成的输出张量结果写入内存块r23。
于是执行体a,执行体b,执行体c,执行体C就开始并行工作。执行体B,A由于没有数据可读,仍在等待。
T5时刻:
对于第4批次数据,执行体a输入数据:执行体a还会同时检查自己是否有空闲块可写和执行体A执行完毕,发现没有,则等待不进入流水线。
同时对于第1批次数据,当前执行体c向下游执行体C发送消息、下游执行体C准备待消费的张量数据、当前执行体c向上游执行体b发送消息、上游执行体b回收已被消费完的张量数据:执行体c生产出了内存块r11,于是给下游的消费者执行体B发消息通知执行体B读取执行体C产出的内存块r11,执行体B收到内存块r11,发现自己有内存块r21空闲,于是执行体B开始执行,读内存块r11, 写入内存块r21。同时执行体C给上游的生产者执行体c发消息通知执行体c执行体C用完了执行体c的内存块r31,执行体c收到了执行体C用完还回来的内存块r31,检查内存块r31所有的消费者都用完了,于是将内存块r31回收,标记为空闲块。
同时对于第2批次数据,当前执行体c向下游执行体C发送消息、下游执行体C准备待消费的张量数据、当前执行体c向上游执行体b发送消息、上游执行体b回收已被消费完的张量数据:执行体c生产出了内存块r32,于是给下游的消费者执行体C发消息通知执行体C读取执行体c产出的内存块r32,执行体C收到内存块r32,发现自己有内存块r12空闲,于是执行体C开始执行,读内存块r32, 写入内存块r12。同时执行体c给上游的生产者执行体b发消息通知执行体b执行体c用完了执行体b的内存块r22,执行体b收到了执行体c用完还回来的内存块r22,检查内存块r22所有的消费者都用完了,于是将内存块r22回收,标记为空闲块。
同时对于第3批次数据,当前执行体b向下游执行体c发送消息、下游执行体c准备待消费的张量数据、当前执行体b向上游执行体a发送消息、上游执行体a回收已被消费完的张量数据:执行体b 生产出了内存块r23,于是给下游的消费者执行体c发消息通知执行体c读取执行体b产出的内存块r23,执行体c收到内存块r23,发现自己有内存块r33空闲,于是执行体c开始执行,读内存块r23, 写入内存块r33。同时执行体b给上游的生产者执行体a发消息通知执行体a执行体b用完了执行体a的内存块r13,执行体a收到了执行体b用完还回来的内存块r13,检查内存块r13所有的消费者都用完了,于是将内存块r13回收,标记为空闲块。
于是执行体a,执行体b,执行体c,执行体C, 执行体B就开始并行工作。执行体A由于没有数据可读,仍在等待。
T6时刻:
对于第4批次数据,执行体a输入数据:执行体a还会同时检查自己是否有空闲块可写和执行体A执行完毕,发现没有,则等待不进入流水线。
同时对于第1批次数据,当前执行体B向下游执行体A发送消息、下游执行体A准备待消费的张量数据、尾执行体A自行回收计算数据当前执行体B向上游执行体C发送消息、上游执行体C回收已被消费完的张量数据:执行体B生产出了内存块r21,于是给下游的消费者执行体A发消息通知执行体A读取执行体B产出的内存块r21,执行体A收到内存块r21,发现自己有内存块r31空闲,于是执行体A开始执行,读内存块r21, 写入内存块r31, 执行体A执行完毕即刻自行回收内存块r31。同时执行体B给上游的生产者执行体C发消息通知执行体C执行体B用完了执行体C的内存块r11,执行体C收到了执行体B用完还回来的内存块r11,检查内存块r11所有的消费者都用完了,于是将内存块r11回收,标记为空闲块。
同时对于第2批次数据,当前执行体C向下游执行体B发送消息、下游执行体B准备待消费的张量数据、当前执行体C向上游执行体c发送消息、上游执行体c回收已被消费完的张量数据:执行体C生产出了内存块r12,于是给下游的消费者执行体B发消息通知执行体B读取执行体C产出的内存块r12,执行体B收到内存块r12,发现自己有内存块r22空闲,于是执行体B开始执行,读内存块r12, 写入内存块r22。同时执行体C给上游的生产者执行体c发消息通知执行体c执行体C用完了执行体c的内存块r32,执行体c收到了执行体C用完还回来的内存块r32,检查内存块r32所有的消费者都用完了,于是将内存块r32回收,标记为空闲块。
同时对于第3批次数据,当前执行体c向下游执行体C发送消息、下游执行体C准备待消费的张量数据、当前执行体c向上游执行体b发送消息、上游执行体b回收已被消费完的张量数据:执行体c生产出了内存块r33,于是给下游的消费者执行体C发消息通知执行体C读取执行体c产出的内存块r33,执行体C收到内存块r33,发现自己有内存块r13空闲,于是执行体C开始执行,读内存块r33, 写入内存块r13。同时执行体c给上游的生产者执行体b发消息通知执行体b执行体c用完了执行体b的内存块r23,执行体b收到了执行体c用完还回来的内存块r23,检查内存块r23所有的消费者都用完了,于是将内存块r23回收,标记为空闲块。
于是至此执行体a,执行体b,执行体c,执行体C,执行体B,执行体A全部开始并行工作。
T7时刻:
对于第4批次数据,执行体a输入数据:执行体a还会同时检查自己是否有空闲块可写和执行体A执行完毕,发现有,则执行体a也在执行第4批次输入数据,将执行结果写入内存空闲块r11。
同时对于第1批次数据,全部执行体执行完毕。
同时对于第2批次数据,当前执行体B向下游执行体A发送消息、下游执行体A准备待消费的张量数据、当前执行体B向上游执行体C发送消息、上游执行体C回收已被消费完的张量数据:执行体B生产出了内存块r22,于是给下游的消费者执行体A发消息通知执行体A读取执行体B产出的内存块r22,执行体A收到内存块r22,发现自己有内存块r32空闲,于是执行体A开始执行,读内存块r22, 写入内存块r32, 执行体A执行完毕即刻自行回收内存块r32。同时执行体B给上游的生产者执行体C发消息通知执行体C执行体B用完了执行体C的内存块r12,执行体C收到了执行体B用完还回来的内存块r12,检查内存块r11所有的消费者都用完了,于是将内存块r12回收,标记为空闲块。
同时对于第3批次数据,当前执行体C向下游执行体B发送消息、下游执行体B准备待消费的张量数据、当前执行体C向上游执行体c发送消息、上游执行体c回收已被消费完的张量数据:当前执行体c向下游执行体C发送消息、下游执行体C准备待消费的张量数据、当前执行体c向上游执行体b发送消息、上游执行体b回收已被消费完的张量数据:执行体c生产出了内存块r13,于是给下游的消费者执行体B发消息通知执行体B读取执行体C产出的内存块r13,执行体B收到内存块r13,发现自己有内存块r23空闲,于是执行体B开始执行,读内存块r13, 写入内存块r23。同时执行体C给上游的生产者执行体c发消息通知执行体c执行体C用完了执行体c的内存块r33,执行体c收到了执行体C用完还回来的内存块r33,检查内存块r33所有的消费者都用完了,于是将内存块r32回收,标记为空闲块。于是执行体a,执行体b,执行体c,执行体C就开始并行工作。执行体B,A由于没有数据可读,仍在等待。
T8时刻:
执行体a,b,c,C,B,A都在工作,此时一个批次数据执行体全部执行完毕并完成输入下一组批次数据。通过多个空闲内存块的设计,执行体就实现了流水并行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种面向神经网络模型计算的图执行流水并行方法,其特征在于,所述神经网络模型中设有若干个执行体,所述执行体共有2*N个,所述N为正整数,所述执行体设有若干个内存块;所述方法具体包括如下步骤:
S1、将训练数据分成若干个批次子数据;
S2、若干个批次子数据依次输入神经网络模型中,当第i批次的子数据输入后,第n执行体对第i批次的子数据执行自身核函数计算,并将执行结果写入第n执行体空闲的内存块中;接着输入第i+1批次的子数据;所述i,n均为正整数;
S3、当第i+1批次的子数据输入后,第n执行体对第i+1批次的子数据执行S2操作的同时,将第i批次所在的内存块的地址发送至第n+1执行体;第n+1执行体解析第i批次所在的内存块,得到第n执行体对第i批次的子数据的执行结果,并将第n执行体的执行结果作为第n+1执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+1执行体空闲的内存块中;接着输入第i+2批次的子数据;
S4、当第i+2批次的子数据输入后,第n执行体对第i+2批次的子数据执行S2操作,第n执行体和第n+1执行体对第i+1批次的子数据执行S3的操作;同时第n+1执行体将第i批次所在的内存块的地址发送至第n+2执行体,第n+2执行体解析第i批次所在的内存块,得到第n+1执行体对第i批次的子数据的执行结果,并将第n+1执行体的执行结果作为第n+2执行体的输入数据,执行自身核函数计算,并将执行结果写入第n+2执行体空闲的内存块中;
S5、第n执行体回收发送给第n+1执行体的内存块;
S6、最后一个执行体执行自身核函数计算,并将执行结果写入最后一个执行体的内存块,执行完毕即刻自行回收内存块。
2.如权利要求1所述的一种面向神经网络模型计算的图执行流水并行方法,其特征在于:执行体在执行自身核函数计算前,执行体会检查自身是否存在空闲的内存块;若存在,则对第i批次的子数据执行自身核函数计算;若不存在,则令第i批次等待存在空闲的内存块。
3.如权利要求2所述的一种面向神经网络模型计算的图执行流水并行方法,其特征在于,对于第N*n+1批次的子数据,执行体在执行自身核函数计算前,会检查第N*(n-1)+1批次的子数据所在的执行体是否执行完毕,所述n为正整数。
4.如权利要求1所述的一种面向神经网络模型计算的图执行流水并行方法,其特征在于:步骤S5具体包括如下操作:
S51、第n+1执行体通知第n执行体已消费完发送给第n+1执行体的内存块;
S52、第n执行体回收发送给第n+1执行体的内存块,并将其标记为空闲。
5.如权利要求1所述的一种面向神经网络模型计算的图执行流水并行方法,其特征在于:还包括执行体的构造,所述执行体的构造具体包括如下子步骤:
S01、创建算子核函数的任务队列:将当前算子核函数的计算任务依次加入当前核函数任务队列;
S02、创建执行体的线程:所述执行体的线程负责从所述核函数任务队列中依次获取当前待处理任务,并提交给线程池;
S03、创建核函数的执行体:根据当前核函数任务和当前线程的上下文信息创建用于算子核函数计算的执行体;并使用执行体运行任务队列中的核函数任务;
S04、创建事件召回队列:将任务执行体处理完的任务添加到事件召回队列中;
S05、创建事件召回队列的线程:所述事件召回队列的线程负责将事件召回队列中已处理的任务依次取出并返回。
6.一种面向神经网络模型计算的图执行装置,其特征在于:包括执行体构造模块和执行体流水并行工作模块,所述执行体构造模块用于执行体的构造,所述执行体流水并行工作模块用于执行如权利要求1-4任一项所述的一种面向神经网络模型计算的图执行流水并行方法。
7.一种面向神经网络模型计算的图执行装置,其特征在于:包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-5任一项所述的一种面向神经网络模型计算的图执行流水并行方法。
8.一种计算机可读存储介质,其特征在于:其上存储有程序,该程序被处理器执行时,实现权利要求1-5任一项所述的一种面向神经网络模型计算的图执行流水并行方法。
CN202210447287.7A 2022-04-27 2022-04-27 一种面向神经网络模型计算的图执行流水并行方法和装置 Pending CN114548383A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210447287.7A CN114548383A (zh) 2022-04-27 2022-04-27 一种面向神经网络模型计算的图执行流水并行方法和装置
PCT/CN2022/092481 WO2023082575A1 (zh) 2022-04-27 2022-05-12 一种面向神经网络模型计算的图执行流水并行方法和装置
US17/838,342 US20230351145A1 (en) 2022-04-27 2022-06-13 Pipelining and parallelizing graph execution method for neural network model computation and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210447287.7A CN114548383A (zh) 2022-04-27 2022-04-27 一种面向神经网络模型计算的图执行流水并行方法和装置

Publications (1)

Publication Number Publication Date
CN114548383A true CN114548383A (zh) 2022-05-27

Family

ID=81667147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210447287.7A Pending CN114548383A (zh) 2022-04-27 2022-04-27 一种面向神经网络模型计算的图执行流水并行方法和装置

Country Status (3)

Country Link
US (1) US20230351145A1 (zh)
CN (1) CN114548383A (zh)
WO (1) WO2023082575A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115408157A (zh) * 2022-08-31 2022-11-29 北京中科睿信科技有限公司 一种基于线程池的模型并行化数据仿真方法
WO2023082575A1 (zh) * 2022-04-27 2023-05-19 之江实验室 一种面向神经网络模型计算的图执行流水并行方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117032954B (zh) * 2023-07-17 2024-04-26 北京泛睿科技合伙企业(有限合伙) 针对终端训练模型的内存优化方法、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112154462A (zh) * 2018-05-23 2020-12-29 微软技术许可有限责任公司 高性能流水线并行深度神经网络训练
CN112884086A (zh) * 2021-04-06 2021-06-01 北京百度网讯科技有限公司 模型训练方法、装置、设备、存储介质以及程序产品
CN114139702A (zh) * 2021-11-25 2022-03-04 广东浪潮智慧计算技术有限公司 一种深度神经网络训练方法、系统、装置、设备及介质
CN114237918A (zh) * 2022-02-28 2022-03-25 之江实验室 一种面向神经网络模型计算的图执行方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114186687B (zh) * 2022-02-17 2022-05-17 之江实验室 一种面向神经网络模型计算的中间表示方法和装置
CN114548383A (zh) * 2022-04-27 2022-05-27 之江实验室 一种面向神经网络模型计算的图执行流水并行方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112154462A (zh) * 2018-05-23 2020-12-29 微软技术许可有限责任公司 高性能流水线并行深度神经网络训练
CN112884086A (zh) * 2021-04-06 2021-06-01 北京百度网讯科技有限公司 模型训练方法、装置、设备、存储介质以及程序产品
CN114139702A (zh) * 2021-11-25 2022-03-04 广东浪潮智慧计算技术有限公司 一种深度神经网络训练方法、系统、装置、设备及介质
CN114237918A (zh) * 2022-02-28 2022-03-25 之江实验室 一种面向神经网络模型计算的图执行方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
万知雨: "深度学习分布式训练并行策略的研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023082575A1 (zh) * 2022-04-27 2023-05-19 之江实验室 一种面向神经网络模型计算的图执行流水并行方法和装置
CN115408157A (zh) * 2022-08-31 2022-11-29 北京中科睿信科技有限公司 一种基于线程池的模型并行化数据仿真方法

Also Published As

Publication number Publication date
US20230351145A1 (en) 2023-11-02
WO2023082575A1 (zh) 2023-05-19

Similar Documents

Publication Publication Date Title
CN114548383A (zh) 一种面向神经网络模型计算的图执行流水并行方法和装置
CN114237918B (zh) 一种面向神经网络模型计算的图执行方法和装置
US20230236888A1 (en) Memory allocation method, related device, and computer-readable storage medium
WO2021008259A1 (zh) 用于异构架构的数据处理系统及其方法
CN108628597B (zh) 一种机器视觉系统开发方法及装置
CN105164639A (zh) 控制由计算系统执行的任务
US20140324935A1 (en) Matrix computation framework
WO2021008258A1 (zh) 协处理器的数据处理路径中的数据流动加速构件及其方法
CN104714785A (zh) 任务调度装置、方法及并行处理数据的设备
WO2021008260A1 (zh) 数据执行体及其数据处理方法
CN112416585A (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN111190741A (zh) 基于深度学习节点计算的调度方法、设备及存储介质
CN114237869B (zh) 基于强化学习的Ray双层调度方法、装置和电子设备
CN109766196A (zh) 一种任务调度方法、装置及设备
CN108509220B (zh) Revit工程计算量并行处理方法、装置、终端及介质
CN112035229A (zh) 一种计算图处理方法、装置及存储介质
CN111831333B (zh) 用于智能处理器的指令分解方法、装置及电子设备
CN111831582A (zh) 用于智能处理器的内存管理装置、方法及电子设备
CN111290868A (zh) 任务处理方法、装置和系统以及流程引擎
CN115269205B (zh) 一种面向神经网络计算的内存优化方法和装置
Anand et al. Synthesizing and verifying multicore parallelism in categories of nested code graphs
Krömer et al. An implementation of differential evolution for independent tasks scheduling on GPU
CN115454507B (zh) 多任务并行执行的方法、装置、计算设备及可读存储介质
CN114035968B (zh) 用于多流并行的冲突处理系统及其方法
US20240104395A1 (en) Memory optimization method and device oriented to neural network computing

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