数据处理方法、装置及系统与流程

文档序号:31994127发布日期:2022-11-02 00:52阅读:48来源:国知局
数据处理方法、装置及系统与流程

1.本技术涉及人工智能技术领域,尤其涉及一种大规模数据处理方法、装置及系统。


背景技术:

2.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
3.ai领域中,大规模数据模型训练是广泛应用在互联网搜索、广告、推荐业务等场景中的核心技术,典型的应用场景例如包括点击率预估(click-through rate,ctr)模型等。具体的,大规模数据训练时,首先输入样本数据,这些样本数据多数为数据。数据本身是无法进行数值计算的,因此必须通过嵌入(embedding)的方法将样本数据转成数值,因此大规模数据训练模型的入口算子都是embedding算子。经过embedding层之后,再经过若干层全连接层和激活函数,即可获得损失函数(loss),再由损失函数进行反向传播,即完成一轮(step)训练过程。目前,为了提升大规模数据的训练速度,可以使用图形处理器(graphics processing unit,gpu)或网络处理器(neural-network processing units,npu)来加速模型的训练。
4.若使用gpu或npu来训练,由于embedding参数规模巨大,例如可达10tb,单个设备无法训练此模型(例如典型gpu的显存只有16~32gb),因此数据并行加模型并行的训练方式是业内主流解决该问题的方案。但是,模型并行训练需要在并行的模型对应的进程之间进行数据通信以互相配合,该通信的过程增加了训练的时间,降低训练的效率。综上所述,如何在通过模型并行的方式训练大规模数据训练模型时进一步提高训练效率是本领域技术人员需要解决的技术问题。


技术实现要素:

