CN111324630A - 基于mpi的神经网络架构搜索并行化方法和设备 - Google Patents

基于mpi的神经网络架构搜索并行化方法和设备 Download PDF

Info

Publication number
CN111324630A
CN111324630A CN202010144350.0A CN202010144350A CN111324630A CN 111324630 A CN111324630 A CN 111324630A CN 202010144350 A CN202010144350 A CN 202010144350A CN 111324630 A CN111324630 A CN 111324630A
Authority
CN
China
Prior art keywords
node
gradient
gpu
gpus
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.)
Granted
Application number
CN202010144350.0A
Other languages
English (en)
Other versions
CN111324630B (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.)
Hyperai Cloud Technology Beijing Co ltd
Original Assignee
Hyperai Cloud Technology Beijing 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 Hyperai Cloud Technology Beijing Co ltd filed Critical Hyperai Cloud Technology Beijing Co ltd
Priority to CN202010144350.0A priority Critical patent/CN111324630B/zh
Publication of CN111324630A publication Critical patent/CN111324630A/zh
Application granted granted Critical
Publication of CN111324630B publication Critical patent/CN111324630B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于MPI的神经网络架构搜索并行化方法和设备。该方法包括:根据当前多机环境中的GPU数量启动MPI进程,并按顺序进行编排;启动后的MPI进程根据其自己的序号从训练集中指定位置读取数据,并进行梯度计算;每个节点的GPU根据分层结构进行梯度规约计算,将计算的结果汇总至GPU中的首个GPU中;首个GPU按环形结构进行梯度全规约计算;在每个节点内从该首个GPU开始,按分层结构广播梯度计算结果;利用该新的梯度值更新神经网络的权值和偏置值。本发明能够在保证神经网络架构搜索结果模型的识别率的基础上,有效地加速神经网络架构搜索训练效率,大幅度减少训练时间,从而提升自动化深度学习过程的效率。

Description

