本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種模型參數(shù)訓(xùn)練方法、裝置及系統(tǒng)。
背景技術(shù):
distbelief是一種人工智能深度學(xué)習(xí)框架,可以用來訓(xùn)練大規(guī)模的神經(jīng)網(wǎng)絡(luò)模型,目前已廣泛應(yīng)用于文本處理、圖像識別等多個領(lǐng)域。distbelief提供了一種分布式訓(xùn)練模式:downpoursgd(downpourstochasticgradientdescent,異步隨機梯度下降),該模式定義了一個參數(shù)服務(wù)器和多個計算節(jié)點,每個計算節(jié)點用于訓(xùn)練生成模型副本,該參數(shù)服務(wù)器用于為多個計算節(jié)點共享模型參數(shù)。
在訓(xùn)練開始之前,參數(shù)服務(wù)器向每個計算節(jié)點發(fā)送模型參數(shù)的初始參數(shù)值,并將訓(xùn)練數(shù)據(jù)集劃分為多個樣本集,分別分配給多個計算節(jié)點。在訓(xùn)練過程中,每個計算節(jié)點根據(jù)分配的樣本集和模型參數(shù)當(dāng)前的參數(shù)值進行訓(xùn)練,并計算得到模型參數(shù)的梯度,將梯度發(fā)送給參數(shù)服務(wù)器,參數(shù)服務(wù)器可以根據(jù)任一計算節(jié)點發(fā)送的梯度對模型參數(shù)進行更新,得到更新后的參數(shù)值,每個計算節(jié)點可以從參數(shù)服務(wù)器中獲取更新后的參數(shù)值,根據(jù)更新后的參數(shù)值繼續(xù)進行訓(xùn)練。其中,模型中包括多個模型參數(shù),采用上述訓(xùn)練方式可以訓(xùn)練模型中的每個模型參數(shù)。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷:參數(shù)服務(wù)器與多個計算節(jié)點之間需要傳輸模型參數(shù)的梯度,模型參數(shù)規(guī)模很大時該傳輸梯度的過程會帶來巨大的網(wǎng)絡(luò)開銷。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種模型參數(shù)訓(xùn)練方法、裝置及系統(tǒng)。所述技術(shù)方案如下:
第一方面,提供了一種模型參數(shù)訓(xùn)練方法,所述方法包括:
運行多個線程,由所述多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的 子集進行訓(xùn)練,得到所述模型參數(shù)的訓(xùn)練參數(shù)值;
將所述多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值;
根據(jù)所述合并參數(shù)值和所述初始參數(shù)值,計算所述模型參數(shù)的統(tǒng)計梯度;
向參數(shù)服務(wù)器發(fā)送所述統(tǒng)計梯度,使得所述參數(shù)服務(wù)器根據(jù)所述統(tǒng)計梯度對所述模型參數(shù)進行更新。
第二方面,提供了一種模型參數(shù)訓(xùn)練裝置,所述裝置包括:
訓(xùn)練模塊,用于運行多個線程,由所述多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到所述模型參數(shù)的訓(xùn)練參數(shù)值;
合并模塊,用于將所述多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值;
梯度計算模塊,用于根據(jù)所述合并參數(shù)值和所述初始參數(shù)值,計算所述模型參數(shù)的統(tǒng)計梯度;
發(fā)送模塊,用于向參數(shù)服務(wù)器發(fā)送所述統(tǒng)計梯度,使得所述參數(shù)服務(wù)器根據(jù)所述統(tǒng)計梯度對所述模型參數(shù)進行更新。
第三方面,提供了一種模型參數(shù)訓(xùn)練系統(tǒng),所述系統(tǒng)包括參數(shù)服務(wù)器和多個計算節(jié)點;
每個計算節(jié)點用于運行多個線程,由所述多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到所述模型參數(shù)的訓(xùn)練參數(shù)值;將所述多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值;根據(jù)所述合并參數(shù)值和所述初始參數(shù)值,計算所述模型參數(shù)的統(tǒng)計梯度;向參數(shù)服務(wù)器發(fā)送所述統(tǒng)計梯度;
所述參數(shù)服務(wù)器用于根據(jù)計算節(jié)點發(fā)送的統(tǒng)計梯度對所述模型參數(shù)進行更新。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例提供的方法、裝置及系統(tǒng),通過運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值,將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值, 根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度,向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。與單線程地訓(xùn)練并求取梯度相比,本發(fā)明通過多個線程并行地對不同的子集進行訓(xùn)練并在合并后求取梯度,增加了訓(xùn)練數(shù)據(jù)的復(fù)雜度,充分地利用了計算節(jié)點的計算資源,能夠?qū)⒉煌蛹?xùn)練的梯度合并傳輸,而無需將不同子集訓(xùn)練的梯度分別傳輸,減少了梯度的傳輸,減小了網(wǎng)絡(luò)開銷。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種參數(shù)服務(wù)器與計算節(jié)點的交互流程圖;
圖3是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練方法的流程圖;
圖4是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練方法的流程圖;
圖5是本發(fā)明實施例提供的計算節(jié)點的操作流程示意圖;
圖6是本發(fā)明實施例提供的二叉樹示意圖;
圖7是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練裝置的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練系統(tǒng)的結(jié)構(gòu)示意圖,參見圖1,該系統(tǒng)包括參數(shù)服務(wù)器和多個計算節(jié)點,該參數(shù)服務(wù)器與多個計算節(jié)點之間通過網(wǎng)絡(luò)連接。計算節(jié)點可以為服務(wù)器,也可以為計算機或者具備數(shù)據(jù)計算功能的裝置等,本發(fā)明實施例對計算節(jié)點不做限定。
該參數(shù)服務(wù)器用于共享模型中的模型參數(shù),每個計算節(jié)點用于訓(xùn)練生成模 型副本。如圖2所示,該參數(shù)服務(wù)器與任一計算節(jié)點之間的交互流程可以包括如下步驟1-4:
1、該參數(shù)服務(wù)器存儲模型參數(shù)的參數(shù)值,并為每個計算節(jié)點分配要訓(xùn)練的樣本集和模型參數(shù),向每個計算節(jié)點發(fā)送分配的樣本集和模型參數(shù)的初始參數(shù)值。
可選地,不同計算節(jié)點訓(xùn)練的樣本集不同,而訓(xùn)練的模型參數(shù)相同,也即是該參數(shù)服務(wù)器將模型中的所有模型參數(shù)均分配給每個計算節(jié)點進行訓(xùn)練,而將要訓(xùn)練的樣本劃分為多個樣本集后,將每個樣本集分別分配給相應(yīng)的計算節(jié)點進行訓(xùn)練。
或者,不同計算節(jié)點訓(xùn)練的樣本集相同,而訓(xùn)練的模型參數(shù)不同。也即是,該參數(shù)服務(wù)器將要訓(xùn)練的樣本均分配給每個計算節(jié)點進行訓(xùn)練,并將模型中的模型參數(shù)劃分為多份模型參數(shù)后,分別分配給相應(yīng)的計算節(jié)點進行訓(xùn)練。
2、計算節(jié)點根據(jù)所分配的樣本集和從參數(shù)服務(wù)器獲取到的模型參數(shù)的初始值進行訓(xùn)練,并計算模型參數(shù)的梯度,向參數(shù)服務(wù)器發(fā)送該梯度。
在本發(fā)明實施例中,為了增加每次訓(xùn)練的數(shù)據(jù)量,以減少梯度的傳輸,計算節(jié)點可以將樣本集劃分為多個子集,分配給多個線程,在運行多個線程時,每個線程可以根據(jù)模型參數(shù)的初始值對分配的子集進行訓(xùn)練,得到模型參數(shù)的梯度,根據(jù)該梯度對模型參數(shù)的初始參數(shù)值進行更新,得到該模型參數(shù)的訓(xùn)練參數(shù)值,將多個線程得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值,根據(jù)該合并參數(shù)值和初始參數(shù)值即可計算模型參數(shù)的統(tǒng)計梯度,向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。
與單線程地訓(xùn)練并求取梯度相比,本發(fā)明實施例通過多個線程并行地對不同的子集進行訓(xùn)練并在合并后求取梯度,能夠?qū)⒉煌蛹?xùn)練的梯度合并傳輸,而無需將不同子集訓(xùn)練的梯度分別傳輸,增加了每次訓(xùn)練數(shù)據(jù)的復(fù)雜度,減少了梯度的傳輸,減小了網(wǎng)絡(luò)開銷。
3、該參數(shù)服務(wù)器根據(jù)計算節(jié)點發(fā)送的統(tǒng)計梯度對模型參數(shù)進行更新,得到該模型參數(shù)更新后的參數(shù)值。
4、計算節(jié)點可以從參數(shù)服務(wù)器獲取該模型參數(shù)更新后的參數(shù)值,根據(jù)更新后的參數(shù)值繼續(xù)進行訓(xùn)練。
上述步驟2-4僅是以一個計算節(jié)點為例進行說明,實際上,該系統(tǒng)中的每個 計算節(jié)點均會執(zhí)行上述步驟2和4,且參數(shù)服務(wù)器可以接收任一計算節(jié)點發(fā)送的梯度,并根據(jù)接收到的梯度對模型參數(shù)進行更新,任一計算節(jié)點均可根據(jù)參數(shù)服務(wù)器更新后的參數(shù)值繼續(xù)進行訓(xùn)練,本發(fā)明實施例對計算節(jié)點不做限定。
進一步地,該系統(tǒng)可以包括多個參數(shù)服務(wù)器,每個參數(shù)服務(wù)器用于共享不同的模型參數(shù)。也即是,模型中可以包括多個模型參數(shù),則為了提高系統(tǒng)并行度,可以將模型中的多個模型參數(shù)劃分為多份,分別分配給多個參數(shù)服務(wù)器,每個參數(shù)服務(wù)器可以存儲相應(yīng)的模型參數(shù),并根據(jù)任一計算節(jié)點發(fā)送的模型參數(shù)的梯度對存儲的模型參數(shù)進行更新。
其中,由于不同的模型參數(shù)的訪問頻率不同,每個參數(shù)服務(wù)器分配的模型參數(shù)的訪問頻率之和即可作為參數(shù)服務(wù)器的總訪問頻率。如果某一參數(shù)服務(wù)器的總訪問頻率過高,網(wǎng)絡(luò)傳輸過多,則很容易成為系統(tǒng)熱點,導(dǎo)致系統(tǒng)整體的并行效率低,分布式性能差。
為了保證參數(shù)服務(wù)器之間的平衡,可以根據(jù)每個模型參數(shù)的訪問頻率為多個參數(shù)服務(wù)器分配模型參數(shù),使得任兩個參數(shù)服務(wù)器的總訪問頻率之間的差值小于預(yù)設(shè)差值,即將模型參數(shù)按照訪問頻率均勻分布在多個參數(shù)服務(wù)器上,保證多個參數(shù)服務(wù)器的總訪問頻率近似相等,從而將網(wǎng)絡(luò)傳輸也分布在多個參數(shù)服務(wù)器上,避免了網(wǎng)絡(luò)尖峰,避免由于某一參數(shù)服務(wù)器的總訪問頻率過高而影響系統(tǒng)的分布式性能,提高了并行效率。
其中,該預(yù)設(shè)差值可以由參數(shù)服務(wù)器預(yù)先根據(jù)性能需求和參數(shù)服務(wù)器的硬件配置確定,本發(fā)明實施例對此不做限定。
圖3是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練方法的流程圖。該發(fā)明實施例的執(zhí)行主體為計算節(jié)點,參見圖3,該方法包括:
301、運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值。
302、將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值。
303、根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度。
304、向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,使得該參數(shù)服務(wù)器根據(jù)該統(tǒng)計梯度對該模型參數(shù)進行更新。
本發(fā)明實施例提供的方法,通過運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值,將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值,根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度,向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。與單線程地訓(xùn)練并求取梯度相比,本發(fā)明通過多個線程并行地對不同的子集進行訓(xùn)練并在合并后求取梯度,增加了訓(xùn)練數(shù)據(jù)的復(fù)雜度,充分地利用了計算節(jié)點的計算資源,能夠?qū)⒉煌蛹?xùn)練的梯度合并傳輸,而無需將不同子集訓(xùn)練的梯度分別傳輸,減少了梯度的傳輸,減小了網(wǎng)絡(luò)開銷。
該根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值,包括:
根據(jù)該模型參數(shù)的初始參數(shù)值對分配的子集進行訓(xùn)練,得到該模型參數(shù)的梯度;
根據(jù)該梯度對該初始參數(shù)值進行更新,得到該訓(xùn)練參數(shù)值。
可選地,該將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值,包括:
將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值之和作為合并參數(shù)值。
可選地,該向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,包括:
如果該統(tǒng)計梯度的絕對值大于0,則向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度;
如果該統(tǒng)計梯度的絕對值等于0,則不再向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。
可選地,所訓(xùn)練的模型包括輸入層、隱層和輸出層,該輸出層包括由多個樹節(jié)點構(gòu)成的二叉樹,模型參數(shù)包括該二叉樹中任兩個樹節(jié)點之間的路徑參數(shù);
對于該二叉樹中的葉子節(jié)點,每當(dāng)該葉子節(jié)點的迭代次數(shù)達到預(yù)設(shè)次數(shù)時,將該葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度發(fā)送給該參數(shù)服務(wù)器。
可選地,不同參數(shù)服務(wù)器存儲的模型參數(shù)不同;
該向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,包括:向該模型參數(shù)對應(yīng)的參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,使得該模型參數(shù)對應(yīng)的參數(shù)服務(wù)器根據(jù)該統(tǒng)計梯度對該模型參數(shù)進行更新。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本發(fā)明的可選實施例,在此不再一一贅述。
圖4是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練方法的流程圖。該發(fā)明實施例的交互主體為參數(shù)服務(wù)器和計算節(jié)點,參見圖4,該方法包括:
401、參數(shù)服務(wù)器為每個計算節(jié)點分配樣本集和模型參數(shù),并向每個計算節(jié)點發(fā)送所分配的樣本集以及模型參數(shù)的初始參數(shù)值。
本發(fā)明實施例應(yīng)用于訓(xùn)練目標(biāo)模型的場景下,該目標(biāo)模型可以為人臉識別模型、word2vec(詞轉(zhuǎn)化成向量)模型等,目標(biāo)模型中可以包括多個模型參數(shù),且不同類型的目標(biāo)模型中模型參數(shù)的類型也不同,本發(fā)明實施例對該目標(biāo)模型和該目標(biāo)模型中的模型參數(shù)均不做限定。
該參數(shù)服務(wù)器可以獲取要訓(xùn)練的樣本集和目標(biāo)模型中的多個模型參數(shù),此時,該參數(shù)服務(wù)器可以為每個計算節(jié)點分配樣本集和模型參數(shù),也即是確定每個節(jié)點要訓(xùn)練的樣本集和模型參數(shù)。
在一種可能實現(xiàn)方式中,該參數(shù)服務(wù)器可以采用數(shù)據(jù)并行而模型不并行的方式進行分配,使得不同計算節(jié)點訓(xùn)練的樣本集不同,而訓(xùn)練的模型參數(shù)相同。也即是,該參數(shù)服務(wù)器將模型中的所有模型參數(shù)均分配給每個計算節(jié)點進行訓(xùn)練,而將要訓(xùn)練的樣本劃分為多個樣本集后,將每個樣本集分別分配給每個計算節(jié)點進行訓(xùn)練。
在另一種可能實現(xiàn)方式中,該參數(shù)服務(wù)器可以采用模型并行而數(shù)據(jù)不并行的方式進行分配,使得不同計算節(jié)點訓(xùn)練的樣本集相同,而訓(xùn)練的模型參數(shù)不同。也即是,該參數(shù)服務(wù)器將要訓(xùn)練的樣本均分配給每個計算節(jié)點進行訓(xùn)練,并將模型中的模型參數(shù)劃分為多份模型參數(shù)后,分別分配給每個計算節(jié)點進行訓(xùn)練。
分配好之后,參數(shù)服務(wù)器即可向每個計算節(jié)點發(fā)送為相應(yīng)計算節(jié)點分配的樣本集和模型參數(shù)的初始參數(shù)值,由計算節(jié)點根據(jù)樣本集和初始參數(shù)值進行訓(xùn)練。
其中,針對該樣本集,參數(shù)服務(wù)器可以在訓(xùn)練開始之前,向每個計算節(jié)點發(fā)送為相應(yīng)計算節(jié)點分配的樣本集,之后在訓(xùn)練過程中將不再發(fā)送樣本集。而針對模型參數(shù)的參數(shù)值,在訓(xùn)練開始之前,參數(shù)服務(wù)器可以向每個計算節(jié)點發(fā)送所有模型參數(shù)的初始參數(shù)值,并通知每個計算節(jié)點所分配的模型參數(shù),在訓(xùn)練過程中,該參數(shù)服務(wù)器可能會對模型參數(shù)的參數(shù)值進行更新,則每次更新之后可以向每個計算節(jié)點發(fā)送模型參數(shù)更新后的參數(shù)值,或者由要更新該模型參 數(shù)的計算節(jié)點從參數(shù)服務(wù)器拉取該模型參數(shù)更新后的參數(shù)值。本發(fā)明實施例對該參數(shù)服務(wù)器發(fā)送樣本集和參數(shù)值的時機不做限定。
402、計算節(jié)點將分配的樣本集劃分為多個子集,并運行多個線程,由每個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值。
本發(fā)明實施例中采用多線程并行訓(xùn)練的方式來減小梯度的傳輸,參見圖5,當(dāng)計算節(jié)點獲取到分配的樣本集時,可以將該樣本集劃分為多個子集,并運行多個線程,每個線程對一個子集進行訓(xùn)練。
對于每個線程,該線程根據(jù)模型參數(shù)的初始參數(shù)值對分配的子集進行訓(xùn)練,得到模型參數(shù)的梯度,根據(jù)該梯度對初始參數(shù)值進行更新,得到訓(xùn)練參數(shù)值。
其中,該線程可以采用sgd(stochasticgradientdescent,隨機梯度下降)算法進行訓(xùn)練,得到更新的訓(xùn)練參數(shù)值,當(dāng)然也可以采用其他算法進行訓(xùn)練,本發(fā)明實施例對此不做限定。
具體地,目標(biāo)模型中包括多個模型參數(shù),該參數(shù)服務(wù)器向計算節(jié)點發(fā)送多個模型參數(shù)的初始參數(shù)值,該線程可以根據(jù)多個模型參數(shù)的初始參數(shù)值構(gòu)成模型副本,將從子集中提取的樣本輸入到模型副本中進行計算,得到目標(biāo)函數(shù)的值,根據(jù)目標(biāo)函數(shù)對需要訓(xùn)練的模型參數(shù)求取偏導(dǎo)即可得到模型參數(shù)的梯度,根據(jù)該梯度對模型參數(shù)的初始參數(shù)值進行更新,即可得到模型參數(shù)更新后的參數(shù)值,作為訓(xùn)練參數(shù)值。
其中,樣本集可以包括多個樣本,該計算節(jié)點可以對多個樣本進行分組,得到多個子集,每個子集中包括至少一個樣本。另外,針對不同的目標(biāo)模型,樣本的形式也不同。例如,目標(biāo)模型為word2vec模型時,樣本集中可以包括多個語句,計算節(jié)點劃分得到的多個子集中包括至少一個語句,對至少一個語句進行分詞可以得到多個詞組,該多個詞組可以作為樣本,對目標(biāo)模型的模型參數(shù)進行訓(xùn)練。
進一步地,該線程要訓(xùn)練的子集中可能包括多個樣本,對多個樣本一起進行訓(xùn)練會造成數(shù)據(jù)量過大,因此,每次訓(xùn)練時,該線程可以從子集中提取預(yù)設(shè)數(shù)目的樣本來進行訓(xùn)練。在后續(xù)從參數(shù)服務(wù)器獲取到模型參數(shù)更新后的參數(shù)值后,可以再次從子集剩余的樣本中提取預(yù)設(shè)數(shù)目的樣本繼續(xù)進行訓(xùn)練。該預(yù)設(shè)數(shù)目可以根據(jù)子集中的樣本數(shù)目和對訓(xùn)練速度的需求確定,且不同線程所確定 的預(yù)設(shè)數(shù)目可以相同,也可以不同,本發(fā)明實施例對此不做限定。
例如,目標(biāo)模型為word2vec模型時,該線程的子集中包括多個語句,該線程從子集中提取的詞組數(shù)目為m,根據(jù)提取的m個詞組進行訓(xùn)練,并記錄下當(dāng)前提取詞組的語句所在的位置、該語句的上下文窗口以及當(dāng)前提取的最后一個詞組的位置,對這m個詞組訓(xùn)練完成時,該線程可以根據(jù)記錄的語句所在位置、上下文窗口和上次提取的最后一個詞組的位置,從子集中上次提取的最后一個詞組的下一個詞組開始,繼續(xù)提取m個詞組進行訓(xùn)練,以此類推。
403、計算節(jié)點將多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值之和作為合并參數(shù)值,根據(jù)該合并參數(shù)值和該初始參數(shù)值計算模型參數(shù)的統(tǒng)計梯度。
參見圖5,每個線程均可訓(xùn)練得到訓(xùn)練參數(shù)值,此時計算節(jié)點可以將多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,合并后的參數(shù)值即可作為合并參數(shù)值,之后,即可根據(jù)該合并參數(shù)值和該初始參數(shù)值計算模型參數(shù)的梯度,該梯度即是對多個線程的訓(xùn)練結(jié)果進行合并統(tǒng)計后得到的統(tǒng)計梯度。
其中,該線程可以在一次迭代得到合并參數(shù)值之后,計算合并參數(shù)值與該初始參數(shù)值之間的差值,作為統(tǒng)計梯度,或者,也可以在多次迭代之后,計算多次迭代后得到的合并參數(shù)值與該初始參數(shù)值之間的變化率,作為統(tǒng)計梯度,該變化率用于表示參數(shù)值的變化程度,可以為該合并參數(shù)值與該初始參數(shù)值之間的差值與迭代次數(shù)的商。本發(fā)明實施例對計算統(tǒng)計梯度的具體方式不做限定。
404、計算節(jié)點向參數(shù)服務(wù)器發(fā)送該模型參數(shù)的統(tǒng)計梯度。
發(fā)送統(tǒng)計梯度時,該計算節(jié)點可以采用klv(key-length-value,鍵-長度-值)的格式發(fā)送。如發(fā)送統(tǒng)計梯度的協(xié)議為參數(shù)總長度+參數(shù)下標(biāo)(key)+參數(shù)值(value),不同的模型參數(shù)具有不同的下標(biāo)(key),該計算節(jié)點可以獲取每個模型參數(shù)的下標(biāo)和統(tǒng)計梯度以及參數(shù)總長度,根據(jù)該協(xié)議向參數(shù)服務(wù)器發(fā)送不同模型參數(shù)的統(tǒng)計梯度。
本發(fā)明實施例僅是以該計算節(jié)點計算得到統(tǒng)計梯度后即向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度為例。實際上,為了進一步減小網(wǎng)絡(luò)開銷,該計算節(jié)點可以采用增量更新梯度的方式,僅向參數(shù)服務(wù)器發(fā)送絕對值大于0的統(tǒng)計梯度,而不再發(fā)送絕對值等于0的統(tǒng)計梯度。
由于統(tǒng)計梯度用于體現(xiàn)模型參數(shù)的變化情況,當(dāng)統(tǒng)計梯度的絕對值大于0時,表示本次訓(xùn)練時該模型參數(shù)發(fā)生變化,即該模型參數(shù)增大或減小,需要在 參數(shù)服務(wù)器對該模型參數(shù)進行更新,而當(dāng)統(tǒng)計梯度的絕對值等于0,即該統(tǒng)計梯度為0時,表示本次訓(xùn)練時該模型參數(shù)未發(fā)生變化,無需在參數(shù)服務(wù)器對該模型參數(shù)進行更新,將該統(tǒng)計梯度0發(fā)送給參數(shù)服務(wù)器會造成網(wǎng)絡(luò)開銷的浪費。
因此,計算節(jié)點每次計算得到統(tǒng)計梯度時,可以先獲取該統(tǒng)計梯度的絕對值,判斷該絕對值是否等于0,如果該絕對值大于0,則向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,如果該絕對值等于0,則不再向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。
需要說明的是,目標(biāo)模型中可以包括多個模型參數(shù),計算節(jié)點采用上述步驟402-404進行訓(xùn)練時,可以得到為該計算節(jié)點所分配的每個模型參數(shù)的統(tǒng)計梯度。此時可以確定絕對值大于0的統(tǒng)計梯度,發(fā)送給參數(shù)服務(wù)器,至于為0的統(tǒng)計梯度,則不再發(fā)送給參數(shù)服務(wù)器。
例如,模型參數(shù)原始的統(tǒng)計梯度為[0000],而本次訓(xùn)練得到的統(tǒng)計梯度為[0101],也即是第二個和第四個模型參數(shù)的統(tǒng)計梯度的絕對值大于0,則采用klv的方式,向參數(shù)服務(wù)器發(fā)送第二個和第四個模型參數(shù)的統(tǒng)計梯度,發(fā)送的數(shù)據(jù)中包括第二個和第四個模型參數(shù)的下標(biāo)和統(tǒng)計梯度。
目標(biāo)模型中通常包括大量的模型參數(shù),每次根據(jù)樣本進行訓(xùn)練時大量模型參數(shù)中可能只有小部分的模型參數(shù)發(fā)生變化,也即是只有小部分的模型參數(shù)計算出的統(tǒng)計梯度絕對值大于0,而其他大部分的模型參數(shù)未發(fā)生變化,計算出的統(tǒng)計梯度均為0。與向參數(shù)服務(wù)器發(fā)送所有模型參數(shù)的統(tǒng)計梯度相比,本實施例僅發(fā)送絕對值大于0的統(tǒng)計梯度會大大節(jié)省網(wǎng)絡(luò)開銷。
需要說明的是,該目標(biāo)模型可以為神經(jīng)網(wǎng)絡(luò)模型,該目標(biāo)模型可以包括輸入層、隱層和輸出層,其中輸出層包括由多個樹節(jié)點構(gòu)成的二叉樹,那么,目標(biāo)模型的模型參數(shù)中包括二叉樹中任兩個樹節(jié)點之間的路徑參數(shù),每次更新時需要對任兩個樹節(jié)點之間的路徑參數(shù)進行更新。如圖6所示,二叉樹中包括多個節(jié)點n0-n6,任兩個樹節(jié)點之間的路徑參數(shù)包括w(n0-n1)、w(n0-n2)、w(n1-n3)、w(n1-n4)、w(n2-n5)、w(n2-n6)。
其中,二叉樹中包括葉子節(jié)點,葉子節(jié)點是指二叉樹中沒有下一層節(jié)點的底層節(jié)點,即整個目標(biāo)模型的底層節(jié)點。由于二叉樹的深度越大,節(jié)點數(shù)目越多,更新的參數(shù)量也越大,相應(yīng)的單個葉子節(jié)點的梯度變化也越小,因此,為了進一步減小網(wǎng)絡(luò)開銷,對于該二叉樹中的葉子節(jié)點,每當(dāng)該葉子節(jié)點的迭代次數(shù)達到預(yù)設(shè)次數(shù)時,將該葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度發(fā)送給該參數(shù)服務(wù) 器,并將迭代次數(shù)置0,重新開始統(tǒng)計迭代次數(shù)。而當(dāng)葉子節(jié)點的迭代次數(shù)還未達到預(yù)設(shè)次數(shù)時,不再向參數(shù)服務(wù)器發(fā)送該葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度。
如圖6所示,葉子節(jié)點n3-n6的路徑參數(shù)分別為w(n1-n3)、w(n1-n4)、w(n2-n5)、w(n2-n6),針對這些路徑參數(shù),在葉子節(jié)點的迭代次數(shù)未達到預(yù)設(shè)次數(shù)時,不會將該葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度發(fā)送給該參數(shù)服務(wù)器,則也無需計算該路徑參數(shù)的統(tǒng)計梯度。而當(dāng)葉子節(jié)點的迭代次數(shù)達到預(yù)設(shè)次數(shù)時,再計算該路徑參數(shù)的統(tǒng)計梯度,發(fā)送給該參數(shù)服務(wù)器。
而關(guān)于該目標(biāo)模型中除葉子節(jié)點的路徑參數(shù)以外的參數(shù),仍可以在每次迭代時計算統(tǒng)計梯度,并發(fā)送給參數(shù)服務(wù)器。通過這種分層更新的方式,將底層的路徑參數(shù)的統(tǒng)計梯度按照迭代次數(shù)發(fā)送,既能夠保證訓(xùn)練精確度,也能夠避免不必要的計算量,盡可能地減小網(wǎng)絡(luò)開銷。
另外,上述增量梯度更新的方式與上述分層更新的方式可以結(jié)合,也即是,對于葉子節(jié)點,可以在葉子節(jié)點的迭代次數(shù)達到預(yù)設(shè)次數(shù),且葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度絕對值大于0時,向參數(shù)服務(wù)器發(fā)送該路徑參數(shù)的統(tǒng)計梯度,而當(dāng)葉子節(jié)點的迭代次數(shù)未達到預(yù)設(shè)次數(shù),或者葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度為0時,不再向參數(shù)服務(wù)器發(fā)送該路徑參數(shù)的統(tǒng)計梯度,進一步減小了網(wǎng)絡(luò)開銷。
405、參數(shù)服務(wù)器接收到該統(tǒng)計梯度時,根據(jù)該統(tǒng)計梯度對模型參數(shù)進行更新,得到更新后的參數(shù)值。
其中,該參數(shù)服務(wù)器根據(jù)該統(tǒng)計梯度對模型參數(shù)進行更新時,可以采用相同的學(xué)習(xí)率對模型參數(shù)進行更新,或者也可以對學(xué)習(xí)率進行調(diào)整,每次采用不同的模型參數(shù)進行更新。其中,對學(xué)習(xí)率進行調(diào)整時可以采用多種調(diào)整算法進行,如adagrad自適應(yīng)學(xué)習(xí)率調(diào)整算法等,本發(fā)明實施例對調(diào)整算法不做限定。
406、計算節(jié)點從該參數(shù)服務(wù)器獲取模型參數(shù)更新后的參數(shù)值,將更新后的參數(shù)值作為本次訓(xùn)練的初始參數(shù)值,繼續(xù)執(zhí)行步驟402。
計算節(jié)點對本次的樣本訓(xùn)練完成后,可以從子集中繼續(xù)提取樣本,繼續(xù)對提取的樣本進行訓(xùn)練。由于該參數(shù)服務(wù)器可能已經(jīng)對目標(biāo)模型中的某些模型參數(shù)進行了更新,則該計算節(jié)點可以從該參數(shù)服務(wù)器獲取模型參數(shù)更新后的參數(shù)值,將更新后的參數(shù)值作為本次訓(xùn)練的初始參數(shù)值,根據(jù)該初始參數(shù)值和本次提取的樣本執(zhí)行步驟402,繼續(xù)進行訓(xùn)練。
在訓(xùn)練過程中,每個計算節(jié)點可以將根據(jù)樣本訓(xùn)練得到的輸出結(jié)果與樣本的實際結(jié)果進行對比,得到訓(xùn)練誤差,并發(fā)送給該參數(shù)服務(wù)器,該參數(shù)服務(wù)器可以獲取到不同計算節(jié)點所發(fā)送的訓(xùn)練誤差,當(dāng)確定訓(xùn)練誤差小于預(yù)設(shè)誤差時,表示該目標(biāo)模型的準(zhǔn)確率已符合要求,此時即可根據(jù)模型參數(shù)當(dāng)前的參數(shù)值構(gòu)成目標(biāo)模型,并通知計算節(jié)點停止訓(xùn)練,至此訓(xùn)練過程完成。
需要說明的是,本發(fā)明實施例僅以一個參數(shù)服務(wù)器為例,實際上可以設(shè)置多個參數(shù)服務(wù)器,由多個參數(shù)服務(wù)器分別共享不同的模型參數(shù),存儲不同模型參數(shù)的參數(shù)值,并對存儲的模型參數(shù)的參數(shù)值進行更新。
則針對計算節(jié)點來說,當(dāng)計算節(jié)點得到模型參數(shù)的統(tǒng)計梯度時,確定該模型參數(shù)對應(yīng)的參數(shù)服務(wù)器,即用于存儲該模型參數(shù)的參數(shù)服務(wù)器,向確定的參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,以便該參數(shù)服務(wù)器接收到該統(tǒng)計梯度時,根據(jù)該統(tǒng)計梯度對該模型參數(shù)進行更新。而且,該計算節(jié)點可以從不同的參數(shù)服務(wù)器上獲取更新的參數(shù)分片,避免了對某一參數(shù)服務(wù)器的集中訪問,避免了網(wǎng)絡(luò)傳輸尖峰。
其中,多個參數(shù)服務(wù)器在分配模型參數(shù)時可以按照在目標(biāo)模型中所在的層進行劃分,例如第一參數(shù)服務(wù)器用于存儲目標(biāo)模型中隱藏層的模型參數(shù),第二參數(shù)服務(wù)器用于存儲目標(biāo)模型中輸出層的模型參數(shù)。
或者,可以按照多個模型參數(shù)的訪問頻率進行分配,使得任兩個參數(shù)服務(wù)器的總訪問頻率之間的差值小于預(yù)設(shè)差值,即將模型參數(shù)按照訪問頻率均勻分布在多個參數(shù)服務(wù)器上,保證多個參數(shù)服務(wù)器的總訪問頻率近似相等,從而將網(wǎng)絡(luò)傳輸也分布在多個參數(shù)服務(wù)器上,避免了網(wǎng)絡(luò)尖峰,避免由于某一參數(shù)服務(wù)器的總訪問頻率過高而影響系統(tǒng)的分布式性能,提高了并行效率。
本發(fā)明實施例提供的方法,通過運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值,將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值,根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度,向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。與單線程地訓(xùn)練并求取梯度相比,本發(fā)明通過多個線程并行地對不同的子集進行訓(xùn)練并在合并后求取梯度,增加了訓(xùn)練數(shù)據(jù)的復(fù)雜度,充分地利用了計算節(jié)點的計算資源,能夠?qū)⒉煌蛹?xùn)練的梯度合并傳輸,而無需將不同子集訓(xùn)練的梯度分別傳輸,減少了梯度的傳輸,減小了網(wǎng)絡(luò)開銷。
進一步地,采用增量梯度更新的方式,僅在統(tǒng)計梯度的絕對值大于0時才向參數(shù)服務(wù)器發(fā)送統(tǒng)計梯度,減少了梯度的傳輸,進一步減小了網(wǎng)絡(luò)開銷。
進一步地,針對于二叉樹中的葉子節(jié)點,當(dāng)?shù)螖?shù)達到預(yù)設(shè)次數(shù)時才發(fā)送統(tǒng)計梯度,減少了梯度的傳輸,進一步減小了網(wǎng)絡(luò)開銷。
進一步地,采用多個參數(shù)服務(wù)器來存儲不同的模型參數(shù),對不同的模型參數(shù)進行更新,提高了系統(tǒng)并行度。且按照模型參數(shù)的訪問頻率進行分配,保證了多個參數(shù)服務(wù)器之間的平衡,避免了網(wǎng)絡(luò)尖峰,避免由于某一參數(shù)服務(wù)器的總訪問頻率過高而影響系統(tǒng)的分布式性能,提高了并行效率。
相關(guān)技術(shù)中的downpoursgd訓(xùn)練模式每次訓(xùn)練都需要將計算節(jié)點得到的梯度發(fā)送給參數(shù)服務(wù)器,并從參數(shù)服務(wù)器獲取更新后的參數(shù)值,隨著模型參數(shù)規(guī)模的上升,該傳輸過程會帶來巨大的網(wǎng)絡(luò)開銷。在參數(shù)計算量較大且計算耗時相對于網(wǎng)絡(luò)傳輸耗時較大的應(yīng)用場景下,計算占比很高,該訓(xùn)練模式可以發(fā)揮明顯的分布式性能的優(yōu)勢,但是,對于word2vec等輕計算類型的模型,參數(shù)計算量較小,計算耗時相對于網(wǎng)絡(luò)傳輸耗時較小,導(dǎo)致計算占比很低,系統(tǒng)整體的并行效率偏低,將無法發(fā)揮分布式性能的優(yōu)勢。
本發(fā)明實施例針對輕計算類型的模型,采用多線程并行訓(xùn)練的方式,充分利用了計算節(jié)點的單機計算性能,提高了cpu(centralprocessingunit,中央處理器)的資源利用率,多線程每次訓(xùn)練的樣本數(shù)目越大,cpu利用越充分。并采用增量梯度更新、分層梯度更新的方式盡可能地降低網(wǎng)絡(luò)開銷,可以解決輕計算場景下計算占比偏低、分布式性能受限的問題。
通過實驗表明,采用增量梯度更新的方式,計算節(jié)點需要發(fā)送到參數(shù)服務(wù)器的參數(shù)量壓縮為0.87%,參數(shù)服務(wù)器需要發(fā)送到計算節(jié)點的參數(shù)量壓縮為2.83%,網(wǎng)絡(luò)傳輸量實現(xiàn)了一個數(shù)量級的下降,系統(tǒng)的整體計算占比提升了3%。
圖7是本發(fā)明實施例提供的一種模型參數(shù)訓(xùn)練裝置的結(jié)構(gòu)示意圖,參加圖7,該裝置包括:
訓(xùn)練模塊701,用于運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值;
合并模塊702,用于將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合 并參數(shù)值;
梯度計算模塊703,用于根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度;
發(fā)送模塊704,用于向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,使得該參數(shù)服務(wù)器根據(jù)該統(tǒng)計梯度對該模型參數(shù)進行更新。
本發(fā)明實施例提供的裝置,通過運行多個線程,由該多個線程分別根據(jù)模型參數(shù)的初始參數(shù)值對不同的子集進行訓(xùn)練,得到該模型參數(shù)的訓(xùn)練參數(shù)值,將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值進行合并,得到合并參數(shù)值,根據(jù)該合并參數(shù)值和該初始參數(shù)值,計算該模型參數(shù)的統(tǒng)計梯度,向參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。與單線程地訓(xùn)練并求取梯度相比,本發(fā)明通過多個線程并行地對不同的子集進行訓(xùn)練并在合并后求取梯度,增加了訓(xùn)練數(shù)據(jù)的復(fù)雜度,充分地利用了計算節(jié)點的計算資源,能夠?qū)⒉煌蛹?xùn)練的梯度合并傳輸,而無需將不同子集訓(xùn)練的梯度分別傳輸,減少了梯度的傳輸,減小了網(wǎng)絡(luò)開銷。
可選地,該訓(xùn)練模塊701用于根據(jù)該模型參數(shù)的初始參數(shù)值對分配的子集進行訓(xùn)練,得到該模型參數(shù)的梯度;根據(jù)該梯度對該初始參數(shù)值進行更新,得到該訓(xùn)練參數(shù)值。
可選地,該合并模塊702用于將該多個線程訓(xùn)練得到的訓(xùn)練參數(shù)值之和作為合并參數(shù)值。
可選地,該發(fā)送模塊704用于如果該統(tǒng)計梯度的絕對值大于0,則向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度;
該發(fā)送模塊704還用于如果該統(tǒng)計梯度的絕對值等于0,則不再向該參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度。
可選地,所訓(xùn)練的模型包括輸入層、隱層和輸出層,該輸出層包括由多個樹節(jié)點構(gòu)成的二叉樹,模型參數(shù)包括該二叉樹中任兩個樹節(jié)點之間的路徑參數(shù);
該發(fā)送模塊704還用于對于該二叉樹中的葉子節(jié)點,每當(dāng)該葉子節(jié)點的迭代次數(shù)達到預(yù)設(shè)次數(shù)時,將該葉子節(jié)點的路徑參數(shù)的統(tǒng)計梯度發(fā)送給該參數(shù)服務(wù)器。
可選地,不同參數(shù)服務(wù)器存儲的模型參數(shù)不同;
該發(fā)送模塊704還用于向該模型參數(shù)對應(yīng)的參數(shù)服務(wù)器發(fā)送該統(tǒng)計梯度,使得該模型參數(shù)對應(yīng)的參數(shù)服務(wù)器根據(jù)該統(tǒng)計梯度對該模型參數(shù)進行更新。
需要說明的是:上述實施例提供的模型參數(shù)訓(xùn)練裝置在訓(xùn)練模型參數(shù)時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將計算節(jié)點的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的模型參數(shù)訓(xùn)練裝置與模型參數(shù)訓(xùn)練方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
圖8是本發(fā)明實施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖,該服務(wù)器800可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(centralprocessingunits,cpu)822(例如,一個或一個以上處理器)和存儲器832,一個或一個以上存儲應(yīng)用程序842或數(shù)據(jù)844的存儲介質(zhì)830(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器832和存儲介質(zhì)830可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)830的程序可以包括一個或一個以上模塊(圖示沒標(biāo)出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器822可以設(shè)置為與存儲介質(zhì)830通信,在服務(wù)器800上執(zhí)行存儲介質(zhì)830中的一系列指令操作。
服務(wù)器800還可以包括一個或一個以上電源826,一個或一個以上有線或無線網(wǎng)絡(luò)接口850,一個或一個以上輸入輸出接口858,一個或一個以上鍵盤856,和/或,一個或一個以上操作系統(tǒng)841,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。
該服務(wù)器800可以用于執(zhí)行上述實施例中參數(shù)服務(wù)器或者計算節(jié)點所執(zhí)行的步驟。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。