一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种深度学习模型的训练方法和训练单机与流程

2022-09-03 22:22:06 来源:中国专利 TAG:


1.本发明涉及深度学习技术领域,尤其涉及一种深度学习模型的训练方法和训练单机。


背景技术:

2.深度学习具有学习能力强、覆盖范围广、适应性强、可移植性好的优势,它通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。当前深度学习模型,模型越来越复杂,大规模和超大规模的模型越来越受到推崇,模型的庞大,模型的数据量也必然变大了,如果仅仅在当前有限数据量的应用场景下,深度学习算法不能够对数据的规律进行无偏差的估计。所以为了达到很好的精度,需要大量的数据支撑。深度学习框架尤其是tensorflow,随着稀疏参数量级越来越大,问题越来越突出。
3.为了提高训练的效率,分布式训练就变得很有必要了。分布式训练策略按照并行方式不同,可以简单的分为数据并行和模型并行两种方式。数据并行是指在不同的训练器(ranker)上都保存一份模型的副本,然后将不同的样本分配到不同的ranker上进行计算,最后将所有ranker计算的结果进行合并,从而达到加速模型训练的目的。
4.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
5.对于数据并行同步分布式深度学习,训练集群中的每个ranker需要保存完整的模型,对模型的大小有很严格的限制,不能满足超大模型的训练需求。
6.对于参数服务器异步训练架构,模型参数的异步更新会存在参数梯度失效的问题(某个ranker完成参数梯度计算后,发现参数服务器中的模型参数已经被更新,由于当前的参数梯度是基于更新前的参数计算得到,所以已经失效),而且随着ranker的增加会加重该问题,对模型的精度产生更大的影响。此外,集群中ranker与参数服务器之间的全连接通信方式会大大降低网络通信效率,严重限制模型训练速度,集群无法达到较好的线性加速比。
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.当所述一个或多个程序被所述一个或多个处理器执行时,所述一个或多个处理器实现上述任一实施例所述的方法。
53.根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
54.根据本发明实施例的另一个方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
55.上述发明中的一个实施例具有如下优点或有益效果:因为采用将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,完成参数梯度同步后进行本地参数更新的
技术手段,所以克服了现有技术中内存不足和参数梯度失效的技术问题。本发明实施例将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,并且采用稠密参数和稀疏参数在本地独立训练的模式,实现稠密参数和稀疏参数在训练器中采用不同的存储和更新模式,不仅提高了内存的使用率和减少了稀疏参数的更新次数,且解决了远端参数服务器参数梯度失效的问题,保障了模型的精度,提高了模型的训练速度。
56.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
57.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
58.图1是根据本发明一个实施例的深度学习模型的训练方法的主要流程的示意图;
59.图2是根据本发明实施例的多机多卡分布式并行训练的系统架构示意图;
60.图3是根据本发明实施例的参数同步的主要流程示意图;
61.图4是根据本发明一个可参考实施例的深度学习模型的训练方法的主要流程的示意图;
62.图5是根据本发明另一个实施例的深度学习模型的训练方法的主要流程的示意图;
63.图6是根据本发明另一个可参考实施例的深度学习模型的训练方法的主要流程的示意图;
64.图7是根据本发明一个实施例的深度学习模型的训练装置的主要模块的示意图;
65.图8是根据本发明另一个实施例的深度学习模型的训练装置的主要模块的示意图;
66.图9是本发明实施例可以应用于其中的示例性系统架构图;
67.图10是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
68.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
69.在商品搜索、推荐、广告等应用场景中,深度学习模型存在这样的特点:训练样本多、模型embedding(嵌入)层规模巨大,而且embedding层参数十分稀疏,每个step(步)仅更新与当前batch(批)相关的部分参数。例如,在商品搜索的场景里面,每个商品的id是一种稀疏的特征,一亿商品可能就需要一亿维度的特征进行表示,即使模型中用embedding稀疏参数对商品进行降维,但稀疏参数规模依旧十分巨大,且每一轮训练涉及的商品比较少。针
对于该场景,如果使用数据同步分布式训练的方式,因内存不足不能满足超大规模的训练要求;而且使用parameter server(参数服务器)异步训练架构会存在参数梯度失效,进而影响模型精度的问题,而且ranker(训练器)与parameter server之间的全连接通信方式会降低网络的通信效率的问题。
70.为了解决现有技术中存在的技术问题,本发明实施例基于horovod架构,分别对稀疏参数和稠密参数采用不同的存储和更新策略。
71.图1是根据本发明一个实施例的深度学习模型的训练方法的主要流程的示意图。作为本发明的一个实施例,如图1所示,所述深度学习模型的训练方法应用于第一训练器,所述第一训练器部署训练单机上,所述方法可以包括以下步骤:
72.步骤101,建立索引。
73.如图2所示,每个训练单机可以部署有多个训练器(ranker,卡),比如ranker0、ranker1、ranker2、ranker3等,本发明实施例采用多机多卡分布式并行训练方式训练深度学习模型,以提高模型的训练效率。其中,所述第一训练器可以是部署在训练单机上的ranker0,可以将该台训练单机上的其他ranker(ranker1、ranker2、ranker3等)称为第二训练器。
74.可选地,步骤101可以包括:调用本地参数服务器框架,对所述稀疏参数进行所述训练单机本地内存映射并根据映射结果建立索引;将所述索引同步至所述训练单机上的其他训练器;其中,主键为所述稀疏参数的标识,键值为所述稀疏参数在所述训练单机本地内存中的存储地址。首先,每台训练单机上的第一训练器(rank0)对稀疏参数进行初始化操作,包括:调用本地参数服务器(local parameter server)框架解析二进制稀疏参数文件,然后将解析出的稀疏参数进行内存映射并建立key-value索引,即map《key,value_adddress》,其中,key=稀疏参数id,value_adddress=稀疏参数在训练单机本地内存中的存储地址。
75.搜索、广告、推荐业务的点击率等业务场景的深度学习模型参数的特点是embedding(嵌入层)为稀疏参数且数量庞大,稀疏参数占据了模型规模的主要部分,通常达到了数十gb到数百gb之间的量级。稀疏参数由于占据了模型的绝大部分比重,对于多机多卡的训练场景,每个训练器难以本地都存储一份稀疏参数。反之稠密参数的数量级相对较小,一般只有几mb到1gb之间,只占据模型一小部分,每个训练器可以本地存储完整的稠密参数。本发明实施例针对稀疏参数和稠密参数的这种不同特点,采用混合训练架构进行训练,对稠密参数和稀疏参数采用不同的存储模式:对于稀疏参数,可以借助共享内存的方式,每台训练单机上的多个训练器可以通过本地参数服务器(local parameter server)框架读取统一内存空间中的稀疏参数,每个训练器中仅保留一份稀疏参数的索引map《key,value_adddress》,解决了有限gpu显存的场景下无法训练更大规模模型的问题;对于稠密参数,每个训练器上独立保存一份稠密参数。这样在逻辑上每个训练器都持有一份稠密参数和一份稀疏参数。
76.步骤102,读取训练样本,基于所述索引从所述训练单机本地内存获取稀疏参数,从所述第一训练器本地获取稠密参数;其中,所述训练单机上的第一训练器和各个第二训练器共享所述训练单机本地内存中的稀疏参数。
77.可选地,基于所述索引从所述训练单机本地内存获取稀疏参数,包括:根据分发到
所述第一训练器上的训练样本,确定稀疏参数标识;基于所述索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数。由于稀疏参数存储在训练单机本地内存,而且各个训练器共享训练单机本地内存中的稀疏参数,因此第一训练器以及第二训练器都可以根据索引确定稀疏参数在训练单机本地内存中的存储地址,从而从训练单机本地内存中获取稀疏参数。而每个训练器本地内存各自存储一份稠密参数,因此第一训练器可以从其本地直接获取稠密参数。
78.步骤103,在正向传播过程中根据稠密参数和稀疏参数计算损失值,在反向传播过程中得到稠密参数梯度和稀疏参数梯度。
79.第一训练器(ranker0)根据batch_size读取训练样本,然后在正向传播过程中根据稠密参数和稀疏参数计算损失值,在反向传播过程中得到稠密参数梯度和稀疏参数梯度。具体地,第一训练器利用稠密参数和稀疏参数完成深度学习模型的前向计算,然后根据反向传播算法计算参数梯度(包括稠密参数梯度、稀疏参数梯度)。
80.可选地,步骤103可以包括:采用所述训练样本并分别利用所述稠密参数和所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度和稀疏参数梯度。如图2所示,本发明实施例基于horovod的the ring allreduce(环形全局规约)同步训练架构进行多机多卡的分布式训练,在分布式计算过程中,需要对计算任务资源进行分片,通常是将将训练样本进行分片,然后将训练样本分发到不同的训练器上。第一训练器接收到训练样本后,采用稠密参数和稀疏参数独立训练的训练模式。具体地,从第一训练器本地获取稠密参数,采用所述训练样本并利用所述稠密参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度;与此同时,从所述训练单机本地内存获取稀疏参数,采用所述训练样本并利用所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稀疏参数梯度。
81.需要指出的是,由于embedding层参数十分稀疏,每个step仅更新与当前batch相关的部分参数,而且每个训练器的训练样本不同,因此每个训练器可以根据训练样本确定需要获取的稀疏参数标识。
82.步骤104,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度和最终的稀疏参数梯度。
83.第一训练器得到稠密参数梯度和稀疏参数梯度,与其他训练器(包括本台训练单机上的其他训练器和其他训练单机上的每个训练器)进行稠密参数梯度的同步和稀疏参数梯度的同步,同步过程可以同时进行;同步结束后,第一训练器根据同步结果计算出最终的稠密参数梯度和最终的稀疏参数梯度。
84.可选地,步骤104可以包括:基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步;对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度;同时,根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。本发明实施例采用稠密参数和稀疏参数独立训练的训练模式,在多机多卡的训练环境下,基于horovod架构训练模式分别对稀疏参数和稠密参数采用不同的存储和更新策略。如图2所示,针对稀疏参数,采用共享内存的方式实现训练单机上的每个训练器(ranker)共享一
份embedding参数,各个ranker通过local parameter server框架实现稀疏参数的获取和更新,各个训练单机中进行the all gather获取全局所有ranker计算出来的参数梯度后,由各台训练单机上的第一训练器(ranker0)对内存中的稀疏参数进行更新。各个训练器之间构成稠密参数梯度和稀疏参数梯度同步的双环逻辑结构,如图3所示。参数梯度同步结束之后,对稠密参数和稀疏参数采用不同的计算方法计算最终的参数梯度。对于稠密参数,第一训练器对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度;对于稀疏参数,第一训练器根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。
85.可选地,根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度,包括:对于每个稀疏参数,计算所述稀疏参数在各个训练器上的出现频次;对于每个稀疏参数,对所述各个训练器上的所述稀疏参数梯度求和后,除以所述稀疏参数在所述各个训练器上的出现频次,得到最终的稀疏参数梯度。
86.由于在多卡训练单机中稠密参数和稀疏参数的存储模式的不同,在进行模型参数的更新时需要采用不同的更新策略。如图2-3所示,对于稠密参数,每个训练器(ranker0、ranker1、ranker2、ranker3等)中都保存一份全量的稠密参数,每个训练器在稠密参数梯度同步之后计算稠密参数梯度的平均值,随后每个训练器都根据该梯度更新其本地的稠密参数。对于稀疏参数,在参数梯度同步之后,每个训练器上也都保存一份梯度数据,但由于每个训练器上的稀疏参数以及稀疏参数的个数不一定相同。如图3所示,ranker0上的是e、g、i这三个稀疏参数的梯度,ranker 1上的是f、h、i这三个稀疏参数的梯度,ranker 2上的是e、g、i这三个稀疏参数的梯度,因此e、f、g、h、i这五个稀疏参数出现的频次分别是2、1、2、1、3。本发明实施例采用参数梯度和除以参数出现的频次来算不同参数的梯度,如稀疏参数i的梯度是(i0 i1 i2)/3,稀疏参数f的梯度的更新仅由ranker1上的f的梯度计算来决定。
87.步骤105,基于所述最终的稠密参数梯度更新所述第一训练器本地的稠密参数,基于所述最终的稀疏参数梯度更新所述训练单机本地内存的稀疏参数。
88.由于每台训练单机多训练器(ranker)共享同一份全量的稀疏参数,所以在进行参数更新时需要判断ranker是否为ranker0(即第一训练器)之后,只由ranker0进行稀疏参数的更新。如图2所示,ranker0将最终的稀疏参数梯度更新到训练单机本地内存中,以使这台训练单机上的各个ranker共享最新的稀疏参数。
89.可选地,基于所述最终的稀疏参数梯度更新所述训练单机本地内存的稀疏参数,包括:通过调用所述本地参数服务器框架,将所述最终的稀疏参数梯度更新到所述训练单机本地内存中。
90.在本发明的实施例中,稠密参数和稀疏参数均采用同步更新的方式,相对于远端parameter server(参数服务器)模式的稀疏参数的更新方式来说,本发明实施例避免了梯度失效的情况的出现,保障了模型的精度,同时采用本地参数更新方式在一定程度上避免了网络传输带来的耗时,从而提高了模型的训练速度。在更新稀疏参数时,每台训练单机只在第一训练器的gpu上通过调用本地参数服务器框架更新稀疏参数,减少了更新稀疏参数的操作频次。如在三台训练单机每台四个训练器的情况下,一轮训练只需要更新稀疏参数三次,减少了九次的更新操作。
91.而且基于稀疏参数的存储模式,不需要每台训练单机上的每个训练器都完整保存一份全量的稀疏参数,而是通过共享内存的方式,一台训练单机仅保留一份全量的稀疏参
数,每个训练器通过访问索引获取当前训练器的稀疏参数,显著提高了内存的使用率。
92.根据上面所述的各种实施例,可以看出本发明实施例通过将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,完成参数梯度同步后进行本地参数更新的技术手段,解决了现有技术中内存不足和参数梯度失效的技术问题。本发明实施例将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,并且采用稠密参数和稀疏参数在本地独立训练的模式,实现稠密参数和稀疏参数在训练器中采用不同的存储和更新模式,不仅提高了内存的使用率和减少了稀疏参数的更新次数,且解决了远端参数服务器参数梯度失效的问题,保障了模型的精度,提高了模型的训练速度。
93.图4是根据本发明一个可参考实施例的深度学习模型的训练方法的主要流程的示意图。作为本发明的又一个实施例,如图4所示,所述深度学习模型的训练方法应用于第一训练器,所述第一训练器部署训练单机上,可以包括:
94.步骤401,调用本地参数服务器框架解析二进制稀疏参数文件,以获取稀疏参数。
95.如图2所示,训练单机上的ranker0调用本地参数服务器框架来解析二进制稀疏参数文件,从而得到全量的稀疏参数。
96.步骤402,调用本地参数服务器框架,对所述稀疏参数进行所述训练单机本地内存映射并根据映射结果建立索引。
97.ranker0获取的稀疏参数之后,调用local parameter server框架对稀疏参数进行训练单机本地内存映射并建立索引,使得训练单机上的每个ranker共享一份全量的稀疏参数。其中,主键为所述稀疏参数的标识,键值为所述稀疏参数在所述训练单机本地内存中的存储地址。
98.需要指出的是,稠密参数的数量级相对较小,一般只有几mb到1gb之间,只占据模型一小部分,每个训练器可以本地存储完整的稠密参数。因此,本发明实施例分别对稀疏参数和稠密参数采用不同的存储策略。
99.步骤403,将所述索引同步至所述训练单机上的其他训练器。
100.ranker0将索引同步至训练单机上的其他ranker,使得这些ranker可以通过索引从训练单机本地内存获取稀疏参数。
101.步骤404,接收分发到所述第一训练器上的训练样本。
102.在分布式计算过程中,需要对计算任务资源进行分片,通常是将将训练样本进行分片,然后将训练样本分发到不同的训练器上。
103.步骤405,从第一训练器本地获取稠密参数,采用训练样本并利用所述稠密参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度。
104.步骤406,根据分发到所述第一训练器上的训练样本,确定稀疏参数标识;基于索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数;从训练单机本地内存获取稀疏参数,采用所述训练样本并利用所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稀疏参数梯度。
105.步骤407,基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步。
106.步骤408,对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度;同时,根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。
107.如图2所示,针对稀疏参数,采用共享内存的方式实现训练单机上的每个训练器(ranker)共享一份embedding参数,各个ranker通过local parameter server框架实现稀疏参数的获取和更新,各个训练单机中进行the all gather获取全局所有ranker计算出来的参数梯度后,由各台训练单机上的第一训练器(ranker0)对内存中的稀疏参数进行更新。各个训练器之间构成稠密参数梯度和稀疏参数梯度同步的双环逻辑结构,如图3所示。
108.参数梯度同步结束之后,对稠密参数和稀疏参数采用不同的计算方法计算最终的参数梯度。对于稠密参数,第一训练器对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度;对于稀疏参数,第一训练器根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。
109.步骤409,基于所述最终的稠密参数梯度更新所述第一训练器本地的稠密参数。
110.由于每个ranker本地都存储了一份稠密参数,因此ranker0在计算出最终的稠密参数梯度之后,直接更新ranker0本地的稠密参数。同理,其他ranker在计算出最终的稠密参数梯度之后,直接各自本地的稠密参数。
111.步骤410,通过调用所述本地参数服务器框架,将所述最终的稀疏参数梯度更新到所述训练单机本地内存中。
112.由于每台训练单机多训练器(ranker)共享同一份全量的稀疏参数,所以在进行参数更新时需要判断ranker是否为ranker0之后,只由ranker0进行稀疏参数的更新。如图2所示,ranker0将最终的稀疏参数梯度更新到训练单机本地内存中,以使这台训练单机上的各个ranker共享最新的稀疏参数。
113.针对搜索、推荐、广告等应用场景下的稠密参数和稀疏参数的不同特点,本发明实施例采用两种独立的本地参数存储更新方式,可以使训练内存使用率大幅度提高,使得相同机器配置可训练更大的模型,减少了稀疏参数的更新次数,解决了使用远端参数服务器梯度失效的问题,保障了模型的精度,提高了模型的训练速度。在现有技术中,搜索推荐训练场景使用的五台训练单机每台四个训练器的环境配置,使用本发明实施例提供的训练方法可以节省近3/4的内存。
114.另外,在本发明一个可参考实施例中深度学习模型的训练方法的具体实施内容,在上面所述深度学习模型的训练方法中已经详细说明了,故在此重复内容不再说明。
115.图5是根据本发明另一个实施例的深度学习模型的训练方法的主要流程的示意图。作为本发明的另一个实施例,如图5所示,所述深度学习模型的训练方法应用于第二训练器,所述第二训练器部署训练单机上,所述方法可以包括以下步骤:
116.步骤501,读取训练样本,从所述训练单机本地内存获取稀疏参数,从所述第二训练器本地获取稠密参数;其中,所述训练单机上的第一训练器和各个第二训练器共享所述训练单机本地内存中的稀疏参数。
117.本发明实施例将训练单机上的除了ranker0之外的ranker都称为第二训练器,因此第二训练器是可以是ranker1、ranker2、ranker3等。因此,每个第二训练器本地都存储了一份稠密参数以及稀疏参数的索引,并且共享训练单机本地内存中的稀疏参数。
118.可选地,从所述训练单机本地内存获取稀疏参数,包括:根据分发到所述第二训练
器上的训练样本,确定稀疏参数标识;基于索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数;其中,在所述索引中,主键为所述稀疏参数的标识,键值为所述稀疏参数在所述训练单机本地内存中的存储地址。由于稀疏参数存储在训练单机本地内存,而且各个训练器共享训练单机本地内存中的稀疏参数,因此第二训练器可以根据索引确定稀疏参数在训练单机本地内存中的存储地址,从而从训练单机本地内存中获取稀疏参数。
119.步骤502,在正向传播过程中根据稠密参数和稀疏参数计算损失值,在反向传播过程中得到稠密参数梯度和稀疏参数梯度。
120.可选地,步骤502可以包括:采用所述训练样本并分别利用所述稠密参数和所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度和稀疏参数梯度。如图2所示,本发明实施例基于horovod的the ring allreduce同步训练架构进行多机多卡的分布式训练,在分布式计算过程中,需要对计算任务资源进行分片,通常是将将训练样本进行分片,然后将训练样本分发到不同的训练器上。第二训练器接收到训练样本后,采用稠密参数和稀疏参数独立训练的训练模式。具体地,从第二训练器本地获取稠密参数,采用所述训练样本并利用所述稠密参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度;与此同时,从所述训练单机本地内存获取稀疏参数,采用所述训练样本并利用所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稀疏参数梯度。
121.需要指出的是,由于embedding层参数十分稀疏,每个step仅更新与当前batch相关的部分参数,而且每个训练器的训练样本不同,因此每个训练器可以根据训练样本确定需要获取的稀疏参数标识。
122.步骤503,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度。
123.第二训练器得到稠密参数梯度和稀疏参数梯度,与其他训练器(包括本台训练单机上的其他训练器和其他训练单机上的每个训练器)进行稠密参数梯度的同步和稀疏参数梯度的同步,同步过程可以同时进行;同步结束后,第二训练器根据同步结果计算出最终的稠密参数梯度。
124.可选地,步骤503可以包括:基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步;对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度。本发明实施例采用稠密参数和稀疏参数独立训练的训练模式,在多机多卡的训练环境下,基于horovod架构训练模式分别对稀疏参数和稠密参数采用不同的存储和更新策略。如图2所示,针对稀疏参数,采用共享内存的方式实现训练单机上的每个训练器(ranker)共享一份embedding参数,各个ranker通过local parameter server框架实现稀疏参数的获取和更新,各个训练单机中进行the all gather获取全局所有ranker计算出来的参数梯度后,由各台训练单机上的第一训练器(ranker0)对内存中的稀疏参数进行更新。各个训练器之间构成稠密参数梯度和稀疏参数梯度同步的双环逻辑结构,如图3所示。参数梯度同步结束之后,对稠密参数和稀疏参数采用不同的计算方法计算最终的参数梯度。对于稠密参数,第二训练器对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参
数梯度;对于稀疏参数,只由第一训练器根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。
125.步骤504,基于所述最终的稠密参数梯度更新所述第二训练器本地的稠密参数;其中,最终的稀疏参数梯度由所述训练单机上的第一训练器进行计算和更新。
126.第二训练器计算出最终的稠密参数梯度之后,基于最终的稠密参数梯度更新第二训练器本地的稠密参数。
127.需要说明的是,由于每台训练单机多训练器(ranker)共享同一份全量的稀疏参数,所以在进行参数更新时需要判断ranker是否为ranker0(即第一训练器)之后,只由ranker0进行稀疏参数的更新。如图2所示,ranker0将最终的稀疏参数梯度更新到训练单机本地内存中,以使这台训练单机上的各个ranker共享最新的稀疏参数。
128.另外,在本发明另一个实施例中深度学习模型的训练方法的具体实施内容,在上面所述深度学习模型的训练方法中已经详细说明了,故在此重复内容不再说明。
129.图6是根据本发明另一个可参考实施例的深度学习模型的训练方法的主要流程的示意图。作为本发明的另一个实施例,如图6所示,所述深度学习模型的训练方法应用于第二训练器,所述第二训练器部署训练单机上,可以包括:
130.步骤601,接收分发到所述第二训练器上的训练样本。
131.步骤602,从第二训练器本地获取稠密参数,采用训练样本并利用所述稠密参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度。
132.步骤603,根据分发到所述第二训练器上的训练样本,确定稀疏参数标识;基于索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数;然后采用所述训练样本并利用所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稀疏参数梯度。
133.步骤604,基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步。
134.步骤605,对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度。
135.步骤606,基于所述最终的稠密参数梯度更新所述第二训练器本地的稠密参数。
136.另外,在本发明另一个可参考实施例中深度学习模型的训练方法的具体实施内容,在上面所述深度学习模型的训练方法中已经详细说明了,故在此重复内容不再说明。
137.本发明实施例还提供了一种训练单机,所述训练单机上部署有第一训练器和各个第二训练器,所述训练单机的本地内存中存储有稀疏参数,所述第一训练器的本地和所述第二训练器的本地均存储有稠密参数;其中,所述第一训练器和所述各个第二训练器共享所述训练单机本地内存中的稀疏参数,所述稀疏参数由所述第一训练器更新。
138.由于在多卡训练单机中稠密参数和稀疏参数的存储模式的不同,在进行模型参数的更新时需要采用不同的更新策略。如图2-3所示,对于稠密参数,每个训练器(ranker0、ranker1、ranker2、ranker3等)中都保存一份全量的稠密参数,每个训练器在稠密参数梯度同步之后计算稠密参数梯度的平均值,随后每个训练器都根据该梯度更新其本地的稠密参
数。对于稀疏参数,由于每台训练单机多训练器(ranker)共享同一份全量的稀疏参数,所以在进行参数更新时需要判断ranker是否为ranker0(即第一训练器)之后,只由ranker0进行稀疏参数的更新。如图2所示,ranker0将最终的稀疏参数梯度更新到训练单机本地内存中,以使这台训练单机上的各个ranker共享最新的稀疏参数。
139.本发明实施例基于稀疏参数的存储模式,不需要每台训练单机上的每个训练器都完整保存一份全量的稀疏参数,而是通过共享内存的方式,一台训练单机仅保留一份全量的稀疏参数,每个训练器通过访问索引获取当前训练器的稀疏参数,显著提高了内存的使用率。
140.由此可见,本发明实施例将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,并且采用稠密参数和稀疏参数在本地独立训练的模式,实现稠密参数和稀疏参数在训练器中采用不同的存储和更新模式,不仅提高了内存的使用率和减少了稀疏参数的更新次数,且解决了远端参数服务器参数梯度失效的问题,保障了模型的精度,提高了模型的训练速度。
141.图7是根据本发明一个实施例的深度学习模型的训练装置的主要模块的示意图。如图7所示,所述深度学习模型的训练装置700设置于第一训练器,所述第一训练器部署训练单机上,所述装置包括索引模块701、第一获取模块702、第一训练模块703、第一计算模块704和第一更新模块705;其中,索引模块701用于建立索引;第一获取模块702用于读取训练样本,基于所述索引从所述训练单机本地内存获取稀疏参数,从所述第一训练器本地获取稠密参数;其中,所述训练单机上的第一训练器和各个第二训练器共享所述训练单机本地内存中的稀疏参数;第一训练模块703用于在正向传播过程中根据稠密参数和稀疏参数计算损失值,在反向传播过程中得到稠密参数梯度和稀疏参数梯度;第一计算模块704用于与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度和最终的稀疏参数梯度;第一更新模块705用于基于所述最终的稠密参数梯度更新所述第一训练器本地的稠密参数,基于所述最终的稀疏参数梯度更新所述训练单机本地内存的稀疏参数。
142.可选地,所述索引模块701还用于:
143.调用本地参数服务器框架,对所述稀疏参数进行所述训练单机本地内存映射并根据映射结果建立索引;
144.将所述索引同步至所述训练单机上的其他训练器;
145.其中,主键为所述稀疏参数的标识,键值为所述稀疏参数在所述训练单机本地内存中的存储地址。
146.可选地,所述第一获取模块702还用于:
147.根据分发到所述第一训练器上的训练样本,确定稀疏参数标识;
148.基于所述索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数。
149.可选地,所述第一训练模块703还用于:
150.采用所述训练样本并分别利用所述稠密参数和所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度和稀疏参数梯度。
151.可选地,所述第一计算模块704还用于:
152.基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步;
153.对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度;同时,根据稀疏参数在各个训练器上的出现频次,计算最终的稀疏参数梯度。
154.可选地,所述第一计算模块704还用于:
155.对于每个稀疏参数,计算所述稀疏参数在各个训练器上的出现频次;
156.对于每个稀疏参数,对所述各个训练器上的所述稀疏参数梯度求和后,除以所述稀疏参数在所述各个训练器上的出现频次,得到最终的稀疏参数梯度。
157.可选地,所述第一更新模块705还用于:
158.通过调用所述本地参数服务器框架,将所述最终的稀疏参数梯度更新到所述训练单机本地内存中。
159.需要说明的是,在本发明所述深度学习模型的训练装置的具体实施内容,在上面所述深度学习模型的训练方法中已经详细说明了,故在此重复内容不再说明。
160.图8是根据本发明另一个实施例的深度学习模型的训练装置的主要模块的示意图。如图8所示,所述深度学习模型的训练装置800设置于第二训练器,所述第二训练器部署训练单机上,所述装置包括第二获取模块801、第二训练模块801802、第二计算模块802803和第二更新模块803804;其中,第二获取模块801用于读取训练样本,从所述训练单机本地内存获取稀疏参数,从所述第二训练器本地获取稠密参数;其中,所述训练单机上的第一训练器和各个第二训练器共享所述训练单机本地内存中的稀疏参数;第二训练模块802用于在正向传播过程中根据稠密参数和稀疏参数计算损失值,在反向传播过程中得到稠密参数梯度和稀疏参数梯度;第二计算模块803用于与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度;第二更新模块804用于基于所述最终的稠密参数梯度更新所述第二训练器本地的稠密参数;其中,最终的稀疏参数梯度由所述训练单机上的第一训练器进行计算和更新。
161.可选地,所述第二获取模块801还用于:
162.根据分发到所述第二训练器上的训练样本,确定稀疏参数标识;
163.基于索引确定所述稀疏参数标识对应的所述稀疏参数在所述训练单机本地内存中的存储地址,从而从所述训练单机本地内存中获取所述稀疏参数;
164.其中,在所述索引中,主键为所述稀疏参数的标识,键值为所述稀疏参数在所述训练单机本地内存中的存储地址。
165.可选地,所述第二训练模块802还用于:
166.采用所述训练样本并分别利用所述稠密参数和所述稀疏参数训练深度学习模型,从而在正向传播过程中计算得到损失值,在反向传播过程中通过求导得到稠密参数梯度和稀疏参数梯度。
167.可选地,所述第二计算模块803还用于:
168.基于环形全局规约算法,与其他训练器进行稠密参数梯度和稀疏参数梯度的同步;
169.对各个训练器上的稠密参数梯度计算平均值,得到最终的稠密参数梯度。
170.需要说明的是,在本发明所述深度学习模型的训练装置的具体实施内容,在上面所述深度学习模型的训练方法中已经详细说明了,故在此重复内容不再说明。
171.图9示出了可以应用本发明实施例的深度学习模型的训练方法或深度学习模型的训练装置的示例性系统架构900。
172.如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
173.用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
174.终端设备901、902、903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
175.服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的物品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、物品信息——仅为示例)反馈给终端设备。
176.需要说明的是,本发明实施例所提供的深度学习模型的训练方法一般由服务器905执行,相应地,所述深度学习模型的训练装置一般设置在服务器905中。本发明实施例所提供的深度学习模型的训练方法也可以由终端设备901、902、903执行,相应地,所述深度学习模型的训练装置可以设置在终端设备901、902、903中。
177.应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
178.下面参考图10,其示出了适于用来实现本发明实施例的终端设备的计算机系统1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
179.如图10所示,计算机系统1000包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram 1003中,还存储有系统1000操作所需的各种程序和数据。cpu 1001、rom 1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
180.以下部件连接至i/o接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
181.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样
的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本发明的系统中限定的上述功能。
182.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
183.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
184.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括索引模块、第一读取模块、第一训练模块、第一计算模块和第一更新模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
185.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第二读取模块、第二训练模块、第二计算模块和第二更新模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
186.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,该设备实现如下方法:获取稀疏参数,将所述稀疏参数存储到所述训练单机本地内存;读取训
练样本,分别利用稠密参数和稀疏参数得到稠密参数梯度和稀疏参数梯度;其中,所述稠密参数存储在所述第一训练器本地;与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度和最终的稀疏参数梯度;基于所述最终的稠密参数梯度更新所述第一训练器本地的稠密参数,基于所述最终的稀疏参数梯度更新所述训练单机本地内存的稀疏参数。
187.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,该设备实现如下方法:读取训练样本,分别利用稠密参数和稀疏参数得到稠密参数梯度和稀疏参数梯度;其中,所述稠密参数存储在所述第二训练器本地,所述稀疏参数存储在所述训练单机本地内存;与其他训练器进行稠密参数梯度和稀疏参数梯度的同步,计算出最终的稠密参数梯度;基于所述最终的稠密参数梯度更新所述第二训练器本地的稠密参数。
188.作为另一方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
189.根据本发明实施例的技术方案,因为采用将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,完成参数梯度同步后进行本地参数更新的技术手段,所以克服了现有技术中内存不足和参数梯度失效的技术问题。本发明实施例将稀疏参数存储到训练单机本地内存,使得各个训练器共享内存,并且采用稠密参数和稀疏参数在本地独立训练的模式,实现稠密参数和稀疏参数在训练器中采用不同的存储和更新模式,不仅提高了内存的使用率和减少了稀疏参数的更新次数,且解决了远端参数服务器参数梯度失效的问题,保障了模型的精度,提高了模型的训练速度。
190.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献