1.一种基于流水线并行的模型训练方法,包括:
根据正常训练顺序对待训练模型进行切分,得到多个子切片;
将正常训练顺序在前的一部分所述子切片划分至第一组中,构成第一子模型,将剩余的所述子切片划分至第二组中,构成第二子模型;
将所述第一子模型包含的子切片分配给不同的工作方,以及将所述第二子模型包含的子切片分配给不同的工作方;
根据调整得到的训练顺序,在被分配了子切片的工作方上为所述子切片分配训练时间块,所述训练顺序包括:针对单轮训练样本,依次执行所述第一子模型本周期的正向传播、所述第一子模型前一周期的反向传播、所述第二子模型本周期的正向传播、所述第二子模型本周期的反向传播;
按照所述训练时间块,在多个所述工作方上对所述待训练模型进行并行训练。
2.如权利要求1所述的方法,所述根据正常训练顺序对待训练模型进行切分,得到多个子切片,具体包括:
获取根据层对待训练模型切分得到的可用于模型并行的多个模型切片;
按照所述切分的方向,将所述模型切片进一步地切分为两个子切片。
3.如权利要求1所述的方法,所述将所述第一子模型包含的子切片分配给不同的工作方,以及将所述第二子模型包含的子切片分配给不同的工作方,具体包括:
确定所述第一子模型所包含的子切片的第一训练顺序,以及所述第二子模型所包含的子切片的第二训练顺序;
将所述第一训练顺序与所述第二训练顺序中,排序相同的子切片分配给同一个工作方,排序不同的子切片分配给不同的工作方。
4.如权利要求1所述的方法,所述训练顺序还包括:
针对多轮训练样本,以连续输入的方式输入所述第一子模型从第一轮开始的若干轮训练样本中对应的正向传播,以间隔单个训练时间块的方式输入剩余的传播,并将所述第二子模型的第一轮反向传播以及后续的传播分配至间隔的所述单个训练时间块中,以形成流水线并行训练。
5.如权利要求4所述的方法,所述在多个所述工作方上对所述待训练模型进行并行训练,具体包括:
在多个所述工作方上,所述多轮训练样本中的所述正向传播后,计算得到相应的梯度结果,并将所述梯度结果进行累积;
根据累积的所述梯度结果,在所述多轮训练样本中的最后一轮训练样本的反向传播时进行权值更新。
6.如权利要求5所述的方法,所述在所述多轮训练样本中的最后一轮训练样本的反向传播时进行权值更新,具体包括:
在所述多轮训练样本中的最后一轮训练样本的反向传播时,根据当前权值版本所对应的权值对所述第二子模型进行权值更新,并根据当前权值版本和前一个权值版本所对应的权值对所述第一子模型进行权值更新。
7.如权利要求1所述的方法,所述在多个所述工作方上对所述待训练模型进行并行训练,具体包括:
在对多个所述工作方中的第一工作方上执行正向传播的过程中,计算运行时激活,使用后在显存中释放所述运行时激活;
在所述第一工作方上执行所述正向传播对应的反向传播时,在等待所述第一工作方的上一个工作方反向传播的梯度结果时,所述第一工作方重新计算所述运行时激活,以用于自己的反向传播过程。
8.如权利要求7所述的方法,所述方法还包括:
确定正常训练时设置的单轮训练样本批次大小;
根据通过释放所述运行时激活得到空闲的显存,尝试增大所述单轮训练样本批次大小;
通过降低所述待训练模型中部分层的浮点数精度以推迟所述工作方的计算单元达到饱和状态的时刻,得到符合预期的单轮训练样本批次大小和浮点数精度。
9.一种基于流水线并行的模型训练装置,包括:
子切片切分模块,根据正常训练顺序对待训练模型进行切分,得到多个子切片;
子模型构成模块,将正常训练顺序在前的一部分所述子切片划分至第一组中,构成第一子模型,将剩余的所述子切片划分至第二组中,构成第二子模型;
子模型分配模块,将所述第一子模型包含的子切片分配给不同的工作方,以及将所述第二子模型包含的子切片分配给不同的工作方;
训练时间块分配模块,根据调整得到的训练顺序,在被分配了子切片的工作方上为所述子切片分配训练时间块,所述训练顺序包括:针对单轮训练样本,依次执行所述第一子模型本周期的正向传播、所述第一子模型前一周期的反向传播、所述第二子模型本周期的正向传播、所述第二子模型本周期的反向传播;
并行训练模块,按照所述训练时间块,在多个所述工作方上对所述待训练模型进行并行训练。
10.如权利要求9所述的装置,所述子切片切分模块,获取根据层对待训练模型切分得到的可用于模型并行的多个模型切片;
按照所述切分的方向,将所述模型切片进一步地切分为两个子切片。
11.如权利要求9所述的装置,所述子模型分配模块,确定所述第一子模型所包含的子切片的第一训练顺序,以及所述第二子模型所包含的子切片的第二训练顺序;
将所述第一训练顺序与所述第二训练顺序中,排序相同的子切片分配给同一个工作方,排序不同的子切片分配给不同的工作方。
12.如权利要求9所述的装置,所述训练顺序还包括:
针对多轮训练样本,以连续输入的方式输入所述第一子模型从第一轮开始的若干轮训练样本中对应的正向传播,以间隔单个训练时间块的方式输入剩余的传播,并将所述第二子模型的第一轮反向传播以及后续的传播分配至间隔的所述单个训练时间块中,以形成流水线并行训练。
13.如权利要求12所述的装置,所述并行训练模块包括梯度累积子模块、权值更新子模块:
所述梯度累积子模块,在多个所述工作方上,所述多轮训练样本中的所述正向传播后,计算得到相应的梯度结果,并将所述梯度结果进行累积;
所述权值更新子模块,根据累积的所述梯度结果,在所述多轮训练样本中的最后一轮训练样本的反向传播时进行权值更新。
14.如权利要求13所述的装置,所述权值更新子模块,在所述多轮训练样本中的最后一轮训练样本的反向传播时,根据当前权值版本所对应的权值对所述第二子模型进行权值更新,并根据当前权值版本和前一个权值版本所对应的权值对所述第一子模型进行权值更新。
15.如权利要求9所述的装置,所述并行训练模块,在对多个所述工作方中的第一工作方上执行正向传播的过程中,计算运行时激活,使用后在显存中释放所述运行时激活;
在所述第一工作方上执行所述正向传播对应的反向传播时,在等待所述第一工作方的上一个工作方反向传播的梯度结果时,所述第一工作方重新计算所述运行时激活,以用于自己的反向传播过程。
16.如权利要求15所述的装置,所述装置还包括:
训练样本批次大小确定模块,确定正常训练时设置的单轮训练样本批次大小;
根据通过释放所述运行时激活得到空闲的显存,尝试增大所述单轮训练样本批次大小;
通过降低所述待训练模型中部分层的浮点数精度以推迟所述工作方的计算单元达到饱和状态的时刻,得到符合预期的单轮训练样本批次大小和浮点数精度。
17.一种基于流水线并行的模型训练设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据正常训练顺序对待训练模型进行切分,得到多个子切片;
将正常训练顺序在前的一部分所述子切片划分至第一组中,构成第一子模型,将剩余的所述子切片划分至第二组中,构成第二子模型;
将所述第一子模型包含的子切片分配给不同的工作方,以及将所述第二子模型包含的子切片分配给不同的工作方;
根据调整得到的训练顺序,在被分配了子切片的工作方上为所述子切片分配训练时间块,所述训练顺序包括:针对单轮训练样本,依次执行所述第一子模型本周期的正向传播、所述第一子模型前一周期的反向传播、所述第二子模型本周期的正向传播、所述第二子模型本周期的反向传播;
按照所述训练时间块,在多个所述工作方上对所述待训练模型进行并行训练。