基于MPI的神经网络架构搜索并行化方法和设备
技术领域
本发明涉及神经网络搜索并行化的技术领域,具体地涉及一种基于MPI的神经网络架构搜索并行化方法和设备。
背景技术
目前,发现高效的神经网络架构需要深度学习专家相当大的工作量,并且根据不一样的方向需要手动搭建相适应的神经网络架构,这样的工作模式消耗着深度学习从业人员的大量精力与时间。目前,为了解决这个问题,提出了多种自动化搜索神经网络架构的方法,性能比较好的算法有强化学习和进化学习,由于都是在离散空间上的搜索,需要巨大的计算量,一般需要几千天以上的GPU工作时间。亦有学者提出了一类可微分神经网络架构搜索的方法,训练时间可以达到一周内完成,并且训练出来的神经网络架构效果与其他方法几乎相差无几。但该类方法目前仅适用于单机训练,依然具有可优化的空间。
单机深度神经网络训练受限于本机IO处理不能大幅度地提速以及GPU计算能力与显存进一步提升比较难。随着网络带宽的飞速提升,目前对于各种需要长时间计算的模型,都着手于设计分布式并行计算的方式来降低计算时间。针对不同的领域,需要充分考虑特定数据并行的可行性,以设计具有针对性的并行计算方法。
针对可微分神经网络架构搜索的方法需要大量的计算量,鉴于单机训练时间再想进一步地减少非常难,故需要考虑有效的多机并行计算方法以减少神经网络架构搜索及训练时间。
发明内容
本发明所要解决的技术问题是提供一种基于MPI的神经网络架构搜索并行化、设备和计算机可读存储介质,使得能够在保证神经网络架构搜索结果模型的识别率的基础上,有效地加速神经网络架构搜索训练效率,大幅度减少训练时间,从而提升自动化深度学习过程的效率。
通过本发明可以实现的技术目的不限于上文已经特别描述的内容,并且本领域技术人员将从下面的详细描述中更加清楚地理解本文中未描述的其他技术目的。
本发明解决上述技术问题的技术方案如下:
根据本公开的一方面,本发明提供一种基于MPI的神经网络架构搜索并行化方法,其特征在于,所述方法包括以下步骤:S101:根据当前多机环境中的GPU的数量启动多个MPI进程,并按顺序进行编排,其中所述多机环境包含多个机器节点,所述多个机器节点中的各节点包含多个GPU以及多个MPI任务进程,所述MPI任务进程根据输入参数进行神经网络架构搜索训练;S102:启动后的MPI进程根据其自己的序号从训练集中的指定的位置读取数据,并进行梯度计算;S103:每个节点的多个GPU根据分层结构进行梯度规约计算,将计算的结果汇总至多个GPU中的首个GPU中;S104:每个节点的多个GPU中的首个GPU按环形结构进行梯度全规约计算;S105:在每个节点内从该首个GPU开始,按分层结构广播梯度计算结果,从而使得所有GPU都获取到新的梯度值;S106:利用该新的梯度值更新神经网络的权值和偏置值。
可选地,在如上所述的方法中,在S101中,所述多个机器节点按顺序设为Node0、Node1、Node2…Noden-1,其中n是总节点数;相应地机器节点的GPU数量设为M0、M1、M2…Mn-1,GPU的数量总共为M=M0+M1+M2+…+Mn-1;通过MPI任务进程运行指令,根据每个节点的GPU数量分别启动M0、M1、M2…Mn-1个训练进程,每个进程分别指定一个GPU进行训练,通过输入参数指定batch_size及MaxSize。
可选地,在如上所述的方法中,在S102中,所述训练集部署在各个机器节点上,以供各个机器节点按需读取,将当前训练数据的起始位置为Set,第0个MPI任务进程使用第0个GPU并加载[Set,Set+batch_size)数据,第1个进程使用第1个GPU并加载[Set+batch_size,Set+2*batch_size)训练数据,相应地第M-1个GPU加载[Set+(M-1)batch_size,Set+M*batch_size)训练数据,将Set更新为Set+M*batch_size,各个GPU用自己获取到的训练数据进行训练并得到相应的梯度数据G。
可选地,在如上所述的方法中,在S103中,如果每个节点的GPU数量大于1,则将其按结对分层结构组织,从第0层开始,逐层往上对结对GPU进行规约计算,直到第0个GPU获取到结果。
可选地,在如上所述的方法中,在S104中,所述多个节点的首个GPU按环形结构进行梯度全规约计算,所述首个GPU是在机器内进行梯度规约计算后,汇总梯度计算结果的GPU,每个节点的第0个GPU中的梯度数据G按总共节点数分成N,每份数据为G/N,将N个节点的第0个GPU连成环形的架构,第0个节点的前继节点为第N-1个节点,后继节点为第1个节点;第1个节点的前继节点为第0个节点,后继节点为第2个节点,以此类推,直到第N-1个节点的前继节点为第N-2个节点,后继节点为第0个节点;首先进行梯度规约,需要进行N-1轮迭代;然后进行梯度传播,需要进行N-1轮迭代,其中,所述梯度规约的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j-i)%N块数据发送给第j+1个节点,并接受第j-1个节点的(j-i-1)%N块数据,将接受来的数据进行规约操作,其中i、j都从0开始计算;所述梯度传播的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j+i+1)%N块数据发送给第j+1个GPU,并接受第j-1个GPU的(j+i)%N块数据,将接受来的数据块替换值相应块的位置,最后所有节点中第0个GPU中获取到梯度计算结果,其中i、j都从0开始计算。
可选地,在如上所述的方法中,在S105中,所述按分层结构广播梯度计算结果从第0层开始分层,每个节点中第0个GPU中的梯度计算结果按分层结构,逐级发送至下层的GPU,直到所有GPU都获取到梯度计算结果。
可选地,在如上所述的方法中,在所述梯度规约计算的过程中,对小于MaxSize的梯度张量进行融合后再进行计算,而对于大于MaxSize的梯度张量进行裁剪后再进行计算。
根据本公开的一方面,本发明提供一种基于MPI的神经网络架构搜索并行化方法设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上任一项所述的基于MPI的神经网络架构搜索并行化方法的步骤。
根据本公开的一方面,本发明提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上任一项所述的基于MPI的神经网络架构搜索并行化方法的步骤。
上述技术方案仅为本发明实施例的一些部分,本领域技术人员从以下本发明的详细描述中可以导出和理解包含了本发明的技术特征的各种实施例。
本发明的技术方案采用数据节点的方式记录数据信息简单易于扩展,易于使用。数据信息表中的数据按名称排序,可以实现快速查找,使用起来更方便。数据信息表中存放所有的节点信息,后续所有数据方面的操作可以直接查找该表,不用再查找语法树,大大地提高了使用的效率。数据交叉的节点单独记录为多条数据链路,不容易产生混乱。以数组的方式记录数据链路,简单而易于使用。数据信息表可以作为数据字典表,也可以作为数据索引表来使用。数据污染点和数据传递过程记录详细,使用简单。
本领域技术人员将会理解,通过本发明可以实现的效果不限于上文已经具体描述的内容,并且从以下详细说明中将更清楚地理解本发明的其他优点。
附图说明
被包括以提供对本发明的进一步理解的附图示出本发明的实施例,并且与说明书一起用于解释本发明的原理。
图1为节点内GPU进行逐层规约计算的示意图。
图2为进行梯度同步计算前各个节点数据状态的示意图。
图3为各个节点梯度规约的第0轮计算的示意图。
图4为各个节点梯度规约的第1轮计算的示意图。
图5为各个节点梯度规约的第2轮计算的示意图。
图6为切割梯度数据进行规约计算的示意图。
图7为各个节点梯度传播的第0轮计算的示意图。
图8为各个节点梯度传播的第1轮计算的示意图。
图9为各个节点梯度传播的第2轮计算的示意图。
图10为节点内进行梯度计算结果扩散前的状态的示意图。
图11为两层环形梯度计算的示意图。
图12为环内进行梯度计算结果传递的第0轮的示意图。
图13为环内进行梯度计算结果传播的第1轮的示意图。
图14为节点内进行梯度计算结果传播的第0轮的示意图。
图15为节点内进行梯度计算结果传播的第1轮的示意图。
图16为本发明实施例提供的一种基于MPI的神经网络架构搜索并行化方法的流程图。
图17为本发明实施例提供的一种基于MPI的神经网络架构搜索并行化设备的示意图。
具体实施方式
现在将详细参考本发明的示例性实施例,其示例在附图中示出。下面将参考附图给出的详细描述旨在解释本发明的示例性实施例,而不是示出可以根据本发明实现的唯一实施例。以下详细描述包括具体细节以便提供对本发明的透彻理解。然而,对于本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践本发明。
在一些情况下,已知的结构和设备被省略或以框图形式示出,集中于结构和设备的重要特征,以免模糊本发明的概念。在整个说明书中将使用相同的附图标记来表示相同或相似的部分。
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
在本发明的描述中,需要理解的是,术语“上”、“下”、“中心”、“内”、“外”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1
本发明实施例提供一种基于MPI的神经网络架构搜索并行化方法,所述方法包括以下步骤(如图16所示):S101:根据当前多机环境中的GPU的数量启动多个MPI进程,并按顺序进行编排,其中所述多机环境包含多个机器节点,所述多个机器节点中的各节点包含多个GPU以及多个MPI任务进程,所述MPI任务进程根据输入参数进行神经网络架构搜索训练;S102:启动后的MPI进程根据其自己的序号从训练集中的指定的位置读取数据,并进行梯度计算;S103:每个节点的多个GPU根据分层结构进行梯度规约计算,将计算的结果汇总至多个GPU中的首个GPU中;S104:每个节点的多个GPU中的首个GPU按环形结构进行梯度全规约计算;S105:在每个节点内从该首个GPU开始,按分层结构广播梯度计算结果,从而使得所有GPU都获取到新的梯度值;S106:利用该新的梯度值更新神经网络的权值和偏置值。可选地,在S101中,所述多个机器节点按顺序设为Node0、Node1、Node2…Noden-1,其中n是总节点数;相应地机器节点的GPU数量设为M0、M1、M2…Mn-1,GPU的数量总共为M=M0+M1+M2+…+Mn-1;通过MPI任务进程运行指令,根据每个节点的GPU数量分别启动M0、M1、M2…Mn-1个训练进程,每个进程分别指定一个GPU进行训练,通过输入参数指定batch_size及MaxSize。可选地,在S102中,所述训练集部署在各个机器节点上,以供各个机器节点按需读取,将当前训练数据的起始位置为Set,第0个MPI任务进程使用第0个GPU并加载[Set,Set+batch_size)数据,第1个进程使用第1个GPU并加载[Set+batch_size,Set+2*batch_size)训练数据,相应地第M-1个GPU加载[Set+(M-1)batch_size,Set+M*batch_size)训练数据,将Set更新为Set+M*batch_size,各个GPU用自己获取到的训练数据进行训练并得到相应的梯度数据G。可选地,在S103中,如果每个节点的GPU数量大于1,则将其按结对分层结构组织,从第0层开始,逐层往上对结对GPU进行规约计算,直到第0个GPU获取到结果。可选地,在S104中,所述多个节点的首个GPU按环形结构进行梯度全规约计算,所述首个GPU是在机器内进行梯度规约计算后,汇总梯度计算结果的GPU,每个节点的第0个GPU中的梯度数据G按总共节点数分成N,每份数据为G/N,将N个节点的第0个GPU连成环形的架构,第0个节点的前继节点为第N-1个节点,后继节点为第1个节点;第1个节点的前继节点为第0个节点,后继节点为第2个节点,以此类推,直到第N-1个节点的前继节点为第N-2个节点,后继节点为第0个节点;首先进行梯度规约,需要进行N-1轮迭代;然后进行梯度传播,需要进行N-1轮迭代,其中,所述梯度规约的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j-i)%N块数据发送给第j+1个节点,并接受第j-1个节点的(j-i-1)%N块数据,将接受来的数据进行规约操作,其中i、j都从0开始计算;所述梯度传播的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j+i+1)%N块数据发送给第j+1个GPU,并接受第j-1个GPU的(j+i)%N块数据,将接受来的数据块替换值相应块的位置,最后所有节点中第0个GPU中获取到梯度计算结果,其中i、j都从0开始计算。可选地,在S105中,所述按分层结构广播梯度计算结果从第0层开始分层,每个节点中第0个GPU中的梯度计算结果按分层结构,逐级发送至下层的GPU,直到所有GPU都获取到梯度计算结果。可选地,所述梯度规约计算的过程中,对小于MaxSize的梯度张量进行融合后再进行计算,而对于大于MaxSize的梯度张量进行裁剪后再进行计算。
根据本发明的具体实施方式,本发明提供了一种基于MPI的神经网络架构搜索并行化方法。该方法的具体步骤为:
步骤1,机器节点按序设为Node0、Node1、Node2…Noden-1,总节点数为N;每个节点GPU数量为M0、M1、M2…Mn-1,总共具有GPU数量M=M0+M1+M2+…+Mn-1
步骤2,将训练数据集及验证数据集分别部署到各个节点上。可微分神经网络架构搜索方法分为两个过程:神经网络Cell搜索训练、最终模型训练。两个训练过程并行化设计,除了数据拆分不一样,其它设计都是一样的。
步骤3,(S101)通过MPI运行指令,按节点GPU数量分别启动M0、M1、M2…Mn-1个训练进程。每个进程分别指定一个独占的GPU进行训练,通过运行指令输入参数指定batch_size以及最大梯度张量尺寸MaxSize。
步骤4,如果是神经网络Cell搜索训练,需要将训练数据按固定比例拆分成训练数据和验证数据,再对拆分而成的训练数据进行并行训练;如果是最终模型训练,直接使用训练数据即可。假设当前训练数据起始位置为Set,第0个进程使用第0个GPU并加载[Set,Set+batch_size)数据,第1个进程使用第1个GPU并加载[Set+batch_size,Set+2*batch_size)训练数据,以此类推,直到第M-1个GPU加载[Set+(M-1)batch_size,Set+M*batch_size)训练数据。同时,更新Set为Set+M*batch_size,为下一轮训练做准备。
步骤5,(S102)各个GPU用自己获取到的训练数据进行训练并得到相应的梯度数据G。
步骤6,每个节点的GPU数如果大于1,将其按结对分层结构组织。第一层,第0个GPU与第1个GPU结对,第2个GPU与第3个GPU结对…;第二层,第0个GPU与第2个GPU结对,第3个GPU与第5个GPU结对…;以此类推,直到最后两个GPU结对。
步骤7,(S103)从第0层开始,逐层往上对结对GPU进行规约计算,直到第0个GPU获取到结果。
步骤8,每个节点的第0个GPU中的梯度数据G分成按总共节点数分成N,每份数据为G/N。
步骤9,(S104)将N个节点的第0个GPU连成一个环的架构,第0个节点的前继节点为第N-1个节点,后继节点为第1个节点;第1个节点的前继节点为第0个节点,后继节点为第2个节点;以此类推,直到第N-1个节点的前继节点为第N-2个节点,后继节点为第0个节点。
步骤10,第一步进行梯度规约计算,需要进行N-1轮迭代,在第i轮操作时,第j个节点将第(j-i)%N块数据发送给第j+1个节点,并接受第j-1个节点的(j-i-1)%N块数据,将接受来的数据进行规约操作。(i、j都从0开始计算)。
在梯度规约计算过程中,如果经过反向传播生成的梯度数据大于MaxSize,则按MaxSize尺寸大小将梯度张量进行裁剪后,再进行规约计算,且在规约计算队列中,设立优先级别,反向传播过程靠后计算得到的梯度张量优先级大于反向传播靠前计算得到的梯度张量。这样可以使下一轮的前向传播与前一轮的梯度规约计算重叠。在对规约计算队列中的梯度进行规约计算的过程中,如果发现连续的梯度张量数据和小于MaxSize,则申请一个缓存空间,将小梯度数据进行融合成不大于MaxSize的张量,再进行规约计算,在计算完毕后,各个张量从缓存空间取走计算结果即可。
步骤11,第二步进行梯度传播,需要进行N-1轮迭代,在第i轮操作时,第j个节点将第(j+i+1)%N块数据发送给第j+1个GPU,并接收第j-1个GPU的(j+i)%N块数据,将接受来的数据块替换值相应块的位置。最后所有节点中第0个GPU中获取到梯度计算结果。(i、j都从0开始计算)。
步骤12,假设节点数N比较大,可将节点按多层环形的架构进行组织。假设有N个节点,如果全挂在一个环上,则需要进行2(N-1)轮计算。假设均分为R层环形,0层每个环有R0个节点,1层每个环有R1个节点,R-1层每个环有Rr-1个节点,则需要进行2(R0+R1+…+Rr-1-R)。由于N=R0*R1*R2*…*Rr-1,所以R0+R1+…+Rr-1-R远小于2(N-1)。但根据实际执行情况,由于分层过深,给控制通信带来一定的难度和开销,所以分为2层即可。梯度规约计算从低层环形开始,往高层环形继续,直接所有环结构的梯度规约计算完毕。
步骤13,在梯度规约计算完毕以后,将环内的节点按分层的结构,逐级发送至下层的节点,直到环内所有节点都获取到梯度计算结果。
步骤14,(S105)将每个节点中第0个GPU中的梯度计算结果按分层结构,逐级发送至下层的GPU,直到所有GPU都获取到梯度计算结果。
步骤15,(S106)每个GPU将得到的梯度应用到对权值和偏置值参数的计算,并更新权值和偏置值参数。
步骤16,各个MPI进程分别获取下一个batch_size的训练数据,按步骤4到步骤15重复进行计算,直到将所有训练数据训练完毕。
步骤17,为了进一步训练出效果更好的模型,按指定的epochs,重复训练数据集,直到得到识别率较高的神经网络架构。
上述基于MPI的神经网络架构搜索并行化方法,由于针对的神经网络架构搜索算法本身的可微分性,利用随机梯度下降算法,可使计算数据并行。各个节点计算各自的梯度值,利用MPI将汇总梯度值并求得平均值,同时按并行数量提高学习率,以降低对loss下降速度的影响。在同等的epochs下,在理想的情况下,能达到近线性的训练速度提升。
可微分神经网络架构搜索存在的一个问题是,神经网络Cell搜索训练过程中,网络参数很多,由于单GPU显存有限,导致只能选择浅层网络进行搜索,与最终模型训练层的深度有很大的差距。将训练修改成并行化后,可以在保持固定的占用显存下,减少batch_size,增大layer数,从而间接地解决了此问题。
根据本发明的更具体的实施方式,本发明还提供了一种基于MPI的神经网络架构搜索并行化方法。该方法的具体步骤为:
步骤1,每个节点部署好Linxu系统、MPI(Message PassingInterface)及深度学习框架(例如Tensorflow、Pytorch)软件环境,以及GPU驱动程序环境。
步骤2,将各节点部署在一个局域网上,节点间尽量用Infiniband卡连接。这样可以利用RDMA技术获得更大的带宽。
步骤3,将节点间的主机名到IP的映射关系设置好,同时将Secure Shell设置成基于密钥的安全验证方式进行访问,以到达无需传递账号与口令便可访问,从而以用户名和主机名便能相互访问。这样便能在一台主机器上执行命令,在本机运行训练地同时,通过远程访问,在其他机器上也自动运行训练。
步骤4,机器节点按序设为Node0、Node1、Node2…Noden-1,总节点数N,这里假设有16个节点,每4个节点组成一环,共4个环;每个节点GPU数量为M0、M1、M2…Mn-1总共有GPU数量M=M0+M1+M2+…+Mn-1,假设每个节点有4块GPU,共有64块GPU。
步骤5,下载CIFAR10训练及验证数据部署到各个节点上,其中训练数据样本60000张,验证数据集10000张。
步骤6,通过MPI运行指令,按节点GPU数量分别启动4个训练进程,总共64个MPI进程。每个进程分别指定一个GPU进行训练,通过输入参数指定batch_size及MaxSize,这里设batch_size为32,MaxSize为64,默认训练数据起始位置为Set为0。第0个MPI进程初始化模型权值和偏置值,并广播给其他MPI进程,如果是神经网络Cell搜索训练,则还需广播神经网络架构操作权值参数值。
步骤7,如果是神经网络Cell搜索训练,需要将训练数据按1:1比例拆分成训练数据和验证数据,再对拆分而成的训练数据进行并行化训练;如果是最终模型训练,则直接使用训练数据即可。第0个进程使用第0个GPU并加载[Set,Set+32)数据,第1个进程使用第1个GPU并加载[Set+32,Set+64)训练数据,以此类推,直到第63个GPU加载[Set+2016,Set+2047)训练数据。更新Set为Set+2047。
步骤8,各个GPU用自己获取到的训练数据进行训练并得到相应的梯度数据G。
步骤9,第一层,第0个GPU与第1个GPU结对,第2个GPU与第3个GPU结对;第二层,第0个GPU与第2个GPU结对。
步骤10,从第0层开始,逐层往上对结对GPU进行规约计算,直到第0个GPU获取到结果,共需要2轮计算,如图1所示。
步骤11,每个节点的第0个GPU中的梯度数据G分成按总共节点数分成4,每份数据为G/4,初始状态如图2所示。
步骤12,将环内4个节点的第0个GPU连成一个环的架构,第0个节点的前继节点为第3个节点,后继节点为第1个节点;第1个节点的前继节点为第0个节点,后继节点为第2个节点;以此类推,直到第3个节点的前继节点为第2个节点,后继节点为第0个节点。
步骤13,第一步进行梯度规约计算,需要进行3轮迭代,在第i轮操作时,第j个节点将第(j-i)%4块数据发送给第j+1个节点,并接受第j-1个节点的(j-i-1)%4块数据,将接受来的数据进行规约操作。如图3、图4、图5所示。(i、j都从0开始计算)
在梯度规约计算过程中,将反向传播生成的梯度数据按MaxSize进行裁剪后,放入规约计算队列中,并设立优先级别,反向传播过程靠后计算得到的梯度张量优先级大于反向传播靠前计算得到的梯度张量。如图6所示,对不切割张量情况与切割张量情况下梯度规约计算过程分析,切割后,整个过程花费时间明显少于原梯度张量规约计算。张量规约计算队列中,连续的张量尺寸按MaxSize进行张量合并后,再进行规约计算。这样有效地防止张量过小,导致时间都耗费再通信延时上的问题。当然,梯度张量切割和融合是否有效和实际环境通信质量有关系,最大梯度张量依据于具体环境而定,可以在正式进行训练之前,通过预热数据训练以贝叶斯的方法逐步评估训练速度来决定最优的最大梯度张量尺寸。使用此种自动化调参的过程中,由于可微分神经网络架构搜索占用显存跟batch_size成正比,可以在最大化利用显存的条件下,固定batch_size,仅对最大梯度张量进行评估和预测。
步骤14,第二步进行梯度传播,需要进行3轮迭代,在第i轮操作时,第j个节点将第(j+i+1)%4块数据发送给第j+1个GPU,并接受第j-1个GPU的(j+i)%4块数据,将接受来的数据块替换值相应块的位置。如图6、图7、图8。最后所有节点中第0个GPU中获取到梯度计算结果。(i、j都从0开始计算)
步骤15,将第0,4,8,12个节点连成的环,按步骤12、13、14再做一层环形梯度规约,如图9所示。
步骤16,将各个环内的第0个节点中的梯度计算结果按分层结构,逐级发送至下层节点,直到环内所有节点都获取到梯度计算结果。第0轮,将第0个节点的梯度数据传递给第1个节点;第2轮,将第0,1个节点梯度数据分别传递给2,3个节点。如图10、11所示。
步骤17,将每个节点中第0个GPU中的梯度计算结果按分层结构,逐级发送至下层的GPU,直到所有GPU都获取到梯度计算结果。第0轮,将第0个GPU的梯度数据传递给第1个GPU;第2轮,将第0,1个GPU梯度数据分别传递给2,3个GPU。如图12-15所示。
步骤18,每个GPU将得到的梯度应用到对权值和偏置值参数的计算,并更新权值和偏置值参数。如果是神经网络Cell搜索训练,还需将神经网络架构操作参数值计算得到的梯度值应用到操作权值参数进行更新。
步骤19,各个MPI进程分别获取下一个batch_size的训练数据,按步骤7到步骤18重复进行计算,直到将所有训练数据训练完毕。
步骤20,为了进一步训练出效果更好的模型,按指定的epochs,重复训练数据集,直到得到识别率较高的神经网络架构。
以上步骤中,假设节点数为16,仅是为了用较小的模型,更清楚地描述各步骤具体过程,而实际实施时,可能会有成百上千个节点。
实施例2
根据本发明的实施例,本发明提供一种基于MPI的神经网络架构搜索并行化设备,如图17所示,包括:存储器10、处理器12及存储在所述存储器10上并可在所述处理器12上运行的计算机程序,所述计算机程序被所述处理器12执行时实现如上实施例1中所述的基于MPI的神经网络架构搜索并行化方法的步骤。
实施例3
根据本发明的实施例,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上实施例1中所述的基于MPI的神经网络架构搜索并行化方法的步骤。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
如上所述,已经给出了本发明的优选实施例的详细描述,以使本领域技术人员能够实施和实践本发明。虽然已经参照示例性实施例描述了本发明,但是本领域技术人员将会理解,在不脱离所附权利要求书中描述的本发明的精神或范围的情况下,可以在本发明中进行各种修改和改变。因此,本发明不应限于在此描述的特定实施例,而应被赋予与本文公开的原理和新颖特征一致的最宽范围。