5.本技术公开了一种数据处理方法、装置及系统,能够提高数据训练模型的训练效率和性能。
6.第一方面,本技术提供一种数据处理方法,该方法包括:
7.第一处理器向第二处理器发送第一查找消息;该第一查找消息包括第一数据,该第一查找消息用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
8.该第一处理器接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,该第二查找消息用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中
该第一处理器的上一跳处理器;
9.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
10.在本技术实施方式中,数据训练系统包括n个处理器,为了训练大规模的样本数据,该n个处理器组成的数据训练系统以数据并行加模型并行的方式来实现数据的训练。基于该数据并行加模型并行的训练方式,该n个处理器上分别随机得到一部分的样本数据来训练,被训练的数据输入到训练模型之后,需要先经过嵌入(embedding)层将数据映射为稠密向量(也称为嵌入参数)才可以用于后续的计算;但是由于一个处理器上训练的数据是随机得到的,因此,这些数据的嵌入参数不一定存在于该处理器中,需要从该n个处理器的其它处理器中获取对应的嵌入参数,这就需要与其它的处理器进行消息通信。本技术实施例中,在嵌入层进行消息通信查找数据的嵌入参数的过程中,该n个处理器之间通过环形通信架构来实现消息的环形通信,相比于现有的技术方案中多对多的消息通信方式,本技术可以充分利用处理器之间的带宽资源,避免了单点通信瓶颈,降低了通信时延,提高了通信效率,进而能够提升整个数据训练系统的训练效率和性能。
11.一种可能的实施方式中,上述方法还包括:在基于该第二查找消息查找到该第二数据中部分或全部数据的嵌入参数的情况下,该第一处理器将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息,并向该第二处理器发送该第三查找消息;或者,在基于该第二查找消息未查找到该第二数据的嵌入参数的情况下,该第一处理器向该第二处理器发送该第二查找消息。
12.在本技术实施方式中,处理器在收到数据的嵌入参数的查找消息后,不管在本地是否查找到对应数据的嵌入参数,都基于上述环形通信架构向下一跳处理器继续转发查找消息,通过循环的转发和查找最终可以查找到处理器需要的全部数据的嵌入参数。
13.一种可能的实施方式中,上述在基于该第二查找消息查找到该第二数据中部分或全部数据的嵌入参数的情况下,该第一处理器将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息,并向该第二处理器发送该第三查找消息,包括:
14.该第一处理器在第一嵌入表中查找该部分或全部数据映射的嵌入参数;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系;
15.该第一处理器将该部分或全部数据映射的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
16.该第一处理器向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
17.在本技术实施方式中,上述n个处理器每个处理器中维护有一个嵌入表,该嵌入表用于存储数据与对应的嵌入参数,因此,处理器在收到嵌入参数的查找消息之后,可以以查找消息中的数据作为索引在该处理器的嵌入表中查找。若查找消息中的数据存在于该嵌入表中,那么可以查找到对应的嵌入参数。
18.一种可能的实施方式中,该在基于该第二查找消息查找到该第二数据中部分或全
部数据的嵌入参数的情况下,该第一处理器将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息,并向该第二处理器发送该第三查找消息,包括:
19.该第一处理器确定该部分或全部数据属于第一嵌入表,且该第一嵌入表中还未包括该部分或全部数据;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系;
20.该第一处理器生成该部分或全部数据各自对应的嵌入参数;
21.该第一处理器将该部分或全部数据各自对应的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
22.该第一处理器向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
23.在本技术实施方式中,上述n个处理器每个处理器中维护有一个嵌入表,该嵌入表用于存储数据与对应的嵌入参数,因此,处理器在收到嵌入参数的查找消息之后,若处理器确定出消息中有数据属于该处理器的嵌入表,但不在该嵌入表中,那么处理器可以为该属于嵌入表的数据随机生成对应的嵌入参数。可选的,该属于嵌入表的数据对n取模运算后得到的余数与该处理器运行的训练进程序号相同。
24.一种可能的实施方式中,该在基于该第二查找消息未查找到该第二数据的嵌入参数的情况下,该第一处理器向该第二处理器发送该第二查找消息,包括:
25.在该第二数据均不属于第一嵌入表中的数据的情况下,该第一处理器向该第二处理器发送该第二查找消息;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系。
26.在本技术实施方式中,若处理器接收到的数据的嵌入参数的查找消息中没有属于该处理器的嵌入表中的数据,那么处理器基于上述环形通信架构直接将接收到的查找消息发送给下一跳处理器。
27.一种可能的实施方式中,该方法还包括:
28.该第一处理器接收来自该第三处理器的第四查找消息;该第四查找消息包括第三数据和该第三数据中第一部分数据映射的嵌入参数,该第四查找消息用于查找该第三数据中除了该第一部分数据之外的数据映射的嵌入参数;
29.在基于该第四查找消息查找到该第三数据中第二部分数据的嵌入参数的情况下,该第一处理器将该第二部分数据的嵌入参数添加到该第四查找消息中,得到第五查找消息,并向该第二处理器发送该第五查找消息;
30.或者,在基于该第四查找消息未查找到该第三数据的嵌入参数的情况下,该第一处理器向该第二处理器发送该第四查找消息。
31.在本技术实施方式中,采用上述环形通信架构实现上述n个处理器各个处理器需要的嵌入参数的查找,可以基于该架构多次实现查找消息的环形通信来查找数据的嵌入参数,示例性地,可以在该n个处理器之间至少循环n次消息通信和嵌入参数的查找,从而确保该各个处理器均可以获取到需要的全部数据的嵌入参数。
32.一种可能的实施方式中,该方法还包括:该第一处理器接收来自该第三处理器的第六查找消息,该第六查找消息包括该第一数据和该第一数据的嵌入参数。
33.在本技术实施方式中,基于上述环形通信架构来实现上述n个处理器的消息通信
查找各个处理器需要的嵌入参数,经过多次循环后处理器可以从上一跳处理器中接收到包括需要的全部嵌入参数的消息。
34.第二方面,本技术提供一种数据处理方法,该方法包括:
35.第一处理器向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
36.该第一处理器接收来自第三处理器的第二通知消息;该第二通知消息包括第二数据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
37.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
38.在本技术实施方式中,由于处理器训练数据的前向传播过程中有数据的嵌入参数是从其它处理器中获取的,即该数据的嵌入参数存在其它处理器中,而在训练的反向传播过程中,需要基于计算得到梯度优化该数据的嵌入参数,那么,处理器需要将计算得到的该数据的嵌入参数对应的梯度发送给对应的处理器,让该对应的处理器来优化该数据的嵌入参数。本技术实施例中,在嵌入层反向传播过程中进行消息通信获取各自需要的嵌入参数的梯度的过程中,该n个处理器之间通过环形通信架构来实现消息的环形通信,相比于现有的技术方案中多对多的消息通信方式,本技术可以充分利用处理器之间的带宽资源,避免了单点通信瓶颈,降低了通信时延,提高了通信效率,进而能够提升整个数据训练系统的训练效率和性能。
39.一种可能的实施方式中,该方法还包括:在该第二通知消息中包括第一目标梯度的情况下,该第一处理器在该第二通知消息中获取该第一目标梯度,并向该第二处理器发送该第二通知消息;该第一目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中数据和嵌入参数存在一一映射关系;
40.或者,在该第二通知消息中未包括该第一目标梯度的情况下,该第一处理器向该第二处理器发送该第二通知消息。
41.在本技术实施方式中,处理器在收到梯度的通知消息后,不管在该通知消息中是否查找到自身需要的梯度,都基于上述环形通信架构向下一跳处理器继续转发该通知消息,通过循环的转发最终可以使得各个处理器均获取到各自需要的梯度。
42.一种可能的实施方式中,该在该第二通知消息中包括第一目标梯度的情况下,该第一处理器在该第二通知消息中获取该第一目标梯度,包括:
43.该第一处理器确定该第二数据中的部分或全部数据为该第一嵌入表中的数据;
44.该第一处理器基于该部分或全部数据在该第二通知消息中获取该第一目标梯度。
45.在本技术实施方式中,上述n个处理器每个处理器中维护有一个嵌入表,该嵌入表用于存储数据与对应的嵌入参数,因此,处理器在收到梯度的通知消息之后,若该消息中有数据存在于该嵌入表中,那么处理器可以从该消息中获取到对应的梯度,以用于优化该数
据。
46.一种可能的实施方式中,该方法还包括:
47.该第一处理器接收来自该第三处理器的第三通知消息;该第三通知消息包括第三数据和第三梯度,用于将该第三梯度传播到第三目标处理器中;该第三梯度为该第三数据的嵌入参数对应的梯度;
48.在该第三通知消息中包括第二目标梯度的情况下,该第一处理器在该第三通知消息中获取该第二目标梯度,并向该第二处理器发送该第三通知消息;该第二目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中包括数据和数据的嵌入参数的映射关系;
49.或者,在该第三通知消息中未包括该第二目标梯度的情况下,该第一处理器向该第二处理器发送该第三通知消息。
50.在本技术实施方式中,采用上述环形通信架构使得上述n个处理器各个处理器获取需要的梯度,可以基于该架构多次实现通知消息的环形通信,示例性地,可以在该n个处理器之间至少循环n-1次消息通信,从而确保该各个处理器均可以获取到需要的全部梯度。
51.需要说明的是上述第一方面及其可能的实施方式中的任一种实施方式,可以和第二方面及其可能的实施方式中的任一种实施方式结合实现,第一方面及其可能的实施方式中的任一种实施方式应用在数据训练的embedding层的前向传播过程中,第二方面及其可能的实施方式中的任一种实施方式应用在数据训练的embedding层的反向传播过程中。
52.第三方面,本技术提供一种数据处理装置,该装置包括:
53.发送单元,用于向第二处理器发送第一查找消息;该第一查找消息包括第一数据,该第一查找消息用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
54.接收单元,用于接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,该第二查找消息用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
55.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
56.一种可能的实施方式中,该装置还包括添加单元;
57.上述添加单元,用于在基于该第二查找消息查找到该第二数据中部分或全部数据的嵌入参数的情况下,将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息;
58.上述发送单元,还用于向该第二处理器发送该第三查找消息;
59.或者,该发送单元,还用于在基于该第二查找消息未查找到该第二数据的嵌入参数的情况下,向该第二处理器发送该第二查找消息。
60.一种可能的实施方式中,该装置还包括查找单元;
61.该查找单元,用于在第一嵌入表中查找该部分或全部数据映射的嵌入参数;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据
和嵌入参数存在一一映射关系;
62.上述添加单元,具体用于将该部分或全部数据映射的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
63.上述发送单元,具体用于向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
64.一种可能的实施方式中,上述装置还包括确定单元和生成单元;
65.该确定单元,用于确定上述部分或全部数据属于第一嵌入表,且该第一嵌入表中还未包括该部分或全部数据;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系;
66.该生成单元,用于生成该部分或全部数据各自对应的嵌入参数;
67.上述添加单元,具体用于该部分或全部数据各自对应的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
68.上述发送单元,具体用于向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
69.一种可能的实施方式中,上述发送单元具体用于:
70.在该第二数据均不属于第一嵌入表中的数据的情况下,向该第二处理器发送该第二查找消息;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系。
71.一种可能的实施方式中,上述接收单元,还用于接收来自该第三处理器的第四查找消息;该第四查找消息包括第三数据和该第三数据中第一部分数据映射的嵌入参数,该第四查找消息用于查找该第三数据中除了该第一部分数据之外的数据映射的嵌入参数;
72.该装置还包括添加单元,用于在基于该第四查找消息查找到该第三数据中第二部分数据的嵌入参数的情况下,将该第二部分数据的嵌入参数添加到该第四查找消息中,得到第五查找消息;
73.上述发送单元,还用于向该第二处理器发送该第五查找消息;
74.或者,该发送单元,还用于在基于该第四查找消息未查找到该第三数据的嵌入参数的情况下,向该第二处理器发送该第四查找消息。
75.一种可能的实施方式中,上述接收单元还用于:接收来自该第三处理器的第六查找消息,该第六查找消息包括该第一数据和该第一数据的嵌入参数。
76.第四方面,本技术提供一种数据处理装置,该装置包括:
77.发送单元,用于向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
78.接收单元,用于接收来自第三处理器的第二通知消息;该第二通知消息包括第二数据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
79.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器
中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
80.一种可能的实施方式中,该装置还包括获取单元;
81.该获取单元,用于在该第二通知消息中包括第一目标梯度的情况下,在该第二通知消息中获取该第一目标梯度;
82.该发送单元,还用于向该第二处理器发送该第二通知消息;该第一目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中数据和嵌入参数存在一一映射关系;
83.或者,该发送单元,还用于在该第二通知消息中未包括该第一目标梯度的情况下,向该第二处理器发送该第二通知消息。
84.一种可能的实施方式中,该获取单元具体用于:
85.确定该第二数据中的部分或全部数据为该第一嵌入表中的数据;
86.基于该部分或全部数据在该第二通知消息中获取该第一目标梯度。
87.一种可能的实施方式中,该接收单元,还用于接收来自该第三处理器的第三通知消息;该第三通知消息包括第三数据和第三梯度,用于将该第三梯度传播到第三目标处理器中;该第三梯度为该第三数据的嵌入参数对应的梯度;
88.该装置还包括获取单元,用于在该第三通知消息中包括第二目标梯度的情况下,在该第三通知消息中获取该第二目标梯度,
89.该发送单元,还用于向该第二处理器发送该第三通知消息;该第二目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中包括数据和数据的嵌入参数的映射关系;
90.或者,该发送单元,还用于在该第三通知消息中未包括该第二目标梯度的情况下,向该第二处理器发送该第三通知消息。
91.第五方面,本技术提供一种装置,该装置可以包括处理器和存储器,用于实现上述第一方面描述的数据处理方法。该存储器与处理器耦合,处理器执行存储器中存储的计算机程序时,可以实现上述第一方面或第一方面任一种可能的实现方式所述的方法。该装置还可以包括通信接口,通信接口用于该装置与其它装置进行通信,示例性的,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。该通信接口包括接收接口和发送接口,该接收接口用于接收消息,该发送接口用于发送消息。
92.在一种可能的实现中,该装置可以包括:
93.存储器,用于存储计算机程序;
94.处理器,用于通过发送接口向第二处理器发送第一查找消息;该第一查找消息包括第一数据,该第一查找消息用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
95.通过接收接口接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,该第二查找消息用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
96.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器
中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
97.需要说明的是,本技术中存储器中的计算机程序可以预先存储也可以使用该装置时从互联网下载后存储,本技术对于存储器中计算机程序的来源不进行具体限定。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或连接,其可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。
98.第六方面,本技术提供一种装置,该装置可以包括处理器和存储器,用于实现上述第二方面描述的数据处理方法。该存储器与处理器耦合,处理器执行存储器中存储的计算机程序时,可以实现上述第二方面或第二方面任一种可能的实现方式所述的方法。该装置还可以包括通信接口,通信接口用于该装置与其它装置进行通信,示例性的,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。该通信接口包括接收接口和发送接口,该接收接口用于接收消息,该发送接口用于发送消息。
99.在一种可能的实现中,该装置可以包括:
100.存储器,用于存储计算机程序;
101.处理器,用于通过发送接口向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
102.通过接收接口接收来自第三处理器的第二通知消息;该第二通知消息包括第二数据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
103.该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
104.需要说明的是,本技术中存储器中的计算机程序可以预先存储也可以使用该装置时从互联网下载后存储,本技术对于存储器中计算机程序的来源不进行具体限定。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或连接,其可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。
105.第七方面,本技术提供一种数据训练系统,该系统包括n个处理器,该n为大于或等于3的整数;该n个处理器之间通过环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息;该n个处理器中的每个处理器可以是上述第三方面及其可能的实施方式中任一项所述的装置;或者,该n个处理器中的每个处理器可以是上述第四方面及其可能的实施方式中任一项所述的装置;或者,该n个处理器中的每个处理器可以是上述第五方面及其可能的实施方式中任一项所述的装置;或者,该n个处理器中的每个处理器可以是上述第六方面及其可能的实施方式中任一项所述的装置。
106.第八方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质存储有
计算机程序,该计算机程序被处理器执行以实现上述第一方面及其可能的实施方式中任一项所述的方法;或者,该计算机程序被处理器执行以实现上述第二方面及其可能的实施方式中任一项所述的方法。
107.第九方面,本技术提供一种计算机程序产品,该计算机程序产品被处理器执行时,上述第一方面及其可能的实施方式中任一项所述的方法将被执行;或者,上述第二方面及其可能的实施方式中任一项所述的方法将被执行。
108.上述第三方面至第九方面提供的方案,用于实现或配合实现上述第一方面和第二方面中对应提供的方法,因此可以与第一方面和第二方面中对应的方法达到相同或相应的有益效果,此处不再进行赘述。
附图说明
109.下面将对本技术实施例中所需要使用的附图作介绍。
110.图1为本技术实施例提供的一种人工智能主体框架示意图;
111.图2为本技术实施例提供的一种应用环境示意图;
112.图3为本技术实施例提供的一种神经网络处理器的结构示意图;
113.图4所示为本技术实施例提供的一种数据训练系统的示意图;
114.图5所示为一种数据的训练模型的示意图;
115.图6所示为现有的技术方案中消息通信的示意图;
116.图7所示为数据训练过程的通信部分和计算部分的示意图;
117.图8所示为本技术数据训练模型中的进行环形通信的示意图;
118.图9所示为本技术提供的数据处理方法的流程示意图;
119.图10a至图10e所示为本技术提供的一种环形通信的流程示意图;
120.图11所示为本技术提供的另一种数据处理方法的流程示意图;
121.图12a至图12d所示为本技术提供的一种环形通信的流程示意图;
122.图13所示为本方案通信吞吐量和现有的技术方案通信吞吐量的对比示意图;
123.图14和图15所示为本技术提供的装置的逻辑结构示意图;
124.图16所示为本技术提供的装置的实体结构示意图。
具体实施方式
125.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
126.图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
127.下面从“智能信息链”(水平轴)和“it价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
[0128]“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程
中,数据经历了“数据—信息—知识—智慧”的凝练过程。
[0129]“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
[0130]
(1)基础设施:
[0131]
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(cpu、npu、gpu、asic、fpga等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
[0132]
(2)数据
[0133]
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
[0134]
(3)数据处理
[0135]
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
[0136]
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
[0137]
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
[0138]
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
[0139]
(4)通用能力
[0140]
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
[0141]
(5)智能产品及行业应用
[0142]
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
[0143]
参见附图2,本技术实施例提供了一种系统架构200。数据采集设备260用于采集训练的样本数据并存入数据库230,训练设备220基于数据库230中维护的样本数据生成目标模型/规则201。下面将更详细地描述训练设备220如何基于样本数据得到目标模型/规则201,目标模型/规则201能够实现点击率预估、信息推荐或者搜索等功能。
[0144]
深度神经网络中的每一层的工作可以用数学表达式来描述:从物理层面深度神经网络中的每一层的工作可以理解为通过五种对输入空间(输入向量的集合)的操作,完成输入空间到输出空间的变换(即矩阵的行空间到列空间),这五种操作包括:1、升维/
[0145]
降维;2、放大/缩小;3、旋转;4、平移;5、“弯曲”。其中1、2、3的操作由完成,4
的操作由+b完成,5的操作则由a()来实现。这里之所以用“空间”二字来表述是因为被分类的对象并不是单个事物,而是一类事物,空间是指这类事物所有个体的集合。其中,w是权重向量,该向量中的每一个值表示该层神经网络中的一个神经元的权重值。该向量w决定着上文所述的输入空间到输出空间的空间变换,即每一层的权重w控制着如何变换空间。训练深度神经网络的目的,也就是最终得到训练好的神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。因此,神经网络的训练过程本质上就是学习控制空间变换的方式,更具体的就是学习权重矩阵。
[0146]
因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到神经网络能够预测出真正想要的目标值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
[0147]
训练设备220得到的目标模型/规则可以应用不同的系统或设备中。在附图2中,执行设备210配置有i/o接口212,与外部设备进行数据交互,“用户”可以通过客户设备240向i/o接口212输入数据。
[0148]
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
[0149]
计算模块211使用目标模型/规则201对输入的数据进行处理,例如,对于点击率预估场景,该计算模块211使用目标模型/规则201预测出用户可能点击的信息等。
[0150]
最后,i/o接口212将处理结果返回给客户设备240,提供给用户。
[0151]
更深层地,训练设备220可以针对不同的目标,基于不同的数据生成相应的目标模型/规则201,以给用户提供更佳的结果。
[0152]
在附图2中所示情况下,用户可以手动指定输入执行设备210中的数据,例如,在i/o接口212提供的界面中操作。另一种情况下,客户设备240可以自动地向i/o接口212输入数据并获得结果,如果客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到样本数据存入数据库230。
[0153]
值得注意的,附图2仅是本技术实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在附图2中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
[0154]
图3,是本技术实施例提供的一种芯片硬件结构图。
[0155]
神经网络处理器npu 30作为协处理器挂载到主cpu(host cpu)上,由host cpu分配任务。npu的核心部分为运算电路305,通过控制器304控制运算电路305提取存储器中的
矩阵数据并进行乘法运算。
[0156]
在一些实现中,运算电路305内部包括多个处理单元(process engine,pe)。在一些实现中,运算电路305是二维脉动阵列。运算电路305还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路305是通用的矩阵处理器。
[0157]
举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路从权重存储器302中取矩阵b相应的数据,并缓存在运算电路中每一个pe上。运算电路从输入存储器301中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器308中。
[0158]
统一存储器306用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,dmac)305被搬运到权重存储器302中。输入数据也通过dmac被搬运到统一存储器306中。
[0159]
biu为bus interface unit即,总线接口单元310,用于axi总线与dmac和取指存储器309instruction fetch buffer的交互。
[0160]
总线接口单元310(bus interface unit,简称biu),用于取指存储器309从外部存储器获取指令,还用于存储单元访问控制器305从外部存储器获取输入矩阵a或者权重矩阵b的原数据。
[0161]
dmac主要用于将外部存储器ddr中的输入数据搬运到统一存储器306或将权重数据搬运到权重存储器302中或将输入数据搬运到输入存储器301中。
[0162]
向量计算单元307包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积层网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
[0163]
在一些实现中,向量计算单元307将经处理的输出的向量存储到统一缓存器306。例如,向量计算单元307可以将非线性函数应用到运算电路305的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元307生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路305的激活输入,例如用于在神经网络中的后续层中的使用。
[0164]
控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
[0165]
统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为on-chip存储器。外部存储器私有于该npu硬件架构。
[0166]
参见图4,图4所示为本技术提供的数据训练系统的示意图。该系统包括n个处理器,该n为大于1的整数。示例性地,该n个处理器可以是上述图2中的训练设备220。
[0167]
该n个处理器在数据训练过程中,可以采用环形通信架构实现消息通信。该环形通信架构为该n个处理器之间实现环形通信的逻辑架构。该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。为了便于理解该环形通信架构中的通信方式,假设n为4,那么,处理器0只向处理器1发送消息,并且只从处理器3接收消息;处理器1只向处理器2发送消息,并且只从
处理器0接收消息;处理器2只向处理器3发送消息,并且只从处理器1接收消息;处理器3只向处理器0发送消息,并且只从处理器2接收消息。
[0168]
在本技术中,在该n个处理器采用环形通信架构实现消息的通信的过程中,该n个处理器中的处理器i(i=n-1除外)为处理器i+1的上一跳处理器,处理器n-1为处理器0的上一跳处理器。该n个处理器中的处理器i(i=0除外)为处理器i-1的下一跳处理器,处理器0为处理器n-1的下一跳处理器,该i为0至n-1之间的整数。
[0169]
示例性地,上述基于环形通信架构的环形通信方式可以是采用消息传递接口(message passing interface,mpi)中的环形(ring)通信方式来实现。
[0170]
需要说明的是,该n个处理器在数据训练过程中,可以是整个过程的消息通信均采用上述环形通信架构实现通信;或者,可以是仅部分消息通信采用该环形通信架构实现通信,该部分消息例如包括在嵌入(embedding)层的前向传播过程中,用于查找数据的嵌入参数(embedding variable)的消息,和/或包括embedding层反向传播过程中,用于获取优化嵌入参数的梯度(gradient)的消息,其余部分的消息通信可以采用其它的通信方式,本技术对此不做限制。
[0171]
一种可能的实施方式中,上述嵌入参数是向量(vector)的形式,嵌入参数可以称为嵌入向量或者embedding向量。上述梯度也可以是向量的形式,梯度也可以称为梯度向量。
[0172]
示例性地,该n个处理器可以均为图形处理器(graphics processing unit,gpu);或者,该n个处理器可以均为网络处理器(neural-network processing units,npu);或者,该n个处理器可以部分是gpu部分是npu。该npu可以上述图3所述的神经网络处理器。需要说明的是,该n个处理器不限于是gpu或者npu,也可以是其它高速处理器。
[0173]
在本技术中,上述数据训练系统可以应用于训练嵌入参数量达到百亿,甚至千亿级别的场景。示例性的,该数据训练系统可以应用在信息搜索、信息推荐、广告例如点击率预估(click-through rate,ctr)等实际的应用场景中。需要说明的是,该数据训练系统训练的数据可以是稀疏数据,或者可以是稠密数据,本技术对此不做限制。
[0174]
示例性的,上述需要训练的数据可以是标识(identity document,id)数据,该id数据可以是数字或者字符串等。例如,在商品推荐的应用场景中,该id数据可以是商品的标识码或者商家店铺的地址等等。下面主要以需要训练的数据为id数据为例介绍本技术提供的数据处理方法,但是本技术提供的数据处理方法也可以实现对其它类型数据的处理,不限于是id数据。
[0175]
由于训练过程中需要训练的数据其数据量巨大,因此,采用数据并行加模型并行的方式来训练。
[0176]
为了便于理解数据并行加模型并行的训练方式,可以示例性地参见图5。
[0177]
在图5中可以看到,由于需要训练的数据量巨大,因此,将数据切分成n份,上述n个处理器每个处理器训练一份数据。该n份数据中的每一份数据可以称为批数据(batch),每份batch包含q个样本数据,每个样本数据包含多个数据。该q为大于0的整数,该q称为批大小(batch size),每个样本数据里包含的数据个数可以不同。
[0178]
在训练过程中,每个处理器运行一个训练进程来训练对应的数据,每个训练进程都有自己的序号,以用于处理器区分不同的进程。后续描述的处理器之间的消息通信也可
以说是训练进程之间的消息通信。
[0179]
数据的训练采用深度学习(deep learning)神经网络来进行训练,因此,每个处理器训练数据的模型均包括但不限于输入层、嵌入层、隐藏层、损失函数算子、梯度计算算子以及参数更新算子等子模型,图5中所示的训练数据的模型只是示例性地画出了部分子模型。
[0180]
整个训练过程包括前向传播(forward-propagation,fp)过程和反向传播(back-propagation,bp)过程。需要说明的是,图5中所示的前向传播中的嵌入层和反向传播中的嵌入层是同一个嵌入层,同样的,前向传播中的隐藏层和反向传播中的隐藏层是同一个隐藏层,分开画出是为了更好地区分及体现出前向传播和反向传播的过程。
[0181]
其中,前向传播的过程包括:将数据输入到嵌入层,以用于将数据映射为稠密的嵌入参数来计算;在嵌入层的计算中,n个处理器之间需要进行消息的通信来查找各自训练的数据的嵌入参数(后面会详细介绍为何进行通信以及如何进行通信,此处暂不赘述);嵌入层的输出即为数据的嵌入参数,这些嵌入参数输入到隐藏层进行计算,输出预测值。该输出的预测值可以与标签(label)建立损失函数(loss),并通过自动求导的方式计算梯度。
[0182]
反向传播的过程包括:处理器基于上述损失函数和梯度通过反向链式求导过程推导出隐藏层和嵌入层所有训练参数的梯度,然后通过优化算法优化参数。具体的,当这些梯度反向传播到嵌入层,处理器基于这些梯度计算得到各个数据的嵌入参数对应的梯度;然后,n个处理器之间通过消息通信获取各个处理器需要的嵌入参数对应的梯度,处理器基于获取到的梯度优化对应的嵌入参数(后面会详细介绍为何进行通信以及如何进行通信,此处暂不赘述)。
[0183]
下面介绍在嵌入层的计算中,n个处理器之间为何需要进行消息的通信来查找各自训练的数据的嵌入参数;以及介绍n个处理器之间为何通过消息通信获取梯度。
[0184]
在具体实施例中,嵌入层的作用主要是将数据映射为稠密向量,该稠密向量即为上述嵌入参数。由于需要训练的数据数量巨大,且采用了模型并行方式训练,为了便于计算,节省预处理的计算资源,可以将需要训练的数据随机分配到n个处理器(n个训练进程)中进行训练。而该n个处理器中每个处理器(或者可以说是每个处理器的训练进程)维护有一个嵌入表(embedding表),该embedding表用于存储数据和嵌入参数,该embedding表中的数据和嵌入参数存在一一映射的关系。上述随机分配到一个处理器中的数据的嵌入参数不一定在本处理器的embedding表内,因此,需要在其它处理器的embedding表内获取对应的数据的嵌入参数,因而需要通过消息通信来互相查询各自的嵌入参数。
[0185]
一种可能的实施方式中,本技术可以通过模(mod)计算的方式切分不同的embedding表,具体的,相同embedding表内的数据对n取模计算后的余数均相同。可选的,该n个处理器中处理器i的embedding表内的数据对n取模计算后的余数为i,处理器i中训练数据的进程序号为i。
[0186]
另一种可能的实施方式中,本技术可以通过“除”的计算的方式切分不同的embedding表,具体的,相同embedding表内的数据除以n并取下整后的结果均相同。例如,假设n为3,4和5属于同一个embedding表内的数据,那么4除以3取下整后等于1,5除以3取下整后也等于1。
[0187]
另一种可能的实施方式中,本技术可以通过随机分配的方式切分不同的
embedding表,具体的,该n个处理器中每个处理器的embedding表内的数据是随机的,在查找的时候可以直接以数据本身作为索引在embedding表中查找对应的嵌入参数。
[0188]
需要说明的是,本技术实施例中对对于如何切分embedding表的方式不做限制,下面介绍具体的实现过程中主要是以通过模计算的方式切分得到的embedding表为例进行介绍,但这不构成对本技术实施例的限制。
[0189]
另外,在具体实现过程中,上述n个处理器中每个处理器的embedding表内的数据和嵌入参数,可以通过加载已训练好的模型中的embedding表中的数据作为当前训练中embedding表中的初始化数据。或者,在对embedding表查找的时候对于首次查询的数据,可以直接使用随机数初始化该数据的嵌入参数,并将该数据和随机生成的嵌入参数插入embedding表中完成初始化。本技术对embedding表的数据初始化的方式不做限制。
[0190]
为了便于理解embedding表,可以参见表1。
[0191]
表1
[0192]
id嵌入参数数据1参数1数据2参数2
…………
数据m参数m
[0193]
表1示例性地示出了embedding表包括的内容和结构,表1中的id即为数据,在embedding表中,每个数据映射有一个嵌入参数。表1中的m可以是大于1的任意整数。
[0194]
同理,在反向传播过程中,一个处理器计算得到其训练的数据对应的嵌入参数的梯度后,需要将这些数据的嵌入参数对应的梯度,分发到这些数据所在的embedding表对应的处理器中,以用于该处理器对其自身的embedding表中的嵌入参数进行优化。为了便于理解,举例说明,参见表2。
[0195]
表2
[0196][0197][0198]
表2中假设上述n为3,即由3个处理器来训练数据。表2中示例性给出了随机分配给每个处理器训练的数据,并给出了这些数据与3进行模运算后的余数。以处理器0为例,处理器0随机获得的需要进行训练的数据为10、21、14和19,该几个数据对应的对3取模的余数分别为1、0、2、1。
[0199]
假设n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,即第0个处理器中的embedding表内的数据对3取模计算后的余数为0,第1个处理器中的embedding表内的数据对3取模计算后的余数为1,第2个处理器中的embedding表内的数据对3取模计算后的余数为2。那么,以处理器0为例,处理器0中的embedding表内只有对3取模后余数为0的数据映射的嵌入参数,而没有对3取模后余数为1和2的数据映射的嵌入参数。因此,在正向传播过程中,处理器0需要与处理器1和处理器2进行消息通信以获取数据10、
14和19的嵌入参数。
[0200]
同理,在反向传播过程中,处理器0计算出了数据10、21、14和19对应的梯度,该梯度是用于修正和更新embedding表中的数据10、21、14和19的嵌入参数。而数据10和19的嵌入参数在处理器1中,数据14的嵌入参数在处理器2中,因此,处理器0需要将计算得到的数据10和19的梯度发送给处理器1,将数据14的梯度发送给处理器2。该梯度的通信可以通过消息通信来实现。
[0201]
基于上述的介绍可知,数据的embedding过程中,不管是前向传播还是反向传播均需要数据并行加模型并行训练数据的n个处理器之间进行消息的通信,来查找数据的嵌入参数和梯度。但是,现有的技术方案中,n个处理器之间进行通信时采用多对多的消息通信方式,导致产生通信瓶颈,增加通信时延,降低通信效率,且该消息通信的过程无法和计算的过程叠加优化,从而影响整个训练系统的训练效率,降低训练性能。为了便于理解上述多对多的消息通信方式,可以参见图6。
[0202]
在图6中可以看到,n个处理器之间相互发送消息,并且是n个处理器中的每一个处理器向另外的多个处理器发送消息,这种情况下,不管是发送的带宽资源还是接收的带宽资源都需要较大的消耗,并且处理器需要排队发送消息和排队接收消息,从而容易导致通信瓶颈,增加通信时延。
[0203]
为了便于理解上述消息通信的过程无法和计算的过程叠加优化,可以参见图7。在图7中可以看到,通信部分的过程和计算部分的过程无法叠加,处理器需要等待通信过程完成之后才可以进行下一步的计算过程。因此,若通信过程时延较大,则严重影响整个训练过程的效率,进而降低训练系统的性能。
[0204]
为了解决上述问题,本技术提供了一种数据处理器方法,可以提高处理器之间通信带宽的利用率,降低embedding层前向传播和反向传播中的通信时延,以提高训练效率。
[0205]
本技术提供的数据处理方法主要是在上述n个处理器之间部署环形通信架构,使得处理器在数据训练的embedding层前向传播过程中,通过该环形通信架构与其它的处理器通信查找对应的数据嵌入参数;并且使得处理器在数据训练的embedding层反向传播过程中,通过该环形通信架构与其它的处理器通信来获取各自需要的数据的嵌入参数对应的梯度。可以参见图8,图8示例性地示出了n个处理器在训练数据的过程中,数据到达embedding层后各个处理器之间可以通过环形通信架构查找各自需要的嵌入参数;且n个处理器在反向传播过程中,梯度反向传播到embedding层并计算得到数据嵌入参数对应的梯度后,可以通过环形通信架构进行消息通信获取各自需要的梯度。
[0206]
在具体实施例中,在embedding层前向传播过程中嵌入参数的查找过程,上述n个处理器每个处理器可以生成一个查找消息,然后,该n个处理器将生成的查找消息以环形通信架构的通信方式各自发送给自己的下一跳处理器,各个处理器接收到查找消息后,可以识别查找消息中的数据是否属于其各自维护的embedding表中的数据,若有属于的数据,那么查找该属于的数据对应的嵌入参数,并将查找到的嵌入参数添加到接收到的消息中。然后,处理器再将添加了嵌入参数的消息再次以环形通信架构的通信方式发送给自己的下一跳处理器。若接收到的消息中的数据没有属于自身维护的embedding表内的数据,那么,直接将接收到的消息以环形通信架构的通信方式发送给下一跳处理器。重复该查找和发送的操作,循环至少n次之后,各个处理器都可以获得自身查找的所有数据的嵌入参数。
[0207]
同理,在embedding层反向传播过程中梯度的获取过程,上述n个处理器每个处理器可以生成一个包括数据和对应的梯度的消息,然后,该n个处理器将生成的消息以环形通信架构的通信方式各自发送给自己的下一跳处理器。各个处理器接收到消息后,可以识别消息中的数据是否属于其各自维护的embedding表中的数据。若有属于的数据,则获取消息中该属于的数据对应的梯度,以用于优化更新embedding表中对应的嵌入参数。然后,将该接收到的消息以环形通信架构的通信方式发送给下一跳处理器。若接收到的消息中的数据没有属于自身维护的embedding表中的数据,那么,处理器也将该接收到的消息以环形通信架构的通信方式发送给下一跳处理器。重复该发送和获取的操作,循环至少n-1次之后,各个处理器都可以获得自身embedding表中所有数据的嵌入参数对应的梯度,从而可以完成该所有数据的嵌入参数的优化更新。
[0208]
一种可能的实施方式中,由于数据训练系统训练的数据可以是稀疏数据或者稠密数据,那么,如果处理器接收到的需要训练的数据为稀疏数据,处理器可以在embedding层前向传播过程中查找这些稀疏数据的嵌入参数之前,先将这些稀疏数据转换为稠密数据,然后,以转换得到的稠密数据为索引查找对应的嵌入参数。这种情况下,不管处理器需要训练的数据是稀疏数据还是稠密数据,在embedding层前向传播过程中查找这些稀疏数据的嵌入参数的过程中,基于上述环形通信架构发送和接收的消息中包括的数据均为稠密数据的形式。并且,这种情况下,处理器维护的embedding表中的数据也是稠密数据的形式。
[0209]
可选的,上述n个处理器之间通过环形通信架构实现环形消息通信的过程可以封装成通信接口,即每个处理器向下一跳处理器发送消息的操作可以封装成一个发送接口,每个处理器从上一跳处理器接收消息的操作可以封装成一个接收接口,这样处理器需要基于上述环形通信架构发送消息时调用封装好的发送接口发送即可,处理器需要基于上述环形通信架构接收消息时调用封装好的接收接口接收即可。
[0210]
可选的,在本技术中,可以设计将embedding层前向传播过程中嵌入参数的查找过程,与embedding层反向传播过程中梯度的获取过程封装成一个可调用的接口,并暴露给人工智能(artificial intelligence,ai)框架使用。即处理器在接收到嵌入参数的查找消息后,可以直接调用封装好的接口实现该嵌入参数的查找,然后返回查找结果。该查找结果可以是查找到的数据的嵌入参数,或者若没有查找到对应的嵌入参数,该返回结果可以是空值。
[0211]
同理,处理器在接收到梯度的消息后,可以直接调用封装好的接口实现梯度的查找,并返回操作结果。由于处理器是在消息中查找属于自身embedding表中的数据的嵌入参数对应的梯度,不管是否查找到,其返回的操作结果都可以是空值。
[0212]
需要说明的是,本技术提供的上述数据处理方法的各个操作封装成接口的方式不限于上述示例性示出的实现方式,在具体实施例中,可以将上述多个操作任意拆分封装成多个接口提供给ai框架使用,本技术对此不做限制。
[0213]
上述综合描述了本技术提供的数据处理方法的整体过程,下面结合图表描述具体的步骤的实现。
[0214]
首先介绍在embedding层前向传播过程中本技术提供的数据处理方法,参见图9,该数据处理方法可以包括但不限于如下步骤:
[0215]
901、第一处理器向第二处理器发送第一查找消息;该第一查找消息包括第一数
据,用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器。
[0216]
在具体实施例中,该第一处理器可以是上述图4所示系统中n个处理器中的任意一个。假设该第一处理器为上述n个处理器中的处理器i(i=n-1除外),那么,该第二处理器为该n个处理器中的处理器i+1;若该第一处理器为处理器n-1,那么,该第二处理器为处理器0。
[0217]
具体的,基于前面的描述可知,在embedding层前向传播过程中,上述n个处理器之间需要通过消息通信来获取各自需要的数据的嵌入参数。在本技术中,该n个处理器之间的消息通信可以采用环形通信架构来实现。本实施例先以第一处理器、该第一处理器的下一跳处理器(上述第二处理器)和该第一处理器的上一跳处理器(下面步骤902中的第三处理器)之间的通信为例介绍采用环形通信架构实现嵌入参数的查找过程。
[0218]
上述第一数据可以包括一个或多个数据。该第一数据可以是稀疏数据或者稠密数据。上述第一查找消息中包括的内容可以示例性地参见表3。
[0219]
表3
[0220]
id数据1数据2
……
数据k1值域(value)
‑‑‑‑
[0221]
表3示例性示出了上述第一查找消息包括的部分内容,表3中的id即为数据,值域用于填写数据对应的嵌入参数。表3中的k1可以是任意大于0的整数。假设该第一查找消息为第一处理器生成的原始消息,该消息中数据对应的值域可以是空值或者可以是默认的原始值(例如该原始值可以是0等),本技术对此不作限制。上述第一查找消息中包括第一数据,是为了接收到该消息的处理器能够基于该第一数据查找到该第一数据对应的嵌入参数,以填入该消息的第一数据对应的值域中。
[0222]
在一种可能的实施方式中,假设该n个处理器中处理器i的embedding表内的数据对n取模计算后的余数为i,那么上述第一查找消息中还可以包括数据对n取模后的余数,由于该余数和数据所在的embedding表所在的处理器的序号(训练进程的序号)相同,因此,也可以说该第一查找消息中还可以包括数据所在的embedding表所在的进程的序号。示例性地参见表4。
[0223]
表4
[0224]
id数据1数据2
……
数据k1进程(rank)序号
‑‑……‑
值域
‑‑……‑
[0225]
该第一查找消息中包括进程序号是为了处理器接收到该消息后,可以通过进程序号快速确定哪些数据是属于自身维护的embedding表中的数据,从而快速查找到对应的嵌入参数填入到消息的值域中,可以提高查找效率。
[0226]
或者,另一种可能的实施方式中,不管上述n个处理器中处理器i的embedding表内的数据对n取模计算后的余数是否为i,只要第一处理器可以确定数据的嵌入参数所在的训练进程的序号,那么,第一查找消息包括的内容的格式就可以是表4所示的格式。
[0227]
902、该第一处理器接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中该第一处理
器的上一跳处理器。
[0228]
在具体实施例中,假设该第一处理器为上述n个处理器中的处理器i(i=0除外),那么,该第三处理器为该n个处理器中的处理器i-1;若该第一处理器为处理器0,那么,该第三处理器为处理器n-1。
[0229]
上述第二数据可以包括一个或多个数据,该第二数据一般与上述第一数据不相同。该第二数据可以是稀疏数据或者稠密数据。一种可能的实施方式中,该第二数据中的部分数据可以与该第一数据部分数据相同。上述第二查找消息的格式和上述第一查找消息的格式类似,关于第二查找消息包括的内容格式可以示例性参见上述表3或表4对应的描述,此处不再赘述。
[0230]
具体的,基于上述n个处理器采用环形通信架构进行消息通信,第一处理器向其下一跳处理器第二处理器发送了上述第一查找消息后,从其上一跳处理器第三处理器接收到上述第二查找消息后。第一处理器响应于该第二查找消息执行嵌入参数的查找操作,下面分两种情况进行描述:
[0231]
第一种情况,在基于该第二查找消息查找到该第二数据中部分或全部数据的嵌入参数的情况下,该第一处理器将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息,并向该第二处理器发送该第三查找消息。该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
[0232]
在具体实施例中,假设第二查找消息携带的内容的格式如上述表3所示,即未携带进程序号,那么,第一处理器接收到上述第二查找消息后,解析消息获取消息中的第二数据,将该第二数据与第一处理器自身维护的embedding表中的数据比较。若该embedding表中存在该第二数据中的部分或全部数据,那么,第一处理器在该embedding表中获取该部分或全部数据映射的嵌入参数。然后,第一处理器将该部分或全部数据映射的嵌入参数添加到上述第二查找消息中该部分或全部数据对应的值域中,得到第三查找消息。然后,该第一处理器将该第三查找消息发送给下一跳处理器即发送给上述第二处理器。
[0233]
可选的,将嵌入参数添加到消息的值域中可以是将嵌入参数以累加等操作添加到消息的值域中。
[0234]
一种可能的实施方式中,假设n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第二查找消息携带的内容的格式如上述表3所示,即未携带进程序号。那么,第一处理器接收到上述第二查找消息后,解析消息获取消息中的第二数据。然后,第一处理器将该第二数据的每个数据与n进行模计算,得到该每个数据取模后的余数。
[0235]
若计算得到的余数中有一个或多个余数与该第一处理器运行的训练进程的序号相同,那么,该一个或多个余数对应的数据存在该第一处理器维护的embedding表中。第一处理器以该一个或多个余数对应的数据为索引,在该embedding表中查找到该一个或多个余数对应的数据的嵌入参数。并将查找到的嵌入参数对应添加到上述第二查找消息中该一个或多个余数对应的数据所对应的值域中,得到第三查找消息。然后,该第一处理器将该第三查找消息发送给下一跳处理器即发送给上述第二处理器。
[0236]
或者,若上述计算得到的余数中有一个或多个余数与该第一处理器运行的训练进程的序号相同,第一处理器以该一个或多个余数对应的数据为索引,在自身维护的
embedding表中查找该一个或多个余数对应的数据的嵌入参数。如果该一个或多个余数对应的数据中有数据不在该embedding表中,那么,处理器可以为该不在embedding表中的数据随机生成对应的嵌入参数,然后,将在embedding表中查找到的嵌入参数和该随机生成的嵌入参数添加到第二查找消息中对应的值域中,得到第三查找消息。然后,该第一处理器将该第三查找消息发送给下一跳处理器即发送给上述第二处理器。另外,处理器将该不在embedding表中的数据与该随机生成的嵌入参数一一对应地添加到embedding表中。
[0237]
一种可能的实施方式中,假设n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第二查找消息携带的内容的格式如上述表4所示,即携带进程序号。那么,第一处理器接收到上述第二查找消息后,解析消息获取消息中的第二数据和对应的进程序号。
[0238]
若该第二查找消息中的进程序号有一个或多个序号为该第一处理器运行的训练进程的序号,那么,该一个或多个序号对应的数据存在该第一处理器维护的embedding表中。第一处理器以该一个或多个序号对应的数据为索引,在该embedding表中查找到该一个或多个序号对应的数据的嵌入参数。并将查找到的嵌入参数对应添加到上述第二查找消息中该一个或多个序号对应的数据所对应的值域中,得到第三查找消息。然后,该第一处理器将该第三查找消息发送给下一跳处理器即发送给上述第二处理器。
[0239]
或者,若上述第二查找消息中的进程序号有一个或多个序号为该第一处理器运行的训练进程的序号,第一处理器以该一个或多个序号对应的数据为索引,在自身维护的embedding表中查找该一个或多个序号对应的数据的嵌入参数。如果该一个或多个序号对应的数据中有数据不在该embedding表中,那么,处理器可以为该不在embedding表中的数据随机生成对应的嵌入参数,然后,将在embedding表中查找到的嵌入参数和该随机生成的嵌入参数添加到第二查找消息中对应的值域中,得到第三查找消息。然后,该第一处理器将该第三查找消息发送给下一跳处理器即发送给上述第二处理器。另外,处理器将该不在embedding表中的数据与该随机生成的嵌入参数一一对应地添加到embedding表中。
[0240]
为了便于理解处理器如何将嵌入参数添加到第二查找消息的值域中,下面举例说明。参见表5。
[0241]
表5
[0242]
id98133值域
‑‑‑‑
[0243]
假设表5中所示的数据为上述第二查找消息中携带的数据,值域默认为空。第一处理器确定该表5中数据9和3属于自身维护的embedding表中的数据,并在该embedding表中查找到该9和3的嵌入参数分别为参数a和参数b,然后第一处理器直接将该参数a和参数b分别添加到9和3对应的值域中,添加之后可以参见表6。
[0244]
表6
[0245][0246][0247]
那么,上述获得的第三查找消息即包括该表6所示的内容。
[0248]
第二种情况,在基于该第二查找消息未查找到该第二数据的嵌入参数的情况下,
该第一处理器向该第二处理器发送该第二查找消息。
[0249]
在具体实施例中,不管该第二查找消息中包括的内容格式是上述介绍的哪一种,若第一处理器确定该第二查找消息中包括的第二数据中没有数据属于该第一处理器自身维护的embedding表中的数据,即第一处理器无法在自身维护的embedding表中查找到该第二数据的嵌入参数,那么,第一处理器就会将该第二查找消息发送给下一跳处理器即发送给上述第二处理器。
[0250]
需要说明的是,如果上述n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,对n取模运算后得到的余数与第一处理器运行的训练进程序号相同的数据属于该第一处理器自身维护的embedding表中的数据,除此之外的数据不属于该第一处理器自身维护的embedding表中的数据。
[0251]
一种可能的实施方式中,第一处理器在接收到上述第二查找消息,并完成对该第二查找消息的响应操作之后,该第一处理器还接收来自上述第三处理器的第四查找消息;该第四查找消息包括第三数据和该第三数据中第一部分数据映射的嵌入参数,该第四查找消息用于查找该第三数据中除了该第一部分数据之外的数据映射的嵌入参数。
[0252]
在具体实施例中,该第四查找消息在发送到该第一处理器之前,该第四查找消息中携带的第三数据中第一部分数据的嵌入参数已经在其它的处理器中查找到,因此,第四查找消息中携带有该第一部分数据的嵌入参数。该第一部分数据为该第三数据中的一个或多个数据。该第三数据可以是稀疏数据或者稠密数据。
[0253]
类似于第一处理器接收到上述第二查找消息的操作,第一处理器响应于该第四查找消息执行嵌入参数的查找操作,同样地分两种情况进行描述:
[0254]
第一种情况,在基于该第四查找消息查找到该第三数据中第二部分数据的嵌入参数的情况下,该第一处理器将该第二部分数据的嵌入参数添加到该第四查找消息中,得到第五查找消息,并向上述第二处理器发送该第五查找消息。该第二部分数据为该第三数据中的一个或多个数据,该第二部分数据与上述第一部分数据是不同的数据。
[0255]
在具体实施例中,假设第四查找消息携带的内容的格式如上述表3所示,即未携带进程序号,那么,第一处理器接收到上述第四查找消息后,解析消息获取消息中的第三数据,将该第三数据与第一处理器自身维护的embedding表中的数据比较。若该embedding表中存在该第三数据中的第二部分数据,那么,第一处理器在该embedding表中获取该第二部分数据映射的嵌入参数。然后,第一处理器将该第二部分数据映射的嵌入参数添加到上述第四查找消息中该第二部分数据对应的值域中,得到第五查找消息。然后,该第一处理器将该第五查找消息发送给下一跳处理器即发送给上述第二处理器。该第五查找消息用于查找该第三数据中未查找到嵌入参数的数据的嵌入参数。
[0256]
一种可能的实施方式中,假设n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第四查找消息携带的内容的格式如上述表3所示,即未携带进程序号。那么,第一处理器接收到上述第四查找消息后,解析消息获取消息中的第三数据。然后,第一处理器将该第三数据的每个数据与n进行模计算,得到该每个数据取模后的余数。
[0257]
若计算得到的余数中有一个或多个余数与该第一处理器运行的训练进程的序号相同,那么,该一个或多个余数对应的数据存在该第一处理器维护的embedding表中。该一
个或多个余数对应的数据即为上述第二部分数据。第一处理器以该一个或多个余数对应的数据为索引,在该embedding表中查找到该一个或多个余数对应的数据的嵌入参数。并将查找到的嵌入参数对应添加到上述第四查找消息中该一个或多个余数对应的数据所对应的值域中,得到第五查找消息。然后,该第一处理器将该第五查找消息发送给下一跳处理器即发送给上述第二处理器。
[0258]
或者,若上述计算得到的余数中有一个或多个余数与该第一处理器运行的训练进程的序号相同,第一处理器以该一个或多个余数对应的数据为索引,在自身维护的embedding表中查找该一个或多个余数对应的数据的嵌入参数。如果该一个或多个余数对应的数据中有数据不在该embedding表中,那么,处理器可以为该不在embedding表中的数据随机生成对应的嵌入参数,然后,将在embedding表中查找到的嵌入参数和该随机生成的嵌入参数添加到第四查找消息中对应的值域中,得到第五查找消息。然后,该第一处理器将该第五查找消息发送给下一跳处理器即发送给上述第二处理器。另外,处理器将该不在embedding表中的数据与该随机生成的嵌入参数一一对应地添加到embedding表中。
[0259]
一种可能的实施方式中,假设n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第四查找消息携带的内容的格式如上述表4所示,即携带进程序号。那么,第一处理器接收到上述第四查找消息后,解析消息获取消息中的第三数据和对应的进程序号。
[0260]
若该第四查找消息中的进程序号有一个或多个序号为该第一处理器运行的训练进程的序号,那么,该一个或多个序号对应的数据存在该第一处理器维护的embedding表中。该一个或多个序号对应的数据即为上述第二部分数据。第一处理器以该一个或多个序号对应的数据为索引,在该embedding表中查找到该一个或多个序号对应的数据的嵌入参数。并将查找到的嵌入参数对应添加到上述第四查找消息中该一个或多个序号对应的数据所对应的值域中,得到第五查找消息。然后,该第一处理器将该第五查找消息发送给下一跳处理器即发送给上述第二处理器。
[0261]
或者,若上述第四查找消息中的进程序号有一个或多个序号为该第一处理器运行的训练进程的序号,第一处理器以该一个或多个序号对应的数据为索引,在自身维护的embedding表中查找该一个或多个序号对应的数据的嵌入参数。如果该一个或多个序号对应的数据中有数据不在该embedding表中,那么,处理器可以为该不在embedding表中的数据随机生成对应的嵌入参数,然后,将在embedding表中查找到的嵌入参数和该随机生成的嵌入参数添加到第四查找消息中对应的值域中,得到第五查找消息。然后,该第一处理器将该第五查找消息发送给下一跳处理器即发送给上述第二处理器。另外,处理器将该不在embedding表中的数据与该随机生成的嵌入参数一一对应地添加到embedding表中。
[0262]
为了便于理解处理器如何将嵌入参数添加到第四查找消息的值域中,下面举例说明。参见表7。
[0263]
表7
[0264]
id1110515值域参数c-参数d-[0265]
假设表7中所示的数据为上述第四查找消息中携带的数据,可以看到数据11和15的嵌入参数已经在其它处理器中查找到,其它没找到嵌入参数的数据对应的值域默认为
空。第一处理器确定该表7中数据15属于自身维护的embedding表中的数据,并在该embedding表中查找到该15的嵌入参数为参数e,然后第一处理器直接将该参数e添加到15对应的值域中,添加之后可以参见表8。
[0266]
表8
[0267]
id1110515值域参数c-参数d参数e
[0268]
那么,上述获得的第五查找消息即包括该表8所示的内容。
[0269]
第二种情况,在基于该第四查找消息未查找到该第三数据的嵌入参数的情况下,该第一处理器向该第二处理器发送该第四查找消息。
[0270]
在具体实施例中,不管该第四查找消息中包括的内容格式是上述介绍的哪一种,若第一处理器确定该第四查找消息中包括的第三数据中没有数据属于该第一处理器自身维护的embedding表中的数据,即第一处理器无法在自身维护的embedding表中查找到该第三数据的嵌入参数,那么,第一处理可以将该第四查找消息发送给下一跳处理器即发送给上述第二处理器。
[0271]
一种可能的实施方式中,上述第一处理器接收到的来自上述第三处理器的第四查找消息中,包括的不是第三数据中部分数据映射的嵌入参数,而是第三数据中全部数据映射的嵌入参数。这种情况下,第一处理器可以确定出该第四查找消息中包括的第三数据中没有数据属于该第一处理器自身维护的embedding表中的数据,那么,第一处理可以将该第四查找消息发送给下一跳处理器即发送给上述第二处理器。
[0272]
一种可能的实施方式中,重复上述消息发送和嵌入参数查找的操作,循环n-1次之后,在第n次循环中,第一处理器可以接收到来自该第三处理器的第六查找消息,该第六查找消息包括该第一数据和该第一数据的嵌入参数。即上述第一查找消息是第一处理器生成的消息,该消息携带的第一数据为该第一处理器需要训练的数据。经过n次的循环之后,携带第一数据的消息经过n个处理器,并从该n个处理器的一个或多个处理器中查找到了该第一数据的嵌入参数。查找到的该嵌入参数随着消息的不断转发,最终,通过该第六查找消息发送到该第一处理器,使得第一处理器获得其训练的数据的全部嵌入参数。示例性地,参见表9。
[0273]
表9
[0274]
id16201927值域参数f参数g参数h参数r
[0275]
表9中示例性示出了上述第六查找消息包括的第一数据和该第一数据的嵌入参数,可以看到该第一数据的嵌入参数均已经查找到,并填写在各个数据对应的值域中。
[0276]
第一处理器通过上述第六查找消息获取到其训练数据的全部嵌入参数后,若该训练数据为稀疏数据,那么第一处理器需要对获取的这些训练数据的嵌入参数进行归约(reduce)操作,然后,将归约之后的嵌入参数继续前向传播到隐藏层。示例性地,该归约操作例如可以是对同类的或者关联性较大的训练数据的嵌入参数进行加权求和等操作,具体的归约操作可以参照现有的方案中的操作,本技术对此不做限制。
[0277]
为了便于理解上述介绍的在embedding层前向传播过程中本技术提供的数据处理方法,下面举例说明,参见图10a至图10e。在图10a至图10e中,假设上述n个处理器为4个处
理器,分别为处理器0、处理器1、处理器2和处理器3。该4个处理器通过上述环形通信架构实现消息的通信。本例子以n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i为例介绍。
[0278]
首先,参见图10a,在embedding层的前向传播过程中,各个处理器需要首先查找到自身训练的数据的嵌入参数。图10a中,假设处理器0需要查找嵌入参数的数据为第一批数据:21、5、14和25,第一批数据对4取模的余数分别为1、1、2和1,即数据21、5和25的嵌入参数需要在处理器1中查找,数据14的嵌入参数需要在处理器2中查找。图10a中,假设处理器1需要查找嵌入参数的数据为第二批数据:19、2、10和32,第二批数据对4取模的余数分别为3、2、2和0,即数据2和10的嵌入参数需要在处理器2中查找,数据19的嵌入参数需要在处理器3中查找,数据32的嵌入参数需要在处理器0中查找。图10a中,假设处理器2需要查找嵌入参数的数据为第三批数据:13、8、16和29,第三批数据对4取模的余数分别为1、0、0和1,即数据8和16的嵌入参数需要在处理器0中查找,数据13和29的嵌入参数需要在处理器1中查找。图10a中,假设处理器3需要查找嵌入参数的数据为第四批数据:6、33、18和4,第三批数据对4取模的余数分别为2、1、2和0,即数据6和18的嵌入参数需要在处理器2中查找,数据33的嵌入参数需要在处理器1中查找,数据4的嵌入参数需要在处理器0中查找。上述各个数据对4取模的余数即为各个数据的嵌入参数所在的进程的序号。
[0279]
在图10a中,各个处理器首先生成一个消息,该消息包括各自需要查找嵌入参数的数据、对应的进程序号以及用于填写嵌入参数的值域空间。各个处理器生成各自的消息后,按照环形通信架构的通信方式各自向下一跳处理器发送各自生成的消息,并接收上一跳处理器发送来的消息。接收到消息后,进行对应的查表操作,具体的查表操作参见前述的描述,此处不再赘述。然后,将查找到的嵌入参数填入各自接收到的消息中,具体参见图10b。
[0280]
在图10b中可以看到,处理器0将包括第一批数据的消息发送给处理器1,并接收来自处理器3的包括第四批数据的消息,然后,在自身的embedding表中查找到数据4的嵌入参数,并添加到接收的消息中数据4对应的值域中,获得新的消息。处理器1将包括第二批数据的消息发送给处理器2,并接收来自处理器0的包括第一批数据的消息,然后,在自身的embedding表中查找到数据21、5和25的嵌入参数,并添加到接收的消息中数据21、5和25对应的值域中,获得新的消息。处理器2将包括第三批数据的消息发送给处理器3,并接收来自处理器1的包括第二批数据的消息,然后,在自身的embedding表中查找到数据2和10的嵌入参数,并添加到接收的消息中数据2和10对应的值域中,获得新的消息。处理器3将包括第四批数据的消息发送给处理器0,并接收来自处理器2的包括第三批数据的消息,由于第三批数据中没有数据属于处理器3中embedding表的数据,因此处理器3中没有查找到第三批数据中任意数据的嵌入参数。
[0281]
在图10b中,获得新的消息的处理器将各自获得的新的消息发送给下一跳处理器,未获得新的消息的处理器(处理器3)将接收到的消息发送给下一跳处理器,各个处理器发送完消息之后从各自的上一跳处理器接收新的消息,然后继续响应于新的消息进行嵌入参数的查找。然后,将查找到的嵌入参数填入各自接收到的消息中,具体参见图10c。
[0282]
在图10c中,处理器0将包括第四批数据的消息发送给处理器1,并接收来自处理器3的包括第三批数据的消息,然后,在自身的embedding表中查找到数据8和16的嵌入参数,并添加到接收的消息中数据8和16对应的值域中,获得新的消息。处理器1将包括第一批数
据的消息发送给处理器2,并接收来自处理器0的包括第四批数据的消息,然后,在自身的embedding表中查找到数据33的嵌入参数,并添加到接收的消息中数据33对应的值域中,获得新的消息。处理器2将包括第二批数据的消息发送给处理器3,并接收来自处理器1的包括第一批数据的消息,然后,在自身的embedding表中查找到数据14的嵌入参数,并添加到接收的消息中数据14对应的值域中,获得新的消息。处理器3将包括第三批数据的消息发送给处理器0,并接收来自处理器2的包括第二批数据的消息,然后,在自身的embedding表中查找到数据19的嵌入参数,并添加到接收的消息中数据19对应的值域中,获得新的消息。
[0283]
在图10c中,各个处理器将各自获得的新的消息发送给下一跳处理器,各个处理器发送完消息之后从各自的上一跳处理器接收新的消息,然后继续响应于新的消息进行嵌入参数的查找。然后,将查找到的嵌入参数填入各自接收到的消息中,具体参见图10d。
[0284]
在图10d中,处理器0将包括第三批数据的消息发送给处理器1,并接收来自处理器3的包括第二批数据的消息,然后,在自身的embedding表中查找到数据32的嵌入参数,并添加到接收的消息中数据32对应的值域中,获得新的消息。处理器1将包括第四批数据的消息发送给处理器2,并接收来自处理器0的包括第三批数据的消息,然后,在自身的embedding表中查找到数据13和29的嵌入参数,并添加到接收的消息中数据13和29对应的值域中,获得新的消息。处理器2将包括第一批数据的消息发送给处理器3,并接收来自处理器1的包括第四批数据的消息,然后,在自身的embedding表中查找到数据6和18的嵌入参数,并添加到接收的消息中数据6和18对应的值域中,获得新的消息。处理器3将包括第二批数据的消息发送给处理器0,并接收来自处理器2的包括第一批数据的消息,由于第一批数据中没有数据属于处理器3中embedding表的数据,因此处理器3中没有查找到第一批数据中任意数据的嵌入参数。
[0285]
在图10d中,获得新的消息的处理器将各自获得的新的消息发送给下一跳处理器,未获得新的消息的处理器(处理器3)将接收到的消息发送给下一跳处理器,各个处理器发送完消息之后从各自的上一跳处理器接收新的消息。这次循环,各个处理器接收到的消息包括自身训练的数据和需要的嵌入参数,从而完成了整个embedding层嵌入参数的查找过程。具体参见图10e。
[0286]
在图10e中可以看到,处理器0将包括第二批数据的消息发送给处理器1,并接收来自处理器3的包括第一批数据的消息,该消息中包括处理器0需要的第一批数据的嵌入参数。处理器1将包括第三批数据的消息发送给处理器2,并接收来自处理器0的包括第二批数据的消息,该消息中包括处理器1需要的第二批数据的嵌入参数。处理器2将包括第四批数据的消息发送给处理器3,并接收来自处理器1的包括第三批数据的消息,该消息中包括处理器2需要的第三批数据的嵌入参数。处理器3将包括第一批数据的消息发送给处理器0,并接收来自处理器2的包括第四批数据的消息,该消息中包括处理器3需要的第四批数据的嵌入参数。
[0287]
需要说明的是,上述图10a至图10e所示及其相关的描述仅为一个示例,不构成对本技术的限制,基于上述思想所做的变形均在本技术的保护范围之内。
[0288]
综上,本例子中,该4个处理器通过4次循环查找到了各自需要的嵌入参数,由于处理器之间是通过环形通信架构来实现通信,相比于现有的技术方案中多对多的消息通信方式,本技术避免了单点通信瓶颈,降低了通信时延,提高了通信效率,从而能够提升整个数
据训练系统的训练性能。
[0289]
下面介绍在embedding层反向传播过程中本技术提供的数据处理方法。需要说明的是,下面介绍的在embedding层反向传播过程中本技术提供的数据处理方法的实施例中,所提到的用于区分不同对象的“第一处理器(或数据)”、“第二处理器(或数据)”和“第三处理器(或数据)”等等与上述图9及其可能的实施方式中对应的相同称呼可以是相同的对象,或者可以是不同的对象。
[0290]
参见图11,在embedding层反向传播过程中本技术提供的数据处理方法可以包括但不限于如下步骤:
[0291]
1101、第一处理器向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度,该第一数据与该第一梯度一一映射;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器。
[0292]
在具体实施例中,该第一处理器可以是上述图4所示系统中n个处理器中的任意一个。假设该第一处理器为上述n个处理器中的处理器i(i=n-1除外),那么,该第二处理器为该n个处理器中的处理器i+1;若该第一处理器为处理器n-1,那么,该第二处理器为处理器0。
[0293]
具体的,在embedding层反向传播过程中,上述n个处理器各自获得了各自训练的数据的嵌入参数的梯度,但是由于各个处理器训练的数据的嵌入参数存储在其它处理器的embedding表中,因此,需要通过消息通信来将梯度发送到对应的处理器中,以用于优化对应的嵌入参数。同样的,在本技术中,该n个处理器通过环形通信架构来实现消息的通信。本实施例先以第一处理器、该第一处理器的下一跳处理器(上述第二处理器)和该第一处理器的上一跳处理器(下面步骤1102中的第三处理器)之间的通信为例介绍采用环形通信架构实现各自需要的梯度的获取过程。
[0294]
上述第一目标处理器包括上述n个处理器中的一个或多个处理器。该第一目标处理器具体为哪个处理器由第一通知消息中的第一数据来决定。示例性的,假设该第一数据包括处理器i中embedding表内的部分或全部数据,那么,该第一目标处理器包括该处理器i。
[0295]
上述第一数据可以包括一个或多个数据。上述第一通知消息中包括的内容可以示例性地参见表10。
[0296]
表10
[0297]
id数据1数据2
……
数据k2值域梯度1梯度2
……
梯度k2
[0298]
表10示例性示出了上述第一通知消息包括的部分内容,表10中的id即为数据,值域中为数据的嵌入参数对应的梯度。表10中的k2可以是任意大于0的整数。
[0299]
在一种可能的实施方式中,假设上述n个处理器中处理器i的embedding表内的数据对n取模计算后的余数为i,那么上述第一通知消息中还可以包括数据对n取模后的余数,由于该余数和数据所在的embedding表所在的处理器的序号(训练进程的序号)相同,因此,也可以说该第一通知消息中还可以包括数据所在的embedding表所在的进程的序号。示例性地参见表11。
[0300]
表11
[0301]
id数据1数据2
……
数据k2进程(rank)序号序号1序号2
……
序号3值域梯度1梯度2
……
梯度k2
[0302]
该第一通知消息中包括进程序号是为了处理器接收到该消息后,可以通过进程序号快速确定哪些数据是属于自身维护的embedding表中的数据,从而快速获取对应的梯度。
[0303]
或者,另一种可能的实施方式中,不管上述n个处理器中处理器i的embedding表内的数据对n取模计算后的余数是否为i,只要第一处理器可以确定数据的嵌入参数所在的训练进程的序号,那么,第一通知消息包括的内容的格式就可以是表11所示的格式。
[0304]
1102、上述第一处理器接收来自第三处理器的第二通知消息;该第二通知消息包括第二数据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度,该第二数据与该第二梯度一一映射;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器。
[0305]
在具体实施例中,假设该第一处理器为上述n个处理器中的处理器i(i=0除外),那么,该第三处理器为该n个处理器中的处理器i-1;若该第一处理器为处理器0,那么,该第三处理器为处理器n-1。
[0306]
上述第二目标处理器包括上述n个处理器中的一个或多个处理器。该第二目标处理器具体为哪个处理器由第二通知消息中的第二数据来决定。示例性的,假设该第二数据包括处理器i中embedding表内的部分或全部数据,那么,该第二目标处理器包括该处理器i。
[0307]
上述第二数据可以包括一个或多个数据,该第二数据一般与上述第一数据不相同。一种可能的实施方式中,该第二数据中的部分数据可以与该第一数据部分数据相同。上述第二通知消息的格式和上述第一通知消息的格式类似,关于第二通知消息包括的内容格式可以示例性参见上述表10或表11对应的描述,此处不再赘述。
[0308]
具体的,基于上述n个处理器采用环形通信架构进行消息通信,第一处理器向其下一跳处理器第二处理器发送了上述第一通知消息后,从其上一跳处理器第三处理器接收到上述第二通知消息后。第一处理器响应于该第二通知消息执行梯度的获取操作,下面分两种情况进行描述:
[0309]
第一种情况,在该第二通知消息中包括第一目标梯度的情况下,该第一处理器在该第二通知消息中获取该第一目标梯度,并向该第二处理器发送该第二通知消息,以用于继续通知第二目标处理器中其它的处理器获取需要的梯度;该第一目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中数据和嵌入参数存在一一映射关系。
[0310]
在具体实施例中,假设第二通知消息携带的内容的格式如上述表10所示,即未携带进程序号,那么,第一处理器接收到上述第二通知消息后,解析消息获取消息中的第二数据,将该第二数据与第一处理器自身维护的embedding表中的数据比较。若该embedding表中存在该第二数据中的部分或全部数据,那么,第一处理器从解析后的第二通知消息的值域中提取该部分或全部数据对应的梯度,以用于优化第一处理器维护的第一嵌入表中该部分或全部数据的嵌入参数。提取完梯度之后,第一处理器将第二通知消息重新封装好,并发
送给下一跳处理器第二处理器。
[0311]
一种可能的实施方式中,假设上述n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第二通知消息携带的内容的格式如上述表10所示,即未携带进程序号。那么,第一处理器接收到上述第二通知消息后,解析消息获取消息中的第二数据。然后,第一处理器将该第二数据的每个数据与n进行模计算,得到该每个数据取模后的余数。若计算得到的余数中有一个或多个余数与该第一处理器运行的训练进程的序号相同,那么,该一个或多个余数对应的数据存在该第一处理器维护的embedding表中。第一处理器从解析后的第二通知消息的值域中提取该一个或多个余数对应的数据所述对应的梯度,以用于优化第一处理器维护的第一嵌入表中该一个或多个余数对应的数据的嵌入参数。提取完梯度之后,第一处理器将第二通知消息重新封装好,并发送给下一跳处理器第二处理器。
[0312]
一种可能的实施方式中,假设上述n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i,并且第二通知消息携带的内容的格式如上述表11所示,即携带进程序号。那么,第一处理器接收到上述第二通知消息后,解析消息获取消息中的第二数据和对应的进程序号。若该第二通知消息中的进程序号有一个或多个序号为该第一处理器运行的训练进程的序号,那么,该一个或多个序号对应的数据存在该第一处理器维护的embedding表中。第一处理器从解析后的第二通知消息的值域中提取该一个或多个序号对应的数据所述对应的梯度,以用于优化第一处理器维护的第一嵌入表中该一个或多个序号对应的数据的嵌入参数。提取完梯度之后,第一处理器将第二通知消息重新封装好,并发送给下一跳处理器第二处理器。
[0313]
第二种情况,在该第二通知消息中未包括该第一目标梯度的情况下,该第一处理器向该第二处理器发送该第二通知消息。
[0314]
在具体实施例中,不管该第二通知消息中包括的内容格式是上述表10还是表11所示的格式,若第一处理器确定该第二通知消息中包括的第二数据中没有数据属于该第一处理器自身维护的embedding表中的数据,那么,第一处理器无需从第二通知消息中提取梯度,并将该第二通知消息发送给下一跳处理器即发送给上述第二处理器。
[0315]
一种可能的实施方式中,第一处理器在接收到上述第二通知消息,并完成对该第二通知消息的响应操作之后,该第一处理器还接收来自上述第三处理器的第三通知消息。
[0316]
该第三通知消息包括第三数据和第三梯度,用于将该第三梯度传播到第三目标处理器中;该第三梯度为该第三数据的嵌入参数对应的梯度,该第三数据与该第三梯度一一映射。
[0317]
上述第三目标处理器包括上述n个处理器中的一个或多个处理器。该第三目标处理器具体为哪个处理器由第三通知消息中的第三数据来决定。示例性的,假设该第三数据包括处理器i中embedding表内的部分或全部数据,那么,该第三目标处理器包括该处理器i。
[0318]
上述第三数据可以包括一个或多个数据,该第三数据一般与上述第一数据和第二数据不相同。一种可能的实施方式中,该第三数据中的部分数据可以与该第一数据部分数据相同或者与该第二数据部分数据相同。上述第三通知消息的格式和上述第一通知消息的格式类似,关于第三通知消息包括的内容格式可以示例性参见上述表10或表11对应的描
述,此处不再赘述。
[0319]
具体的,在该第三通知消息中包括第二目标梯度的情况下,该第一处理器在该第三通知消息中获取该第二目标梯度,并向该第二处理器发送该第三通知消息,以用于继续通知第三目标处理器中其它的处理器获取需要的梯度;该第二目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度。或者,在该第三通知消息中未包括该第二目标梯度的情况下,该第一处理器向该第二处理器发送该第三通知消息,以用于继续通知第三目标处理器中其它的处理器获取需要的梯度。具体的实施步骤可以参考上述步骤1102中的第一种情况和第二种情况中的描述,此处不再赘述。
[0320]
一种可能的实施方式中,上述n个处理器通过环形通信架构进行消息通信,重复上述消息发送和梯度的获取操作,循环至少n-1次之后,上述n个处理器中各个处理器均全部获取到了自身embedding表中嵌入参数的梯度,从而可以各自基于获取到梯度对应优化自身embedding表中的嵌入参数。
[0321]
为了便于理解上述介绍的在embedding层反向传播过程中本技术提供的数据处理方法,下面举例说明,参见图12a至图12d。在图12a至图12d中,假设上述n个处理器为4个处理器,分别为处理器0、处理器1、处理器2和处理器3。该4个处理器通过环形通信架构实现消息的通信。本例子以n个处理器中处理器i中的embedding表内的数据对n取模计算后的余数为i为例介绍。
[0322]
首先,参见图12a,在embedding层的反向传播过程中,各个处理器需要首先获取到自身训练的数据的嵌入参数的梯度,以用于根据各个嵌入参数的梯度对应优化embedding表内的嵌入参数。图12a中,关于第一批数据、第二批数据、第三批数据和第四批数据的介绍可以参见上述对图10a的描述,此处不再赘述。在图12a中,各个处理器首先生成一个消息,该消息包括数据、对应的进程序号以及数据对应的梯度。各个处理器生成各自的消息后,按照环形通信架构的通信方式各自向下一跳处理器发送各自生成的消息,并接收上一跳处理器发送来的消息,具体参见图12b。接收到消息后,处理器可以进行对应的梯度获取操作,具体的获取操作参见前述步骤1102中的描述,此处不再赘述。
[0323]
在图12b中可以看到,处理器0将包括第一批数据的消息发送给处理器1,并接收来自处理器3的包括第四批数据的消息,然后,获取接收的消息中数据4对应的梯度16。处理器1将包括第二批数据的消息发送给处理器2,并接收来自处理器0的包括第一批数据的消息,然后,获取接收的消息中数据21、5和25分别对应的梯度1、梯度2和梯度4。处理器2将包括第三批数据的消息发送给处理器3,并接收来自处理器1的包括第二批数据的消息,然后,获取接收的消息中数据2和10分别对应的梯度6和梯度7。处理器3将包括第四批数据的消息发送给处理器0,并接收来自处理器2的包括第三批数据的消息,由于第三批数据中没有数据属于处理器3中embedding表的数据,因此处理器3中没有在接收到的消息中获取到任意的梯度。
[0324]
在图12b中,各个处理器响应于接收到的消息执行完梯度的获取操作之后,将接收到的消息向下一跳处理器发送,具体参见图12c。
[0325]
在图12c中可以看到,处理器0将包括第四批数据的消息发送给处理器1,并接收来自处理器3的包括第三批数据的消息,然后,获取接收的消息中数据8和数据16分别对应的梯度10和梯度11。处理器1将包括第一批数据的消息发送给处理器2,并接收来自处理器0的
包括第四批数据的消息,然后,获取接收的消息中数据33对应的梯度14。处理器2将包括第二批数据的消息发送给处理器3,并接收来自处理器1的包括第一批数据的消息,然后,获取接收的消息中数据14对应的梯度3。处理器3将包括第三批数据的消息发送给处理器0,并接收来自处理器2的包括第二批数据的消息,然后,获取接收的消息中数据19对应的梯度5。
[0326]
在图12c中,各个处理器响应于接收到的消息执行完梯度的获取操作之后,将接收到的消息向下一跳处理器发送,具体参见图12d。
[0327]
在图12d中可以看到,处理器0将包括第三批数据的消息发送给处理器1,并接收来自处理器3的包括第二批数据的消息,然后,获取接收的消息中数据32对应的梯度8。处理器1将包括第四批数据的消息发送给处理器2,并接收来自处理器0的包括第三批数据的消息,然后,获取接收的消息中数据13和29分别对应的梯度9和梯度12。处理器2将包括第一批数据的消息发送给处理器3,并接收来自处理器1的包括第四批数据的消息,然后,获取接收的消息中数据6和18分别对应的梯度13和梯度15。处理器3将包括第二批数据的消息发送给处理器0,并接收来自处理器2的包括第一批数据的消息,由于第一批数据中没有数据属于处理器3中embedding表的数据,因此处理器3中没有在接收到的消息中获取到任意的梯度。
[0328]
需要说明的是,上述图12a至图12d所示及其相关的描述仅为一个示例,不构成对本技术的限制,基于上述思想所做的变形均在本技术的保护范围之内。
[0329]
综上,本例子中,通过上述图12b至图12d中三次的循环,上述4个处理器均获取到了各自需要的梯度。由于处理器之间是通过环形通信架构来实现通信,相比于现有的技术方案中多对多的消息通信方式,本技术避免了单点通信瓶颈,降低了通信时延,提高了通信效率,从而能够提升整个数据训练系统的训练性能。
[0330]
一种可能的实施方式中,在具体的数据训练过程中,上述图9所示的数据处理方法及其可能的实施方式中的任一种实现方式,可以与上述图11所示的数据处理方法及其可能的实施方式中的任一种实现方式一起使用,即在数据训练的embedding层前向传播过程中基于上述介绍的环形通信架构实现嵌入参数的查找,然后,在该数据训练的embedding层反向传播过程中采用上述介绍的环形通信架构实现梯度的获取。
[0331]
参见图13,图13画出了上述图3所示的现有技术方案与本技术提供的方案的通信吞吐量的比较示意图。该吞吐量指的是单位时间内成功地发送数据的数量。图13中,横轴表示数据训练系统采用的处理器的个数,随着箭头的方向处理器个数越来越多;纵轴表示吞吐量,随着箭头的方向吞吐量越来越大。可以看到,现有技术的方案采用多对多的消息通信方式随着处理器个数增多,其吞吐量变化不大,甚至会下降。而本技术采用环形通信架构来实现消息的通信,随着处理器的增多,其吞吐量可以随着处理器的个数增加而增加,并且是以极好的线性度在增加。这是因为环形通信架构可以充分利用网络带宽,不易发生多对多消息通信方式的阻塞和抖动。一种可能的实施方式中,本技术通过采用该环形通信架构在embedding层的前向传播和反向传播中进行消息通信,能够将通信时延降低至原来的10-30%,极大地提升了通信效率,进而提升数据训练系统的性能。
[0332]
上述主要对本技术实施例提供的数据处理方法进行了介绍。可以理解的是,各个设备为了实现上述对应的功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本文中所公开的实施例描述的各示例的单元及步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取
决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但这种实现不应认为超出本技术的范围。
[0333]
本技术实施例可以根据上述方法示例对设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0334]
在采用对应各个功能划分各个功能模块的情况下,图14示出了装置的一种可能的逻辑结构示意图,该装置可以是上述图9所述方法及其可能的实施方式中的第一处理器,或者可以是该第一处理器中的芯片,或者可以是该第一处理器中的处理系统等。该装置1400包括发送单元1401和接收单元1402。其中:
[0335]
发送单元1401,用于向第二处理器发送第一查找消息;该第一查找消息包括第一数据,该第一查找消息用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;该发送单元1401可以由发送接口或发射器来实现,可以执行图9所示的步骤901中所述的操作。
[0336]
接收单元1402,用于接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,该第二查找消息用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;该接收单元1402可以由接收接口或接收器来实现,可以执行图9所示的步骤902中所述的操作。
[0337]
该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
[0338]
一种可能的实施方式中,该装置还包括添加单元;
[0339]
上述添加单元,用于在基于该第二查找消息查找到该第二数据中部分或全部数据的嵌入参数的情况下,将该部分或全部数据的嵌入参数添加到该第二查找消息中,得到第三查找消息;
[0340]
上述发送单元1401,还用于向该第二处理器发送该第三查找消息;
[0341]
或者,该发送单元1401,还用于在基于该第二查找消息未查找到该第二数据的嵌入参数的情况下,向该第二处理器发送该第二查找消息。
[0342]
一种可能的实施方式中,该装置还包括查找单元;
[0343]
该查找单元,用于在第一嵌入表中查找该部分或全部数据映射的嵌入参数;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系;
[0344]
上述添加单元,具体用于将该部分或全部数据映射的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
[0345]
上述发送单元1401,具体用于向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
[0346]
一种可能的实施方式中,上述装置还包括确定单元和生成单元;
[0347]
该确定单元,用于确定上述部分或全部数据属于第一嵌入表,且该第一嵌入表中还未包括该部分或全部数据;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系;
[0348]
该生成单元,用于生成该部分或全部数据各自对应的嵌入参数;
[0349]
上述添加单元,具体用于该部分或全部数据各自对应的嵌入参数添加到该第二查找消息中的该部分或全部数据对应的值域中,得到该第三查找消息;
[0350]
上述发送单元1401,具体用于向该第二处理器发送该第三查找消息,该第三查找消息用于查找该第二数据中未查找到嵌入参数的数据的嵌入参数。
[0351]
一种可能的实施方式中,上述发送单元1401具体用于:
[0352]
在该第二数据均不属于第一嵌入表中的数据的情况下,向该第二处理器发送该第二查找消息;该第一嵌入表为该第一处理器维护的用于存储数据和嵌入参数的嵌入表,该第一嵌入表中数据和嵌入参数存在一一映射关系。
[0353]
一种可能的实施方式中,上述接收单元1402,还用于接收来自该第三处理器的第四查找消息;该第四查找消息包括第三数据和该第三数据中第一部分数据映射的嵌入参数,该第四查找消息用于查找该第三数据中除了该第一部分数据之外的数据映射的嵌入参数;
[0354]
该装置还包括添加单元,用于在基于该第四查找消息查找到该第三数据中第二部分数据的嵌入参数的情况下,将该第二部分数据的嵌入参数添加到该第四查找消息中,得到第五查找消息;
[0355]
上述发送单元1401,还用于向该第二处理器发送该第五查找消息;
[0356]
或者,该发送单元1401,还用于在基于该第四查找消息未查找到该第三数据的嵌入参数的情况下,向该第二处理器发送该第四查找消息。
[0357]
一种可能的实施方式中,上述接收单元1402还用于:接收来自该第三处理器的第六查找消息,该第六查找消息包括该第一数据和该第一数据的嵌入参数。
[0358]
图14所示装置1400中各个单元的具体操作以及有益效果可以参见上述图9及其可能的方法实施例中对应的描述,此处不再赘述。
[0359]
在采用对应各个功能划分各个功能模块的情况下,图15示出了装置的一种可能的逻辑结构示意图,该装置可以是上述图11所述方法及其可能的实施方式中的第一处理器,或者可以是该第一处理器中的芯片,或者可以是该第一处理器中的处理系统等。该装置1500包括发送单元1501和接收单元1502。其中:
[0360]
发送单元1501,用于向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;该发送单元1501可以由发送接口或发射器来实现,可以执行图11所示的步骤1101中所述的操作。
[0361]
接收单元1502,用于接收来自第三处理器的第二通知消息;该第二通知消息包括第二数据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;该接收单元1502可以由接收接口或接收器来实现,可以执行图11所示的步骤1102中
所述的操作。
[0362]
该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
[0363]
一种可能的实施方式中,该装置还包括获取单元;
[0364]
该获取单元,用于在该第二通知消息中包括第一目标梯度的情况下,在该第二通知消息中获取该第一目标梯度;
[0365]
该发送单元1501,还用于向该第二处理器发送该第二通知消息;该第一目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中数据和嵌入参数存在一一映射关系;
[0366]
或者,该发送单元1501,还用于在该第二通知消息中未包括该第一目标梯度的情况下,向该第二处理器发送该第二通知消息。
[0367]
一种可能的实施方式中,该获取单元具体用于:
[0368]
确定该第二数据中的部分或全部数据为该第一嵌入表中的数据;
[0369]
基于该部分或全部数据在该第二通知消息中获取该第一目标梯度。
[0370]
一种可能的实施方式中,该接收单元1502,还用于接收来自该第三处理器的第三通知消息;该第三通知消息包括第三数据和第三梯度,用于将该第三梯度传播到第三目标处理器中;该第三梯度为该第三数据的嵌入参数对应的梯度;
[0371]
该装置还包括获取单元,用于在该第三通知消息中包括第二目标梯度的情况下,在该第三通知消息中获取该第二目标梯度,
[0372]
该发送单元1501,还用于向该第二处理器发送该第三通知消息;该第二目标梯度为该第一处理器维护的第一嵌入表中嵌入参数的梯度,该第一嵌入表中包括数据和数据的嵌入参数的映射关系;
[0373]
或者,该发送单元1501,还用于在该第三通知消息中未包括该第二目标梯度的情况下,向该第二处理器发送该第三通知消息。
[0374]
图15所示装置1500中各个单元的具体操作以及有益效果可以参见上述图11及其可能的方法实施例中对应的描述,此处不再赘述。
[0375]
图16所示为本技术提供的装置的一种可能的硬件结构示意图,该装置可以是上述实施例所述方法中的第一处理器。该装置1600包括:处理器1601、存储器1602和通信接口1603。处理器1601、通信接口1603以及存储器1602可以相互连接或者通过总线1604相互连接。
[0376]
示例性的,存储器1602用于存储装置1600的计算机程序和数据,存储器1602可以包括但不限于是随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)或便携式只读存储器(compact disc read-only memory,cd-rom)等。
[0377]
在实现图14所示实施例的情况下,执行图14中的全部或部分单元的功能所需的软件或程序代码存储在存储器1602中。
[0378]
在实现图14实施例的情况下,如果是部分单元的功能所需的软件或程序代码存储
在存储器1602中,则处理器1601除了调用存储器1602中的程序代码实现部分功能外,还可以配合其他部件(如通信接口1603)共同完成图14实施例所描述的其他功能(如接收或发送消息的功能)。
[0379]
在实现图15所示实施例的情况下,执行图15中的全部或部分单元的功能所需的软件或程序代码存储在存储器1602中。
[0380]
在实现图15实施例的情况下,如果是部分单元的功能所需的软件或程序代码存储在存储器1602中,则处理器1601除了调用存储器1602中的程序代码实现部分功能外,还可以配合其他部件(如通信接口1603)共同完成图15实施例所描述的其他功能(如接收或发送消息的功能)。
[0381]
通信接口1603包括发送接口和接收接口,通信接口1603的个数可以为多个,用于支持装置1600进行通信,例如接收或发送数据或消息等。
[0382]
示例性的,处理器1601可以是中央处理器单元、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。处理器1601可以用于读取上述存储器1602中存储的程序,执行如上述图9及其可能的实施例中所述的任一种数据处理方法;或者,处理器1601可以用于读取上述存储器1602中存储的程序,执行如上述图11及其可能的实施例中所述的任一种数据处理方法;或者,处理器1601可以用于读取上述存储器1602中存储的程序,执行如上述图9及其可能的实施例中所述的任一种数据处理方法和/或上述图11及其可能的实施例中所述的任一种数据处理方法。
[0383]
一种可能的实施方式中,处理器1601可以用于读取上述存储器1602中存储的程序,执行如下操作:
[0384]
通过发送接口向第二处理器发送第一查找消息;该第一查找消息包括第一数据,该第一查找消息用于查找该第一数据的嵌入参数;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
[0385]
通过接收接口接收来自第三处理器的第二查找消息;该第二查找消息包括第二数据,该第二查找消息用于查找该第二数据的嵌入参数;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
[0386]
该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
[0387]
另一种可能的实施方式中,处理器1601可以用于读取上述存储器1602中存储的程序,执行如下操作:
[0388]
通过发送接口向第二处理器发送第一通知消息;该第一通知消息包括第一数据和第一梯度,用于将该第一梯度传播到第一目标处理器中;该第一梯度为该第一数据的嵌入参数对应的梯度;该第二处理器为该第一处理器所在的环形通信架构中该第一处理器的下一跳处理器;
[0389]
通过接收接口接收来自第三处理器的第二通知消息;该第二通知消息包括第二数
据和第二梯度,用于将该第二梯度传播到第二目标处理器中;该第二梯度为该第二数据的嵌入参数对应的梯度;该第三处理器为该环形通信架构中该第一处理器的上一跳处理器;
[0390]
该第一处理器、该第二处理器和该第三处理器为数据训练系统包括的n个处理器中的处理器,该n为大于或等于3的整数;该n个处理器之间通过该环形通信架构实现通信,该环形通信架构中,该n个处理器的每个处理器仅从该每个处理器的上一跳处理器接收消息,并且仅向该每个处理器的下一跳处理器发送消息。
[0391]
图16所示装置1600中各个单元的具体操作以及有益效果可以参见上述图9和/或图11及其可能的方法实施例中对应的描述,此处不再赘述。
[0392]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述图9和/或图11及其可能的方法实施例中任一实施例所述的方法。
[0393]
本技术实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,上述图9和/或图11及其可能的方法实施例中任一实施例所述的方法将被执行。
[0394]
综上所述,上述n个处理器在embedding层前向传播和反向传播过程中的消息通信可以通过环形通信架构来实现,采用环形通信方式实现消息的交互,相比于现有的技术方案中多对多的消息通信方式,本技术可以充分利用处理器之间的带宽资源,避免了单点通信瓶颈,降低了通信时延,提高了通信效率,进而能够提升整个数据训练系统的训练效率和性能。
[0395]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1