CN111858072A - 一种大规模分布式深度学习的资源管理方法及系统 - Google Patents
一种大规模分布式深度学习的资源管理方法及系统 Download PDFInfo
- Publication number
- CN111858072A CN111858072A CN202010784598.3A CN202010784598A CN111858072A CN 111858072 A CN111858072 A CN 111858072A CN 202010784598 A CN202010784598 A CN 202010784598A CN 111858072 A CN111858072 A CN 111858072A
- Authority
- CN
- China
- Prior art keywords
- layer
- gradient
- memory
- parameter
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 32
- 238000013135 deep learning Methods 0.000 title claims abstract description 15
- 238000012549 training Methods 0.000 claims abstract description 75
- 238000004364 calculation method Methods 0.000 claims abstract description 67
- 238000013528 artificial neural network Methods 0.000 claims abstract description 57
- 238000005457 optimization Methods 0.000 claims abstract description 50
- 238000004891 communication Methods 0.000 claims abstract description 48
- 230000006854 communication Effects 0.000 claims abstract description 47
- 230000005012 migration Effects 0.000 claims abstract description 10
- 238000013508 migration Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 49
- 230000008569 process Effects 0.000 claims description 42
- 238000013507 mapping Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 11
- 238000009825 accumulation Methods 0.000 claims description 7
- 210000002569 neuron Anatomy 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 abstract description 127
- 239000011229 interlayer Substances 0.000 abstract description 4
- 239000011159 matrix material Substances 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- BULVZWIRKLYCBC-UHFFFAOYSA-N phorate Chemical compound CCOP(=S)(OCC)SCSCC BULVZWIRKLYCBC-UHFFFAOYSA-N 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种大规模分布式深度学习的资源管理方法及系统,在神经网络的训练运行时,实现针对参数及梯度等中间数据的内存资源优化管理,同时保障分布式通信带宽资源的合理配置。重新实现跨层内存复用,将迭代计算及稀疏通信所需的中间数据迁入CPU主存,并在随后按需迁回,减轻层间内存消耗;并在CPU‑GPU数据合理迁移的基础上,实现层内内存复用,挖掘层内计算和内存访问操作的独立性,尽可能的减轻层内内存消耗。在保证内存资源高效利用的同时,实现分布式参数通信优化。对分布式参数更新阶段的数据访问进行合理重定向,将CPU主存作为镜像访问区域,完成对参数及梯度的数据访问,解决了梯度数据缺失及参数写入越界的问题。
Description
技术领域
本发明属于分布式系统技术领域,更具体地,涉及一种大规模分布式深度学习的资源管理方法及系统。
背景技术
深度学习(深度神经网络)在计算机视觉、语言建模、语音识别等领域取得了突破性成果。而与传统的人工神经网络相比,深度神经网络的特点是:拥有更多的隐藏层及神经元,训练与推理阶段的计算体量庞大,同时也会产生大量的中间数据。这些特性使得大多数的深度学习应用对训练过程的存储空间及计算资源等方面有着较大需求,而当前已有的高性能加速硬件(如GPU等)尚不能很好的满足其需求。因此已有很多优化工作对训练系统进行内存管理或分布式支持。然而当前的优化工作往往仅针对训练系统中单一的资源受限问题,并不能同时解决当前深度学习系统中的内存瓶颈及分布式通信瓶颈。
针对训练大规模神经网络时GPU内存资源受限的问题,目前已有一系列代表性的优化方法,对训练运行时产生的特征映射数据进行内存管理,借助内存空间复用的思想,实现特征数据内存空间的重复利用,通过层内的数据分时放置以及在加速硬件与主存之间对特征数据进行合理迁移这两类技术,达到了显著减少单机系统运行时内存消耗的目的。
针对分布式训练中多节点间通信带宽资源受限的问题,目前也已有一大类优化方法,针对性的分析分布式训练过程的参数数据交换特征,并对参数梯度数据进行合理稀疏以及高效编码,实现了训练系统中高时效的分布式稀疏数据通信机制。
为能够从多个维度同时对计算、内存、带宽等资源进行管理和配置,应当对内存优化及分布式通信优化两类独立策略进行合并使用。然而,直接简单合并并不能实际解决多种资源受限的问题,甚至还会阻碍训练效率的提升。例如,在某些神经网络模型中使用参数通信优化策略会进一步的增加内存压力,而内存优化策略的引入可能会影响分布式迭代计算的正确性。因此如何能够应对神经网络训练任务所带来的内存资源、通信带宽资源等方面的挑战,对内存与通信两类优化方案进行深度融合、协同执行,是目前有待解决的重点问题。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种大规模分布式深度学习的资源管理方法及系统,旨在解决现有技术中为了能够同时对计算、内存和带宽资源进行管理和配置,采用直接将内存优化与通信优化简单合并的方式,这种方式无法协同管理多种资源,导致训练系统资源利用率低且容易造成数据缺失及内存越界的问题。
本发明提供了一种大规模分布式深度学习的资源管理方法,包括下述步骤:
S1采用训练数据集合和多个计算节点对深度神经网络进行多次迭代训练,并在第1次迭代中对所述深度神经网络的隐藏层进行性能侧写获得中间数据以及数据依赖关系;其中迭代计数k的初始值为k=1;
S2当第1次迭代结束时对分布式并行环境下的参数更新模式进行预定义,根据所述中间数据的内存开销进行空间分配,并在CPU主存中开辟一片用于完成参数更新的地址空间作为镜像区域;
S3根据所述数据依赖关系获得所述中间数据的分时放置策略,并记录各类中间数据及其梯度的内存引用计数;
S4在第k次迭代的前向传播过程中,按照所述分时放置策略对计算节点GPU内存端的内存空间进行分配,并在当前层的前向计算完成时将当前层的参数及特征映射等中间数据从GPU内存迁出至CPU主存中;
S5在第k次迭代的后向传播过程中,将当前层计算所需的特征映射从CPU主存迁回至GPU内存,并计算获得当前层参数梯度;并将优化后的参数梯度及历史梯度迁回至CPU主存的对应位置;
S6在第k次迭代的后向传播过程中,按照所述分时放置策略对特征映射数据对应的内存空间进行复用,并计算获得特征梯度,将所述特征梯度写入对应的所复用内存空间中,并采用引用计数的方式控制中间层特征梯度空间的回收;
S7在第k次迭代的后向传播完成时,执行参数镜像更新,在本地节点通过push操作将参数梯度上传到远端中心节点;并在远端中心节点通过pull操作拉取最新版本的全体参数,将参数拷贝路径直接指向到CPU镜像对应区域,在下一轮k+1次的后向计算需要某一层的参数时提前预取,并将其迁回至GPU内存;
S8判断是否满足迭代结束条件,若是,则结束,否则,k=k+1并返回至步骤S4。
本发明中,在实现内存优化模块的基础上,实现参数通信模块,对分布式参数更新阶段的数据访问进行合理重定向,将CPU主存作为镜像访问区域,完成对参数及梯度的数据访问。在完成内存—通信协同优化的同时,保证相关数据的正确性,保障分布式训练加速的高效性,完成内存资源与通信带宽资源的协同优化。
其中,训练过程实现针对参数及梯度等中间数据的内存优化策略,将迭代计算及稀疏通信所需的中间数据迁入CPU主存,并在随后按需迁回,减轻层间内存消耗;并在CPU-GPU数据合理迁移的基础上,挖掘层内计算和内存访问操作的独立性,尽可能的减轻层内内存消耗。
更进一步地,步骤S1具体包括以下子步骤:
S11当迭代次数k=1且所述深度神经网络的层数i=1时,对深度神经网络的隐藏层所需内存空间进行统计;
S12获得当前第i层的数据种类、数据规模和层内数据依赖关系,并记录当前层与相邻层的数据依赖关系;
S13判断是否完成所述深度神经网络的逐层遍历,若是,则结束,否则,i=i+1,并返回至步骤S12。
更进一步地,步骤S2中对原始参数更新阶段的数据访问位置进行重定向,从GPU内存区域重定向至CPU内存区域。
更进一步地,对步骤S3中的数据依赖关系进行解耦和重排,并获得分时放置策略。
更进一步地,将后向计算阶段的操作执行顺序重排的原则为:任意一个中间层的参数梯度计算操作优先于同层的神经元特征映射对应梯度的计算操作。重排操作保证为多组数据分配内存空间的操作序列之间彼此独立,多组数据分时地重复利用当前的内存空间。
更进一步地,步骤S4具体包括以下子步骤:
S41按照逐层的需要回迁参数并进行第i层的前向计算;
S42当第i层的前向计算完成时,按层迁出参数及特征映射等中间数据;
S43判断是否完成所述深度神经网络的逐层遍历,若是,则结束,否则,i=i+1,并返回至步骤S41。
更进一步地,步骤S5具体包括以下子步骤:
S51按照逐层的需要回迁特征映射数据,并进行第i层后向参数梯度计算;
S52在进行后向的参数梯度计算时,根据所述分时放置策略对参数数据对应的内存空间进行复用,并在参数梯度计算完成时将所述参数梯度写入对应的复用内存空间中;
S53在当前第i层的参数梯度计算的同时,将当前层在CPU主存的镜像区域中存储的历史梯度镜像及参数镜像迁回至GPU内存;
S54根据参数镜像对历史梯度进行泰勒近似并累加;
S55在当前第i层的参数梯度计算完成时对参数梯度进行分层梯度稀疏化处理并获得稀疏梯度;
S56对所述稀疏梯度进行基于索引的高效压缩实现稀疏梯度通信优化;
S57将优化后的参数梯度及历史梯度迁出至CPU主存的对应位置;
S58判断是否完成所述深度神经网络的逐层遍历,若是,则结束;否则,i=i+1,并返回至步骤S51。
本发明在神经网络的训练运行时,实现针对参数及梯度等中间数据的内存资源优化管理,同时保障分布式通信带宽资源的合理配置。重新实现跨层内存复用策略,将迭代计算及稀疏通信所需的中间数据迁入CPU主存,并在随后按需迁回,减轻层间内存消耗;并在CPU-GPU数据合理迁移的基础上,实现层内内存复用策略,挖掘层内计算和内存访问操作的独立性,尽可能的减轻层内内存消耗。在保证内存资源高效利用的同时,实现分布式参数通信优化策略。对分布式参数更新阶段的数据访问进行合理重定向,将CPU主存作为镜像访问区域,完成对参数及梯度的数据访问,解决梯度数据缺失及参数写入越界的问题。在完成内存—通信协同优化的同时,保证相关数据的正确性,保障分布式训练加速的高效性,完成内存资源与通信带宽资源的协同优化配置,最终达到兼顾系统资源利用率与神经网络训练效率的目的。
本发明还提供了一种大规模分布式深度学习的资源管理系统,包括:
初始化模块,用于在模型训练任务进入分布式训练系统时对模型训练过程进行初始化并获得当前模型的性能信息;
训练执行模块,用于进行训练任务的迭代执行;
内存管理模块,用于接收所述性能信息并在训练系统运行时对内存资源进行管理和优化;
分布式通信优化模块,用于接收所述性能信息并在训练系统运行时对分布式节点间的互联带宽资源进行管理和优化。
更进一步地,内存管理模块包括:
神经网络数据分时放置子模块,用于实现神经网络层内的内存空间复用,对宽度神经网络的内存消耗情况进行优化;
数据迁移放置子模块,用于实现神经网络跨层的内存空间复用,并对深度神经网络的内存消耗情况进行优化;
混合内存空间复用子模块,用于实现对中间数据进行全面的内存资源管理和内存空间复用。
更进一步地,分布式通信优化模块包括:
参数梯度分层稀疏筛选子模块,用于筛选出最显著的梯度子集并将其作为通信集合进行梯度交换;
历史梯度累加优化子模块,用于恢复陈旧老化的历史梯度,使其在目标函数优化中发挥更大的作用;
稀疏编码压缩子模块,用于通过减少通信编码时间来提升训练效率。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)本发明通过挖掘层内计算和内存访问操作的独立性,针对多种中间数据重新实现内存复用,尽可能的减轻不同网络模型的内存消耗。能够解决模型自身及参数通信优化给系统内存资源带来的双重压力,应对多种形态的大规模神经网络的训练任务,在单GPU内部保证内存高效,在分布式环境下保证训练加速,显著改善了极限规模的网络无法在分布式环境下高效运行的现状。
(2)本发明通过对分布式参数更新阶段的数据访问进行合理重定向,将CPU主存作为镜像访问区域,完成对参数及梯度的数据访问,能够在实现内存优化策略的基础上,实现参数高效通信机制。解决内存优化与通信优化共存所导致的数据缺失及内存越界问题,完成内存资源与通信带宽资源的协同管理与优化,保障大规模分布式深度学习系统的资源利用率,同时达到兼顾神经网络训练效率的目的,最大化分布式系统性能。
附图说明
图1为本发明实施例提供的一种用于多种应用领域的大规模分布式深度学习的资源管理方法中分布式训练过程示意图;
图2为本发明实施例提供的训练过程原始内存分配示意图;
图3为本发明实施例提供的参数稀疏通信过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
首先,就本发明所涉及的技术术语进行解释和说明:
参数权重(weight):由于神经网络结构中神经元逐层分布,相邻层之间神经元相互连接,每个连接上都有一个参数权重,用来决定输入数据对于神经元的影响程度。参数权重按层排列成为参数矩阵,使得神经网络每层前向计算、后向计算都可以用矩阵乘法的形式表达。
参数梯度(weight gradient):参数梯度是对目标损失函数中的每个参数求偏导数所获得的,从其物理意义上来讲,当前梯度是函数在该参数上变化最快的位置,沿梯度变化的负方向对参数进行迭代更新,最终获得学习后的参数。
历史梯度(historical gradient):在参数稀疏通信优化中,参数更新时仅仅选择一部分梯度矩阵的元素上传到参数服务器端,而剩余的梯度元素则作为历史梯度,累积反馈到下一次迭代计算,其值将直接累加到下一轮迭代得到的本地梯度矩阵。
特征映射(feature map):特征映射是指在前向计算过程中,训练数据经过神经网络中各层计算产生的中间输出结果;神经网络第一层的输入数据为训练数据,最后损失层产生的输出数据为损失值数据,其余各层均以前一层的特征映射为输入,经过本层的计算后产生输出特征映射。
梯度映射(gradient map):梯度映射(也可称为特征映射梯度)是指在后向传播过程中,神经网络的最高层损失值对各层特征映射值进行微分求得的结果。损失函数的梯度由对损失值求导得到,神经网络中其余每一层均将后一层的特征映射梯度作为输入,经过本层的求导计算后产生传往前一层的梯度。梯度映射在规模上与特征映射数据一一对应。
本发明的整体思路在于,大规模分布式训练过程对内存、计算、通信带宽等资源需求都比较大,为了完成训练任务、保证分布式训练效率,需要同时完成运行时的内存优化和通信优化工作,因此有必要在分布式训练阶段提出内存和通信的协同优化机制,以达到提升训练效率、高效利用系统资源的目的。
首先,实现针对参数及梯度等中间数据的内存优化策略,重新实现跨层内存复用策略,将迭代计算及稀疏通信所需的中间数据迁入CPU主存,并在随后按需迁回,减轻层间内存消耗;并在CPU-GPU数据合理迁移的基础上,实现层内内存复用策略,挖掘层内计算和内存访问操作的独立性,尽可能的减轻层内内存消耗。然后,在初步实现内存优化模块的基础上,实现参数通信模块,对分布式参数更新阶段的数据访问进行合理重定向,将CPU主存作为镜像访问区域,完成对参数及梯度的数据访问,解决梯度数据缺失及参数写入越界的问题。在完成内存—通信协同优化的同时,保证相关数据的正确性,保障分布式训练加速的高效性,完成内存资源与通信带宽资源的协同优化,最终达到兼顾系统资源利用率与神经网络训练效率的目的。
如图1所示,本发明公开了一种用于多种应用领域的大规模分布式深度学习的资源管理方法,包括以下步骤:
S1使用各个应用特有的训练数据集合,同时借助多个计算节点,对深度神经网络执行训练过程,在第一个训练迭代中,对神经网络的隐藏层进行性能侧写;
S2在第一个训练迭代结束后,对分布式并行环境下的参数更新模式进行预定义,将梯度上传(push)操作和参数拉取(pull)操作在计算节点上的访存位置定义为CPU主存端,根据S1步骤得到的参数及中间数据的内存开销进行空间分配,在CPU主存中开辟一片地址空间作为镜像区域,用以完成参数更新过程;
S3在第一个训练迭代结束后,根据S1步骤得到的数据依赖关系,得到参数及特征映射等中间数据的分时放置策略,同时记录各类中间数据及其梯度的内存引用计数;
S4第k次迭代的前向传播过程中,按照S3步骤得到的数据分时放置策略,对计算节点GPU内存端的内存空间进行分配,在当前层前向计算完成时,采用数据迁移方式将当前层的参数及特征映射等中间数据从GPU内存迁出至CPU主存中;
S5在第k次迭代的后向传播过程中,采用数据迁移方式将当前层计算所需的特征映射从CPU主存迁回至GPU内存中,完成当前层参数梯度计算。随后完成梯度稀疏通信优化操作,将优化后的参数梯度及历史梯度迁回至CPU主存的对应位置,等待完成稀疏梯度的上传push操作;
S6在第k次迭代的后向传播过程中,在完成参数梯度计算后,开始完成特征梯度计算。按照S3步骤得到的数据分时放置策略,对特征映射数据对应的内存空间进行复用,完成特征梯度计算后,将特征梯度写入对应的所复用内存空间中,同时采用引用计数的方式控制中间层特征梯度空间的回收;
S7在第k次迭代的后向传播完成后,开始执行参数镜像更新,pull操作完成参数拷贝时将直接指向到CPU镜像对应位置。随后在远端中心节点通过pull操作拉取最新版本的全体参数,在下一轮k+1次的后向计算需要某一层的参数时提前预取,将其迁回GPU;
S8判断是否满足迭代结束条件,若是,则结束训练,否则,k加1,返回步骤S4。
在大规模分布式训练任务中,通过对计算节点的内存资源进行分时复用,同时部署镜像参数更新机制,使得训练系统在针对运行时各类中间数据完成内存优化的同时,能够对分布式参数梯度通信过程完成协同优化。对资源进行协同优化配置,可以保障分布式训练程序的正确执行,减轻因梯度稀疏优化及模型自身所带来的双重内存压力,在训练运行时获得较为显著的内存收益。
在本发明实施例中,训练过程可以使用反向传播算法完成前向计算过程和后向计算过程,在前向计算过程中,训练数据由输入层进入网络的隐藏层,逐层传递信息至输出层,计算得到输出值与标签值之间的损失误差。在后向计算阶段,输出层的误差向后传递,逐层得到目标函数对参数权重的偏导,得到参数权重的梯度,对参数权重进行更新,完成梯度下降算法,神经网络的学习过程通过参数权重的更新得以完成。该前后向计算的过程需要迭代进行,直至目标优化函数达到预期值或稳定状态。
具体地,训练过程使用反向传播算法(Back Propagation),基于随机梯度下降算法学习和更新多隐层神经网络的模型参数。训练过程包含两个阶段,即前向计算过程和后向计算过程(如图2的操作序列1-11所示),在前向计算过程中(图2中的实线箭头),训练数据D由输入层进入网络的隐藏层Layer(i),逐层传递信息至输出层,计算得到输出值与标签值之间的损失误差。在后向计算阶段(图2中的虚线箭头),输出层的误差向后传递,逐层得到目标函数对参数权重P的偏导,得到参数权重的梯度对参数权重进行更新,完成梯度下降算法,神经网络的学习过程通过参数权重的更新得以完成。该前后向计算的过程需要迭代进行,直至目标优化函数达到预期值或稳定状态。
在本发明实施例中,应用领域涉及到计算机视觉、语言建模、语音识别等多个领域。深度神经网络模型可以包含卷积神经网络模型、神经网络语言模型、循环神经网络等类型。训练数据集合与应用领域相契合,可以使用面向计算机视觉类应用的标注图像数据集合,也可以是面向文本语义理解应用的无标注语料数据集合。
具体地,步骤S1包括:
S11性能侧写是指执行一次虚拟的训练迭代,该次迭代k=1,仅统计数据所需内存空间,不进行实际的内存空间分配,也不进行实际的迭代计算。迭代开始位置为神经网络第i层,i=1;
S12对当前层完成侧写,统计分析得到当前第i层的数据种类、数据规模、层内数据依赖关系,并记录与相邻层的数据依赖关系;
S13判断是否完成整个神经网络的逐层遍历,若是,则步骤S1结束,否则,i加1,返回步骤S12。
在本发明实施例中,分布式并行训练通常使用基于参数服务器的通信模式,相对于传统的分布式参数更新过程,如图3所示,在步骤S2的梯度稀疏通信机制中,worker并不会直接传送本地梯度矩阵的所有元素到server端的参数服务器中,而是选择那些取值超过预定义阈值的梯度元素,其余的历史梯度(图2中的hP)将积累反馈到下一次迭代计算所得的本地梯度矩阵。
在本发明实施提供的步骤S2中,对原始参数更新阶段的数据访问位置进行重定向,从GPU内存区域重定向至CPU内存区域中。首先,将训练所需的全体中间数据(包含参数及优化后的梯度在内)所对应的内存空间完整映射到CPU指定内存区域中,将其作为镜像访问区域。然后,对push操作中涉及到访问梯度数据的部分进行重新定义,将其指向到CPU镜像对应位置。
具体地,S2步骤中的分布式并行训练通常使用基于参数服务器(ParameterServer,PS)的通信模式(如图3所示),每个工作节点(worker)维护一个本地参数和一个本地训练数据子集合,中心节点(server)从多个worker处收集所有本地局部参数梯度并更新全局参数。在第t次迭代中,在本地的worker完成前向和后向计算之后,会将全体梯度gt上传(push操作,图3中的向上虚线箭头)至server,并及时从server拉取(pull操作,图3中的向下实线箭头)更新后的参数wt+1。远端的server负责收取各个worker的梯度并汇总更新至全局参数,供worker进行拉取及本地覆盖。相对于传统的分布式参数更新过程,在梯度稀疏通信机制中,worker并不会直接传送本地梯度矩阵的所有元素到server端的参数服务器中,而是选择那些取值超过预定义阈值(在图3中用“th”来表示)的梯度元素,其余的历史梯度将积累反馈(在图3中用“+”表示)到下一次迭代计算所得的本地梯度矩阵。
具体地,S2步骤对原始参数更新阶段的数据访问位置进行重定向,从GPU内存区域重定向至CPU内存区域中。首先,将训练所需的全体中间数据(包含参数及优化后的梯度在内)所对应的内存空间完整映射到CPU指定内存区域中,将其作为镜像访问区域。然后,对push操作中涉及到访问梯度数据的部分进行重新定义,将其指向到CPU镜像对应位置。
在本发明实施例提供的步骤S3中,可以获得训练过程的数据依赖关系,并对其进行解耦和重排,并设计分时放置策略。具体地,将后向计算阶段的操作执行顺序重排:任意一个中间层的参数梯度计算操作优先于同层的神经元特征映射对应梯度的计算操作。重排操作保证为多组数据分配内存空间的操作序列之间彼此独立,多组数据分时地重复利用当前的内存空间。通过重排操作和分时放置,来自不同层的、相互独立的操作序列能够重复地利用一定数量的内存空间,从而达到高效管理内存资源的目的。
在本发明实施例中,步骤S4具体为:
S41按逐层的需要回迁参数,进行第i层前向计算。
迭代开始位置为神经网络第i层,i=1。在进行第i层前向计算前,根据步骤S3得到的引用计数,按逐层的需要从CPU主存中将参数迁回至GPU内存中进行前向计算。
S42第i层前向计算完成时,按层迁出参数及特征映射等中间数据。
在当前第i层的前向计算完成时,采用数据迁移方式将当前层的参数及特征映射等中间数据从GPU内存迁出至CPU主存中合适位置,参数存储在镜像区域中,特征映射等中间数据存储在数据缓冲区。
S43判断是否完成整个神经网络的逐层遍历,若是,则步骤S4结束,否则,i加1,返回步骤S41。
在本发明实施例中,步骤S5具体为:
S51按逐层的需要回迁特征映射数据,进行第i层后向参数梯度计算。
迭代开始位置为神经网络第i层,i=1。在进行第i层后向计算前,根据步骤S3得到的引用计数,从CPU主存中将特征映射数据迁回至GPU内存中,准备进行后向的参数梯度计算。
S52在进行第i层后向的参数梯度计算时,按照S3步骤得到的数据分时放置策略,对参数数据对应的内存空间进行复用,完成参数梯度计算后,将参数梯度写入对应的所复用内存空间中。
S53在当前第i层的参数梯度计算的同时,将当前层在CPU主存的镜像区域中存储的历史梯度镜像及参数镜像迁回至GPU中。
S54根据参数镜像对历史梯度进行泰勒近似并累加。
在第t次迭代中,使用前瞻性(Look-ahead)的近似方式来实现历史梯度累加,通过对历史梯度gt进行一阶泰勒展开,使用前瞻迭代的梯度gt+τ和参数镜像wt+τ来近似第t次迭代的历史梯度gt,即利用一阶泰勒展开式对历史梯度进行近似,并完成近似历史梯度的累加gt+αht,其中对应于损失函数的二阶导数;α是历史梯度积累系数(α>0)。
S55在当前第i层的参数梯度计算之后,对参数梯度进行分层梯度稀疏化。
如图3所示,在完成当前第i层的参数梯度计算后,将近似历史梯度累加到当前层梯度上,对该层梯度元素的绝对值进行Top-k降序排列,得到阈值th,选择前s%的值(即图3中≥th的值)完成稀疏压缩,作为待传递的稀疏梯度,其中,s为梯度稀疏程度的度量,该值为常数,可由用户根据实际情况进行自定义。按照s%的稀疏度完成当前层梯度稀疏化操作后,选择剩余(1-s%)的梯度值累加到历史梯度,供下一轮迭代时梯度计算所使用。
S56对稀疏梯度进行基于索引的高效压缩,完成稀疏梯度通信优化。
S57将优化后的参数梯度及历史梯度迁出至CPU主存的对应位置,等待完成稀疏梯度的上传push操作。
S58判断是否完成整个神经网络的逐层遍历,若是,则步骤S5结束,否则,i加1,返回步骤S51。
在本发明实施例提供的步骤S6中,特征梯度计算的过程是根据第k次迭代的前向传播误差,求得输出层目标损失函数对该层特征映射的梯度,得到第i层的梯度映射。
引用计数的方式具体指针对每个神经网络层结构的特征映射梯度,获取其引用计数Ri。初始化Ri为0,当第i层的特征映射梯度参与到后续层的后向计算时,Ri则加1,即增加该梯度映射的引用计数;当该梯度映射所涉及的任一后续层后向计算完成时,Ri则减1,即减少该梯度映射的引用计数;当Ri减少为0时,说明此时已经不存在对该梯度映射的数据依赖,可将该梯度映射的内存空间进行回收,使得其他层数据得以复用该内存空间。
在本发明实施例中,迭代结束条件可以是训练迭代次数达到用户预先设定值,或者,模型训练精度达到用户预先设定值,可由用户根据实际应用需求对应选择及调整。深度神经网络训练迭代结束后,可以使用训练好的深度神经网络完成图像分类及语义理解等任务。
以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种大规模分布式深度学习的资源管理方法,其特征在于,包括下述步骤:
S1采用训练数据集合和多个计算节点对深度神经网络进行多次迭代训练,并在第1次迭代中对所述深度神经网络的隐藏层进行性能侧写获得中间数据以及数据依赖关系;其中迭代计数k的初始值为k=1;
S2当第1次迭代结束时对分布式并行环境下的参数更新模式进行预定义,根据所述中间数据的内存开销进行空间分配,并在CPU主存中开辟一片用于完成参数更新的地址空间作为镜像区域;
S3根据所述数据依赖关系获得所述中间数据的分时放置策略,并记录各类中间数据及其梯度的内存引用计数;
S4在第k次迭代的前向传播过程中,按照所述分时放置策略对计算节点GPU内存端的内存空间进行分配,并在当前层的前向计算完成时将当前层的参数及特征映射等中间数据从GPU内存迁出至CPU主存中;
S5在第k次迭代的后向传播过程中,将当前层计算所需的特征映射从CPU主存迁回至GPU内存,并计算获得当前层参数梯度;并将优化后的参数梯度及历史梯度迁回至CPU主存的对应位置;
S6在第k次迭代的后向传播过程中,按照所述分时放置策略对特征映射数据对应的内存空间进行复用,并计算获得特征梯度,将所述特征梯度写入对应的所复用内存空间中,并采用引用计数的方式控制中间层特征梯度空间的回收;
S7在第k次迭代的后向传播完成时,执行参数镜像更新,在本地节点通过push操作将参数梯度上传到远端中心节点;并在远端中心节点通过pull操作拉取最新版本的全体参数,将参数拷贝路径直接指向到CPU镜像对应区域,在下一轮k+1次的后向计算需要某一层的参数时提前预取,并将其迁回至GPU内存;
S8判断是否满足迭代结束条件,若是,则结束,否则,k=k+1并返回至步骤S4。
2.如权利要求1所述的资源管理方法,其特征在于,步骤S1具体包括以下子步骤:
S11当迭代次数k=1且所述深度神经网络的层数i=1时,对深度神经网络的隐藏层所需内存空间进行统计;
S12获得当前第i层的数据种类、数据规模和层内数据依赖关系,并记录当前层与相邻层的数据依赖关系;
S13判断是否完成所述深度神经网络的逐层遍历,若是,则结束,否则,i=i+1,并返回至步骤S12。
3.如权利要求1或2所述的资源管理方法,其特征在于,步骤S2中对原始参数更新阶段的数据访问位置进行重定向,从GPU内存区域重定向至CPU内存区域。
4.如权利要求1-3任一项所述的资源管理方法,其特征在于,对步骤S3中的数据依赖关系进行解耦和重排,并获得分时放置策略。
5.如权利要求4所述的资源管理方法,其特征在于,将后向计算阶段的操作执行顺序重排的原则为:任意一个中间层的参数梯度计算操作优先于同层的神经元特征映射对应梯度的计算操作。
6.如权利要求1-5任一项所述的资源管理方法,其特征在于,步骤S4具体包括以下子步骤:
S41按照逐层的需要回迁参数并进行第i层的前向计算;
S42当第i层的前向计算完成时,按层迁出参数及特征映射等中间数据;
S43判断是否完成所述深度神经网络的逐层遍历,若是,则结束,否则,i=i+1,并返回至步骤S41。
7.如权利要求1-6任一项所述的资源管理方法,其特征在于,步骤S5具体包括以下子步骤:
S51按照逐层的需要回迁特征映射数据,并进行第i层后向参数梯度计算;
S52在进行后向的参数梯度计算时,根据所述分时放置策略对参数数据对应的内存空间进行复用,并在参数梯度计算完成时将所述参数梯度写入对应的复用内存空间中;
S53在当前第i层的参数梯度计算的同时,将当前层在CPU主存的镜像区域中存储的历史梯度镜像及参数镜像迁回至GPU内存;
S54根据参数镜像对历史梯度进行泰勒近似并累加;
S55在当前第i层的参数梯度计算完成时对参数梯度进行分层梯度稀疏化处理并获得稀疏梯度;
S56对所述稀疏梯度进行基于索引的高效压缩实现稀疏梯度通信优化;
S57将优化后的参数梯度及历史梯度迁出至CPU主存的对应位置;
S58判断是否完成所述深度神经网络的逐层遍历,若是,则结束;否则,i=i+1,并返回至步骤S51。
8.一种大规模分布式深度学习的资源管理系统,其特征在于,包括:
初始化模块,用于在模型训练任务进入分布式训练系统时对模型训练过程进行初始化并获得当前模型的性能信息;
训练执行模块,用于进行训练任务的迭代执行;
内存管理模块,用于接收所述性能信息并在训练系统运行时对内存资源进行管理和优化;
分布式通信优化模块,用于接收所述性能信息并在训练系统运行时对分布式节点间的互联带宽资源进行管理和优化。
9.如权利要求8所述的资源管理系统,其特征在于,所述内存管理模块包括:
神经网络数据分时放置子模块,用于实现神经网络层内的内存空间复用,对宽度神经网络的内存消耗情况进行优化;
数据迁移放置子模块,用于实现神经网络跨层的内存空间复用,并对深度神经网络的内存消耗情况进行优化;
混合内存空间复用子模块,用于实现对中间数据进行全面的内存资源管理和内存空间复用。
10.如权利要求8或9所述的资源管理系统,其特征在于,所述分布式通信优化模块包括:
参数梯度分层稀疏筛选子模块,用于筛选出最显著的梯度子集并将其作为通信集合进行梯度交换;
历史梯度累加优化子模块,用于恢复陈旧老化的历史梯度,使其在目标函数优化中发挥更大的作用;
稀疏编码压缩子模块,用于通过减少通信编码时间来提升训练效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784598.3A CN111858072B (zh) | 2020-08-06 | 2020-08-06 | 一种大规模分布式深度学习的资源管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784598.3A CN111858072B (zh) | 2020-08-06 | 2020-08-06 | 一种大规模分布式深度学习的资源管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858072A true CN111858072A (zh) | 2020-10-30 |
CN111858072B CN111858072B (zh) | 2024-02-09 |
Family
ID=72972575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010784598.3A Active CN111858072B (zh) | 2020-08-06 | 2020-08-06 | 一种大规模分布式深度学习的资源管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858072B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112836796A (zh) * | 2021-01-27 | 2021-05-25 | 北京理工大学 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
CN113159287A (zh) * | 2021-04-16 | 2021-07-23 | 中山大学 | 一种基于梯度稀疏的分布式深度学习方法 |
CN113159284A (zh) * | 2021-03-31 | 2021-07-23 | 华为技术有限公司 | 一种模型训练方法及装置 |
CN113656333A (zh) * | 2021-10-20 | 2021-11-16 | 之江实验室 | 一种加速深度学习训练任务数据载入的方法 |
CN114035937A (zh) * | 2021-10-15 | 2022-02-11 | 北京潞晨科技有限公司 | 一种基于人工智能的分布式训练和推理方法、系统、设备和可读存储介质 |
CN114298277A (zh) * | 2021-12-28 | 2022-04-08 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
CN114444678A (zh) * | 2020-11-04 | 2022-05-06 | 安徽寒武纪信息科技有限公司 | 稀疏化神经网络层的设备、方法及存储介质 |
CN116258197A (zh) * | 2023-05-16 | 2023-06-13 | 之江实验室 | 基于参数计算和通信调度的分布式训练加速方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140067738A1 (en) * | 2012-08-28 | 2014-03-06 | International Business Machines Corporation | Training Deep Neural Network Acoustic Models Using Distributed Hessian-Free Optimization |
CN109635945A (zh) * | 2018-11-21 | 2019-04-16 | 华中科技大学 | 一种用于图像分类的深度神经网络的训练方法 |
CN111027671A (zh) * | 2019-11-12 | 2020-04-17 | 华中科技大学 | 一种基于模型结构特性的分布式深度学习通信方法和系统 |
-
2020
- 2020-08-06 CN CN202010784598.3A patent/CN111858072B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140067738A1 (en) * | 2012-08-28 | 2014-03-06 | International Business Machines Corporation | Training Deep Neural Network Acoustic Models Using Distributed Hessian-Free Optimization |
CN109635945A (zh) * | 2018-11-21 | 2019-04-16 | 华中科技大学 | 一种用于图像分类的深度神经网络的训练方法 |
CN111027671A (zh) * | 2019-11-12 | 2020-04-17 | 华中科技大学 | 一种基于模型结构特性的分布式深度学习通信方法和系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114444678A (zh) * | 2020-11-04 | 2022-05-06 | 安徽寒武纪信息科技有限公司 | 稀疏化神经网络层的设备、方法及存储介质 |
CN112836796A (zh) * | 2021-01-27 | 2021-05-25 | 北京理工大学 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
CN112836796B (zh) * | 2021-01-27 | 2022-07-01 | 北京理工大学 | 一种深度学习训练中系统资源和模型超参协同优化的方法 |
WO2022206717A1 (zh) * | 2021-03-31 | 2022-10-06 | 华为技术有限公司 | 一种模型训练方法及装置 |
CN113159284A (zh) * | 2021-03-31 | 2021-07-23 | 华为技术有限公司 | 一种模型训练方法及装置 |
CN113159287A (zh) * | 2021-04-16 | 2021-07-23 | 中山大学 | 一种基于梯度稀疏的分布式深度学习方法 |
CN113159287B (zh) * | 2021-04-16 | 2023-10-10 | 中山大学 | 一种基于梯度稀疏的分布式深度学习方法 |
CN114035937A (zh) * | 2021-10-15 | 2022-02-11 | 北京潞晨科技有限公司 | 一种基于人工智能的分布式训练和推理方法、系统、设备和可读存储介质 |
CN113656333A (zh) * | 2021-10-20 | 2021-11-16 | 之江实验室 | 一种加速深度学习训练任务数据载入的方法 |
CN114298277B (zh) * | 2021-12-28 | 2023-09-12 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
CN114298277A (zh) * | 2021-12-28 | 2022-04-08 | 四川大学 | 一种基于层稀疏化的分布式深度学习训练方法及系统 |
CN116258197A (zh) * | 2023-05-16 | 2023-06-13 | 之江实验室 | 基于参数计算和通信调度的分布式训练加速方法和系统 |
CN116258197B (zh) * | 2023-05-16 | 2023-09-08 | 之江实验室 | 基于参数计算和通信调度的分布式训练加速方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111858072B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111858072A (zh) | 一种大规模分布式深度学习的资源管理方法及系统 | |
US20220138199A1 (en) | Automated provisioning for database performance | |
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
CN102591909B (zh) | 在去重复存储系统中提供增强的可扩展性的系统及方法 | |
CN104951425B (zh) | 一种基于深度学习的云服务性能自适应动作类型选择方法 | |
US20240111586A1 (en) | Multi-policy intelligent scheduling method and apparatus oriented to heterogeneous computing power | |
EP3871166A1 (en) | Deep reinforcement learning for production scheduling | |
CN113515370A (zh) | 一种面向大规模深度神经网络的分布式训练方法 | |
US12093791B2 (en) | Partitioning for an execution pipeline | |
CN104731642A (zh) | 用于高度并行作业的回填调度方法和系统 | |
CN114915630A (zh) | 基于物联网设备的任务分配方法、网络训练方法及装置 | |
CN112766551A (zh) | 一种交通预测方法、智能终端及计算机可读存储介质 | |
CN118246413B (zh) | 基于注意力机制的文本生成方法、装置和模型 | |
CN116401502B (zh) | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 | |
Li et al. | Optimizing makespan and resource utilization for multi-DNN training in GPU cluster | |
WO2022166851A1 (zh) | 量子计算机操作系统、量子计算机及可读存储介质 | |
CN114707655A (zh) | 一种量子线路转换方法、系统、存储介质和电子设备 | |
CN118193209A (zh) | 一种基于阶段性策略梯度的预测式云平台资源调度方法 | |
CN108595251B (zh) | 动态图更新方法、装置、存储引擎接口和程序介质 | |
US11704562B1 (en) | Architecture for virtual instructions | |
Esfahanizadeh et al. | Stream iterative distributed coded computing for learning applications in heterogeneous systems | |
CN116991878A (zh) | 基于Q-learning生成分布式执行计划的方法及系统 | |
CN109635945B (zh) | 一种用于图像分类的深度神经网络的训练方法 | |
US20240143525A1 (en) | Transferring non-contiguous blocks of data using instruction-based direct-memory access (dma) | |
CN111813525B (zh) | 一种异构系统工作流调度方法 |
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 |