Claims (9)

1.一种基于MPI的神经网络架构搜索并行化方法,其特征在于,所述方法包括以下步骤:
S101:根据当前多机环境中的GPU的数量启动多个MPI进程,并按顺序进行编排,其中所述多机环境包含多个机器节点,所述多个机器节点中的各节点包含多个GPU以及多个MPI任务进程,所述MPI任务进程根据输入参数进行神经网络架构搜索训练;
S102:启动后的MPI进程根据其自己的序号从训练集中的指定的位置读取数据,并进行梯度计算;
S103:每个节点的多个GPU根据分层结构进行梯度规约计算,将计算的结果汇总至多个GPU中的首个GPU中;
S104:每个节点的多个GPU中的首个GPU按环形结构进行梯度全规约计算;
S105:在每个节点内从该首个GPU开始,按分层结构广播梯度计算结果,从而使得所有GPU都获取到新的梯度值;
S106:利用该新的梯度值更新神经网络的权值和偏置值。
2.根据权利要求1所述的方法,
其特征在于,在S101中,所述多个机器节点按顺序设为Node0、Node1、Node2…Noden-1,其中n是总节点数;相应地机器节点的GPU数量设为M0、M1、M2…Mn-1,GPU的数量总共为M=M0+M1+M2+…+Mn-1;通过MPI任务进程运行指令,根据每个节点的GPU数量分别启动M0、M1、M2…Mn-1个训练进程,每个进程分别指定一个GPU进行训练,通过输入参数指定batch_size及MaxSize。
3.根据权利要求2所述的方法,
其特征在于,在S102中,所述训练集部署在各个机器节点上,以供各个机器节点按需读取,将当前训练数据的起始位置为Set,第0个MPI任务进程使用第0个GPU并加载[Set,Set+batch_size)数据,第1个进程使用第1个GPU并加载[Set+batch_size,Set+2*batch_size)训练数据,相应地第M-1个GPU加载[Set+(M-1)batch_size,Set+M*batch_size)训练数据,将Set更新为Set+M*batch_size,各个GPU用自己获取到的训练数据进行训练并得到相应的梯度数据G。
4.根据权利要求3所述的方法,
其特征在于,在S103中,如果每个节点的GPU数量大于1,则将其按结对分层结构组织,从第0层开始,逐层往上对结对GPU进行规约计算,直到第0个GPU获取到结果。
5.根据权利要求4所述的方法,
其特征在于,在S104中,所述多个节点的首个GPU按环形结构进行梯度全规约计算,所述首个GPU是在机器内进行梯度规约计算后汇总梯度计算结果的GPU,每个节点的第0个GPU中的梯度数据G按总共节点数分成N,每份数据为G/N,将N个节点的第0个GPU连成环形的架构,第0个节点的前继节点为第N-1个节点,后继节点为第1个节点;第1个节点的前继节点为第0个节点,后继节点为第2个节点,以此类推,直到第N-1个节点的前继节点为第N-2个节点,后继节点为第0个节点;
首先进行梯度规约,需要进行N-1轮迭代;然后进行梯度传播,需要进行N-1轮迭代,其中,
所述梯度规约的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j-i)%N块数据发送给第j+1个节点,并接受第j-1个节点的(j-i-1)%N块数据,将接受来的数据进行规约操作,其中i、j都从0开始计算;
所述梯度传播的每轮步骤过程包括:在第i轮操作时,第j个节点将第(j+i+1)%N块数据发送给第j+1个GPU,并接受第j-1个GPU的(j+i)%N块数据,将接受来的数据块替换值相应块的位置,最后所有节点中第0个GPU中获取到梯度计算结果,其中i、j都从0开始计算。
6.根据权利要求5所述的方法,
其特征在于,在S105中,所述按分层结构广播梯度计算结果从第0层开始分层,每个节点中第0个GPU中的梯度计算结果按分层结构,逐级发送至下层的GPU,直到所有GPU都获取到梯度计算结果。
7.根据权利要求6所述的方法,
其特征在于,在所述梯度规约计算的过程中,对小于MaxSize的梯度张量进行融合后再进行计算,而对于大于MaxSize的梯度张量进行裁剪后再进行计算。
8.一种基于MPI的神经网络架构搜索并行化设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的基于MPI的神经网络架构搜索并行化方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如权利要求1至7中任一项所述的基于MPI的神经网络架构搜索并行化方法的步骤。
CN202010144350.0A 2020-03-04 2020-03-04 基于mpi的神经网络架构搜索并行化方法和设备 Active CN111324630B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010144350.0A CN111324630B (zh) 2020-03-04 2020-03-04 基于mpi的神经网络架构搜索并行化方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010144350.0A CN111324630B (zh) 2020-03-04 2020-03-04 基于mpi的神经网络架构搜索并行化方法和设备

