分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備的制作方法
【專利摘要】本發(fā)明的實(shí)施方式提供了一種分布式環(huán)境中的數(shù)據(jù)通信方法。該方法包括:a)在當(dāng)前一輪聚合中,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器;b)如果存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,從中指定待聚合數(shù)據(jù)的接收端和發(fā)送端,返回步驟a);c)如果只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果是,結(jié)束當(dāng)前一輪聚合;否則,返回步驟a)。本發(fā)明的方法可以解決現(xiàn)有技術(shù)中由于串行通信方式的通信速度慢導(dǎo)致的大規(guī)模機(jī)器學(xué)習(xí)模型訓(xùn)練速度太慢的問題。此外,本發(fā)明的另一方面提供了一種分布式環(huán)境中的數(shù)據(jù)通信設(shè)備。
【專利說明】分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施方式涉及通信【技術(shù)領(lǐng)域】,更具體地,本發(fā)明的實(shí)施方式涉及分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備。
【背景技術(shù)】
[0002]本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述可包括可以探究的概念,但不一定是之前已經(jīng)想到或者已經(jīng)探究的概念。因此,除非在此指出,否則在本部分中描述的內(nèi)容對(duì)于本申請(qǐng)的說明書和權(quán)利要求書而言不是現(xiàn)有技術(shù),并且并不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。
[0003]在機(jī)器學(xué)習(xí)過程中,需要利用訓(xùn)練數(shù)據(jù)對(duì)目標(biāo)函數(shù)進(jìn)行訓(xùn)練,最終獲得理想的訓(xùn)練模型。為了能夠快速地完成對(duì)目標(biāo)函數(shù)的訓(xùn)練,通常都是將訓(xùn)練數(shù)據(jù)放入內(nèi)存中,以便提高對(duì)訓(xùn)練數(shù)據(jù)的讀/寫速度。
[0004]如果訓(xùn)練所用的是小數(shù)據(jù)量的訓(xùn)練數(shù)據(jù),可以在單臺(tái)機(jī)器上裝載所有的訓(xùn)練數(shù)據(jù),并由單臺(tái)機(jī)器完成訓(xùn)練任務(wù)。如果訓(xùn)練所用的是大數(shù)據(jù)量的訓(xùn)練數(shù)據(jù),例如,在很多應(yīng)用場(chǎng)景的機(jī)器學(xué)習(xí)中,訓(xùn)練數(shù)據(jù)的數(shù)據(jù)量可以達(dá)到幾百G甚至幾T,在這種情況下,單臺(tái)機(jī)器根本無(wú)法裝載如此大數(shù)據(jù)量的訓(xùn)練數(shù)據(jù),即使可以裝載,由于單臺(tái)機(jī)器的CPU的計(jì)算能力和內(nèi)存帶寬有限,因此,當(dāng)由單臺(tái)機(jī)器完成訓(xùn)練任務(wù)時(shí),也會(huì)影響訓(xùn)練速度,甚至單臺(tái)機(jī)器根本無(wú)法完成訓(xùn)練。
[0005]為了避免單臺(tái)機(jī)器無(wú)法裝載大數(shù)據(jù)量的訓(xùn)練數(shù)據(jù),或者,緩解單臺(tái)機(jī)器的工作壓力,還可以在分布式環(huán)境中完成訓(xùn)練任務(wù)。也就是說,每臺(tái)機(jī)器只負(fù)責(zé)裝載一部分訓(xùn)練數(shù)據(jù),并完成該部分訓(xùn)練數(shù)據(jù)的訓(xùn)練任務(wù)。
【發(fā)明內(nèi)容】
[0006]但是,本發(fā)明人在研究過程中發(fā)現(xiàn),當(dāng)在分布式環(huán)境中完成訓(xùn)練時(shí),各臺(tái)機(jī)器之間需要進(jìn)行數(shù)據(jù)通信。例如,在訓(xùn)練過程中,每臺(tái)機(jī)器都需要負(fù)責(zé)本地訓(xùn)練數(shù)據(jù)的梯度運(yùn)算。并且,針對(duì)每一次迭代過程,當(dāng)每臺(tái)機(jī)器計(jì)算出梯度值后,就需要將該梯度值發(fā)送給其他機(jī)器,再由其他機(jī)器對(duì)接收的梯度值進(jìn)行聚合。并且,在全部聚合完成后,需要將聚合后的梯度值廣播給每臺(tái)機(jī)器,以便每臺(tái)機(jī)器在下一次迭代過程中根據(jù)聚合后的梯度值進(jìn)行梯度運(yùn)算?,F(xiàn)有技術(shù)中,每臺(tái)機(jī)器之間通常是通過串行通信方式來進(jìn)行數(shù)據(jù)通信的。即,在聚合數(shù)據(jù)時(shí),一臺(tái)機(jī)器每次只接收一臺(tái)相鄰機(jī)器發(fā)送的數(shù)據(jù)(如,梯度值),并進(jìn)行聚合操作,而其它機(jī)器只能排隊(duì)等待。當(dāng)最后一臺(tái)機(jī)器對(duì)所有機(jī)器發(fā)送的數(shù)據(jù)進(jìn)行聚合后,在廣播數(shù)據(jù)時(shí),也是每次只向一臺(tái)相鄰機(jī)器發(fā)送聚合后的數(shù)據(jù)(如,聚合后的梯度值)。
[0007]依照現(xiàn)有技術(shù),當(dāng)機(jī)器之間采用串行通信方式進(jìn)行數(shù)據(jù)通信時(shí),其通信速度會(huì)非常慢,進(jìn)而會(huì)造成大規(guī)模的機(jī)器學(xué)習(xí)訓(xùn)練速度也非常慢。特別是在訓(xùn)練數(shù)據(jù)的數(shù)據(jù)量非常大的情況下,最終整個(gè)訓(xùn)練過程可能會(huì)花費(fèi)幾十個(gè)小時(shí),甚至是幾天的時(shí)間。
[0008]為此,非常需要一種分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備,以解決現(xiàn)有技術(shù)中由于串行通信方式的通信速度慢而導(dǎo)致的訓(xùn)練速度太慢的問題。
[0009]在本上下文中,本發(fā)明的實(shí)施方式期望提供一種分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備。
[0010]在本發(fā)明實(shí)施方式的第一方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信方法,包括:
[0011]a)、在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器;
[0012]b)、如果不存在當(dāng)前空閑的機(jī)器,則重新返回步驟a),如果存在當(dāng)前空閑的機(jī)器,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器;
[0013]C)、如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,在所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和發(fā)送端,并重新返回步驟a),其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合;
[0014]d)、如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和為所有機(jī)器的總數(shù)目,結(jié)束當(dāng)前一輪聚合;如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和不為所有機(jī)器的總數(shù)目,重新返回步驟a)。
[0015]在本發(fā)明實(shí)施方式的第二方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信方法,包括:
[0016]a)、在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器;
[0017]b)、如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新返回步驟a),其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù);
[0018]C)、如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
[0019]在本發(fā)明實(shí)施方式的第三方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信方法,包括:
[0020]當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
[0021]在本發(fā)明實(shí)施方式的第四方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信方法,包括:
[0022]當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
[0023]在本發(fā)明實(shí)施方式的第五方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信設(shè)備,包括:
[0024]第一判斷單元,用于在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器;
[0025]第二判斷單元,用于如果不存在當(dāng)前空閑的機(jī)器,重新觸發(fā)所述第一判斷單元,如果存在當(dāng)前空閑的機(jī)器,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器;
[0026]第一指定單元,用于如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,從所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和發(fā)送端,并重新觸發(fā)所述第一判斷單元,其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合;
[0027]第三判斷單元,用于如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和為所有機(jī)器的總數(shù)目,結(jié)束當(dāng)前一輪聚合結(jié)束;如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和不為所有機(jī)器的總數(shù)目,重新觸發(fā)所述第一判斷單元。
[0028]在本發(fā)明實(shí)施方式的第六方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信設(shè)備,包括:
[0029]判斷單元,用于在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器;
[0030]指定單元,用于如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新觸發(fā)所述判斷單元,其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù);
[0031]結(jié)束單元,用于如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
[0032]在本發(fā)明實(shí)施方式的第七方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信設(shè)備,包括:
[0033]第一發(fā)送單元,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端;或者,
[0034]第一接收單元,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
[0035]在本發(fā)明實(shí)施方式的第八方面中,提供了一種分布式環(huán)境中的數(shù)據(jù)通信設(shè)備,包括:
[0036]第二發(fā)送單元,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端;或者,
[0037]第二接收單元,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
[0038]在本發(fā)明實(shí)施方式中,在聚合數(shù)據(jù)時(shí),對(duì)于先完成本地運(yùn)算進(jìn)而先處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)先讓這些從機(jī)器一起參與前面部分的聚合操作,而不需要等待其它的從機(jī)器;而對(duì)于后完成本地運(yùn)算進(jìn)而后處于空閑狀態(tài)的從機(jī)器,主機(jī)器則會(huì)讓這些從機(jī)器一起參與后面部分的聚合操作。并且,完成本地運(yùn)算越快的從機(jī)器參與聚合操作的次數(shù)有可能越多,而完成本地運(yùn)算越慢的從機(jī)器參與聚合操作的次數(shù)就有可能越少。如,在極端情況下,完成本地運(yùn)算最慢的從機(jī)器在只參與一次聚合操作后即全部數(shù)據(jù)聚合完畢。在廣播數(shù)據(jù)時(shí),對(duì)于先接收到待廣播數(shù)據(jù)并且處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)讓這些從機(jī)器一起參與后面部分的廣播操作。通過這樣的方式,不會(huì)因?yàn)槟骋粋€(gè)從機(jī)器的延遲而影響整個(gè)聚合過程的速度,進(jìn)而也就不會(huì)影響訓(xùn)練速度。
【專利附圖】
【附圖說明】
[0039]通過參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:
[0040]圖1示意性地示出了本發(fā)明實(shí)施方式可以在其中實(shí)施的一個(gè)示例性場(chǎng)景;
[0041]圖2示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖;
[0042]圖3示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖;
[0043]圖4示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖;
[0044]圖5示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖;
[0045]圖6示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖;
[0046]圖7示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖;
[0047]圖8示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖;
[0048]圖9示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖;
[0049]圖10示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖。
[0050]在附圖中,相同或?qū)?yīng)的標(biāo)號(hào)表不相同或?qū)?yīng)的部分。
【具體實(shí)施方式】
[0051]下面將參考若干示例性實(shí)施方式來描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0052]本領(lǐng)域技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。
[0053]根據(jù)本發(fā)明的實(shí)施方式,提出了一種分布式環(huán)境中的數(shù)據(jù)通信方法和設(shè)備。
[0054]在本文中,需要理解的是,附圖中的任何元素?cái)?shù)量均用于示例而非限制,以及任何命名都僅用于區(qū)分,而不具有任何限制含義。
[0055]發(fā)明概沭
[0056]本發(fā)明人發(fā)現(xiàn),當(dāng)在分布式環(huán)境中完成訓(xùn)練時(shí),如果各機(jī)器之間通過串行通信方式進(jìn)行數(shù)據(jù)通信的話,即,當(dāng)聚合數(shù)據(jù)時(shí),所有的機(jī)器都已經(jīng)完成了本地運(yùn)算(如,梯度運(yùn)算),并且,每臺(tái)機(jī)器每次只接收一臺(tái)相鄰機(jī)器發(fā)送的數(shù)據(jù)(如,梯度值),而其它機(jī)器只能排隊(duì)等待。當(dāng)廣播數(shù)據(jù)時(shí),每臺(tái)機(jī)器也是每次只向一臺(tái)相鄰機(jī)器發(fā)送聚合后的結(jié)果(如,聚合后的梯度值),其它機(jī)器只能排隊(duì)等待。顯然,串行通信的速度會(huì)非常慢,進(jìn)而會(huì)造成訓(xùn)練速度也非常慢。
[0057]如果各機(jī)器之間不再通過串行通信方式,而是通過動(dòng)態(tài)二叉樹的方式進(jìn)行數(shù)據(jù)通信,即,在聚合數(shù)據(jù)時(shí),對(duì)于先完成本地運(yùn)算進(jìn)而先處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)先讓這些從機(jī)器一起參與前面部分的聚合操作,而不需要等待其它的從機(jī)器;而對(duì)于后完成本地運(yùn)算進(jìn)而后處于空閑狀態(tài)的從機(jī)器,主機(jī)器則會(huì)讓這些從機(jī)器一起參與后面部分的聚合操作。并且,完成本地運(yùn)算越快的從機(jī)器參與聚合操作的次數(shù)有可能越多,而完成本地運(yùn)算越慢的從機(jī)器參與聚合操作的次數(shù)就有可能越少。如,在極端情況下,完成本地運(yùn)算最慢的從機(jī)器在只參與一次聚合操作后即全部數(shù)據(jù)聚合完畢。在廣播數(shù)據(jù)時(shí),對(duì)于先接收到待廣播數(shù)據(jù)并且處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)讓這些從機(jī)器一起參與后面部分的廣播操作。通過這樣的方式,不會(huì)因?yàn)槟骋粋€(gè)從機(jī)器的延遲而影響整個(gè)聚合過程的速度,進(jìn)而也就不會(huì)影響訓(xùn)練速度。
[0058]在介紹了本發(fā)明的基本原理之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。
[0059]應(yīng)用場(chǎng)景總覽
[0060]首先參考圖1,圖1示意性地示出了本發(fā)明的實(shí)施方式可以在其中實(shí)施的示例性應(yīng)用場(chǎng)景。其中,為了方便描述,假設(shè)在分布式環(huán)境中存在5臺(tái)機(jī)器,分別為機(jī)器10、機(jī)器20、機(jī)器30、機(jī)器40和機(jī)器50。機(jī)器10、機(jī)器20、機(jī)器30和機(jī)器40都為從機(jī)器,機(jī)器50為主機(jī)器。在機(jī)器學(xué)習(xí)過程中,將所有的訓(xùn)練數(shù)據(jù)拆分為四部分,并分別分配給4臺(tái)從機(jī)器:機(jī)器10、機(jī)器20、機(jī)器30和機(jī)器40,以便由4臺(tái)從機(jī)器分別完成本地訓(xùn)練數(shù)據(jù)的訓(xùn)練任務(wù)。在訓(xùn)練過程中,4臺(tái)從機(jī)器需要基于數(shù)值迭代方法完成本地訓(xùn)練數(shù)據(jù)的梯度運(yùn)算,即,在每一次迭代過程中,先由4臺(tái)從機(jī)器分別計(jì)算梯度值,主機(jī)器(即,機(jī)器50)控制4臺(tái)從機(jī)器之間的數(shù)據(jù)通信,進(jìn)而將所有的梯度值進(jìn)行聚合。例如,主機(jī)器50可以控制機(jī)器10將自身的待聚合數(shù)據(jù)11發(fā)送給機(jī)器20,控制機(jī)器30將自身的待聚合數(shù)據(jù)31發(fā)送給機(jī)器40,以便機(jī)器20將機(jī)器10發(fā)送的待聚合數(shù)據(jù)11以及自身的待聚合數(shù)據(jù)21進(jìn)行聚合,得到待聚合數(shù)據(jù)1121,機(jī)器40將機(jī)器30發(fā)送的待聚合數(shù)據(jù)31以及自身的待聚合數(shù)據(jù)41進(jìn)行聚合,得到待聚合數(shù)據(jù)3141,主控制器再控制機(jī)器40將待聚合數(shù)據(jù)3141發(fā)送給機(jī)器20,機(jī)器20將機(jī)器40發(fā)送的待聚合數(shù)據(jù)3141與自身的待聚合數(shù)據(jù)1121進(jìn)行聚合,得到最終的聚合結(jié)果。在聚合完畢后,主機(jī)器控制4臺(tái)從機(jī)器之間的數(shù)據(jù)通信,進(jìn)而將聚合后的梯度值進(jìn)行廣播,以便4臺(tái)從機(jī)器在下一次迭代過程中根據(jù)聚合后的梯度值進(jìn)行梯度運(yùn)算。分布式環(huán)境中的5臺(tái)機(jī)器可以是物理結(jié)構(gòu)相同或不同的多個(gè)物理設(shè)備,也可以是運(yùn)行在相同或不同的物理設(shè)備上的多個(gè)虛擬設(shè)備、進(jìn)程等。本領(lǐng)域技術(shù)人員可以理解,圖1所示的示意圖僅是本發(fā)明的實(shí)施方式可以在其中得以實(shí)現(xiàn)的一個(gè)示例。本發(fā)明實(shí)施方式的應(yīng)用范圍不受到該框架任何方面的限制。例如,從機(jī)器的數(shù)目可以更多。
[0061]示例性方法
[0062]下面結(jié)合圖1的應(yīng)用場(chǎng)景,參考圖2來描述根據(jù)本發(fā)明示例性實(shí)施方式的、用于分布式環(huán)境中的數(shù)據(jù)通信方法。需要注意的是,上述應(yīng)用場(chǎng)景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實(shí)施方式在此方面不受任何限制。相反,本發(fā)明的實(shí)施方式可以應(yīng)用于適用的任何場(chǎng)景。
[0063]請(qǐng)參閱圖2,其示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖。例如,該方法是由主機(jī)器50所執(zhí)行的,方法具體例如可以包括:
[0064]步驟201:在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器,如果否,返回步驟201,如果是,進(jìn)入步驟202。
[0065]步驟202:判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器。
[0066]步驟203:如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,在所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和發(fā)送端,并重新返回步驟201,其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
[0067]步驟204:如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)據(jù)總和知否為所有機(jī)器的總數(shù)目,如果是,進(jìn)入步驟205,否則,重新返回步驟201。
[0068]步驟205:結(jié)束當(dāng)前一輪聚合。
[0069]其中,由于分配的訓(xùn)練數(shù)據(jù)的數(shù)據(jù)量不同以及自身的處理能力不同,不同的機(jī)器完成本地運(yùn)算的速度也是各不相同的,有些機(jī)器完成本地運(yùn)算的速度快,有些機(jī)器完成本地運(yùn)算的速度慢。因此,正在進(jìn)行本地運(yùn)算的機(jī)器為當(dāng)前不空閑的機(jī)器,而沒有進(jìn)行本地運(yùn)算的機(jī)器即為當(dāng)前空閑的機(jī)器。所謂“本地運(yùn)算”就是在機(jī)器本地完成的任意一種類型的運(yùn)算,如,梯度運(yùn)算或聚合運(yùn)算。如,對(duì)于聚合過程來說,已經(jīng)完成梯度運(yùn)算的機(jī)器就是當(dāng)前空閑的機(jī)器,或者,待聚合數(shù)據(jù)的接收端在完成聚合運(yùn)算后也是當(dāng)前空閑的機(jī)器。
[0070]為了識(shí)別出當(dāng)前空閑的機(jī)器,在本發(fā)明的一個(gè)優(yōu)選實(shí)施方式中,上述步驟201具體為:接收已完成本地運(yùn)算的機(jī)器發(fā)送的聚合請(qǐng)求,將發(fā)送聚合請(qǐng)求的機(jī)器放入空閑隊(duì)列中;判斷所述空閑隊(duì)列當(dāng)前是否為空,如果為空,確定不存在當(dāng)前空閑的機(jī)器,如果不為空,確定存在當(dāng)前空閑的機(jī)器。
[0071]例如,已經(jīng)完成梯度運(yùn)算的機(jī)器會(huì)對(duì)外發(fā)送聚合請(qǐng)求以便參與后續(xù)的聚合過程,或者,待聚合數(shù)據(jù)的接收端在完成聚合運(yùn)算后也會(huì)對(duì)外發(fā)送聚合請(qǐng)求以便參與后續(xù)的聚合過程。
[0072]在本發(fā)明中,可以通過兩個(gè)隊(duì)列來區(qū)分具體哪些機(jī)器為當(dāng)前空閑、并且發(fā)送過聚合數(shù)據(jù)的機(jī)器,哪些機(jī)器為當(dāng)前空閑、并且沒有發(fā)送過聚合數(shù)據(jù)的機(jī)器。例如,當(dāng)任意一個(gè)從機(jī)器完成梯度運(yùn)算后,就向主機(jī)器發(fā)送聚合請(qǐng)求,主機(jī)器接收到聚合請(qǐng)求后,立即將該從機(jī)器放入一個(gè)空閑隊(duì)列中。如果空閑隊(duì)列中存在兩個(gè)以上的從機(jī)器,主機(jī)器可以從中指定待聚合數(shù)據(jù)的發(fā)送端和接收端,并將指定的結(jié)果通知給所指定的發(fā)送端和接收端。如,主機(jī)器可以指定其中的任意一個(gè)從機(jī)器為待聚合數(shù)據(jù)的接收端,其余的從機(jī)器為待聚合數(shù)據(jù)的發(fā)送端。當(dāng)然,除了可以指定一個(gè)接收端以及與其對(duì)應(yīng)的一個(gè)或多個(gè)發(fā)送端之外,主機(jī)器也可以指定多個(gè)接收端以及分別與每個(gè)接收端對(duì)應(yīng)的一個(gè)或多個(gè)發(fā)送端(但是,每個(gè)發(fā)送端只給一個(gè)接收端發(fā)送待聚合數(shù)據(jù))。而被指定為發(fā)送端的從機(jī)器就需要將自身的待聚合數(shù)據(jù)發(fā)送給被指定為接收端的從機(jī)器,以便接收端對(duì)自身的待聚合數(shù)據(jù)以及接收到的所有待聚合數(shù)據(jù)進(jìn)行聚合運(yùn)算,當(dāng)其完成了聚合運(yùn)算后,還會(huì)繼續(xù)向主機(jī)器發(fā)送聚合請(qǐng)求。另外,主機(jī)器還需要將被指定為接收端與發(fā)送端的從機(jī)器從空閑隊(duì)列中移除,而從空閑隊(duì)列中移除的作為發(fā)送端的從機(jī)器由于已經(jīng)發(fā)送了待聚合數(shù)據(jù),因此不再參與后續(xù)的聚合,而從空閑隊(duì)列中移除的作為接收端的從機(jī)器由于還沒有發(fā)送待聚合數(shù)據(jù),因此在其聚合完成之后,可以繼續(xù)向主機(jī)器發(fā)送聚合請(qǐng)求,以繼續(xù)參與后續(xù)的聚合。當(dāng)任意一個(gè)從機(jī)器發(fā)送了待聚合數(shù)據(jù)之后,就可以向主機(jī)器發(fā)送等待請(qǐng)求,主機(jī)器接收到等待請(qǐng)求后,立即將該從機(jī)器放入一個(gè)等待隊(duì)列中,等待從當(dāng)前的聚合過程進(jìn)入廣播過程。
[0073]可以理解的,位于空閑隊(duì)列的從機(jī)器都是當(dāng)前空閑、并且也沒有發(fā)送過待聚合數(shù)據(jù)的從機(jī)器;而從空閑隊(duì)列中移除后進(jìn)入等待隊(duì)列的從機(jī)器都是當(dāng)前空閑、并且已經(jīng)發(fā)送過待聚合數(shù)據(jù)的從機(jī)器。
[0074]如果空閑隊(duì)列中只存在一個(gè)從機(jī)器,主機(jī)器還需要進(jìn)一步判斷空閑隊(duì)列中所有從機(jī)器的數(shù)目與等待隊(duì)列中所有從機(jī)器的數(shù)目的總和是否為所有從機(jī)器的總數(shù)目,如果是,說明空閑隊(duì)列中的唯一一個(gè)從機(jī)器是整個(gè)聚合過程最終的根節(jié)點(diǎn),也就是說,由該從機(jī)器所聚合后的數(shù)據(jù)為整個(gè)聚合過程最終的聚合結(jié)果,主機(jī)器可以結(jié)束當(dāng)前一輪聚合。否則,說明空閑隊(duì)列中的唯一一個(gè)從機(jī)器并不是整個(gè)聚合過程最終的根節(jié)點(diǎn),還存在由于沒有完成梯度運(yùn)算或聚合運(yùn)算而當(dāng)前沒有空閑的從機(jī)器,因此,主機(jī)器需要繼續(xù)等待,這些從機(jī)器完成梯度運(yùn)算或聚合運(yùn)算并成為當(dāng)前空閑的從機(jī)器,進(jìn)而重新執(zhí)行上述流程,直到當(dāng)前一輪聚合結(jié)束為止。
[0075]需要說明的是,“聚合運(yùn)算”可以是任何滿足交換律或結(jié)合律的運(yùn)算。例如,加法運(yùn)算、乘法運(yùn)算、取最大值或取最小值等。
[0076]在本發(fā)明的另一個(gè)優(yōu)選實(shí)施方式中,在結(jié)束當(dāng)前一輪聚合之后進(jìn)入當(dāng)前一輪廣播。如圖3所示(圖3僅示出了增加的步驟以及增加的步驟與圖2所示的流程之間的執(zhí)行順序),上述方法還可以包括:
[0077]步驟206:在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,如果是,進(jìn)入步驟207,否則,進(jìn)入步驟208,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器。
[0078]步驟207:從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新返回步驟206,其中接收端用于接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
[0079]步驟208:結(jié)束當(dāng)前一輪廣播。
[0080]在本發(fā)明中,同樣可以通過等待隊(duì)列和空閑隊(duì)列來區(qū)分具體哪些機(jī)器為接收過待廣播數(shù)據(jù)、并且空閑的機(jī)器,哪些機(jī)器為沒有接收過待廣播數(shù)據(jù)的機(jī)器。
[0081]例如,假設(shè)所有從機(jī)器的總數(shù)目為100個(gè),當(dāng)聚合過程結(jié)束后,最終位于空閑隊(duì)列中的從機(jī)器的個(gè)數(shù)為I個(gè),并且,該從機(jī)器聚合后所得到的數(shù)據(jù)就是整個(gè)聚合過程最終的聚合結(jié)果,該聚合結(jié)果也是整個(gè)廣播過程需要廣播給每個(gè)從機(jī)器的待廣播數(shù)據(jù),而最終位于等待隊(duì)列中的從機(jī)器的個(gè)數(shù)為99個(gè)。當(dāng)進(jìn)入廣播過程時(shí),主機(jī)器會(huì)將空閑隊(duì)列中唯一的I個(gè)從機(jī)器(該從機(jī)器沒有發(fā)送過待聚合數(shù)據(jù))作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器,而待廣播數(shù)據(jù)即為位于該從機(jī)器上的聚合結(jié)果。
[0082]如果在等待隊(duì)列中存在從機(jī)器(這些從機(jī)器都沒有接收過待廣播數(shù)據(jù)),主機(jī)器就從中指定待廣播數(shù)據(jù)的接收端,而從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的從機(jī)器(初始狀態(tài)下,該從機(jī)器即為空閑隊(duì)列中唯一剩余的I個(gè)從機(jī)器)并指定為待廣播數(shù)據(jù)的發(fā)送端,將指定的結(jié)果通知給所指定的發(fā)送端和接收端。如,主機(jī)器可以從接收過待廣播數(shù)據(jù)的機(jī)器中任意選擇一個(gè)當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,而指定等待隊(duì)列中的一個(gè)或多個(gè)從機(jī)器為待廣播數(shù)據(jù)的接收端。當(dāng)然,除了可以指定一個(gè)發(fā)送端以及與其對(duì)應(yīng)一個(gè)或多個(gè)接收端之外,主機(jī)器也可以指定多個(gè)發(fā)送端以及分別與每個(gè)發(fā)送端對(duì)應(yīng)的一個(gè)或多個(gè)接收端(但是,每個(gè)接收端只從一個(gè)發(fā)送端接收待廣播數(shù)據(jù))。而被指定為發(fā)送端的從機(jī)器就需要將自身已經(jīng)接收到的聚合結(jié)果作為待廣播數(shù)據(jù)發(fā)送給被指定為接收端的從機(jī)器,以便接收端可以根據(jù)接收到的數(shù)據(jù)繼續(xù)進(jìn)行下一次迭代過程的梯度運(yùn)算。另外,主機(jī)器還需要將被指定為接收端的從機(jī)器從等待隊(duì)列中移除,而從等待隊(duì)列中移除的從機(jī)器由于已經(jīng)接收到了待廣播數(shù)據(jù),因此不再接收待廣播數(shù)據(jù)。
[0083]對(duì)于任意一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器來說,其可以在接收到待廣播數(shù)據(jù)后直接繼續(xù)進(jìn)行下一次迭代過程的梯度運(yùn)算。也可以在接收到主機(jī)器發(fā)送的當(dāng)前一輪廣播結(jié)束的通知后再繼續(xù)下一次迭代過程的梯度運(yùn)算。
[0084]可以理解的,位于等待隊(duì)列中的從機(jī)器都是當(dāng)前空閑,并且沒有接收過待廣播數(shù)據(jù)的從機(jī)器;而從等待隊(duì)列中移除的從機(jī)器都是已經(jīng)接收過待廣播數(shù)據(jù)的從機(jī)器,如果從等待隊(duì)列中移除的從機(jī)器直接根據(jù)接收到了的待廣播數(shù)據(jù)繼續(xù)下一輪的本地運(yùn)算,那么,從等待隊(duì)列中移除的從機(jī)器有可能是當(dāng)前空閑的(即,在主機(jī)器指定發(fā)送端時(shí)完成了下一次迭代過程的梯度運(yùn)算),也有可能不是當(dāng)前空閑的(即,在主機(jī)器指定發(fā)送端時(shí)還沒有完成下一次迭代過程的梯度運(yùn)算)。當(dāng)完成了梯度運(yùn)算時(shí),從機(jī)器就會(huì)又向主機(jī)器發(fā)送廣播請(qǐng)求。因此,主機(jī)器可以接收已完成本地運(yùn)算的機(jī)器發(fā)送的廣播請(qǐng)求,并將發(fā)送廣播請(qǐng)求的機(jī)器作為當(dāng)前空閑的機(jī)器,所謂“本地運(yùn)算”就是在機(jī)器本地完成的任意一種類型的運(yùn)算,如,聚合運(yùn)算或梯度運(yùn)算。并且,作為響應(yīng),主機(jī)器就可以將從機(jī)器放入空閑隊(duì)列中。也就是說,在廣播過程中,位于空閑隊(duì)列中的從機(jī)器即為已經(jīng)接收過待廣播數(shù)據(jù),并且也是因已經(jīng)完成下次迭代過程的梯度運(yùn)算而處于當(dāng)前空閑的從機(jī)器,而位于等待隊(duì)列中的從機(jī)器為沒有接收過待廣播數(shù)據(jù)的從機(jī)器。主機(jī)器可以從空閑隊(duì)列中選擇從機(jī)器作為待廣播數(shù)據(jù)的發(fā)送端,從等待隊(duì)列中選擇從機(jī)器作為待廣播數(shù)據(jù)的接收端。當(dāng)然,需要指出,在該實(shí)施例中,在完成了下一次迭代過程的梯度運(yùn)算后,從機(jī)器還需要保存上一輪迭代過程的聚合結(jié)果。另外,在開始下一次迭代過程的聚合過程時(shí),主機(jī)器可以清空所述空閑隊(duì)列,即使得空閑隊(duì)列中的信息只對(duì)于一次迭代過程有效。
[0085]如果從等待隊(duì)列中移除的從機(jī)器在接收到當(dāng)前一輪廣播結(jié)束的通知后再繼續(xù)下一次迭代過程的梯度運(yùn)算,那么,從等待隊(duì)列中移除的從機(jī)器可以是當(dāng)前空閑的(在主機(jī)器指定發(fā)送端時(shí)其已經(jīng)完成了當(dāng)前一次迭代過程的梯度運(yùn)算,接收到了廣播數(shù)據(jù),并且也沒有進(jìn)行下一次迭代過程的梯度運(yùn)算)。因此,位于等待隊(duì)列中的從機(jī)器為沒有接收過待廣播數(shù)據(jù)的機(jī)器,而沒有位于等待隊(duì)列中的從機(jī)器可以為接收過待廣播數(shù)據(jù),并且當(dāng)前空閑的機(jī)器,可以從等待隊(duì)列之外的從機(jī)器中選擇(如何選擇并不是本發(fā)明所關(guān)注的重點(diǎn))從機(jī)器作為待廣播數(shù)據(jù)的發(fā)送端。例如,如前所述,已經(jīng)接收到了廣播數(shù)據(jù)的從機(jī)器可以向主機(jī)器發(fā)送廣播請(qǐng)求,以便主機(jī)器可以將這些從機(jī)器放入到空閑隊(duì)列中。
[0086]如果在等待隊(duì)列中不存在從機(jī)器,S卩,等待隊(duì)列為空,說明已不存在沒有接收過待廣播數(shù)據(jù)的從機(jī)器,因此,主機(jī)器結(jié)束當(dāng)前一輪廣播。
[0087]還需要說明的是,主機(jī)器可以從空閑隊(duì)列中選擇最早進(jìn)入空閑隊(duì)列的從機(jī)器作為當(dāng)前一輪聚合的發(fā)送端和接收端,從等待隊(duì)列中選擇最晚進(jìn)入等待隊(duì)列的從機(jī)器作為當(dāng)前一輪廣播的接收端。
[0088]以上是從主機(jī)器一側(cè)描述了分布式環(huán)境中的數(shù)據(jù)通信方法,下面再對(duì)應(yīng)地在從機(jī)器一側(cè)分別針對(duì)聚合過程和廣播過程來描述分布式環(huán)境中的數(shù)據(jù)通信方法。
[0089]請(qǐng)參閱圖4,其示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖。例如,該方法是由從機(jī)器10或20所執(zhí)行的,方法具體例如可以包括:
[0090]步驟400:當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
[0091]請(qǐng)參閱圖5,其示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信方法的流程圖。例如,該方法是由從機(jī)器10或20所執(zhí)行的,方法具體例如可以包括:
[0092]步驟500:當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
[0093]當(dāng)然,對(duì)于任意一個(gè)從機(jī)器來說,其可以分別按照?qǐng)D4和圖5的方法執(zhí)行數(shù)據(jù)的聚合操作以及廣播操作。因此,可以將圖4和圖5所示的方法合并為一個(gè)方法,并由任意一個(gè)從設(shè)備執(zhí)行。
[0094]根據(jù)本發(fā)明,在聚合數(shù)據(jù)時(shí),對(duì)于先完成本地運(yùn)算進(jìn)而先處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)先讓這些從機(jī)器一起參與前面部分的聚合操作,而不需要等待其它的從機(jī)器;而對(duì)于后完成本地運(yùn)算進(jìn)而后處于空閑狀態(tài)的從機(jī)器,主機(jī)器則會(huì)讓這些從機(jī)器一起參與后面部分的聚合操作。并且,完成本地運(yùn)算越快的從機(jī)器參與聚合操作的次數(shù)有可能越多,而完成本地運(yùn)算越慢的從機(jī)器參與聚合操作的次數(shù)就有可能越少。如,在極端情況下,完成本地運(yùn)算最慢的從機(jī)器在只參與一次聚合操作后即全部數(shù)據(jù)聚合完畢。在廣播數(shù)據(jù)時(shí),對(duì)于先接收到待廣播數(shù)據(jù)并且處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)讓這些從機(jī)器一起參與后面部分的廣播操作。通過這樣的方式,不會(huì)因?yàn)槟骋粋€(gè)從機(jī)器的延遲而影響整個(gè)聚合過程的速度,進(jìn)而也就不會(huì)影響訓(xùn)練速度。
[0095]示例性設(shè)備
[0096]在介紹了本發(fā)明示例性實(shí)施方式的方法之后,接下來,參考圖6來描述根據(jù)本發(fā)明示例性實(shí)施方式的、用于分布式環(huán)境中的數(shù)據(jù)通信設(shè)備。
[0097]參考圖6,其示意性地示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖,具體地,該設(shè)備例如可以包括:
[0098]第一判斷單元601,用于在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器;
[0099]第二判斷單元602,用于如果不存在當(dāng)前空閑的機(jī)器,重新觸發(fā)所述第一判斷單元,如果存在當(dāng)前空閑的機(jī)器,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器;
[0100]第一指定單元603,用于如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,從所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和接收端,并重新觸發(fā)所述第一判斷單元,其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合;以及,
[0101]第三判斷單元604,用于如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和為所有機(jī)器的總數(shù)目,結(jié)束當(dāng)前一輪聚合;如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和不為所有機(jī)器的總數(shù)目,重新觸發(fā)所述第一判斷單元。
[0102]在本發(fā)明的一個(gè)優(yōu)選實(shí)施方式中,第一判斷單元601具體用于,接收已完成本地運(yùn)算的機(jī)器發(fā)送的聚合請(qǐng)求,將發(fā)送所述聚合請(qǐng)求的機(jī)器放入到空閑隊(duì)列中;判斷所述空閑隊(duì)列當(dāng)前是否為空,如果為空,確定不存在當(dāng)前空閑的機(jī)器,如果不為空,確定存在當(dāng)前空閑的機(jī)器。
[0103]在本發(fā)明的另一優(yōu)選實(shí)施方式中,在結(jié)束當(dāng)前一輪聚合之后進(jìn)入當(dāng)前一輪廣播,如圖7所示(圖7中僅示出了增加的部分以及增加的部分與圖6所示設(shè)備的連接關(guān)系),上述設(shè)備還包括:
[0104]第四判斷單元605,用于在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器;
[0105]第二指定單元606,用于如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新觸發(fā)所述第三判斷單元,其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù);
[0106]第一結(jié)束單元607,用于如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
[0107]參考圖8,其示意性地示出了根據(jù)本發(fā)明另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖,具體地,該設(shè)備例如可以包括:
[0108]判斷單元801,用于在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器;
[0109]指定單元802,用于如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新觸發(fā)所述判斷單元,其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù);
[0110]結(jié)束單元803,用于如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
[0111]參考圖9,其示意性地示出了根據(jù)本發(fā)明另一個(gè)實(shí)施方式的分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的結(jié)構(gòu)框架圖,具體地,該設(shè)備例如可以包括:
[0112]第一發(fā)送單元901,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端;或者,
[0113]第一接收單元902,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
[0114]在另一種結(jié)構(gòu)框架中,該設(shè)備例如可以包括:
[0115]第二發(fā)送單元1001,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端;或者,
[0116]第二接收單元1002,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
[0117]需要說明的是,該設(shè)備還可以同時(shí)包含圖9和圖10所示的結(jié)構(gòu)框架。
[0118]根據(jù)本發(fā)明,在聚合數(shù)據(jù)時(shí),對(duì)于先完成本地運(yùn)算進(jìn)而先處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)先讓這些從機(jī)器一起參與前面部分的聚合操作,而不需要等待其它的從機(jī)器;而對(duì)于后完成本地運(yùn)算進(jìn)而后處于空閑狀態(tài)的從機(jī)器,主機(jī)器則會(huì)讓這些從機(jī)器一起參與后面部分的聚合操作。并且,完成本地運(yùn)算越快的從機(jī)器參與聚合操作的次數(shù)有可能越多,而完成本地運(yùn)算越慢的從機(jī)器參與聚合操作的次數(shù)就有可能越少。如,在極端情況下,完成本地運(yùn)算最慢的從機(jī)器在只參與一次聚合操作后即全部數(shù)據(jù)聚合完畢。在廣播數(shù)據(jù)時(shí),對(duì)于先接收到待廣播數(shù)據(jù)并且處于空閑狀態(tài)的從機(jī)器,主機(jī)器會(huì)讓這些從機(jī)器一起參與后面部分的廣播操作。通過這樣的方式,不會(huì)因?yàn)槟骋粋€(gè)從機(jī)器的延遲而影響整個(gè)聚合過程的速度,進(jìn)而也就不會(huì)影響訓(xùn)練速度。
[0119]應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了分布式環(huán)境中的數(shù)據(jù)通信設(shè)備的若干裝置或子裝置,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來具體化。
[0120]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
[0121]雖然已經(jīng)參考若干【具體實(shí)施方式】描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開的【具體實(shí)施方式】,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。
【權(quán)利要求】
1.一種方法,包括: a)、在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器; b)、如果不存在當(dāng)前空閑的機(jī)器,則重新返回步驟a),如果存在當(dāng)前空閑的機(jī)器,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器; C)、如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,在所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和發(fā)送端,并重新返回步驟a),其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合; d)、如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和為所有機(jī)器的總數(shù)目,結(jié)束當(dāng)前一輪聚合;如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和不為所有機(jī)器的總數(shù)目,重新返回步驟a)。
2.根據(jù)權(quán)利要求1所述的方法,其中, 所述步驟a)具體為: 接收已完成本地運(yùn)算的機(jī)器發(fā)送的聚合請(qǐng)求,將發(fā)送所述聚合請(qǐng)求的機(jī)器放入到空閑隊(duì)列中; 判斷所述空閑隊(duì)列當(dāng)前是否為空,如果為空,確定不存在當(dāng)前空閑的機(jī)器,如果不為空,確定存在當(dāng)如空閑的機(jī)器。
3.根據(jù)權(quán)利要求1所述的方法,在結(jié)束當(dāng)前一輪聚合之后進(jìn)入當(dāng)前一輪廣播,所述方法還包括: e)、在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器; f)、如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新返回步驟e),其中接收端用于接收發(fā)送端發(fā)送的待廣播數(shù)據(jù); g)、如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
4.一種方法,包括: a)、在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器; b)、如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新返回步驟a),其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù); c)、如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
5.一種方法,包括: 當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
6.一種方法,包括: 當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端,或者當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
7.—種設(shè)備,包括: 第一判斷單元,用于在當(dāng)前一輪聚合中,判斷是否存在當(dāng)前空閑的機(jī)器; 第二判斷單元,用于如果不存在當(dāng)前空閑的機(jī)器,重新觸發(fā)所述第一判斷單元,如果存在當(dāng)前空閑的機(jī)器,判斷在當(dāng)前空閑的機(jī)器中是否存在沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器; 第一指定單元,用于如果在當(dāng)前空閑的機(jī)器中存在至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,從所述至少兩個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器中,指定待聚合數(shù)據(jù)的接收端和發(fā)送端,并重新觸發(fā)所述第一判斷單元,其中接收端用于對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合; 第三判斷單元,用于如果在當(dāng)前空閑的機(jī)器中只存在一個(gè)沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器,判斷當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和是否為所有機(jī)器的總數(shù)目,如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和為所有機(jī)器的總數(shù)目,結(jié)束當(dāng)前一輪聚合;如果當(dāng)前空閑且沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器與所有發(fā)送過待聚合數(shù)據(jù)的機(jī)器的數(shù)目總和不為所有機(jī)器的總數(shù)目,重新觸發(fā)所述第一判斷單元。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其中,所述第一判斷單元具體用于,接收已完成本地運(yùn)算的機(jī)器發(fā)送的聚合請(qǐng)求,將發(fā)送所述聚合請(qǐng)求的機(jī)器放入空閑隊(duì)列中;判斷所述空閑隊(duì)列當(dāng)前是否為空,如果為空,確定不存在當(dāng)前空閑的機(jī)器,如果不為空,確定存在當(dāng)前空閑的機(jī)器。
9.根據(jù)權(quán)利要求7所述的設(shè)備,在結(jié)束當(dāng)前一輪聚合之后進(jìn)入當(dāng)前一輪廣播,所述設(shè)備還包括: 第四判斷單元,用于在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,其中將當(dāng)前一輪聚合中唯一沒有發(fā)送過待聚合數(shù)據(jù)的機(jī)器作為第一個(gè)接收過待廣播數(shù)據(jù)的機(jī)器; 第二指定單元,用于如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新觸發(fā)所述第三判斷單元,其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù); 第一結(jié)束單元,用于如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
10.一種設(shè)備,包括: 判斷單元,用于在當(dāng)前一輪廣播中,判斷是否存在沒有接收過待廣播數(shù)據(jù)的機(jī)器; 指定單元,用于如果存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,從接收過待廣播數(shù)據(jù)的機(jī)器中選擇當(dāng)前空閑的機(jī)器并指定為待廣播數(shù)據(jù)的發(fā)送端,指定沒有接收過待廣播數(shù)據(jù)的機(jī)器為待廣播數(shù)據(jù)的接收端,并重新觸發(fā)所述判斷單元,其中接收端用于接收發(fā)送端發(fā)送的廣播數(shù)據(jù); 結(jié)束單元,用于如果不存在沒有接收過待廣播數(shù)據(jù)的機(jī)器,結(jié)束當(dāng)前一輪廣播。
11.一種設(shè)備,包括: 第一發(fā)送單元,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將自身的待聚合數(shù)據(jù)發(fā)送給接收端;或者, 第一接收單元,用于當(dāng)被主機(jī)器指定為待聚合數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待聚合數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待聚合數(shù)據(jù),對(duì)發(fā)送端發(fā)送的待聚合數(shù)據(jù)以及自身的待聚合數(shù)據(jù)進(jìn)行聚合。
12.—種設(shè)備,包括: 第二發(fā)送單元,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的發(fā)送端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的接收端建立通信連接,并通過所述通信連接將待廣播數(shù)據(jù)發(fā)送給接收端;或者, 第二接收單元,用于當(dāng)被主機(jī)器指定為待廣播數(shù)據(jù)的接收端時(shí),與主機(jī)器指定的待廣播數(shù)據(jù)的發(fā)送端建立通信連接,并通過所述通信連接接收發(fā)送端發(fā)送的待廣播數(shù)據(jù)。
【文檔編號(hào)】H04L29/08GK104301440SQ201410644029
【公開日】2015年1月21日 申請(qǐng)日期:2014年11月6日 優(yōu)先權(quán)日:2014年11月6日
【發(fā)明者】段亦濤, 孔東營(yíng), 夏龍, 陳少虎 申請(qǐng)人:網(wǎng)易有道信息技術(shù)(北京)有限公司