本技术涉及计算机,特别是涉及一种多设备训练参数更新方法、装置、计算机设备和存储介质。
背景技术:
1、分布式深度学习是指将深度学习模型的训练和推断过程分布在多个计算节点上进行,并通过通信和同步机制来协调节点之间的计算和参数更新。分布式深度学习的基本原理是将大规模数据划分为多个子集,每个子集由一个或多个计算节点处理,然后通过参数传递和模型同步来整合各个节点的计算结果。
2、传统技术中,由于单个设备能够承载的模型参数和数据有限,利用多设备并行处理是很重要的技术,其中ddp(distributed data parallel,分布式数据并行),即分布式数据并行就是最常用的一种多设备并行方式。这是一种在模块级别实现数据并行性的方法,多数的深度学习框架都集成该方法。其通过通信集合来同步梯度、参数和缓冲区。在一个进程中,ddp将输入模块复制到指定的设备上,相应地按批次维度分别投入模型,并将输出收集到输出设备,在进程之间,ddp在前向传递中插入必要的参数同步,在后向传递中插入梯度同步。用户需要将进程映射到可用资源上,只要进程不共享设备即可。更近一步的,zero并行策略则将ddp中的每个进程都会复制的模型状态冗余进一步去除,zero有三个不同级别,分别对应对模型状态不同程度的分割:zero-1仅分割优化器状态;zero-2分割优化器状态与梯度;zero-3分割优化器状态、梯度与参数。使用zero后,各个进程之后只保存完整状态的1/gpu数,互不重叠,不再存在冗余。
3、然而,上述的传统方法,在分布式数据并行(ddp)方案中,优化器的冗余计算是一个显著的缺陷。由于ddp要求每个进程都保留一份完整的模型副本,包括模型参数和优化器状态,这导致了大量的冗余存储和计算。并且,由于zero的特殊并行切分方式,它与ddp的并行策略不兼容,限制了其在现有深度学习训练框架中的泛用性。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够解决参数冗余计算并且提升性能的多设备训练参数更新方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种多设备训练参数更新方法,包括:
3、基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组;
4、根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值;
5、根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果;
6、当所述训练评估结果为达到训练结束条件时,结束更新训练并且将当前更新后参数设定为目标训练参数。
7、在其中一个实施例中,所述基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组,包括:
8、根据所述预设进程映射关系对所有所述启动后进程进行划分操作,获得多个通信组;
9、基于预设负载均衡算法和所述通信组的数量对所述当前训练参数进行分割,获得多份分割后参数;
10、基于多份所述分割后参数对所述当前训练参数对应的优化器状态进行分割,获得多份分割后优化器状态;
11、将一份所述分割后参数及其对应的所述分割后优化器状态设定为一个切分后训练参数组。
12、在其中一个实施例中,所述基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组,还包括:
13、基于启动后进程的数量对所述训练数据进行切分,获得多个数据组。
14、在其中一个实施例中,所述根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值,包括:
15、在每个启动后进程中,基于所述预设数据处理算法对所述启动后进程对应的数据组进行数据处理,获得当前进程梯度;
16、在主节点中,基于预设聚合函数对所有所述当前进程梯度进行聚合,获得当前全局梯度;
17、在每个所述启动后进程中,基于所述当前全局梯度对每个所述启动后进程对应的所述切分后训练参数组进行参数更新,获得更新后切分参数组;
18、在所述主节点中,基于所述预设聚合函数对所有所述更新后切分参数组中更新后参数进行聚合,获得更新后训练参数;
19、对上一次训练计数值进行更新,获得当前训练计数值。
20、在其中一个实施例中,所述在每个所述启动后进程中,基于所述当前全局梯度对每个所述启动后进程对应的所述切分后训练参数组进行参数更新,获得更新后训练参数组,包括:
21、在每个所述启动后进程中,基于所述当前全局梯度对所述切分后训练参数组中每份切分后参数及其对应的优化器参数进行更新,获得多份更新后参数及其对应的更新后优化器参数;
22、将多份更新后参数及其对应的更新后优化器参数设定为一个更新后切分参数组。
23、在其中一个实施例中,所述根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果,包括:
24、根据包含所述当前更新后参数的模型对所述验证数据进行精确验证,获得验证精确数值;
25、将所述验证精确数值与预设验证阈值进行比较,获得验证比较结果;
26、当所述验证比较结果为验证精确数值小于预设验证阈值时,将所述当前训练计数值与预设训练次数进行比较,获得次数比较结果;
27、当所述次数比较结果为当前训练计数值小于预设训练次数时,对当前更新后参数执行下一次更新训练,以及将所述训练评估结果设定为未达到训练结束条件。
28、在其中一个实施例中,所述根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果,还包括:
29、当所述验证比较结果为验证精确数值大于等于预设验证阈值时,将所述训练评估结果设定为达到训练结束条件;
30、或者
31、当所述次数比较结果为当前训练计数值大于等于预设训练次数时,将所述训练评估结果设定为达到训练结束条件。
32、第二方面,本技术还提供了一种多设备训练参数更新装置,包括:
33、数据切分模块,用于基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组;
34、参数更新模块,用于根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值;
35、训练评估模块,用于根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果;
36、结果输出模块,用于当所述训练评估结果为达到训练结束条件时,结束更新训练并且将当前更新后参数设定为目标训练参数。
37、第三方面,本技术还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
38、基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组;
39、根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值;
40、根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果;
41、当所述训练评估结果为达到训练结束条件时,结束更新训练并且将当前更新后参数设定为目标训练参数。
42、第四方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
43、基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组;
44、根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值;
45、根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果;
46、当所述训练评估结果为达到训练结束条件时,结束更新训练并且将当前更新后参数设定为目标训练参数。
47、第五方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
48、基于启动后进程的数量和预设进程映射关系对当前训练参数和训练数据进行切分,获得多个切分后训练参数组和多个数据组;
49、根据预设数据处理算法对每个所述切分后训练参数组进行更新训练,获得当前更新后参数以及当前训练计数值;
50、根据预设训练阈值、所述当前更新后参数、所述当前训练计数值和验证数据对更新训练结果进行评估,获得训练评估结果;
51、当所述训练评估结果为达到训练结束条件时,结束更新训练并且将当前更新后参数设定为目标训练参数。
52、上述多设备训练参数更新方法、装置、计算机设备、存储介质和计算机程序产品,按照启动后进程的数量对训练参数以及训练数据切分处理,并且基于预设进程映射关系对训练参数进行进一步分割,然后通过分布式数据并行处理过程结合每个启动后进程对分割后训练参数进行更新,以得到更新后训练参数,通过每个启动后进程只对部分参数进行计算更新,避免了对训练参数更新时调用大量冗余存储和计算资源,以节省参数更新的计算时间,并且保持了更新训练参数的精确性。