Publications (2)

Publication Number Publication Date
CN111324630A true CN111324630A (zh) 2020-06-23
CN111324630B CN111324630B (zh) 2023-07-25

Family

ID=71173163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010144350.0A Active CN111324630B (zh) 2020-03-04 2020-03-04 基于mpi的神经网络架构搜索并行化方法和设备

Country Status (1)

Country Link
CN (1) CN111324630B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782398A (zh) * 2020-06-29 2020-10-16 上海商汤智能科技有限公司 数据处理的方法、装置、系统及相关设备
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
CN112463056A (zh) * 2020-11-28 2021-03-09 苏州浪潮智能科技有限公司 一种多节点分布式训练方法、装置、设备及可读介质
WO2022037039A1 (zh) * 2020-08-18 2022-02-24 中国银联股份有限公司 神经网络架构搜索方法以及装置
CN114895985A (zh) * 2022-06-08 2022-08-12 华东师范大学 一种面向基于采样的图神经网络训练的数据加载系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
US20180121806A1 (en) * 2016-10-27 2018-05-03 International Business Machines Corporation Efficient parallel training of a network model on multiple graphics processing units
CN108021395A (zh) * 2017-12-27 2018-05-11 北京金山安全软件有限公司 一种面向神经网络的数据并行处理方法及系统
CN109754060A (zh) * 2017-11-06 2019-05-14 阿里巴巴集团控股有限公司 一种神经网络机器学习模型的训练方法及装置
CN110135573A (zh) * 2018-02-02 2019-08-16 阿里巴巴集团控股有限公司 一种深度学习模型的训练方法、计算设备以及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
US20180121806A1 (en) * 2016-10-27 2018-05-03 International Business Machines Corporation Efficient parallel training of a network model on multiple graphics processing units
CN109754060A (zh) * 2017-11-06 2019-05-14 阿里巴巴集团控股有限公司 一种神经网络机器学习模型的训练方法及装置
CN108021395A (zh) * 2017-12-27 2018-05-11 北京金山安全软件有限公司 一种面向神经网络的数据并行处理方法及系统
CN110135573A (zh) * 2018-02-02 2019-08-16 阿里巴巴集团控股有限公司 一种深度学习模型的训练方法、计算设备以及系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782398A (zh) * 2020-06-29 2020-10-16 上海商汤智能科技有限公司 数据处理的方法、装置、系统及相关设备
WO2022037039A1 (zh) * 2020-08-18 2022-02-24 中国银联股份有限公司 神经网络架构搜索方法以及装置
CN112261023A (zh) * 2020-10-15 2021-01-22 苏州浪潮智能科技有限公司 一种卷积神经网络的数据传输方法和装置
CN112463056A (zh) * 2020-11-28 2021-03-09 苏州浪潮智能科技有限公司 一种多节点分布式训练方法、装置、设备及可读介质
CN112463056B (zh) * 2020-11-28 2023-06-09 苏州浪潮智能科技有限公司 一种多节点分布式训练方法、装置、设备及可读介质
CN114895985A (zh) * 2022-06-08 2022-08-12 华东师范大学 一种面向基于采样的图神经网络训练的数据加载系统
CN114895985B (zh) * 2022-06-08 2023-06-09 华东师范大学 一种面向基于采样的图神经网络训练的数据加载系统

