CN114841309A - 数据处理方法、装置以及电子设备 - Google Patents
数据处理方法、装置以及电子设备 Download PDFInfo
- Publication number
- CN114841309A CN114841309A CN202210310537.2A CN202210310537A CN114841309A CN 114841309 A CN114841309 A CN 114841309A CN 202210310537 A CN202210310537 A CN 202210310537A CN 114841309 A CN114841309 A CN 114841309A
- Authority
- CN
- China
- Prior art keywords
- training
- neural network
- network model
- segmented
- segmentation
- 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/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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本申请提供数据处理方法、装置、电子设备以及计算机存储介质,由于在本申请中,先基于可用训练资源与初始训练参数对神经网络模型进行初始分割,通过初始分割结果对神经网络模型进行预训练,通过预训练结果以确定是否对神经网络模型进行重新分割,采用这种方式能够使得对神经网络模型的分割方案与可用训练资源以及神经网络模型更加匹配,使得后续训练的神经网络模型有好的表现。
Description
技术领域
本申请涉及计算机技术领域,具体涉及数据处理方法,本申请还涉及与数据处理方法对应的装置、电子设备以及计算机存储介质。
背景技术
深度神经网络模型是机器学习(ML,即:Machine Learning)领域中一种技术。神经网络是识别一组数据中潜在关系的一系列算法。神经网络可以适应不断变化的输入,生成最佳结果,无需重新设计输出标准。在某种程度上,这些神经网络类似生物神经元的系统。在当今,深度神经网络模型的应用越来越为广泛,在利用深度神经网络模型对数据进行分析之前,一般需要对深度神经网络模型进行训练。
因此,在深度神经网络模型领域中,如何对深度神经网络模型进行训练使得深度神经网络模型能够有好的表现成为亟需解决的技术问题。
发明内容
本申请提供一种数据处理方法,用以解决如何对深度神经网络模型进行训练使得深度神经网络模型能够有好的表现的技术问题。本申请还提供一种数据处理装置、另外一种数据处理方法、电子设备以及计算机存储介质。
本申请提供一种数据处理方法,包括:
确定训练神经网络模型的可用训练资源与初始训练参数;
根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果;
基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,获得预训练结果;
根据所述预训练结果,确定是否需要对所述神经网络模型进行重新分割,如果是,则对所述神经网络模型进行重新分割,直至获得满足对所述神经网络模型进行训练的分割结果。
可选的,所述确定训练神经网络模型的可用训练资源,包括:
确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图;
采用最小割递归排序算法对所述网络拓扑结构图进行分析,获得所述网络拓扑结构图中的多个训练设备的排序;
基于所述多个训练设备的排序,确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源。
可选的,所述初始训练参数包括:用于表示训练神经网络模型的样本数据被分割的分割信息;
所述根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述初始训练参数包括:用于表示神经网络模型被分割的初始分割数量;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述根据所述预训练结果确定是否需要对所述神经网络模型进行重新分割,包括:
判断所述预训练结果中的分割后的神经网络模型对应的分割数量是否小于神经网络模型的层数。
可选的,所述对所述神经网络模型进行重新分割,包括:
将所述预训练结果中的分割后的神经网络模型对应的分割数量的数目加1作为所述初始分割数量,以返回执行基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的步骤。
可选的,所述基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,包括:
基于所述分割后的神经网络模型与所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长;
判断所述当前训练时长是否小于预先设置的最小训练时长,若是,则将所述最小训练时长更新为所述当前训练时长;
获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息;
基于所述当前训练时长对应的分割后的神经网络模型以及所述当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型训练预先指定轮数。
可选的,还包括:获得神经网络模型的每层在训练设备上的层训练时长;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述层训练时长,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述分割信息包括用于表示所述样本数据被分割后的分割样本数据的大小信息;
所述获得神经网络模型的每层在训练设备上的层训练时长,包括:
基于所述分割样本数据的大小信息,以模型并行的方式训练神经网络模型指定的次数,获得所述神经网络模型每层前向传播与反向传播的时长,将所述神经网络模型每层前向传播与反向传播的时长作为所述层训练时长。
可选的,所述用于表示训练神经网络模型的样本数据被分割的分割信息包括:用于表示所述样本数据被分割后的分割样本数据的大小信息以及所述分割样本数据的序号信息;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述分割样本数据的大小信息以及所述分割样本数据的序号信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型;
基于所述多个训练设备的排序与所述用于表示所述神经网络模型被分割的分割后的神经网络模型,获得所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图,包括:
将系统中的训练设备作为节点、将训练设备之间的通信带宽作为节点之间边的权重,确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图。
本申请另外提供一种数据处理方法,包括:
获得用户通过客户端设置的训练神经网络模型初始训练参数及训练精度要求;
确定训练神经网络模型的可用训练资源;
根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果;
基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,获得预训练结果;
根据所述预训练结果,确定是否需要对所述神经网络模型进行重新分割,如果是,则对所述神经网络模型进行重新分割,直至获得满足对所述神经网络模型进行训练的分割结果;
基于所述分割结果对所述神经网络模型进行分割,并将分割的片段部署到分布式计算节点进行训练,获得满足用户要求的目标神经网络模型;
将目标神经网络模型返回至客户端。
本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储计算机程序,该计算机程序被处理器运行,执行数据处理方法。
本申请还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,该计算机程序被处理器运行,执行数据处理方法。
与现有技术相比,本申请实施例具有以下优点:
本申请提供一种数据处理方法,包括:确定训练神经网络模型的可用训练资源与初始训练参数;根据训练资源与初始训练参数,对神经网络模型进行初始分割,获得神经网络模型的初始分割结果;基于神经网络模型的初始分割结果,对神经网络模型进行预训练,获得预训练结果;根据预训练结果,确定是否需要对神经网络模型进行重新分割,如果是,则对神经网络模型进行重新分割,直至获得满足对神经网络模型进行训练的分割结果。由于在本申请中,先基于可用训练资源与初始训练参数对神经网络模型进行初始分割,通过初始分割结果对神经网络模型进行预训练,通过预训练结果以确定是否对神经网络模型进行重新分割,采用这种方式实际上是不断优化对神经网络模型进行分割的分割方案,能够使得对神经网络模型的分割方案与可用训练资源以及神经网络模型更加匹配,使得后续训练的神经网络模型有好的表现。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为深度学习模型的不同训练方式的示意图;
图1B为深度学习模型的流水并行训练方式的第一示意图;
图1C为深度学习模型的流水并行训练方式的第二示意图;
图1为本申请第一实施例提供的数据处理方法的流程图;
图2为本申请第二实施例提供的数据处理装置的示意图;
图3为本申请第四实施例提供的电子设备示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请提供数据处理方法、装置、电子设备以及计算机存储介质。以下通过具体的实施例分别介绍数据处理方法、装置、电子设备以及计算机存储介质。
为了便于理解本申请提供的数据处理方法,以下对本申请的数据处理方法涉及的术语进行初步解释。
本申请数据处理方法主要用在神经网络模型进行训练的场景中。本申请的数据处理方法主要用于介绍如何将模型进行分割,以后续将被分割的模型片段分配到各个训练设备上进行训练,当然,在实际训练过程中,也可以将训练的样本片段分配到各个训练设备上进行训练。
深度学习分布式训练:使用多个计算设备(计算设备即为训练设备)或计算节点对深度学习模型(深度学习模型即为深度神经网络模型)进行并行化计算加速的训练方法。
模型并行:深度学习分布式训练的一种并行方式,其主要是用于将模型结构拆分到多个计算节点或计算设备上的并行方法。
数据并行:深度学习分布式训练的一种并行方式,其主要是用于将整个模型完整复制到多个计算节点或计算设备上,但每个计算节点或计算设备读取不同数据的并行方法。
深度学习算子:指深度学习模型的基本计算粒度,有些是数学操作或逻辑操作(例如,加、减、乘、除操作,以及与、或、非和异或操作),有些是向量或矩阵的其他基本操作(例如,矩阵乘法)。
张量:即Tensor,是深度学习模型计算使用的基本数据结构,为多维向量。这主要是对于数据,一般需要转化为多维向量来处理。例如一个分辨率为256*256的图像,可以转换为一个256*256*3维向量处理,其中256*256为像素个数,而3为每个像素的颜色有红绿蓝构成。
张量维度:其为数学概念,具体指张量的某个维度。
张量拆分:将一个张量按照某一个或某几个维度进行拆分成为多个张量的操作。
算子切分:其为模型并行的一种特殊形式,可以指因做了张量拆分而导致深度学习算子的拆分。通常在拆分后,单个算子变成多个算子表示,这个拆分过程必须保证和拆分前后的数学计算具有等价性。拆分后,多个算子和张量将放在不同的计算设备或计算节点上。
流水并行:模型并行的一种特殊形式,可以指将深度学习模型的各个部分拆分到不同的计算设备或计算节点上,从而使单组数据在多个计算设备或计算节点前后依次计算,不同组数据间并行的并行方式。单组数据是通过将一个批量平均分为多个微批量的方式。
模型并行与流水并行的区别主要有两点:第一,模型并行直接输入一个样本批量训练;而流水并行是将该样本批量均分成多个微批量,依次输入包含多个训练设备的系统中进行训练。第二,流水并行中一个模型片段可以被放在多个设备上训练,而模型并行中每个模型片段仅放在一个设备上进行训练。
图1A为深度学习模型的不同训练方式的示意图。其展示了一个模型在三个计算设备(分别为GPU1、GPU2以及GPU3)上以不同并行方式训练的方式,其中,一个批量被切分成了三个微批量。
分布式策略自动探索:指自动探索适合硬件拓扑和当前模型特点的分布式训练方式的过程。最终探索的训练方式可以包括数据并行,模型并行,流水并行或两种或者两种以上的组合形式。
分布式机器学习旨在利用多台计算设备实现大型深度学习神经网络训练。常见的分布式机器学习方法包括数据并行,模型并行和流水并行。数据并行是将整个数据集(可以是指样本集)划分给多个训练设备(例如,GPU)。每个训练设备在自己的训练集中训练并在全面训练设备各自训练完一个样本批量后同步神经网络参数。模型并行将整个深度神经网络模型划分到各个训练设备上,每个训练设备上的模型片段包含原模型连续的多层,每个训练样本批量的训练依次经过每个训练设备上的模型片段进行计算,先前向传播再反向传播。
流水并行将数据并行与模型并行结合,将模型划分到多个计算设备上。与模型并行不同的是,每个模型片段可以被复制到多个设备上,在训练中以数据并行的方式处理该片段。同时,流水并行经一步将每个样本批量分成等大小的微批量,然后按顺序将每个微批量加入到训练过程中,这样可以让不同的训练设备同时处理不同的微批量,提高系统计算资源利用率。为了保证模型训练的收敛性和准确率,同步流水线会在属于同一个批量的全部微批量训练完时在流水线中插入同步墙,确保整个流水并行训练的结果等效于直接基于该批量训练的结果。
图1B与图1C分别为深度学习模型的流水并行训练方式的第一与第二示意图。一个深度学习模型被切分成3个模型片段,分别放在4个GPU(计算设备)上。其中,第二个片段被同时放在GPU 2和GPU 3上。其调度方式如图1C,其中,由于第二个模型片段同时在GPU2和GPU 3上以数据并行的方式计算,最后需要通过AllReduce算子同步参数。
本申请的数据处理方法可以基于训练设备的网络拓扑结构以及神经网络模型的特点探索适合训练神经网络模型的方式。
第一实施例
本申请第一实施例提供一种数据处理方法,以下结合图1进行说明。
请参照图1,其为本申请第一实施例提供的数据处理方法的流程图。
本申请实施例的数据处理方法,包括如下步骤:
步骤S101:确定训练神经网络模型的可用训练资源与初始训练参数。
确定训练神经网络模型的可用训练资源可以是确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源。作为确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源的一种方式,可以是指:首先,确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图;之后,采用最小割递归排序算法对网络拓扑结构图进行分析,获得网络拓扑结构图中的多个训练设备的排序;最终,基于多个训练设备的排序,确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源。
在本实施例中,作为确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图的一种实施方式:将系统中的训练设备作为节点、将训练设备之间的通信带宽作为节点之间边的权重,确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图。
在本实施例中,作为采用最小割递归排序算法对网络拓扑结构图进行分析,获得网络拓扑结构图中的多个训练设备的排序的一种实施方式:判断网络拓扑结构图中是否只有一个节点,如果否,采用最小割递归排序算法对网络拓扑结构图进行分析,获得网络拓扑结构图中的多个训练设备的排序。
该步骤获得的多个训练设备的排序,可以充分利用高带宽的设备间连接(GPU间的NVLink),减少后续设计训练方案中的通信时间。
上述可用训练资源包括以下至少一种资源:训练设备的处理器、训练设备的内部存储空间大小、训练设备之间的通信方式。例如,计算设备的CPU、内存,各个计算设备之间用于通信的连接方式。
在本实施例中,初始训练参数可以是用户在客户端指定的一些用于对神经网络模型进行预训练的训练参数。预训练是对神经网络模型正式训练之前的训练过程。本申请的预训练过程目的是获得合适的训练参数,以及获得合适的对神经网络模型进行分割的分割结果。
上述初始训练参数可以包括:用于表示训练神经网络模型的样本数据被分割的分割信息、用于表示神经网络模型被分割的初始分割数量等。
步骤S102:根据训练资源与初始训练参数,对神经网络模型进行初始分割,获得神经网络模型的初始分割结果。
作为根据训练资源与初始训练参数,对神经网络模型进行初始分割,获得神经网络模型的初始分割结果的一种方式,可以是指:
基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
具体地,作为基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的一种实施方式:采用递归排序算法对多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息进行分析,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
在本实施例中,作为基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的一种实施方式:基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、用于表示神经网络模型被分割的初始分割数量,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。例如,初始分割数量可以是1。
在本实施例中,还可以基于以下方式基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。具体地,首先,获得神经网络模型的每层在训练设备上的层训练时长;之后,基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、层训练时长,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
在本实施例中,分割信息包括用于表示样本数据被分割后的分割样本数据的大小信息;因此,作为获得神经网络模型的每层在训练设备上的层训练时长,可以是指:基于分割样本数据的大小信息,以模型并行的方式训练神经网络模型指定的次数,获得神经网络模型每层前向传播与反向传播的时长,将神经网络模型每层前向传播与反向传播的时长作为层训练时长。
另外,在本实施例中,用于表示训练神经网络模型的样本数据被分割的分割信息包括:用于表示样本数据被分割后的分割样本数据的大小信息以及分割样本数据的序号信息。因此,作为基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,可以是:首先,基于分割样本数据的大小信息以及分割样本数据的序号信息,获得用于表示神经网络模型被分割的分割后的神经网络模型;之后,基于多个训练设备的排序与用于表示神经网络模型被分割的分割后的神经网络模型,获得分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
步骤S103:基于神经网络模型的初始分割结果,对神经网络模型进行预训练,获得预训练结果。
作为基于神经网络模型的初始分割结果,对神经网络模型进行预训练,可以是指:
首先,基于分割后的神经网络模型与分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长。
之后,判断当前训练时长是否小于预先设置的最小训练时长,若是,则将最小训练时长更新为当前训练时长。
再之后,获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
最终,基于当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型训练预先指定轮数。
基于神经网络模型的初始分割结果,对神经网络模型进行预训练,包括:
基于分割后的神经网络模型与分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长;
判断当前训练时长是否小于预先设置的最小训练时长,若是,则将最小训练时长更新为当前训练时长;
获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息;
基于当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型训练预先指定轮数。
步骤S104:根据预训练结果,确定是否需要对神经网络模型进行重新分割,如果是,则对神经网络模型进行重新分割,直至获得满足对神经网络模型进行训练的分割结果。
具体地,上述根据预训练结果确定是否需要对神经网络模型进行重新分割,可以是指:判断预训练结果中的分割后的神经网络模型对应的分割数量是否小于神经网络模型的层数。
如果需要对神经网络模型进行重新分割,作为对神经网络模型进行重新分割,可以是指:将预训练结果中的分割后的神经网络模型对应的分割数量的数目加1作为初始分割数量,以返回执行基于多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、初始分割数量,获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的步骤。
在本实施例中,实际上上述方法是基于动态方式规划深度神经网络模型切分与设备部署,可以通过如下方式实现动态方式规划深度神经网络模型切分与设备部署。
首先,获得用于表示神经网络模型被分割的分割数量。
之后,判断分割数量是否小于神经网络模型的层数。若是,则将分割数量的数目加1,并返回执行获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的步骤。
作为基于分割后的神经网络模型与分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型进行训练的一种实施方式,可以是指:
首先,基于分割后的神经网络模型与分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长。
之后,判断当前训练时长是否小于预先设置的最小训练时长,若是,则将最小训练时长更新为当前训练时长。
再之后,获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
最终,基于当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用多个训练设备对神经网络模型训练预先指定轮数。
实际上,在本实施例中,需要对深度神经网络训练时间采样,具体为:用户给定微批量大小micro_batch_size及单个批量切分的微批量数字num_micro_batch以及一个L层深度神经网络。即可基于采样的方式获取基于用户给定micro_batch_size条件下深度神经网络每层在计算设备上的计算时间(即为层训练时长)exec_time。获取网络每层在计算设备上的exec_time[l],用于做模型切分和设备部署。
在获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息时,会遍历多个分割方案。对于每个分割方案,需要实际训练模型来决策某个方案实际训练时间如何。num_trial_iteration(预先指定测试轮数)即为测试训练多少轮来评判当前方案训练时间如何。数值上,num_trial_iteration应远小于num_training_iteration。Num_training_iteration是实际训练需要的总的训练轮数,即为全部训练轮数(Num_training_iteration为预先指定轮数)。
微批量大小即为上述的用于表示样本数据被分割后的分割样本数据的大小,微批量数字即为分割样本数据的序号。
深度神经网络训练时间采样步骤具体包括:首先,采用微批量大小micro_batch_size,以模型并行的方式训练深度神经网络profile_time次,其中,profile_time为用户指定参数。在实际中,需要实际跑几次模型,来记录每层在当前训练设备上的运行时间。这个跑的轮数由profile_time决定,因为这个profile只是一次性的,所以profile_time可以比num_trial_iteration数量大一些,从而保证统计运行时间的准确性,作为后续网络切分和设备部署的基础。网络切分和设备部署即为获得用于表示神经网络模型被分割的分割后的神经网络模型以及分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
之后,统计profile_time次训练中,深度神经网络每层前向传播以及反向传播的总体时间,以及模型每连续两层间传输的数据量。exec_time[l]记录第l层的训练时间,data[l,l+1]记录层l和层l+1间数据通信量。
采用最小割递归排序算法对所述网络拓扑结构图进行分析,获得所述网络拓扑结构图中的多个训练设备的排序,实际上是计算设备排序的步骤,具体地,计算设备排序步骤基于递归方法设计,令recursive_device_ordering(device_graph,low_rank,high_rank)表示计算设备排序步骤对应的函数。其中,device_graph为基于当前系统中全部计算设备抽象出的有向无环图,图中节点为训练设备,每两个节点之间均有边,边的权重为该对节点间最小通信带宽。例如,同类型服务器GPU间的边权重为机内带宽PCIE或NVLink,不同类型服务器GPU间边权重为网络带宽。最小割算法的核心为:输入一个图,将这个图分割为两个独立图,使分割中切割的边(这些边连接着被分割后的两个图)的权重之和最小。利用这个特点,将节点间通信带宽作为边的权重,保证每次分割的边都是带宽相对小的边。
该步骤主要是初始化num_stage_all,即模型全部切分数,该数应该介于1和模型层数之间。通过遍历1到模型层数,决定最佳的切分数字。
具体地,上述构造当前系统训练设备间的图device_graph,设置low_rank为1,high_rank为当前系统中训练设备总数。之后,执行recursive_device_ordering(device_graph,low_rank,high_rank)。recursive_device_ordering(device_graph,low_rank,high_rank)。
执行recursive_device_ordering(device_graph,low_rank,high_rank)。recursive_device_ordering(device_graph,low_rank,high_rank)的具体过程包括:
若device_graph中仅存在一个训练设备节点,设置device_order[low_rank]为该训练设备的id。
否则,对当前device_graph做最小割,获得两个图graph_1和graph_2。设置low_rank_1为low_rank,high_rank_1为low_rank_1加上graph_1中节点数减1;low_rank_2为low_rank_1加上graph_1中节点数,high_rank_2为high_rank;之后,执行recursive_device_ordering(graph_1,low_rank_1,high_rank_1);并执行recursive_device_ordering(graph_2,low_rank_2,high_rank_2)。
上述步骤S103实际上为深度神经网络模型切分与设备部署的步骤,该步骤实际上是基于递归方法设计,令pipeline_partition_replication_mapping(device_graph,device_order,num_remain_layer,num_remain_stage,num_remain_GPU,num_last_stage_replica)表示深度神经网络模型切分与设备部署步骤对应的函数。其表示将深度神经网络中前1到num_remain_layer层分成num_remain_stage个片段,放在num_remain_GPU个GPU上,且其中最后一个模型片段在num_last_stage_replica个GPU上以数据并行方式训练。具体过程如下:
首先,用户定义初始最小单个模型片段训练全部微批量的时间或两个连续模型片段间全部微批量通信时间中最大值的最小值min_time。初始最小单个模型片段训练全部微批量的时间实质就是任意一个模型切片的训练全部微批量的时间,两个连续模型片段间全部微批量通信时间是指任意两个模型切片间通信的全部时间。
以图1C为例,就是模型片段1上执行三个微批量的前向后向(不包括中间空闲时间)全部时间,模型片段2执行三个微批量的全部时间(即GPU2或GPU3中任意一个(因为这俩个同时执行)执行全部三个微批量的计算加上AllReduce算子的时间),模型片段3计算全部时间,与模型片段1和2间全部通信时间,模型片段2和3间通信全部时间,以上5个时间中最大的值。这里因为要找一个最小值,所以可以初始化这个min_time为INF,其中,INF为用户自定义的大数值,超出系统计算中可能出现的数字量。
初始化num_remain_layer为当前网络全部层数L,初始化num_remain_stage为当前num_stage_all,初始化num_remain_GPU为当前系统中全部训练设备数,初始化num_last_stage_replica为1。上述通信时间主要是指即两个连续网络切片在训练过程中需要传输数据的传输时间。例如,图1C中箭头对应的部分传输的时间即为通信时间。
之后,执行pipeline_partition_replication_mapping(device_graph,device_order,num_remain_layer,num_remain_stage,num_remain_GPU,num_last_stage_replica),返回值为全部单个模型片段训练全部微批量的时间最大值与任意两个连续模型片段间全部微批量通信时间的最大值中较大的一个max_single_stage_time,以及device_placement和stage_set。Stage_set存储了神经网络划分的结果。神经网络划分成num_stage_all个模型片段,其中stage_set[i]表示第i个模型片段包含的网络层号。例如,一个6层的神经网络被切分成了3个模型片段,有stage_set[1]=[1,2],stage_set[2]=[3,4],stage_set[3]=[5,6]。
若max_single_stage_time小于min_time,则设置min_time为max_single_stage_time,记录当前的device_placement和stage_set。
若num_last_stage_replica小于当前系统中全部训练设备数,则num_last_stage_replica加1,继续执行pipeline_partition_replication_mapping(device_graph,device_order,num_remain_layer,num_remain_stage,num_remain_GPU,num_last_stage_replica),返回值为全部单个模型片段训练全部微批量的时间最大值与任意两个连续模型片段间全部微批量通信时间的最大值中较大的一个max_single_stage_time,以及device_placement和stage_set;否则返回实现最小max_single_stage_time的device_placement和stage_set。
上述执行pipeline_partition_replication_mapping(device_graph,device_order,num_remain_layer,num_remain_stage,num_remain_GPU,num_last_stage_replica),返回值为全部单个模型片段训练全部微批量的时间最大值与任意两个连续模型片段间全部微批量通信时间的最大值中较大的一个max_single_stage_time,以及device_placement和stage_set的步骤中,pipeline_partition_replication_mapping(device_graph,device_order,num_remain_layer,num_remain_stage,num_remain_GPU,num_last_stage_replica)具体包括以下步骤。
首先,若num_remain_layer或num_remain_GPU小于num_remain_stage,设置max_single_stage_time为INF,device_placement和stage_set为空,返回;否则,若num_remain_stage为1,且num_last_stage_replica等于num_remain_GPU,则按如下方式计算max_single_stage_time:
其中,M为num_micro_batch,pi为exec_time[i],n为num_remain_GPU,l为num_remain_layer。AllReduce1,l(1,n)为将深度神经网络层1到l作为一个stage,部署在device_order[1]到device_order[n]GPU上采用AllReduce通信的时间,其计算方式如下:
其中l1,l2分别为深度神经网络的该模型片段的起始与终止层,n1,n2为该模型片段部署在从device_order[n1]到device_order[n2]个训练设备上。k为n2-n1+1,αi为第i层深度神经网络参数的大小,bmin为从device_order[n1]到device_order[n2]全部训练设备间最小通信带宽。计算完max_single_stage_time后,设置stage_set[1]为[1,2,…,num_remain_layer],和device_placement[1]为[device_order[1],…,device_order[n]]。返回;否则,若num_remain_stage为1或者num_last_stage_replica等于num_remain_GPU,设置max_single_stage_time为INF,device_placement和stage_set为空,返回;否则,设置min_max_time为INF。
之后,初始化current_num_remain_layer为1,current_num_last_stage_replica为1。
再之后,处理子问题,调用pipeline_partition_replication_mapping(device_graph,device_order,current_num_remain_layer,num_remain_stage–1,num_remain_GPU-num_last_stage_replica,current_num_last_stage_replica),获取返回值current_max_single_stage_time,device_placement和stage_set。计算子问题中最后一个模型片段和目前处理的模型片段间通信时间comm_time。具体地,comm_time通过以下公式计算获得:
这个部分采用动态规划的算法,通过反复递归调用pipeline_partition_replication_mapping()得到最优解。这里子问题即递归调用pipeline_partition_replication_mapping()计算将current_num_remain_layer切分成num_remain_stage-1个模型片段,放在num_remain_GPU-num_last_stage_replica个GPU上,且最后一个模型片段部署在current_num_last_stage_replica个GPU上的最优部署情况。
其中,dl′,l′+1为data[current_num_remain_layer,current_num_remain_layer+1],为rnum_remain_layer,r′为current_num_remain_layer,bstage_min为从device_order[num_remain_GPU-num_last_stage_replica-current_num_remain_layer+1]至device_order[num_remain_GPU-num_last_stage_replica]的全部训练设备和device_order[num_remain_GPU-num_last_stage_replica+1]至device_order[num_remain_GPU]的全部训练设备间两两带宽的最小值。同时,计算当前current_num_remain_layer+1层到num_remain_layer层为一个模型片段,放在device_order[num_remain_GPU-num_last_stage_replica+1]至device_order[num_remain_GPU]训练设备上的计算时间comp_time。具体地,comp_time通过以下计算公式获得:
其中,l′为current_num_remain_layer。令temp_max为current_max_single_stage_time,comm_time和comp_time三者间的最大值。
之后,若min_max_time大于temp_max,置min_max_time为temp_max,stage_set[num_remain_stage]为[current_num_remain_layer+1,…,num_remain_layer],和device_placement[num_remain_stage]为[device_order[num_remain_GPU-num_last_stage_replica+1],…,device_order[num_remain_GPU]]。
再之后,若current_num_last_stage_replica小于num_remain_GPU-num_last_stage_replica,则current_num_last_stage_replica自加1,继续执行若min_max_time大于temp_max,设置min_max_time为temp_max,stage_set[num_remain_stage]为[current_num_remain_layer+1,…,num_remain_layer],和device_placement[num_remain_stage]为[device_order[num_remain_GPU-num_last_stage_replica+1],…,device_order[num_remain_GPU]]。否则,current_num_last_stage_replica重置为1,若current_num_remain_layer小于num_remain_layer-1,则current_num_remain_layer自加1;否则,返回当前min_max_time,stage_set和device_placement。
在一个训练轮中,决策出每一个模型片段上训练每个微批量前向传播与后向传播的顺序:队列stage_execution_order[s]表示第s个模型片段执行顺序的有序列表,例如:若num_micro_batch=2,一种顺序为stage_execution_order[s]=[[1,F],[2,F],[1,B],[2,B]],其中[m,F]([m,B])表示执行第m个微批量的前向传播(后向传播)训练。
之后,按照上述过程计算出的stage_execution_order执行训练,训练给定轮数。
上述过程决策出单个训练轮中每一个模型片段上训练每个微批量前向传播与后向传播的顺序的具体步骤如下:其中,用num_stage表示当前深度神经网络被切分的网络片段数量。
首先,初始化stage_available_micro_batch,其中的每个元素代表一个网络片段可以处理但尚未处理的全部网络片段。其中,stage_available_micro_batch[1]初始化为[[1,F],…,[num_micro_batch,F]],即一开始可以执行全部微批量在第一个网络片段的前向计算。其余stage_available_micro_batch[2]到stage_available_micro_batch[num_stage]初始化为空。
之后,初始化辅助数组interstage_comm_available_micro_batch每个元素为空。每个元素interstage_comm_available_micro_batch[s,s+1]为一个队列,表示当前可以执行的第s个网络和第s+1个网络切片的通信。同样用[m,F]([m,B])表示执行第m个微批量的前向传播(后向传播)中的数据传输。辅助数组为一个中间临时变量(不会出现在函数最后的输出中),其中每个元素都是一个队列(满足其中数据先进先出的特点)。其中一个元素interstage_comm_available_micro_batch[s,s+1]表示当前可以执行的第s个网络和第s+1个网络切片的通信编号。
再之后,初始化stage_execution_order为空。
再之后,按s从1到num_stage的顺序遍历stage_available_micro_batch[s]。对当前stage_available_micro_batch[s],选择一个元素[m,F](若有),则将其移出stage_available_micro_batch[s],加入到stage_execution_order[s]中;之后,选择一个元素[m,B](若有),则将其移出stage_available_micro_batch[s],加入到stage_execution_order[s]中。
之后,按s从1到num_stage-1的顺序遍历interstage_comm_available_micro_batch[s,s+1]。对当前interstage_comm_available_micro_batch[s,s+1],选择一个元素[m,F](若有),则将其移出interstage_comm_available_micro_batch[s,s+1];之后,选择一个元素[m,B](若有),则将其移出interstage_comm_available_micro_batch[s,s+1]。
之后,按s从1到num_stage的顺序遍历,若在stage_available_micro_batch[s]中有元素[m,F]被移除,且s不等于num_stage,则将[m,F]加入到interstage_comm_available_micro_batch[s,s+1]中;若在stage_available_micro_batch[s]中有元素[m,B]被移除,且s不等于1,则将[m,B]加入到interstage_comm_available_micro_batch[s-1,s]中。
之后,按s从1到num_stage-1的顺序遍历,若在interstage_comm_available_micro_batch[s,s+1]中有元素[m,F]被移除,则将[m,F]加入到stage_available_micro_batch[s+1]中,若s为num_stage-1,则再将[m,B]加入到stage_available_micro_batch[s+1]中;若在interstage_comm_available_micro_batch[s,s+1]中有元素[m,B]被移除,则将[m,B]加入到stage_available_micro_batch[s-1]中。
若还有微批量m在任何网络片段s上的执行顺序[m,B]未加入到stage_available_micro_batch[s]中,继续执行按s从1到num_stage的顺序遍历stage_available_micro_batch[s]。对当前stage_available_micro_batch[s],选择一个元素[m,F](若有),则将其移出stage_available_micro_batch[s],加入到stage_execution_order[s]中;之后,选择一个元素[m,B](若有),则将其移出stage_available_micro_batch[s],加入到stage_execution_order[s]中。否则,对于每个分配了多个训练设备的网络片段s,在stage_available_micro_batch[s]加入[AllReduce]表示在该片段数据并行训练最后用AllReduce同步参数。
由于在本申请中,先基于可用训练资源与初始训练参数对神经网络模型进行初始分割,通过初始分割结果对神经网络模型进行预训练,通过预训练结果以确定是否对神经网络模型进行重新分割,采用这种方式能够使得对神经网络模型的分割方案与可用训练资源以及神经网络模型更加匹配,使得后续训练的神经网络模型有好的表现。进一步地,由于在本申请中,针对用于对神经网络模型进行训练的训练设备的网络拓扑结构图,采用最小割递归排序算法对网络拓扑结构图进行分析,获得网络拓扑结构图中的多个训练设备的排序,基于最小割递归排序算法,可以充分利用由训练设备组成的系统中的网络带宽,减少训练中的通信开销。同时,该方法不必要求训练设备的网络环境必须为同构的,对训练的网络环境的要求不严格。
第二实施例
与本申请第一实施例提供的数据处理相对应的,本申请第二实施例还提供一种数据处理装置。由于装置实施例基本相似于第一实施例,所以描述得比较简单,相关之处参见第一实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
请参照图2,其为本申请第二实施例提供的数据处理装置的示意图。
该数据处理装置,包括:
资源与参数确定单元201,用于确定训练神经网络模型的可用训练资源与初始训练参数;
初始分割单元202,用于根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果;
预训练结果获得单元203,用于基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,获得预训练结果;
重新分割单元204,用于根据所述预训练结果,确定是否需要对所述神经网络模型进行重新分割,如果是,则对所述神经网络模型进行重新分割,直至获得满足对所述神经网络模型进行训练的分割结果。
可选的,所述资源与参数确定单元,具体用于:
确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图;
采用最小割递归排序算法对所述网络拓扑结构图进行分析,获得所述网络拓扑结构图中的多个训练设备的排序;
基于所述多个训练设备的排序,确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源。
可选的,所述初始训练参数包括:用于表示训练神经网络模型的样本数据被分割的分割信息;
所述初始分割单元,具体用于:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述初始训练参数包括:用于表示神经网络模型被分割的初始分割数量;
所述初始分割单元,具体用于:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述重新分割单元,具体用于:
判断所述预训练结果中的分割后的神经网络模型对应的分割数量是否小于神经网络模型的层数。
可选的,所述重新分割单元,具体用于:
将所述预训练结果中的分割后的神经网络模型对应的分割数量的数目加1作为所述初始分割数量,以返回执行基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的步骤。
可选的,所述预训练结果获得单元,具体用于:
基于所述分割后的神经网络模型与所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长;
判断所述当前训练时长是否小于预先设置的最小训练时长,若是,则将所述最小训练时长更新为所述当前训练时长;
获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息;
基于所述当前训练时长对应的分割后的神经网络模型以及所述当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型训练预先指定轮数。
可选的,还包括:层训练时长获得单元,具体用于:获得神经网络模型的每层在训练设备上的层训练时长;
所述初始分割单元,具体用于:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述层训练时长,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述分割信息包括用于表示所述样本数据被分割后的分割样本数据的大小信息;
所述层训练时长获得单元,具体用于:
基于所述分割样本数据的大小信息,以模型并行的方式训练神经网络模型指定的次数,获得所述神经网络模型每层前向传播与反向传播的时长,将所述神经网络模型每层前向传播与反向传播的时长作为所述层训练时长。
可选的,所述用于表示训练神经网络模型的样本数据被分割的分割信息包括:用于表示所述样本数据被分割后的分割样本数据的大小信息以及所述分割样本数据的序号信息;
所述初始分割单元,具体用于:
基于所述分割样本数据的大小信息以及所述分割样本数据的序号信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型;
基于所述多个训练设备的排序与所述用于表示所述神经网络模型被分割的分割后的神经网络模型,获得所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
可选的,所述资源与参数确定单元,具体用于:
将系统中的训练设备作为节点、将训练设备之间的通信带宽作为节点之间边的权重,确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图。
第三实施例
与本申请第一实施例提供的数据处理相对应的,本申请第二实施例还提供另外一种数据处理方法。该实施例为第一实施例的应用场景的实施例,该实施例中,用户可以通过客户端设置训练神经网络模型初始训练参数,客户端可以将初始训练参数提供给服务端,以供服务端获得满足对神经网络模型进行训练的分割结果,服务端最终将获得的满足对神经网络模型进行训练的分割结果提供给客户端。由于该方法实施例基本相似于第一实施例,所以描述得比较简单,相关之处参见第一实施例的部分说明即可。下述描述的实施例仅仅是示意性的。
本实施例提供一种数据处理方法,包括:
首先,获得用户通过客户端设置的训练神经网络模型初始训练参数及训练精度要求。
在该实施例中,用户可以在客户端设置自己想要的训练精度要求。例如,有的用户想要训练较为精密的神经网络模型,有的用户可能对训练精度要求没那么高。这些训练精度要求用户可以在客户端填写为参数的形式,并且可以以参数的形式通过客户端传递给服务端。
之后,确定训练神经网络模型的可用训练资源。
再之后,根据训练资源与初始训练参数,对神经网络模型进行初始分割,获得神经网络模型的初始分割结果。
在获得初始分割结果后,基于神经网络模型的初始分割结果,对神经网络模型进行预训练,获得预训练结果。
在获得预训练结果之后,即可根据预训练结果,确定是否需要对神经网络模型进行重新分割,如果是,则对神经网络模型进行重新分割,直至获得满足对神经网络模型进行训练的分割结果;
最终,基于分割结果对神经网络模型进行分割,并将分割的片段部署到分布式计算节点进行训练,获得满足用户要求的目标神经网络模型;将目标神经网络模型返回至客户端。
在本实施例中,服务端在获得满足对神经网络模型进行训练的分割结果之后,基于分割结果对神经网络模型进行分割,并将分割后的神经网络模型片段部署到各个训练设备上进行训练,直至训练神经网络模型满足训练精度要求为止,将满足训练精度要求的神经网络模型作为满足用户要求的目标神经网络模型,并将目标神经网络模型返回至客户端。
通过该实施例,对于神经网络模型有不同的训练精度要求的用户,均可在客户端设置自己的需求,并最终获得满足自己要求的目标神经网络模型。
第四实施例
与本申请第一实施例的方法相对应的,本申请第四实施例还提供一种电子设备。
如图3所示,图3为本申请第四实施例中提供的一种电子设备的示意图。该电子设备,包括:处理器301;存储器302,用于存储计算机程序,该计算机程序被处理器运行,执行第一实施以及第三实施例的方法。
第五实施例
与本申请第一实施例的方法相对应的,本申请第五实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,该计算机程序被处理器运行,执行第一实施以及第三实施例的方法。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读存储媒体(non-transitorycomputer readable storage media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (14)
1.一种数据处理方法,其特征在于,包括:
确定训练神经网络模型的可用训练资源与初始训练参数;
根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果;
基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,获得预训练结果;
根据所述预训练结果,确定是否需要对所述神经网络模型进行重新分割,如果是,则对所述神经网络模型进行重新分割,直至获得满足对所述神经网络模型进行训练的分割结果。
2.根据权利要求1所述的数据处理方法,其特征在于,所述确定训练神经网络模型的可用训练资源,包括:
确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图;
采用最小割递归排序算法对所述网络拓扑结构图进行分析,获得所述网络拓扑结构图中的多个训练设备的排序;
基于所述多个训练设备的排序,确定用于对神经网络模型进行训练的训练设备中各个训练设备的可用训练资源。
3.根据权利要求2所述的数据处理方法,其特征在于,所述初始训练参数包括:用于表示训练神经网络模型的样本数据被分割的分割信息;
所述根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
4.根据权利要求3所述的数据处理方法,其特征在于,所述初始训练参数包括:用于表示神经网络模型被分割的初始分割数量;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
5.根据权利要求4所述的数据处理方法,其特征在于,所述根据所述预训练结果确定是否需要对所述神经网络模型进行重新分割,包括:
判断所述预训练结果中的分割后的神经网络模型对应的分割数量是否小于神经网络模型的层数。
6.根据权利要求5所述的数据处理方法,其特征在于,所述对所述神经网络模型进行重新分割,包括:
将所述预训练结果中的分割后的神经网络模型对应的分割数量的数目加1作为所述初始分割数量,以返回执行基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述初始分割数量,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息的步骤。
7.根据权利要求3所述的数据处理方法,其特征在于,所述基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,包括:
基于所述分割后的神经网络模型与所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型进行预先指定测试轮数的训练,获得当前训练时长;
判断所述当前训练时长是否小于预先设置的最小训练时长,若是,则将所述最小训练时长更新为所述当前训练时长;
获得当前训练时长对应的分割后的神经网络模型以及当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息;
基于所述当前训练时长对应的分割后的神经网络模型以及所述当前训练时长对应的分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,采用所述多个训练设备对神经网络模型训练预先指定轮数。
8.根据权利要求3所述的数据处理方法,其特征在于,还包括:获得神经网络模型的每层在训练设备上的层训练时长;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息、所述层训练时长,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
9.根据权利要求8所述的数据处理方法,其特征在于,所述分割信息包括用于表示所述样本数据被分割后的分割样本数据的大小信息;
所述获得神经网络模型的每层在训练设备上的层训练时长,包括:
基于所述分割样本数据的大小信息,以模型并行的方式训练神经网络模型指定的次数,获得所述神经网络模型每层前向传播与反向传播的时长,将所述神经网络模型每层前向传播与反向传播的时长作为所述层训练时长。
10.根据权利要求3所述的数据处理方法,其特征在于,所述用于表示训练神经网络模型的样本数据被分割的分割信息包括:用于表示所述样本数据被分割后的分割样本数据的大小信息以及所述分割样本数据的序号信息;
所述基于所述多个训练设备的排序、用于表示训练神经网络模型的样本数据被分割的分割信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型以及所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息,包括:
基于所述分割样本数据的大小信息以及所述分割样本数据的序号信息,获得用于表示所述神经网络模型被分割的分割后的神经网络模型;
基于所述多个训练设备的排序与所述用于表示所述神经网络模型被分割的分割后的神经网络模型,获得所述分割后的神经网络模型中的每个模型片段对应的训练设备的序号信息。
11.根据权利要求2所述的数据处理方法,其特征在于,所述确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图,包括:
将系统中的训练设备作为节点、将训练设备之间的通信带宽作为节点之间边的权重,确定用于对神经网络模型进行训练的训练设备的网络拓扑结构图。
12.一种数据处理方法,其特征在于,包括:
获得用户通过客户端设置的训练神经网络模型初始训练参数及训练精度要求;
确定训练神经网络模型的可用训练资源;
根据所述训练资源与所述初始训练参数,对所述神经网络模型进行初始分割,获得所述神经网络模型的初始分割结果;
基于所述神经网络模型的初始分割结果,对所述神经网络模型进行预训练,获得预训练结果;
根据所述预训练结果,确定是否需要对所述神经网络模型进行重新分割,如果是,则对所述神经网络模型进行重新分割,直至获得满足对所述神经网络模型进行训练的分割结果;
基于所述分割结果对所述神经网络模型进行分割,并将分割的片段部署到分布式计算节点进行训练,获得满足用户要求的目标神经网络模型;
将目标神经网络模型返回至客户端。
13.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储计算机程序,该计算机程序被处理器运行,执行权利要求1-12任意一项所述的方法。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器运行,执行权利要求1-12任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310537.2A CN114841309A (zh) | 2022-03-28 | 2022-03-28 | 数据处理方法、装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310537.2A CN114841309A (zh) | 2022-03-28 | 2022-03-28 | 数据处理方法、装置以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114841309A true CN114841309A (zh) | 2022-08-02 |
Family
ID=82563448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210310537.2A Pending CN114841309A (zh) | 2022-03-28 | 2022-03-28 | 数据处理方法、装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114841309A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN116050499A (zh) * | 2023-04-03 | 2023-05-02 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种模型并行训练中的自适应模型划分方法、系统及设备 |
-
2022
- 2022-03-28 CN CN202210310537.2A patent/CN114841309A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421897A (zh) * | 2022-11-07 | 2022-12-02 | 之江实验室 | 一种面向芯粒的深度神经网络流水线并行调度方法及装置 |
CN116050499A (zh) * | 2023-04-03 | 2023-05-02 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种模型并行训练中的自适应模型划分方法、系统及设备 |
CN116050499B (zh) * | 2023-04-03 | 2023-07-18 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 一种模型并行训练中的自适应模型划分方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220391665A1 (en) | Method for splitting neural network model by using multi-core processor, and related product | |
CN115543639B (zh) | 分布式执行深度学习任务的优化方法和分布式系统 | |
US7660884B2 (en) | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system | |
KR20190086134A (ko) | 인공 신경망을 구성하는 복수의 학습 모델 중 최적 학습 모델 선택 방법 및 장치 | |
CN114841309A (zh) | 数据处理方法、装置以及电子设备 | |
CN109194707B (zh) | 分布式图嵌入的方法及装置 | |
CN113994350A (zh) | 为神经网络生成并行计算方案 | |
CN109033340B (zh) | 一种基于Spark平台的点云K邻域的搜索方法及装置 | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
US20130297609A1 (en) | Providing reconstructed data based on stored aggregate data in response to queries for unavailable data | |
CN114841327A (zh) | 计算图的处理方法、装置、可读介质及电子设备 | |
CN112163601A (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN116893904B (zh) | 神经网络模型的内存管理方法、装置、设备、介质及产品 | |
WO2023134453A1 (zh) | 一种算子的处理方法及计算机设备 | |
CN111008631A (zh) | 图像的关联方法及装置、存储介质和电子装置 | |
CN113449842A (zh) | 一种分布式自动微分方法及相关装置 | |
JP7368623B2 (ja) | 点群処理の方法、コンピュータシステム、プログラム及びコンピュータ可読記憶媒体 | |
US11496775B2 (en) | Neural network model compression with selective structured weight unification | |
US11935271B2 (en) | Neural network model compression with selective structured weight unification | |
KR102326586B1 (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
US20210241111A1 (en) | Shaping a neural network architecture utilizing learnable sampling layers | |
CN117201308A (zh) | 网络资源分配方法、系统、存储介质及电子设备 | |
CN107688582B (zh) | 资源推荐模型的获取方法及装置 | |
CN116227585B (zh) | 集群任务的并行执行方法、装置、计算机设备和存储介质 | |
CN113159312B (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 |