CN113705801A - 一种神经网络模型的训练装置、方法及相关设备 - Google Patents
一种神经网络模型的训练装置、方法及相关设备 Download PDFInfo
- Publication number
- CN113705801A CN113705801A CN202010441573.3A CN202010441573A CN113705801A CN 113705801 A CN113705801 A CN 113705801A CN 202010441573 A CN202010441573 A CN 202010441573A CN 113705801 A CN113705801 A CN 113705801A
- Authority
- CN
- China
- Prior art keywords
- accelerators
- training
- gradient
- target
- partial
- 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
Links
Images
Classifications
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- 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
Abstract
本申请实施例提供了一种神经网络模型的训练装置、方法及相关设备,该训练装置可用于对人工智能AI领域的神经网络进行模型训练的场景中,该训练装置包括多个加速器,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中,后续在多个加速器中通过汇聚以得到完整权重系数,在每个加速器上再进一步根据不同的输入数据以及该完整权重系数训练神经网络模型,即在训练装置中的多个加速器中通过分布式存储完整权重系数,从而减少神经网络模型训练过程中训练装置的显存消耗。
Description
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络模型的训练装置、方法及相关设备。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
近年来,神经网络模型训练朝着大网络、大数据量的方向发展,一般来说,可以通过数据并行的方式提升训练网络中计算需求激增的需求。数据并行的基本思想是使用多个设备上的模型副本同时对数据子集进行训练,并在迭代结束时同步跨副本的模型参数。
具体地,图1给出了一种采用数据并行方式训练神经网络的示意图,该训练过程通过CPU与多个加速器(加速器1、加速器2、...、加速器n)参与实现,其中,多个加速器共同训练,一般地,训练过程包括如下步骤:1)在各加速器上创建同样的训练模型,例如训练Bert网络,则每个加速器上都需要有一个完整的Bert模型;2)在加速器1上初始化权重系数,并将该权重系数通过集合通信中的广播(broadcast)操作发送到各加速器上(1001)。一般从头开始训练神经网络,可以采用随机的方法给权重赋一个初值。为了让各加速器上的权重初始值保持一致,采用先在任一加速器上随机初始化权重,再将该权重发送到各加速器上的方式;3)CPU给不同的加速器发送不同的数据;4)各加速器进行前向反向计算,得到对应的梯度信息。这一步是在各加速器内部进行操作。前向反向计算后,得到当前该加速器的批量(batch)数据对应的梯度信息。由于3)中保证了输入数据的不同,因此各加速器得到的梯度是不同的;5)进行集合通信减少(allreduce)操作,得到平均梯度。将4)中各加速器得到的不同的梯度进行平均。经过该步后,所有加速器上的梯度值会保持一致,都是各加速器梯度平均后的值;6)使用平均梯度值进行初始权重的更新。由于2)中的操作保证了各加速器上的初始权重一致,各加速器上的更新量又是经过allreduce平均后的平均梯度。因此可以保证每次更新后各加速器的权重值也可以保持一致,其中,在6)的更新过程中,各加速器可以进一步使用该平均梯度值和1)中得到的权重作为优化器的输入,经过优化器的初始变量(1002)进行优化操作,优化器输出处理后的梯度,各加速器再进一步使用处理后的梯度进行权重的更新。
其中,上述加速器可以是图形处理单元(graphics processing unit,GPU)、神经处理单元(neural processing unit,NPU)或者张量处理单元(tensor processing unit,TPU);梯度汇聚可以由多种实现方法,比如集合通信。
在上述数据并行处理的方式中,步骤2)中的初始权重以及步骤6)中的初始变量等训练参数需要消耗加速器训练中使用的存储空间,比如GPU训练中使用的显存,CPU训练中使用的内存,在训练较大型的神经网络模型的时候,会出现单块加速器中的存储空间不足而导致无法进行训练的问题。
发明内容
本申请实施例提供了一种神经网络模型的训练装置、方法及相关设备,用于减少神经网络模型训练过程中训练装置的显存消耗。
本申请实施例第一方面提供了一种神经网络模型的训练装置,该训练装置包括多个加速器,其中,在训练装置训练神经网络模型的过程中,该训练装置中的每个加速器用于存储部分权重系数,该多个加速器各自存储的该部分权重系数组成完整权重系数,即将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中;然后,每个加速器将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数;此后,每个加速器根据输入数据和该完整权重系数训练神经网络模型,其中,该多个加速器的输入数据各自不同。其中,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中,后续在多个加速器中通过汇聚以得到完整权重系数,在每个加速器上再进一步根据不同的输入数据以及该完整权重系数训练神经网络模型,即在训练装置中的多个加速器中通过分布式存储完整权重系数,从而减少神经网络模型训练过程中训练装置的显存消耗。
在本申请实施例第一方面的一种可能的实现方式中,每个加速器在根据输入数据和该完整权重系数训练该神经网络模型时,具体用于根据该输入数据和该完整权重系数计算梯度信息;每个加速器再根据该多个加速器的梯度信息计算目标梯度;进一步地,每个加速器利用该目标梯度更新该部分权重系数,并根据更新后的部分权重系数训练该神经网络模型。其中,该训练装置中的每个加速器根据不同的输入数据和完整权重系数计算梯度信息之后,再根据该多个加速器的梯度信息计算用于更新部分权重系数的目标梯度,进一步地,每个加速器利用该目标梯度更新每个加速器中所存储的部分权重系数,并根据更新后的部分权重系数训练该神经网络模型,本实现方式提供了根据不同的输入数据训练该神经网络模型的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,该训练装置中的每个加速器还用于存储优化器中部分初始变量,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,该优化器用于更新该神经网络模型的权重系数;其中,训练装置中的每个加速器在利用该目标梯度更新该部分权重系数时,具体用于根据该部分初始变量处理该目标梯度和该部分权重系数以得到处理后的目标梯度;此后,每个加速器再根据该处理后的目标梯度更新该部分权重系数。其中,使用优化器对神经网络模型的权重系数进行优化处理时,每个加速器可以对该加速器的初始变量进行分布式存储,即每个加速器中存储部分初始变量,每个加速器再使用目标梯度和部分权重系数作为优化器的输入,经过优化器中预设的优化算法进行优化处理得到处理后的目标梯度,再根据该处理后的目标梯度更新每个加速器中所存储的部分权重系数,即在训练装置中的多个加速器中通过分布式存储优化器中的完整初始变量,从而进一步减少神经网络模型训练过程中训练装置的显存消耗。
在本申请实施例第一方面的一种可能的实现方式中,该优化器包括矢量运算,训练装置中的每个加速器在根据该部分初始变量处理该目标梯度和该部分权重系数以得到处理后的目标梯度时,具体用于计算该目标梯度的标量表示;再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;此后,每个加速器根据该求和结果计算该目标梯度的矢量表示;再进一步根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度。其中,如果该优化器中包括适量运算(例如矩阵运算、向量运算或者是其它的矢量运算等)时,在计算的时候需要完整的梯度参与,由于目标梯度是分散在每个加速器上,因此,每个加速器使用加速器得到处理后的目标梯度的过程中,每个加速器首先计算该目标梯度的标量表示;再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;此后,每个加速器根据该求和结果计算该目标梯度的矢量表示;再进一步根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度,本实现方式中,使得方案可以应用于包含有矢量运算的优化器的实现过程中,从而提升方案的可实现性。
在本申请实施例第一方面的一种可能的实现方式中,训练装置中的每个加速器在将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果时,具体用于将该多个加速器中的该目标梯度的标量表示通过集合通信方式中的减少操作(allreduce)进行汇聚以得到该目标梯度的求和结果。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的减少操作(allreduce)得到该目标梯度的求和结果,本实现方式提供了获取该目标梯度的求和结果的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,该部分权重系数包括将该完整权重系数均分后一一分配至该多个加速器的权重系数。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完全权重系数根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分权重系数,本实现方式中,提供了完全权重系数在多个加速器中分布式存储的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,训练装置中的每个加速器在将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数时,具体用于将该多个加速器中分别存储的该部分权重系数通过集合通信方式中的收集(Allgather)操作进行汇聚以得到该完整权重系数。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的Allgather操作得到该完整权重系数,本实现方式提供了获取该完整权重系数的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,训练装置中的该每个加速器在根据该多个加速器的梯度信息计算目标梯度时,具体用于根据该多个加速器的梯度信息通过集合通信方式中的减少分散(ReduceScatter)操作计算该目标梯度。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的ReduceScatter操作计算得到目标梯度,本实现方式了计算得到该目标梯度的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,该部分初始变量包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完整初始变量根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分初始变量,本实现方式中,提供了完全初始变量在多个加速器中分布式存储的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第一方面的一种可能的实现方式中,训练装置中的每个加速器还用于:获取该部分权重系数的更新参数,并根据该部分权重系数的更新参数实现对部分权重系数的更新;和/或,每个加速器还用于获取该初始变量的更新参数,并根据该变量的更新参数实现对初始变量的更新;和/或,每个加速器还用于获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,每个加速器还用于获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。其中,可以通过分布式存储神经网络模型训练过程所涉及的目标参数,该目标参数包括部分权重系数和/或初始变量和/或目标梯度和/或处理后的目标梯度等,从而,在该神经网络模型对应的部分权重系数或者是优化器中的初始变量存在更新时,可以在训练装置中的每个加速器中分别对分布式存储的目标参数进行更新,从而进一步减少训练装置中加速器的显存消耗。
本申请实施例第二方面提供了一种神经网络模型的训练装置,该训练装置包括多个加速器,其中,在训练装置训练神经网络模型的过程中,训练装置中的每个加速器用于:根据输入数据和完整权重系数计算梯度信息,其中,该多个加速器的输入数据各自不同;然后,每个加速器根据该多个加速器的梯度信息计算目标梯度;该每个加速器还用于存储优化器中部分初始变量,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,该优化器用于更新神经网络模型的权重系数;此后,每个加速器根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度,该多个加速器各自处理的该部分权重系数组成该完整权重系数;每个加速器再进一步根据该处理后的目标梯度更新该完整权重系数,并根据更新后的完整权重系数训练该神经网络模型。其中,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的优化器的完全初始变量分布式存储于训练装置中的多个加速器中,每个加速器再根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度,此后,每个加速器再进一步根据该处理后的目标梯度更新该完整权重系数,并根据更新后的完整权重系数训练该神经网络模型,即在训练装置中的多个加速器中通过分布式存储优化器的完整初始权重,从而减少神经网络模型训练过程中训练装置的显存消耗。
在本申请实施例第二方面的一种可能的实现方式中,该优化器包括矢量运算,训练装置中的每个加速器在根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度时,具体用于计算该目标梯度的标量表示;每个加速器再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;然后,每个加速器再根据该求和结果计算该目标梯度的矢量表示;此后,每个加速器根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度。其中,如果该优化器中包括适量运算(例如矩阵运算、向量运算或者是其它的矢量运算等)时,在计算的时候需要完整的梯度参与,由于目标梯度是分散在每个加速器上,因此,每个加速器使用加速器得到处理后的目标梯度的过程中,每个加速器首先计算该目标梯度的标量表示;再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;此后,每个加速器根据该求和结果计算该目标梯度的矢量表示;再进一步根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度,本实现方式中,使得方案可以应用于包含有矢量运算的优化器的实现过程中,从而提升方案的可实现性。
在本申请实施例第二方面的一种可能的实现方式中,训练装置中的每个加速器在将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果时,具体用于将该多个加速器中的该目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到该目标梯度的求和结果。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的减少操作(allreduce)得到该目标梯度的求和结果,本实现方式提供了获取该目标梯度的求和结果的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第二方面的一种可能的实现方式中,该每个加速器在根据该多个加速器的梯度信息计算目标梯度时,具体用于根据该多个加速器的梯度信息通过集合通信方式中的减少分散(ReduceScatter)操作计算该目标梯度。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的ReduceScatter操作计算得到目标梯度,本实现方式了计算得到该目标梯度的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第二方面的一种可能的实现方式中,该部分初始变量包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完整初始变量根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分初始变量,本实现方式中,提供了完全初始变量在多个加速器中分布式存储的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。
在本申请实施例第二方面的一种可能的实现方式中,训练装置中的每个加速器还用于:获取该完整权重系数的更新参数,并根据该完整权重系数的更新参数实现对完整权重系数的更新;和/或,每个加速器还用于获取该初始变量的更新参数,并根据该初始变量的更新参数实现对初始变量的更新;和/或,每个加速器还用于获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,每个加速器还用于获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。其中,可以通过分布式存储神经网络模型训练过程所涉及的目标参数,该目标参数包括完整权重系数和/或初始变量和/或目标梯度和/或处理后的目标梯度等,从而,在该神经网络模型对应的部分权重系数或者是优化器中的初始变量存在更新时,可以在训练装置中的每个加速器中分别对分布式存储的目标参数进行更新,从而进一步减少训练装置中加速器的显存消耗。
本申请实施例第三方面提供了一种神经网络模型的训练方法,该训练方法应用于多个加速器,该多个加速器包含于训练装置,该方法包括:存储部分权重系数,该多个加速器各自存储的该部分权重系数组成完整权重系数;将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数;根据输入数据和该完整权重系数训练神经网络模型,其中,该多个加速器的输入数据各自不同。
在本申请实施例第三方面的一种可能的实现方式中,该根据输入数据和该完整权重系数训练该神经网络模型包括;根据该输入数据和该完整权重系数计算梯度信息;根据该多个加速器的梯度信息计算目标梯度;利用该目标梯度更新该部分权重系数,并根据更新后的部分权重系数训练该神经网络模型。
在本申请实施例第三方面的一种可能的实现方式中,该方法还包括:存储优化器中部分初始变量,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,该优化器用于更新该神经网络模型的权重系数;该利用该目标梯度更新该部分权重系数包括:根据该部分初始变量处理该目标梯度和该部分权重系数以得到处理后的目标梯度;根据该处理后的目标梯度更新该部分权重系数。
在本申请实施例第三方面的一种可能的实现方式中,该优化器包括矢量运算,该根据该部分初始变量处理该目标梯度和该部分权重系数以得到处理后的目标梯度包括:计算该目标梯度的标量表示;将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;根据该求和结果计算该目标梯度的矢量表示;根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度。
在本申请实施例第三方面的一种可能的实现方式中,该将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果包括:将该多个加速器中的该目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到该目标梯度的求和结果。
在本申请实施例第三方面的一种可能的实现方式中,该部分权重系数包括将该完整权重系数均分后一一分配至该多个加速器的权重系数。
在本申请实施例第三方面的一种可能的实现方式中,该将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数包括:将该多个加速器中分别存储的该部分权重系数通过集合通信方式中的收集操作进行汇聚以得到该完整权重系数。
在本申请实施例第三方面的一种可能的实现方式中,该根据该多个加速器的梯度信息计算目标梯度包括:根据该多个加速器的梯度信息通过集合通信方式中的减少分散操作计算该目标梯度。
在本申请实施例第三方面的一种可能的实现方式中,该部分初始变量包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。
在本申请实施例第三方面的一种可能的实现方式中,该方法还包括:获取该部分权重系数的更新参数,并根据该部分权重系数的更新参数实现对部分权重系数的更新;和/或,获取该初始变量的更新参数,并根据该初始变量的更新参数实现对初始变量的更新;和/或,获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。
对于本申请第三方面以及第三方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面中各种可能的实现方式中的描述,此处不再一一赘述。
本申请实施例第四方面提供了一种神经网络模型的训练方法,该训练方法应用于多个加速器,该多个加速器包含于训练装置,该方法包括:根据输入数据和完整权重系数计算梯度信息,其中,该多个加速器的输入数据各自不同;根据该多个加速器的梯度信息计算目标梯度;存储优化器中部分初始变量,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,该优化器用于更新神经网络模型的权重系数;根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度,该多个加速器各自处理的该部分权重系数组成该完整权重系数;根据该处理后的目标梯度更新该完整权重系数,并根据更新后的完整权重系数训练该神经网络模型。
在本申请实施例第四方面的一种可能的实现方式中,该优化器包括矢量运算,该根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度包括:计算该目标梯度的标量表示;将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;根据该求和结果计算该目标梯度的矢量表示;根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度。
在本申请实施例第四方面的一种可能的实现方式中,该将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果包括:将该多个加速器中的该目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到该目标梯度的求和结果。
在本申请实施例第四方面的一种可能的实现方式中,该根据该多个加速器的梯度信息计算目标梯度包括:根据该多个加速器的梯度信息通过集合通信方式中的减少分散操作计算该目标梯度。
在本申请实施例第四方面的一种可能的实现方式中,该部分初始变量包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。
在本申请实施例第四方面的一种可能的实现方式中,该方法还包括:获取该完整权重系数的更新参数,并根据该完整权重系数的更新参数实现对完整权重系数的更新;和/或,获取该初始变量的更新参数,并根据该初始变量的更新参数实现对初始变量的更新;和/或,获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。
对于本申请第四方面以及第四方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第二方面中各种可能的实现方式中的描述,此处不再一一赘述。
本申请实施例第五方面提供了一种神经网络模型的训练装置,该训练装置包括多个加速器,每个加速器包括:存储单元,用于存储部分权重系数,该多个加速器各自存储的该部分权重系数组成完整权重系数;汇聚单元,用于将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数;训练单元,用于根据输入数据和该完整权重系数训练神经网络模型,其中,该多个加速器的输入数据各自不同。
本申请第五方面中,神经网络的训练装置的组成模块还可以用于执行第一方面的各个可能实现方式中训练装置执行的步骤,具体均可以参阅第一方面,此处不再赘述。
本申请实施例第六方面提供了一种神经网络模型的训练装置,该训练装置包括多个加速器,每个加速器包括:计算单元,用于根据输入数据和完整权重系数计算梯度信息,其中,该多个加速器的输入数据各自不同;该计算单元,还用于根据该多个加速器的梯度信息计算目标梯度;存储单元,用于存储优化器中部分初始变量,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,该优化器用于更新神经网络模型的权重系数;处理单元,用于根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度,该多个加速器各自处理的该部分权重系数组成该完整权重系数;更新单元,用于根据该处理后的目标梯度更新该完整权重系数,并根据更新后的完整权重系数训练该神经网络模型。
本申请第六方面中,神经网络的获取装置的组成模块还可以用于执行第二方面的各个可能实现方式中训练装置执行的步骤,具体均可以参阅第二方面,此处不再赘述。
本申请实施例第七方面提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第三方面或第三方面任意一种可能实现方式的方法,或者,所述程序指令当被处理器执行时使处理器执行上述第四方面或第四方面任意一种可能实现方式的方法。
本申请实施例第八方面提供了一种芯片系统,该芯片系统包括处理器,用于支持接入网设备实现上述第三方面或第三方面任意一种可能的实现方式、上述第四方面或第四方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,该芯片系统还可以包括存储器,存储器,用于保存该接入网设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例第九方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,该处理器执行如上述第三方面或第三方面任意一种可能的实现方式所述的方法,或者,该处理器执行如上述第四方面或第四方面任意一种可能的实现方式所述的方法。
其中,第三至第九方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,或者是,参见第二方面或第二方面不同可能实现方式所带来的技术效果,此处不再赘述。
从以上技术方案可以看出,本申请实施例具有以下优点:在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中,后续在多个加速器中通过汇聚以得到完整权重系数,在每个加速器上再进一步根据不同的输入数据以及该完整权重系数训练神经网络模型,即在训练装置中的多个加速器中通过分布式存储完整权重系数,从而减少神经网络模型训练过程中训练装置的显存消耗。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的神经网络模型训练过程的一个示意图;
图2为本申请实施例提供的神经网络模型训练过程的另一个示意图;
图3为本申请实施例提供的神经网络模型训练过程的另一个示意图;
图4为本申请实施例提供的神经网络模型训练过程中集合通信实现的一个示意图;
图5为本申请实施例提供的神经网络模型训练过程中集合通信实现的另一个示意图;
图6为本申请实施例提供的神经网络模型训练过程中集合通信实现的另一个示意图;
图7为本申请实施例提供的神经网络模型训练过程中集合通信实现的另一个示意图;
图8为本申请实施例提供的神经网络模型训练过程的系统架构的一个示意图;
图9为本申请实施例提供的神经网络模型训练过程的系统架构的另一个示意图;
图10为本申请实施例提供的神经网络模型训练过程的另一个示意图;
图11为本申请实施例提供的训练装置实现神经网络模型训练方法的一个示意图;
图12为本申请实施例提供的训练装置实现神经网络模型训练方法的另一个示意图;
图13为本申请实施例提供的训练装置实现神经网络模型训练方法的另一个示意图;
图14为本申请实施例提供的训练装置实现神经网络模型训练方法的另一个示意图;
图15为本申请实施例提供的训练装置的一个示意图;
图16为本申请实施例提供的训练装置的另一个示意图;
图17为本申请实施例提供的训练装置的另一个示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例进行描述。本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1、神经网络训练
神经网络的基本结构如图2所示,输入x经过多层变换后得到输出y,一般而言,多层变换包含两大类,一类是线性层(图中的f(x,w)),一般为卷积层、全连接层等,这类层往往具有可学习的权重系数;另外一类为非线性层(图中的a(x)),也称为激活层,一般为ReLU层,sigmoid层等。线性层与非线性层交替堆叠,层层作用,最终得到输出。
神经网络在数学上可以看做是一层一层的函数变换,例如图2中,即描述了y=a(f(x,w))这样的函数。在有监督训练中,输出y需要去拟合人工标注的label(标签),通过调整权重系数w,神经网络可以去拟合不同的y和x之间的关系。而不断调整权重系数w去拟合x和label之间关系的过程,称为神经网络训练。
神经网络训练的示意图如图3所示。神经网络训练一般采用反向传播的方法进行计算,目的是通过前向预测的值y与标定的标准值label之间的差异,反向计算得到权重系数的梯度dw,然后通过梯度调整权重的值,使得y与label之间的误差更小。这样的一次前向、反向、调整权重的过程称为一次迭代,神经网络通过重复几万至几百万次这样的迭代对参数不断调整,最终得到较优的解。
在得到梯度dw之后,调整的策略即优化器(optimizer)有很多,基本的例如随机梯度下降,就是得到dw之后只简单乘以学习率之后对权重进行调整。目前使用较广泛的例如Adam优化器、Lar优化器等。
2、集合通信
集合通信提供了很多操作的应用编程接口(Appilication ProgrammingInterface,API)供用户使用,完成包括多个加速器中平均等操作。对应在数据并行神经网络训练中,即可以通过集合通信操作完成各个加速器上梯度的平均。几种基础的集合通信操作如图4至图7所示,其中,以多个加速器包括rank0、rank1、rank2、rank3为例,具体来说:
减少(Allreduce):将各个加速器上的数据进行求和,allreduce操作结束后,各个加速器上得到相同的求和结果,Allreduce过程如图4所示。
广播(Broadcast):将某一个加速器上的数据复制到所有加速器上,Broadcast过程如图5所示。
收集(Allgather):将各个加速器上的内容拼接起来,每个加速器都可以得到合成后的大tensor(张量),Allgather过程如图6所示。
减少分散(ReduceScatter):将每个加速器上的tensor拆分后,各个加速器拿到对应的不同部分,ReduceScatter过程如图7所示。
参见附图8,本申请实施例提供了一种神经网络训练过程的系统架构200。数据采集设备260用于采集数据并存入数据库230,训练装置220基于数据库230中维护的文本数据生成目标模型/规则201,示例性地,当该目标模型/规则用于实现自然语言处理(naturallanguage processing,NLP)的训练时,该系统涉及的数据可以为文本数据,下面将以NLP的训练过程为例,更详细地描述训练装置220如何基于文本数据得到目标模型/规则201。
深度神经网络中的每一层的工作可以用数学表达式来描述:从物理层面深度神经网络中的每一层的工作可以理解为通过五种对输入空间(输入向量的集合)的操作,完成输入空间到输出空间的变换(即矩阵的行空间到列空间),这五种操作包括:1、升维/降维;2、放大/缩小;3、旋转;4、平移;5、“弯曲”。其中1、2、3的操作由完成,4的操作由+b完成,5的操作则由a()来实现。这里之所以用“空间”二字来表述是因为被分类的对象并不是单个事物,而是一类事物,空间是指这类事物所有个体的集合。其中,W是权重向量,该向量中的每一个值表示该层神经网络中的一个神经元的权重值。该向量W决定着上文所述的输入空间到输出空间的空间变换,即每一层的权重W控制着如何变换空间。训练深度神经网络的目的,也就是最终得到训练好的神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。因此,神经网络的训练过程本质上就是学习控制空间变换的方式,更具体的就是学习权重矩阵。
因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到神经网络能够预测出真正想要的目标值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objectivefunction),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
训练装置220得到的目标模型/规则可以应用不同的系统或设备中。在附图8中,执行设备210配置有I/O接口212,与外部设备进行数据交互,“用户”可以通过客户设备240向I/O接口212输入数据。
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
计算模块211使用目标模型/规则201对输入的数据进行处理,得到梯度信息,再通过关联功能模块213对梯度信息进一步优化,得到处理结果,其中,该关联功能模块213具体可以包括优化器,即使用优化器中的预设的优化算法对梯度信息进行优化处理。
最后,I/O接口212将处理结果返回给客户设备240,提供给用户。
更深层地,训练装置220可以针对不同的目标,基于不同的数据生成相应的目标模型/规则201,以给用户提供更佳的结果。
在附图8中所示情况下,用户可以手动指定输入执行设备210中的数据,例如,在I/O接口212提供的界面中操作。另一种情况下,客户设备240可以自动地向I/O接口212输入数据并获得结果,如果客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到文本数据存入数据库230。
值得注意的,附图8仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在附图8中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
在图8所示系统架构中,一般来说,在训练装置220中使用单一的加速器实现神经网络模型的,其中该加速器可以是GPU、TPU、NPU或者是其它的加速器等,而在近年来,神经网络朝着大网络、大数据量的方向发展,使得计算需求激增,常用的训练装置中的单一加速器已经无法满足训练网络的需求,因此涌现出非常多的并行方式,例如数据并行、模型并行、混合并行、流水线并行等。其中最为普遍的为数据并行,下面将通过图9介绍通过数据并行的方式实现神经网络模型训练过程的系统架构。
如图9所示,在通过数据并行的方式实现的系统架构中,数据并行的方式可以通过多个加速器分别执行模型训练过程来实现,其中,多个加速器可以分别存储于多个训练装置(311、312、313、314)即图8中的训练装置220来实现,其中每一个训练装置中包含有一个或多个加速器,不同的训练装置之间可以通过交换机300进行数据互联;多个加速器可以存储于某一个训练装置来实现,这里以训练装置311为例,在训练装置311中,包含有CPU321、存储器322、总线323,以及n个加速器,其中,n个加速器包括加速器1(324)、加速器2(325)...、加速器n(326),n为大于1的整数。
在训练装置311在训练神经网络模型的一次完整的训练迭代中,n个加速器分别通过总线323从存储器322中读取不同的输入数据,CPU321可选地可以执行对该输入数据进行预处理过程,以NLP处理为例,输入数据可以包括文本数据,一次获取的文本数据包含多句话,CPU321读取后进行数据预处理,由于需要做数据并行,CPU321会控制发送给每个加速器的输入数据各不相同;此后,训练装置311中的CPU321和n个加速器之间的具体实现过程可以参阅图1中的CPU100与n个加速器(101、102、103、104)之间的交互流程。
具体地,如图1所示,该训练过程通过CPU100与多个加速器(加速器1、加速器2、...、加速器n)实现,多个加速器共同训练,一般地,训练过程包括如下步骤:
1)在各加速器上创建同样的训练模型,例如训练Bert网络,则每个加速器上都需要有一个完整的Bert模型;
2)在加速器1上初始化权重系数,并将该权重系数通过集合通信中的广播(broadcast)操作发送到各加速器上(1001)。一般从头开始训练神经网络,可以采用随机的方法给权重赋一个初值。为了让各加速器上的权重初始值保持一致,采用先在任一加速器上随机初始化权重,再将该权重发送到各加速器上的方式;
3)CPU给不同的加速器发送不同的数据;
4)各加速器进行前向反向计算,得到对应的梯度信息。这一步是在各加速器内部进行操作。前向反向计算后,得到当前该加速器的批量(batch)数据对应的梯度信息。由于3)中保证了输入数据的不同,因此各加速器得到的梯度是不同的;
5)进行集合通信减少(allreduce)操作,得到平均梯度。将4)中各加速器得到的不同的梯度进行平均。经过该步后,所有加速器上的梯度值会保持一致,都是各加速器梯度平均后的值;
6)使用平均梯度值进行初始权重的更新。由于2)中的操作保证了各加速器上的初始权重一致,各加速器上的更新量又是经过allreduce平均后的平均梯度。因此可以保证每次更新后各加速器的权重值也可以保持一致,其中,在6)的更新过程中,各加速器可以进一步使用该平均梯度值和1)中得到的权重作为优化器的输入,经过优化器的初始变量(1002)进行优化操作,优化器输出处理后的梯度,各加速器再进一步使用处理后的梯度进行权重的更新。
其中,上述加速器可以是图形处理单元(graphics processing unit,GPU)、神经处理单元(neural processing unit,NPU)或者张量处理单元(tensor processing unit,TPU);梯度汇聚可以由多种实现方法,比如集合通信。
在上述数据并行处理的方式中,步骤2)中的初始权重以及步骤6)中的初始变量等训练参数需要消耗加速器训练中使用的存储空间,比如GPU训练中使用的显存,CPU训练中使用的内存,在训练较大型的神经网络模型的时候,会出现单块加速器中的存储空间不足而导致无法进行训练的问题,在这种数据并行的处理方式中,存在以下不足之处:
1:步骤1001中,神经网络模型的权重系数的显存占用较大,在神经网络模型的训练装置中,n个加速器中的每个加速器上都需要保存一份权重系数,对于中小模型来说,这个显存消耗不算太多,但对于Bert、GPT-2等大模型来说,权重系数本身占用的显存较多,且当权重系数存在更新的时候,每个加速器上都需要执行相同的更新操作;
2:步骤1002中,优化器的初始变量占用显存较大,在神经网络模型的训练装置中,n个加速器中有n份初始变量需要保存,该初始变量一直存在于训练的过程中参与迭代运算,一直占用着各个加速器的显存,而且这种初始变量在n个加速器中的每个加速器上都存在,并且数值相等。
示例性地,以最典型的一层全连接层(矩阵乘法)为例,其中,训练装置的加速器数量为4,表中的输入层可以为上一层的输出(特征图,feature map),该层的尺寸和显存消耗如表1所示。
表1
由上述可知,在该数据并行的处理方式中,神经网络模型的权重系数和优化器的初始变量在n个加速器中的每一个加速器上是重复存储的,这就导致训练装置中的n个加速器在模型训练过程中造成不必要的显存浪费,即使得n个加速器的显存空间利用率较低,从而,在训练较大型的神经网络模型的时候,往往容易出现加速器中的显存空间不足而导致无法进行训练的问题。
由于上述问题中,存在神经网络模型的权重系数和优化器的初始变量这两个参数都存在占用显存过多的情况,在本申请实施例中考虑将这两个参数分别通过分布式存储的方式在训练装置的多个加速器中实现,具体可参阅图10,相对于图1的实现过程,改进之处有两个方面,一方面,使用步骤1003替代步骤1001,将神经网络模型的完整权重系数进行分布式存储,在步骤1003中通过多个加速器之间的集合通信方式来实现完整权重系数的获取,另一方面使用步骤1004替代步骤1002,将优化器的完整初始变量进行分布式存储,在步骤1004中通过多个加速器之间的集合通信方式来实现完整初始变量的获取,下面将分别通过这两个方面的改进介绍本申请实施例中的一种神经网络模型的训练方法。
一、分布式存储神经网络模型的完整权重系数
请参阅图11,本申请实施例中一种神经网络模型的训练方法的一个实施例包括:
1101、存储部分权重系数;
本实施例中,训练装置中包括多个加速器,每个加速器在步骤1101中存储部分权重系数,其中,训练装置中的多个加速器各自存储的部分权重系数组成用于神经网络模型训练的完整权重系数。
具体地,在神经网络模型的训练过程中,在第一次训练迭代的时候需要执行神经网络模型的权重系数初始化的操作,其中,该初始化操作可以指定在第一加速器中执行,该第一加速器为训练装置中多个加速器中的任意一个,经过权重系数初始化的操作之后,该第一加速器可以得到完整权重系数。此后,该第一加速器将完整权重系数进行切分后发送至训练装置中的多个加速器中,实现完整权重系数的分布式存储,也就是说,只需要在多个加速器中的任意一个执行权重系数的初始化操作即可,可以节省训练装置中其它加速器的运算消耗。
在一种具体的实现方式中,该第一加速器还可以将完整权重系数进行均等切分后发送至训练装置中的多个加速器中,从而,在步骤1101中,各个加速器中所存储的部分权重系数包括将该完整权重系数均分后一一分配至该多个加速器的权重系数。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完全权重系数根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分权重系数,在后续的模型训练过程中,各个加速器使用均分后的权重系数参与模型训练,使得训练装置中不同加速器的处理进度保持同步。此外,该多个加速器中加速器的个数具体可以为2、4、8、16、32等,此处不做限定。
1102、将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
本实施例中,训练装置中的每个加速器将多个加速器中分别存储的部分权重系数进行汇聚以得到所述完整权重系数。
在一种具体的实现方式中,在步骤1102中,训练装置中的每个加速器在将该多个加速器中分别存储的该部分权重系数进行汇聚以得到该完整权重系数时,具体来说,每个加速器可以将该多个加速器中分别存储的该部分权重系数通过集合通信方式中的收集(Allgather)操作进行汇聚以得到该完整权重系数,具体在各个加速器中使用Allgether的通信过程可以参考前述图6所示描述的过程,此处不再赘述。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的Allgather操作得到该完整权重系数,本实现方式提供了获取该完整权重系数的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。此外,在步骤1102的执行过程中,除了使用集合通信方式实现之外,多个加速器之间也可以通过与CPU之间的交互实现完整权重系数的获取,多个加速器之间也可以通过其它的通信方式实现完整权重系数的获取,此处不做限定。
1103、根据输入数据和所述完整权重系数训练神经网络模型;
本实施例中,训练装置中的每个加速器根据输入数据和步骤1102得到的完整权重系数训练神经网络模型,其中,多个加速器的输入数据各自不同。
具体地,训练装置中的多个加速器所形成的数据并行的系统架构中,每个加速器中可以预先创建神经网络训练模型,在一次迭代训练过程中,步骤1102得到完整的权重系数之后,使用该完整的权重系数和不同的输入数据作为神经网络模型的输入,进行神经网络模型的训练,具体的训练过程可以参考前述图2和图3的实现过程,此后,神经网络模型的输出为梯度信息,此后可以使用该梯度信息更新各个加速器上所存储的权重系数(可以是步骤1101中的部分权重系数或者是步骤1102中得到的完整权重系数),完成一次迭代训练过程。该训练装置中的多个加速器可以多次执行步骤1101至步骤1103,以实现神经网络模型的多次迭代,最终得到较优的解。
本实施例中,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中,后续在多个加速器中通过汇聚以得到完整权重系数,在每个加速器上再进一步根据不同的输入数据以及该完整权重系数训练神经网络模型,即在训练装置中的多个加速器中通过分布式存储完整权重系数,从而减少神经网络模型训练过程中训练装置的显存消耗。
在图11对应实施例中,具体通过分布式存储神经网络模型的完整权重系数来减少加速器中的一部分显存消耗,而在该基础上,如果存在优化器参与梯度信息的优化处理过程的话,可以进一步分布式存储优化器的完整初始变量,使得进一步减少加速器中的显存消耗。下面将基于图11实施例,对步骤1103中根据输入数据和所述完整权重系数训练神经网络模型的过程进一步优化,通过图12中具体的实施例进行说明。
请参阅图12,本申请实施例中一种神经网络模型的训练方法的另一个实施例包括:
1201、存储部分权重系数;
本实施例中,训练装置中包括多个加速器,每个加速器在步骤1201中存储部分权重系数,其中,训练装置中的多个加速器各自存储的部分权重系数组成用于神经网络模型训练的完整权重系数。
1202、将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
本实施例中,训练装置中的每个加速器将多个加速器中分别存储的部分权重系数进行汇聚以得到所述完整权重系数。
本实施例中,步骤1201和步骤1202的实现过程可以参考前述图11中步骤1101和步骤1102的实现过程,此处不再赘述。
1203、根据所述输入数据和所述完整权重系数计算梯度信息;
本实施例中,训练装置中的每个加速器根据输入数据和步骤1202中得到的完整权重系数计算梯度信息,其中,多个加速器的输入数据各自不同。
具体地,训练装置中的多个加速器所形成的数据并行的系统架构中,每个加速器中可以预先创建神经网络训练模型,在一次迭代训练过程中,步骤1202得到完整的权重系数之后,使用该完整的权重系数和不同的输入数据作为神经网络模型的输入,进行神经网络模型的训练,具体的训练过程可以参考前述图2和图3的实现过程,此后,神经网络模型的输出为该梯度信息。
1204、根据所述多个加速器的梯度信息计算目标梯度;
本实施例中,训练装置中的每个加速器根据步骤1203计算得到的梯度信息计算目标梯度,其中,该目标梯度用于更新步骤1201中各个加速器中所存储的部分权重系数以完成迭代过程。
在一种具体的实现方式中,在步骤1204中,训练装置中的该每个加速器在根据该多个加速器的梯度信息计算目标梯度时,具体可以根据该多个加速器的梯度信息通过集合通信方式中的减少分散(ReduceScatter)操作计算该目标梯度,其中,ReduceScatter的实现过程可以参考前述图7的实现过程,此处不再赘述。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的ReduceScatter操作计算得到目标梯度,本实现方式了计算得到该目标梯度的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。此外,在步骤1204的执行过程中,除了使用集合通信方式实现之外,多个加速器之间也可以通过与CPU之间的交互实现目标梯度的获取,多个加速器之间也可以通过其它的通信方式实现目标梯度的获取,此处不做限定。
1205、存储优化器中部分初始变量;
本实施例中,训练装置中包括多个加速器,每个加速器在步骤1205中存储优化器的部分初始变量,其中,训练装置中的多个加速器各自存储的部分初始变量组成该优化器的完整初始变量。
在一种具体的实现方式中,该训练装置中的每个加速器在步骤1205中,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,其中,该优化器用于更新该神经网络模型的权重系数。具体来说,在神经网络模型的训练过程中,在第一次训练迭代的时候需要执行该优化器的初始变量初始化的操作,其中,该初始化操作可以指定在第一加速器中执行,该第一加速器为训练装置中多个加速器中的任意一个,经过初始变量的初始化的操作之后,该第一加速器可以得到优化器的完整初始变量。此后,该第一加速器将优化器的完整初始变量进行切分后发送至训练装置中的多个加速器中,实现完整权重系数的分布式存储,也就是说,只需要在多个加速器中的任意一个执行优化器的初始变量的初始化操作即可,可以节省训练装置中其它加速器的运算消耗。
此外,该第一加速器还可以将优化器的完整初始变量进行均等切分后发送至训练装置中的多个加速器中,从而,在步骤1205中,各个加速器中所存储的部分权重系数包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完全初始变量根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分初始变量,在后续的模型训练过程中,各个加速器使用均分后的初始变量参与模型训练,使得训练装置中不同加速器的处理进度保持同步。
1206、根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度;
本实施例中,训练装置中的每个加速器根据步骤1205中所存储的部分初始变量处理步骤1204中计算得到的目标梯度和步骤1201中所存储的部分权重系数以得到处理后的目标梯度。
具体来说,在步骤1204计算得到目标梯度之后,可以对该目标梯度进行优化调整,其中调整的策略即优化器(optimizer)有很多,基本的例如随机梯度下降,就是得到目标梯度之后只进行简单乘以预设的学习率之后对各个加速器中所存储的权重系数进行调整,目前使用较广泛有两种优化器,一种是对初始变量的操作为按元素(element-wise)操作,当初始变量拆分到各个加速器后,各个加速器之间无需进行通信即可完成计算,例如Adam优化器、momentum优化器、RMSprop优化器、AdaMax优化器、Adagrad优化器等;另一种是对初始变量进行矢量(vector)运算包括(矩阵或者向量操作等),这样的优化器在初始变量计算的时候需要插入额外的运算过程完成计算,例如Lars优化器。
对于按元素(element-wise)操作这一类的优化器来说,此类优化器中的操作都是按位操作,不需要矩阵的部分和累加之类的操作,各个加速器在步骤1206的操作可以在本地得到的目标梯度上直接作优化运算;
对于存在矢量运算操作这一类的优化器来说,此类优化器中的操作需要进行矩阵或者向量等矢量运算的操作,这样的优化器在计算的时候需要完整的梯度参与,由于目标梯度是分散在各个加速器上的,各个加速器在步骤1206的操作时就需要加入额外的集合通信来保证计算的正确性。下面将对这一类的优化器的实现过程进行详细的描述:
具体来说,在步骤1206中,如果该优化器包括矢量运算,则训练装置中的每个加速器在根据该部分初始变量处理该目标梯度和该部分权重系数以得到处理后的目标梯度时,具体可以计算该目标梯度的标量表示;再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;此后,每个加速器根据该求和结果计算该目标梯度的矢量表示;再进一步根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度。其中,如果该优化器中包括适量运算(例如矩阵运算、向量运算或者是其它的矢量运算等)时,在计算的时候需要完整的梯度参与,由于目标梯度是分散在每个加速器上,因此,每个加速器使用加速器得到处理后的目标梯度的过程中,每个加速器首先计算该目标梯度的标量表示;再将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果;此后,每个加速器根据该求和结果计算该目标梯度的矢量表示;再进一步根据该部分初始变量处理该目标梯度的矢量表示和该部分权重系数,得到该处理后的目标梯度,本实现方式中,使得方案可以应用于包含有矢量运算的优化器的实现过程中,从而提升方案的可实现性。
示例性的,以图13所示Lars优化器中的数据结构为例,在计算Lars优化器中的norm参数时,各个加速器在步骤1301获取得到的目标梯度为{X0,X1,X2...Xn},其中,Xi为一维或者多维张量,i为1至n中的任一个整数;各个加速器在步骤1206中执行的过程可以是图13中步骤1302对Xi求平方的过程得到{X0 2,X1 2,X2 2...Xn 2},显然,除了求平方的过程还可以有其它的方式可以或得到Xi的矢量表示,还可以是其它方式,例如,求向量的模,求向量的开根值等都可以得到矢量表示,此处不做限定;此后,各个加速器在步骤1303求平方和得到P_S=X0 2+X1 2+X2 2+...+Xn 2;再进一步,各个加速器在步骤1304集合通信的过程,具体可以是根据该参数P_S以及Lars优化器中的其它第一初始变量处理该目标梯度的矢量表示,得到该处理后的目标梯度。
此外,在上述操作中,训练装置中的每个加速器在将该多个加速器中的该目标梯度的标量表示进行汇聚以得到该目标梯度的求和结果时,具体可以将该多个加速器中的该目标梯度的标量表示通过集合通信方式中的减少操作(Allreduce)进行汇聚以得到该目标梯度的求和结果,其中,各个加速器在使用Allreduce通信方式的实现过程具体可以参考前述图4所描述的实现过程,此处不再赘述。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的减少操作(allreduce)得到该目标梯度的求和结果,本实现方式提供了获取该目标梯度的求和结果的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。此外,各个加速器在汇聚得到该目标梯度的求和结果的执行过程中,除了使用集合通信方式实现之外,多个加速器之间也可以通过与CPU之间的交互实现目标梯度的求和结果的获取,多个加速器之间也可以通过其它的通信方式实现目标梯度的求和结果的获取,此处不做限定。
1207、利用所述处理后的目标梯度更新所述部分权重系数,并根据更新后的部分权重系数训练所述神经网络模型。
本实施例中,训练装置中的每个加速器利用步骤1206中得到的处理后的目标梯度更新步骤1201中所存储的部分权重系数,并根据更新后的部分权重系数训练所述神经网络模型。
具体地,在步骤1207中,训练装置中的每个加速器在利用该目标梯度更新该部分权重系数时,具体可以根据步骤1206得到的处理后的目标梯度更新步骤1201中所存储的部分权重系数。其中,使用优化器对神经网络模型的权重系数进行优化处理时,每个加速器可以对该加速器的初始变量进行分布式存储,即每个加速器中存储部分初始变量,每个加速器再使用目标梯度和部分权重系数作为优化器的输入,经过优化器中预设的优化算法进行优化处理得到处理后的目标梯度,再根据该处理后的目标梯度更新每个加速器中所存储的部分权重系数,即在训练装置中的多个加速器中通过分布式存储优化器中的完整初始变量,从而进一步减少神经网络模型训练过程中训练装置的显存消耗。
此外,在一种具体的实现方式中,训练装置中的每个加速器还可以进一步获取该部分权重系数的更新参数,并根据该部分权重系数的更新参数实现对部分权重系数的更新;和/或,每个加速器还用于获取该初始变量的更新参数,并根据该变量的更新参数实现对初始变量的更新;和/或,每个加速器还用于获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,每个加速器还用于获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。其中,可以通过分布式存储神经网络模型训练过程所涉及的目标参数,该目标参数包括部分权重系数和/或初始变量和/或目标梯度和/或处理后的目标梯度等,从而,在该神经网络模型对应的部分权重系数或者是优化器中的初始变量存在更新时,可以在训练装置中的每个加速器中分别对分布式存储的目标参数进行更新,由上述可知,由于完整权重系数和完整初始变量等训练参数是分布式存储的,在神经网络优化更新的步骤,计算可以只针对本地存储的训练参数进行,从而减少现有数据并行方案中的重复计算,减少整体计算量,从而进一步减少训练装置中加速器的显存消耗。
以训练Bert和GPT-2网络为例,Bert网络的参数个数约为1.3G个,训练网络采用Adam优化器,如果采用现有的数据并行方式进行训练,只关注权重参数和优化器中初始变量的占用空间,约为7.8GBytes大小。如果是GPT-2,则有36GBytes大小。而目前市面上大部分GPU卡都是16GBytes显存大小,再加上feature map的大小,很容易出现显存不足而无法训练的情况,GPT-2更是根本无法放下。经过图11和图12所示实施例中,在Bert及GPT-2网络上的显存优化效果与现有技术方案的实现过程相比,结果如表2所示,在有单机8卡集群(即训练装置中包含有8个加速器)的情况下,这一情况就可以得到充分的改善,Bert单卡上只需要消耗0.975GBytes的显存,而GPT-2也只需要4.5GBytes的显存,显著减少神经网络模型训练过程中训练装置的显存消耗。如果机器数量进一步提升,例如32卡(即训练装置中包含有32个加速器)的时候,将会进一步减少神经网络模型训练过程中训练装置的显存消耗。
表2
本实施例中,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的完整权重系数分布式存储于训练装置中的多个加速器中,后续在多个加速器中通过汇聚以得到完整权重系数,此后,使用优化器对神经网络模型的权重系数进行优化处理时,每个加速器可以对该加速器的初始变量进行分布式存储,即每个加速器中存储部分初始变量,每个加速器再使用目标梯度和部分权重系数作为优化器的输入,经过优化器中预设的优化算法进行优化处理得到处理后的目标梯度,再根据该处理后的目标梯度更新每个加速器中所存储的部分权重系数,即在训练装置中的多个加速器中通过分布式存储优化器中的完整初始变量,从而进一步减少神经网络模型训练过程中训练装置的显存消耗。
二、分布式存储优化器的完整初始变量
请参阅图14,本申请实施例中一种神经网络模型的训练方法的另一个实施例包括:
1401、根据输入数据和完整权重系数计算梯度信息;
本实施例中,训练装置中包括多个加速器,每个加速器在步骤1401中根据输入数据和完整权重系数计算梯度信息,其中,训练装置中的多个加速器所形成的数据并行的系统架构中,每个加速器中可以预先创建神经网络训练模型,各个加速器中可以在该神经网络模型进行权重系数初始化操作得到完整权重系数,此外,在步骤1401中,多个加速器各自的输入数据各自不同。
1402、根据所述多个加速器的梯度信息计算目标梯度;
本实施例中,训练装置中的每个加速器根据步骤1401计算得到的梯度信息计算目标梯度,其中,该目标梯度可以用于更新步骤1401中各个加速器中所存储的完整权重系数以完成迭代过程。
在一种具体的实现方式中,在步骤1402中,训练装置中的该每个加速器在根据该多个加速器的梯度信息计算目标梯度时,具体可以根据该多个加速器的梯度信息通过集合通信方式中的减少分散(ReduceScatter)操作计算该目标梯度,其中,ReduceScatter的实现过程可以参考前述图7的实现过程,此处不再赘述。其中,训练装置中的每个加速器可以在多个加速器中通过集合通信方式中的ReduceScatter操作计算得到目标梯度,本实现方式了计算得到该目标梯度的具体实现过程,提升方案的可实现性,从而提高了本方案的实现灵活性。此外,在步骤1402的执行过程中,除了使用集合通信方式实现之外,多个加速器之间也可以通过与CPU之间的交互实现目标梯度的获取,多个加速器之间也可以通过其它的通信方式实现目标梯度的获取,此处不做限定。
1403、存储优化器中部分初始变量;
本实施例中,训练装置中包括多个加速器,每个加速器在步骤1403中存储优化器的部分初始变量,其中,训练装置中的多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,优化器用于更新神经网络模型的权重系数。
在一种具体的实现方式中,该训练装置中的每个加速器在步骤1403中,该多个加速器各自存储的部分初始变量组成该优化器的完整初始变量,其中,该优化器用于更新该神经网络模型的权重系数。具体来说,在神经网络模型的训练过程中,在第一次训练迭代的时候需要执行该优化器的初始变量初始化的操作,其中,该初始化操作可以指定在第一加速器中执行,该第一加速器为训练装置中多个加速器中的任意一个,经过初始变量的初始化的操作之后,该第一加速器可以得到优化器的完整初始变量。此后,该第一加速器将优化器的完整初始变量进行切分后发送至训练装置中的多个加速器中,实现完整权重系数的分布式存储,也就是说,只需要在多个加速器中的任意一个执行优化器的初始变量的初始化操作即可,可以节省训练装置中其它加速器的运算消耗。
此外,该第一加速器还可以将优化器的完整初始变量进行均等切分后发送至训练装置中的多个加速器中,从而,在步骤1403中,各个加速器中所存储的部分权重系数包括将该完整初始变量均分后一一分配至该多个加速器的初始变量。其中,在神经网络模型的训练过程中,训练装置中的多个加速器的处理能力一般是相同或者接近相同的,因此可以将完全初始变量根据多个加速器的数量均分,均分后一一分配至该多个加速器,使得每个加速器分布式存储均分后的部分初始变量,在后续的模型训练过程中,各个加速器使用均分后的初始变量参与模型训练,使得训练装置中不同加速器的处理进度保持同步。
1404、根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度;
本实施例中,训练装置中的每个加速器根据步骤1403中所存储的部分初始变量处理步骤1402中计算得到的目标梯度和步部分权重系数以得到处理后的目标梯度,其中,多个加速器各自处理的部分权重系数组成步骤1401中的完整权重系数。
具体来说,在步骤1204计算得到目标梯度之后,可以对该目标梯度进行优化调整,其中调整的策略即优化器(optimizer)有很多,基本的例如随机梯度下降,就是得到目标梯度之后只进行简单乘以预设的学习率之后对各个加速器中所存储的权重系数进行调整,目前使用较广泛有两种优化器,一种是对初始变量的操作为按元素(element-wise)操作,当初始变量拆分到各个加速器后,各个加速器之间无需进行通信即可完成计算,例如Adam优化器、momentum优化器、RMSprop优化器、AdaMax优化器、Adagrad优化器等;另一种是对初始变量进行矢量(vector)运算包括(矩阵或者向量操作等),这样的优化器在初始变量计算的时候需要插入额外的运算过程完成计算,例如Lars优化器。具体这两种优化器的实现过程可以参考前述步骤1206的实现过程,此处不再赘述。
1405、根据所述处理后的目标梯度更新所述完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。
本实施例中,训练装置中的每个加速器根据步骤1404中得到的处理后的目标梯度更新步骤1401中各个加速器中预存的完整权重系数,得到更新后的完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。其中,由步骤1401可知,各个加速器中梯度信息的数据量对应于完整权重系数的数据量,由步骤1402和步骤1403可知,目标梯度的数据量对应于部分权重系数的数据量,因此,在步骤1404中,训练装置中的各个加速器实现的是对完整权重系数的部分更新。
具体地,训练装置中的多个加速器所形成的数据并行的系统架构中,每个加速器中可以预先创建神经网络训练模型,在一次迭代训练过程中,步骤1401得到完整的权重系数之后,使用该完整的权重系数和不同的输入数据作为神经网络模型的输入,进行神经网络模型的训练,具体的训练过程可以参考前述图2和图3的实现过程,此后,神经网络模型的输出为梯度信息,此后可以使用该梯度信息更新各个加速器上所存储的权重系数(可以是步骤1401中的完整权重系数或者是步骤1404中得到的部分权重系数),完成一次迭代训练过程。该训练装置中的多个加速器可以多次执行步骤1401至步骤1405,以实现神经网络模型的多次迭代,最终得到较优的解。
此外,训练装置中的每个加速器还就可以进一步获取该完整权重系数的更新参数,并根据该完整权重系数的更新参数实现对完整权重系数的更新;和/或,每个加速器还用于获取该初始变量的更新参数,并根据该初始变量的更新参数实现对初始变量的更新;和/或,每个加速器还用于获取该目标梯度的更新参数,并根据该目标梯度的更新参数实现对目标梯度的更新;和/或,每个加速器还用于获取该处理后的目标梯度的更新参数,并根据该处理后的目标梯度的更新参数实现对目标梯度的更新。其中,可以通过分布式存储神经网络模型训练过程所涉及的目标参数,该目标参数包括完整权重系数和/或初始变量和/或目标梯度和/或处理后的目标梯度等,从而,在该神经网络模型对应的部分权重系数或者是优化器中的初始变量存在更新时,可以在训练装置中的每个加速器中分别对分布式存储的目标参数进行更新,从而进一步减少训练装置中加速器的显存消耗。
本实施例中,在训练装置使用多个加速器训练神经网络模型的并行处理的过程中,将神经网络模型中的优化器的完全初始变量分布式存储于训练装置中的多个加速器中,每个加速器再根据该部分初始变量处理该目标梯度和部分权重系数以得到处理后的目标梯度,此后,每个加速器再进一步根据该处理后的目标梯度更新该完整权重系数,并根据更新后的完整权重系数训练该神经网络模型,即在训练装置中的多个加速器中通过分布式存储优化器的完整初始权重,从而减少神经网络模型训练过程中训练装置的显存消耗。
在图1至图14所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。
具体请参阅图15,图15为本申请实施例提供的训练装置1500的一种结构示意图,其中,该训练装置1500包括多个加速器,在每个加速器中具体包括:
存储单元1501,用于存储部分权重系数,所述多个加速器各自存储的所述部分权重系数组成完整权重系数;
汇聚单元1502,用于将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
训练单元1503,用于根据输入数据和所述完整权重系数训练神经网络模型,其中,所述多个加速器的输入数据各自不同。
在一种可能的设计中,所述训练单元1503具体用于:
根据所述输入数据和所述完整权重系数计算梯度信息;
根据所述多个加速器的梯度信息计算目标梯度;
利用所述目标梯度更新所述部分权重系数,并根据更新后的部分权重系数训练所述神经网络模型。
在一种可能的设计中,所述存储单元1501还用于:
存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新所述神经网络模型的权重系数;
所述训练单元1503具体用于:
根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度;
根据所述处理后的目标梯度更新所述部分权重系数。
在一种可能的设计中,所述优化器包括矢量运算,所述训练单元1503具体用于:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
在一种可能的设计中,所述训练单元1503具体用于:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
在一种可能的设计中,所述部分权重系数包括将所述完整权重系数均分后一一分配至所述多个加速器的权重系数。
在一种可能的设计中,所述汇聚单元1502具体用于:
将所述多个加速器中分别存储的所述部分权重系数通过集合通信方式中的收集操作进行汇聚以得到所述完整权重系数。
在一种可能的设计中,所述训练单元1503具体用于:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
在一种可能的设计中,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
需要说明的是,训练装置1500中各模块/单元之间的信息交互、执行过程等内容,与本申请前述图11和图12所示实施例基于同一构思,具体内容可参见本申请前述所示的实施例中的叙述,此处不再赘述。
具体请参阅图16,图16为本申请实施例提供的训练装置1600的另一种结构示意图,其中,该训练装置1600包括多个加速器,在每个加速器中具体包括:
计算单元1601,用于根据输入数据和完整权重系数计算梯度信息,其中,所述多个加速器的输入数据各自不同;
所述计算单元1601,还用于根据所述多个加速器的梯度信息计算目标梯度;
存储单元1602,用于存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新神经网络模型的权重系数;
处理单元1603,用于根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度,所述多个加速器各自处理的所述部分权重系数组成所述完整权重系数;
更新单元1604,用于根据所述处理后的目标梯度更新所述完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。
在一种可能的设计中,所述优化器包括矢量运算,所述处理单元1603具体用于:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
在一种可能的设计中,所述处理单元1603具体用于:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
在一种可能的设计中,所述计算单元1601具体用于:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
在一种可能的设计中,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
需要说明的是,训练装置1600中各模块/单元之间的信息交互、执行过程等内容,与本申请中图14对应的实施例基于同一构思,具体内容可参见本申请前述所示的实施例中的叙述,此处不再赘述。
本申请实施例还提供了一种训练装置,请参阅图17,图17是本申请实施例提供的训练装置的一种结构示意图,训练装置1700上可以部署有图15对应实施例中所描述的神经网络的训练装置1500,用于实现图11及图12对应实施例中训练装置的功能,或者,训练装置1700上可以部署有图16对应实施例中所描述的神经网络的训练装置1600,用于实现图14对应实施例中训练装置的功能。具体的,训练装置1700由一个或多个训练装置实现,训练装置1700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1722(例如,一个或一个以上处理器)和存储器1732,一个或一个以上存储应用程序1742或数据1744的存储介质1730(例如一个或一个以上海量存储设备)。其中,存储器1732和存储介质1730可以是短暂存储或持久存储。存储在存储介质1730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练装置中的一系列指令操作。更进一步地,中央处理器1722可以设置为与存储介质1730通信,在训练装置1700上执行存储介质1730中的一系列指令操作。但应当理解,图17中示出的训练装置仅为训练装置的一种示例,训练装置1700内部也可以不包括存储器1732和存储介质1730,而是在训练装置1700之外配置有外挂式存储器,也即存储器1732和存储介质1730与中央处理器1722可以为相互独立的设备,作为示例,例如车载训练装置中就采用的是外挂式存储器。
训练装置1700还可以包括一个或一个以上电源1726,一个或一个以上有线或无线网络接口1750,一个或一个以上输入输出接口1758,和/或,一个或一个以上操作系统1741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
本申请实施例中,中央处理器1722,用于执行图3对应实施例中的训练装置执行的神经网络的获取方法,或者,用于执行图17对应实施例中训练装置执行的神经网络的获取方法。需要说明的是,对于中央处理器1722执行神经网络的获取方法的具体实现方式,均可以参考图3以及图17对应的各个方法实施例中的叙述,此处不再一一赘述。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图11及图12所示实施例描述的方法中训练装置所执行的步骤,或者,使得计算机执行如前述图14所示实施例描述的方法中训练装置所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述图11及图12所示实施例描述的方法中训练装置所执行的步骤,或者,使得计算机执行如前述图14所示实施例描述的方法中训练装置所执行的步骤。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CLU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (32)
1.一种神经网络模型的训练装置,其特征在于,所述训练装置包括多个加速器,每个加速器用于:
存储部分权重系数,所述多个加速器各自存储的所述部分权重系数组成完整权重系数;
将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
根据输入数据和所述完整权重系数训练神经网络模型,其中,所述多个加速器的输入数据各自不同。
2.根据权利要求1所述的训练装置,其特征在于,所述每个加速器在根据输入数据和所述完整权重系数训练所述神经网络模型时,具体用于:
根据所述输入数据和所述完整权重系数计算梯度信息;
根据所述多个加速器的梯度信息计算目标梯度;
利用所述目标梯度更新所述部分权重系数,并根据更新后的部分权重系数训练所述神经网络模型。
3.根据权利要求2所述的训练装置,其特征在于,所述每个加速器用于:
存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新所述神经网络模型的权重系数;
所述每个加速器在利用所述目标梯度更新所述部分权重系数时,具体用于:
根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度;
根据所述处理后的目标梯度更新所述部分权重系数。
4.根据权利要求3所述的训练装置,其特征在于,所述优化器包括矢量运算,所述每个加速器在根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度时,具体用于:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
5.根据权利要求4所述的训练装置,其特征在于,所述每个加速器在将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果时,具体用于:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
6.根据权利要求1至5任一项所述的训练装置,其特征在于,所述部分权重系数包括将所述完整权重系数均分后一一分配至所述多个加速器的权重系数。
7.根据权利要求1至5任一项所述的训练装置,其特征在于,所述每个加速器在将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数时,具体用于:
将所述多个加速器中分别存储的所述部分权重系数通过集合通信方式中的收集操作进行汇聚以得到所述完整权重系数。
8.根据权利要求2至5任一项所述的训练装置,其特征在于,所述每个加速器在根据所述多个加速器的梯度信息计算目标梯度时,具体用于:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
9.根据权利要求3或4所述的训练装置,其特征在于,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
10.一种神经网络模型的训练装置,其特征在于,所述训练装置包括多个加速器,每个加速器用于:
根据输入数据和完整权重系数计算梯度信息,其中,所述多个加速器的输入数据各自不同;
根据所述多个加速器的梯度信息计算目标梯度;
存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新神经网络模型的权重系数;
根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度,所述多个加速器各自处理的所述部分权重系数组成所述完整权重系数;
根据所述处理后的目标梯度更新所述完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。
11.根据权利要求10所述的训练装置,其特征在于,所述优化器包括矢量运算,所述每个加速器在根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度时,具体用于:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
12.根据权利要求11所述的训练装置,其特征在于,所述每个加速器在将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果时,具体用于:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
13.根据权利要求10至12任一项所述的训练装置,其特征在于,所述每个加速器在根据所述多个加速器的梯度信息计算目标梯度时,具体用于:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
14.根据权利要求10至12任一项所述的训练装置,其特征在于,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
15.一种神经网络模型的训练方法,其特征在于,所述训练方法应用于多个加速器,所述多个加速器包含于训练装置,所述方法包括:
存储部分权重系数,所述多个加速器各自存储的所述部分权重系数组成完整权重系数;
将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
根据输入数据和所述完整权重系数训练神经网络模型,其中,所述多个加速器的输入数据各自不同。
16.根据权利要求15所述的训练方法,其特征在于,所述根据输入数据和所述完整权重系数训练所述神经网络模型包括:
根据所述输入数据和所述完整权重系数计算梯度信息;
根据所述多个加速器的梯度信息计算目标梯度;
利用所述目标梯度更新所述部分权重系数,并根据更新后的部分权重系数训练所述神经网络模型。
17.根据权利要求16所述的训练方法,其特征在于,所述方法还包括:
存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新所述神经网络模型的权重系数;
所述利用所述目标梯度更新所述部分权重系数包括:
根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度;
根据所述处理后的目标梯度更新所述部分权重系数。
18.根据权利要求17所述的训练方法,其特征在于,所述优化器包括矢量运算,所述根据所述部分初始变量处理所述目标梯度和所述部分权重系数以得到处理后的目标梯度包括:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
19.根据权利要求18所述的训练方法,其特征在于,所述将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果包括:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
20.根据权利要求15至19任一项所述的训练方法,其特征在于,所述部分权重系数包括将所述完整权重系数均分后一一分配至所述多个加速器的权重系数。
21.根据权利要求15至19任一项所述的训练方法,其特征在于,所述将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数包括:
将所述多个加速器中分别存储的所述部分权重系数通过集合通信方式中的收集操作进行汇聚以得到所述完整权重系数。
22.根据权利要求16至19任一项所述的训练方法,其特征在于,所述根据所述多个加速器的梯度信息计算目标梯度包括:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
23.根据权利要求17或18所述的训练方法,其特征在于,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
24.一种神经网络模型的训练方法,其特征在于,所述训练方法应用于多个加速器,所述多个加速器包含于训练装置,所述方法包括:
根据输入数据和完整权重系数计算梯度信息,其中,所述多个加速器的输入数据各自不同;
根据所述多个加速器的梯度信息计算目标梯度;
存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新神经网络模型的权重系数;
根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度,所述多个加速器各自处理的所述部分权重系数组成所述完整权重系数;
根据所述处理后的目标梯度更新所述完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。
25.根据权利要求24所述的训练方法,其特征在于,所述优化器包括矢量运算,所述根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度包括:
计算所述目标梯度的标量表示;
将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果;
根据所述求和结果计算所述目标梯度的矢量表示;
根据所述部分初始变量处理所述目标梯度的矢量表示和所述部分权重系数,得到所述处理后的目标梯度。
26.根据权利要求25所述的训练方法,其特征在于,所述将所述多个加速器中的所述目标梯度的标量表示进行汇聚以得到所述目标梯度的求和结果包括:
将所述多个加速器中的所述目标梯度的标量表示通过集合通信方式中的减少操作进行汇聚以得到所述目标梯度的求和结果。
27.根据权利要求24至26任一项所述的训练方法,其特征在于,所述根据所述多个加速器的梯度信息计算目标梯度包括:
根据所述多个加速器的梯度信息通过集合通信方式中的减少分散操作计算所述目标梯度。
28.根据权利要求24至26任一项所述的训练方法,其特征在于,所述部分初始变量包括将所述完整初始变量均分后一一分配至所述多个加速器的初始变量。
29.一种神经网络模型的训练装置,其特征在于,所述训练装置包括多个加速器,每个加速器包括:
存储单元,用于存储部分权重系数,所述多个加速器各自存储的所述部分权重系数组成完整权重系数;
汇聚单元,用于将所述多个加速器中分别存储的所述部分权重系数进行汇聚以得到所述完整权重系数;
训练单元,用于根据输入数据和所述完整权重系数训练神经网络模型,其中,所述多个加速器的输入数据各自不同。
30.一种神经网络模型的训练装置,其特征在于,所述训练装置包括多个加速器,每个加速器包括:
计算单元,用于根据输入数据和完整权重系数计算梯度信息,其中,所述多个加速器的输入数据各自不同;
所述计算单元,还用于根据所述多个加速器的梯度信息计算目标梯度;
存储单元,用于存储优化器中部分初始变量,所述多个加速器各自存储的部分初始变量组成所述优化器的完整初始变量,所述优化器用于更新神经网络模型的权重系数;
处理单元,用于根据所述部分初始变量处理所述目标梯度和部分权重系数以得到处理后的目标梯度,所述多个加速器各自处理的所述部分权重系数组成所述完整权重系数;
更新单元,用于根据所述处理后的目标梯度更新所述完整权重系数,并根据更新后的完整权重系数训练所述神经网络模型。
31.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求15至23任一项所述的方法,或者,所述程序指令当被处理器执行时使所述处理器执行如权利要求24至28任一项所述的方法。
32.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求15至23中任一项所述的方法,或者,以执行权利要求24至28任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010441573.3A CN113705801A (zh) | 2020-05-22 | 2020-05-22 | 一种神经网络模型的训练装置、方法及相关设备 |
PCT/CN2021/080784 WO2021232907A1 (zh) | 2020-05-22 | 2021-03-15 | 一种神经网络模型的训练装置、方法及相关设备 |
EP21809852.3A EP4148624A4 (en) | 2020-05-22 | 2021-03-15 | NEURAL NETWORK MODEL TRAINING APPARATUS AND METHOD, AND RELATED DEVICE |
US17/991,683 US20230087642A1 (en) | 2020-05-22 | 2022-11-21 | Training apparatus and method for neural network model, and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010441573.3A CN113705801A (zh) | 2020-05-22 | 2020-05-22 | 一种神经网络模型的训练装置、方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113705801A true CN113705801A (zh) | 2021-11-26 |
Family
ID=78646367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010441573.3A Pending CN113705801A (zh) | 2020-05-22 | 2020-05-22 | 一种神经网络模型的训练装置、方法及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230087642A1 (zh) |
EP (1) | EP4148624A4 (zh) |
CN (1) | CN113705801A (zh) |
WO (1) | WO2021232907A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115314397A (zh) * | 2022-08-05 | 2022-11-08 | 中科计算技术西部研究院 | 用于分布式训练的网络模拟方法、系统、装置及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754060B (zh) * | 2017-11-06 | 2023-08-25 | 阿里巴巴集团控股有限公司 | 一种神经网络机器学习模型的训练方法及装置 |
US11270201B2 (en) * | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
US11315013B2 (en) * | 2018-04-23 | 2022-04-26 | EMC IP Holding Company LLC | Implementing parameter server in networking infrastructure for high-performance computing |
EP3640856A1 (en) * | 2018-10-19 | 2020-04-22 | Fujitsu Limited | A method, apparatus and computer program to carry out a training procedure in a convolutional neural network |
CN109919313B (zh) * | 2019-01-31 | 2021-06-08 | 华为技术有限公司 | 一种梯度传输的方法及分布式训练系统 |
-
2020
- 2020-05-22 CN CN202010441573.3A patent/CN113705801A/zh active Pending
-
2021
- 2021-03-15 EP EP21809852.3A patent/EP4148624A4/en active Pending
- 2021-03-15 WO PCT/CN2021/080784 patent/WO2021232907A1/zh unknown
-
2022
- 2022-11-21 US US17/991,683 patent/US20230087642A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115314397A (zh) * | 2022-08-05 | 2022-11-08 | 中科计算技术西部研究院 | 用于分布式训练的网络模拟方法、系统、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4148624A1 (en) | 2023-03-15 |
WO2021232907A1 (zh) | 2021-11-25 |
US20230087642A1 (en) | 2023-03-23 |
EP4148624A4 (en) | 2023-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021190127A1 (zh) | 一种数据处理方法和数据处理设备 | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
EP3788559A1 (en) | Quantization for dnn accelerators | |
EP3889846A1 (en) | Deep learning model training method and system | |
CN114503125A (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
US20190311266A1 (en) | Device and method for artificial neural network operation | |
Tanaka et al. | Automatic graph partitioning for very large-scale deep learning | |
CN108170861B (zh) | 一种基于动态规划的分布式数据库系统协同优化方法 | |
CN114581868A (zh) | 基于模型通道剪枝的图像分析方法和装置 | |
CN115437795A (zh) | 一种异构gpu集群负载感知的显存重计算优化方法及系统 | |
CN116263681A (zh) | 移动边缘计算任务卸载方法、装置、设备及存储介质 | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
CN108509179B (zh) | 用于检测人脸的方法、用于生成模型的装置 | |
CN113705801A (zh) | 一种神经网络模型的训练装置、方法及相关设备 | |
CN112789627A (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
TW202145078A (zh) | 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體 | |
CN117035045A (zh) | 模型参数更新方法、装置、设备、存储介质和程序产品 | |
US20220114479A1 (en) | Systems and methods for automatic mixed-precision quantization search | |
CN110782017B (zh) | 用于自适应调整学习率的方法和装置 | |
CN113238975A (zh) | 优化深度神经网络的参数的内存、集成电路及板卡 | |
US20200104207A1 (en) | Data processing apparatus and method | |
CN116472538A (zh) | 用于量化神经网络的方法和系统 | |
CN113112400A (zh) | 一种模型训练方法及模型训练装置 | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
CN113761934B (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 |