Also Published As

Publication number Publication date
CN111324630B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN111324630A (zh) 基于mpi的神经网络架构搜索并行化方法和设备
CN113098714B (zh) 基于强化学习的低时延网络切片方法
CN114338504B (zh) 一种基于网络边缘系统的微服务部署和路由方法
CN111788585B (zh) 一种深度学习模型的训练方法、系统
CN113852405B (zh) 多波束中继卫星任务调度模型的构建方法及装置
CN111882060A (zh) 用于机器学习的单步延迟随机梯度下降训练方法
CN113015219B (zh) 基于策略梯度的网络资源选择方法、装置以及存储介质
CN108111335A (zh) 一种调度和链接虚拟网络功能的方法及系统
Yang et al. Deep reinforcement learning based wireless network optimization: A comparative study
CN113992524B (zh) 网络切片优化处理方法及系统
Yapp et al. Communication-efficient and Scalable Decentralized Federated Edge Learning.
CN116080407A (zh) 一种基于无线能量传输的无人机能耗优化方法与系统
Xu et al. Living with artificial intelligence: A paradigm shift toward future network traffic control
CN116962176B (zh) 一种分布式集群的数据处理方法、装置、系统及存储介质
CN116644803B (zh) 分布式协同训练控制方法、系统、装置、设备及存储介质
CN117311975A (zh) 大模型并行训练方法、系统及可读存储介质
CN115329985B (zh) 无人集群智能模型训练方法、装置和电子设备
CN116894469A (zh) 端边云计算环境中的dnn协同推理加速方法、设备及介质
CN115454655B (zh) 一种异步流水线并行训练过程中的动态层迁移方法
CN116367190A (zh) 一种面向6g移动网络的数字孪生功能虚拟化方法
CN116582407A (zh) 一种基于深度强化学习的容器化微服务编排系统及方法
CN116074403A (zh) 一种多协议融合通信方法、装置及架构
CN110610231A (zh) 一种信息处理方法、电子设备和存储介质
CN115185660A (zh) Mar任务在多接入边缘计算中的卸载和缓存放置方法及系统
CN113342313A (zh) 一种基于参数服务器异步更新Spark MLlib中线性分类模型参数的方法

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