楊加圣 尹雯姣 彭麗麗 劉小光
江蘇電力信息技術(shù)有限公司
用戶在日常使用各類(lèi)移動(dòng)終端的過(guò)程中會(huì)產(chǎn)生大量數(shù)據(jù)。各大互聯(lián)網(wǎng)公司通過(guò)諸如聚類(lèi)、分類(lèi)、回歸等機(jī)器學(xué)習(xí)相關(guān)技術(shù)分析這些數(shù)據(jù),用于詞條競(jìng)價(jià)、搜索排序,以及各類(lèi)內(nèi)容服務(wù)優(yōu)化。在此過(guò)程中,往往需先匯聚數(shù)據(jù),再進(jìn)行分析。將原始數(shù)據(jù)經(jīng)由開(kāi)放網(wǎng)絡(luò)傳輸匯聚,容易泄露用戶隱私。聯(lián)邦學(xué)習(xí)訓(xùn)練,通過(guò)各節(jié)點(diǎn)的本地訓(xùn)練并匯聚中間結(jié)果的方式,避免直接傳輸原始數(shù)據(jù),并能達(dá)到和集中式訓(xùn)練同等的訓(xùn)練效果。
現(xiàn)有工作主要從學(xué)習(xí)模型的收斂分析和訓(xùn)練的配置調(diào)整兩個(gè)角度對(duì)聯(lián)邦學(xué)習(xí)進(jìn)行了訓(xùn)練優(yōu)化:一部分工作研究聯(lián)邦學(xué)習(xí)的理論模型,如模型匯聚精度隨全局迭代輪數(shù)增長(zhǎng)之間的聯(lián)系等;另一部分工作將聯(lián)邦學(xué)習(xí)等作為服務(wù)部署到網(wǎng)絡(luò)邊緣,以滿足邊緣用戶的訓(xùn)練。
如果等到所有用戶數(shù)據(jù)就緒之后,再進(jìn)行聯(lián)邦學(xué)習(xí)訓(xùn)練,不僅會(huì)浪費(fèi)數(shù)據(jù)就緒的整個(gè)過(guò)程,產(chǎn)生不必要的等待,而且會(huì)在數(shù)據(jù)就緒之后的短時(shí)間內(nèi)持續(xù)在邊緣設(shè)備上產(chǎn)生高峰訓(xùn)練負(fù)載,影響邊緣設(shè)備的正常使用。因此,亟需研究利用流式數(shù)據(jù)的到達(dá)特點(diǎn),不斷在流式數(shù)據(jù)到達(dá)的過(guò)程中在邊緣設(shè)備上進(jìn)行負(fù)載的攤銷(xiāo),不斷進(jìn)行小批量數(shù)據(jù)計(jì)算,避免給邊緣設(shè)備帶來(lái)過(guò)高的負(fù)載,以達(dá)到和數(shù)據(jù)就緒后不斷反復(fù)迭代產(chǎn)生類(lèi)似的訓(xùn)練效果。
本文描述了一種邊緣設(shè)備流式數(shù)據(jù)的訓(xùn)練方法,主要包含邊緣設(shè)備上的小批量數(shù)據(jù)處理以及邊緣設(shè)備間的聯(lián)邦學(xué)習(xí)交互,以達(dá)到在數(shù)據(jù)不斷到達(dá)的過(guò)程中就不斷進(jìn)行模型訓(xùn)練,避免數(shù)據(jù)就緒后的高峰負(fù)載,也避免了邊緣設(shè)備因訓(xùn)練擁塞對(duì)其他業(yè)務(wù)產(chǎn)生的影響。具體來(lái)說(shuō),本文首先為不斷到達(dá)的數(shù)據(jù)維護(hù)數(shù)據(jù)權(quán)重,并利用到達(dá)數(shù)據(jù)的采樣進(jìn)行數(shù)據(jù)權(quán)重的更新,再輔以不斷的聯(lián)邦學(xué)習(xí)交互,以期在數(shù)據(jù)就緒時(shí)產(chǎn)生的訓(xùn)練模型已有不錯(cuò)的效果。
(1)系統(tǒng)描述。面向流式數(shù)據(jù)的邊緣訓(xùn)練結(jié)構(gòu)如圖1所示。本文提及的面向流式數(shù)據(jù)的邊緣訓(xùn)練架構(gòu)包含兩個(gè)部分。第一部分為邊緣設(shè)備上的流式數(shù)據(jù)處理;第二個(gè)部分為邊緣設(shè)備與邊緣服務(wù)器構(gòu)成聯(lián)邦學(xué)習(xí)訓(xùn)練。整個(gè)聯(lián)邦學(xué)習(xí)包含多個(gè)大的時(shí)隙,在每一次時(shí)隙結(jié)束的時(shí)候,邊緣服務(wù)器都會(huì)從各邊緣設(shè)備上收集模型進(jìn)行匯聚。在每一個(gè)時(shí)隙之內(nèi),各個(gè)邊緣設(shè)備利用自身設(shè)備到達(dá)的流式數(shù)據(jù)進(jìn)行模型訓(xùn)練。具體的過(guò)程是在每一個(gè)時(shí)隙開(kāi)始的時(shí)候,各邊緣設(shè)備從邊緣服務(wù)器出獲取最新的模型;在時(shí)隙內(nèi),利用該模型和流式數(shù)據(jù)進(jìn)行模型的更新計(jì)算;并在一個(gè)時(shí)隙結(jié)束的時(shí)候,將局部更新的最新模型上傳至邊緣服務(wù)器。在每一個(gè)邊緣設(shè)備上,有一個(gè)單獨(dú)的線程負(fù)載在每個(gè)時(shí)隙的開(kāi)始與結(jié)束和邊緣服務(wù)器進(jìn)行交互,并在每一個(gè)時(shí)隙內(nèi)部不斷處理到達(dá)的流式數(shù)據(jù)。由于數(shù)據(jù)到達(dá)動(dòng)態(tài)變化,在沒(méi)有數(shù)據(jù)的時(shí)候,該線程就會(huì)掛起,等到新數(shù)據(jù)到來(lái)的時(shí)候,就會(huì)觸發(fā)時(shí)隙內(nèi)的模型更新。
(2)問(wèn)題建模。對(duì)于一臺(tái)邊緣設(shè)備i,建模其時(shí)序到達(dá)的數(shù)據(jù)流為{…,xit1,…,xitM,…},其中xitj表示在時(shí)隙t里的時(shí)間戳j,設(shè)備i上到達(dá)的流式數(shù)據(jù)規(guī)模。在這里整個(gè)時(shí)間軸被分為{1,…,T}共T個(gè)時(shí)隙,且每個(gè)時(shí)隙都有M個(gè)均勻間隔的時(shí)間戳。在每一個(gè)時(shí)隙結(jié)束的時(shí)候,每臺(tái)邊緣設(shè)備會(huì)產(chǎn)生一個(gè)中間模型wit。該模型是一個(gè)多維的向量,描述了特定模型結(jié)構(gòu)下的模型參數(shù)。在每個(gè)時(shí)隙結(jié)束的時(shí)候,邊緣服務(wù)器收集所有邊緣設(shè)備上的模型{wit}將其聚合成為時(shí)隙t的全局模型并將該模型下發(fā)至所有設(shè)備,是下一個(gè)時(shí)隙訓(xùn)練的基礎(chǔ),其中N為設(shè)備數(shù)。具體計(jì)算為:


其 中k的 范 圍 是[1,yitj],witj1=wit(j-1)yit(j-1),wit11=表示梯度計(jì)算;L(xitj)表示利用xitj流式數(shù)據(jù)樣本所構(gòu)成的損失函數(shù)。該過(guò)程不斷迭代,直到時(shí)隙結(jié)束。
實(shí)際上,L(xitj)無(wú)需包含所有xitj個(gè)流式數(shù)據(jù)樣本。L(xitj)可以用特定的方式在xitj個(gè)流式數(shù)據(jù)樣本中進(jìn)行采樣。例如,每?jī)蓚€(gè)樣本選取一個(gè)樣本放入L所構(gòu)成的函數(shù)內(nèi)等。這樣的好處是,L可以不用包含入所有的樣本,繼而大幅降低邊緣設(shè)備上的訓(xùn)練計(jì)算負(fù)擔(dān)。其極端的兩個(gè)情況分別是:所有樣本包含入函數(shù)及僅有一個(gè)隨機(jī)采樣的樣本包含入函數(shù)。一般來(lái)說(shuō),L中包含的樣本數(shù)量越多,邊緣設(shè)備訓(xùn)練計(jì)算產(chǎn)生的模型效果就越可信,結(jié)果也越有可能更好。然而,若一個(gè)時(shí)隙內(nèi)xit1,…,xitM這些數(shù)據(jù)都是源自同一個(gè)數(shù)據(jù)分布的話,適當(dāng)降低L中的樣本規(guī)模,反而能夠在大致保證模型訓(xùn)練效果的同時(shí),大幅度降低訓(xùn)練負(fù)載。
每一個(gè)時(shí)隙內(nèi)的局部輪數(shù)和模型的訓(xùn)練效果具有關(guān)聯(lián)。若一個(gè)時(shí)隙內(nèi)的局部輪數(shù)集合為{yit1,…,yitM},那么對(duì)于一個(gè)時(shí)隙而言,邊緣設(shè)備產(chǎn)生的模型wit與其最優(yōu)模型之間的差距可以表示為wit-w*it≤χ(yit1,…,yitM,xit1,…,xitM)。也就是,隨著數(shù)據(jù)規(guī)模的上升和局部迭代輪數(shù)的上升,wit與其最優(yōu)模型w*it的差距會(huì)不斷減小。不僅如此,在將每個(gè)時(shí)隙的收斂推廣到整個(gè)時(shí)間軸就可以得到面向整個(gè)訓(xùn)練的模型效果,也就是

在上述建模的基礎(chǔ)上,本文調(diào)整每個(gè)時(shí)隙t每個(gè)設(shè)備i上的局部迭代輪數(shù)。這是由于過(guò)多的局部迭代輪數(shù)雖然能夠讓訓(xùn)練產(chǎn)生的模型快速收斂,但會(huì)引入大量的計(jì)算開(kāi)銷(xiāo);同時(shí)過(guò)少的局部迭代輪數(shù)反而無(wú)法使得模型收斂。因此本文設(shè)計(jì)的調(diào)整局部迭代輪數(shù)的方法為:
(1)每一個(gè)時(shí)隙t時(shí)間戳j的開(kāi)始,收集上一個(gè)時(shí)間戳產(chǎn)生的訓(xùn)練效果。也就是,上一個(gè)時(shí)間戳j-1的局部訓(xùn)練輪數(shù)為yit(j-1);邊緣設(shè)備產(chǎn)生的模型為wit(j-1);上一時(shí)隙全局模型為以及邊緣設(shè)備i因計(jì)算產(chǎn)生的最大持續(xù)計(jì)算負(fù)載為
(2)通過(guò)收集訓(xùn)練效果,計(jì)算邊緣設(shè)備i在時(shí)隙t時(shí)間戳j上需要更新的局部輪數(shù)偏差Δijt。該訓(xùn)練偏差與收集所得訓(xùn)練效果構(gòu)成關(guān)系為
(3)利用局部輪數(shù)偏差Δijt進(jìn)行局部輪數(shù)的更新,即
直觀來(lái)說(shuō),上述3個(gè)步驟的執(zhí)行遵循動(dòng)態(tài)調(diào)整、逐步優(yōu)化的原則。也就是,該動(dòng)態(tài)調(diào)整過(guò)程不斷依照上一個(gè)時(shí)間戳的效果進(jìn)行局部輪數(shù)的修正。當(dāng)上一個(gè)時(shí)間戳的局部輪數(shù)過(guò)大時(shí),如邊緣設(shè)備負(fù)載過(guò)高或是局部模型與全局模型之間的偏
圖1 面向流式數(shù)據(jù)的邊緣訓(xùn)練架構(gòu)差較為穩(wěn)定時(shí),即可減少當(dāng)前時(shí)間戳的局部輪數(shù)。反之,若上一時(shí)間戳的負(fù)載相對(duì)較小且局部模型與全局模型之間的偏差仍然震蕩還未收斂,當(dāng)前時(shí)間戳的局部輪數(shù)可以適當(dāng)放大。函數(shù)將這些因素統(tǒng)籌考慮在內(nèi)。
本文就所提出的面向流式數(shù)據(jù)的邊緣訓(xùn)練進(jìn)行了實(shí)驗(yàn)驗(yàn)證。圖2展示了訓(xùn)練損失。無(wú)論是數(shù)據(jù)就緒后采用藍(lán)色傳統(tǒng)的批量梯度下降,還是利用本文所提出的面向流式數(shù)據(jù)的紅色的訓(xùn)練,都能夠在同一個(gè)數(shù)據(jù)集上達(dá)到相近的訓(xùn)練損失。圖3展示了訓(xùn)練過(guò)程中的資源開(kāi)銷(xiāo)。相比于藍(lán)色的傳統(tǒng)批量梯度下降,也就是必須等到所有數(shù)據(jù)就緒后才進(jìn)行持續(xù)一段時(shí)間的高負(fù)載訓(xùn)練,紅色部分是本文所提出的方法,在數(shù)據(jù)不斷到達(dá)的過(guò)程中就陸續(xù)進(jìn)行訓(xùn)練計(jì)算,利用小批量數(shù)據(jù)進(jìn)行模型參數(shù)的更新。因此,避免了數(shù)據(jù)就緒后長(zhǎng)時(shí)間持續(xù)的高負(fù)載占用;在流式數(shù)據(jù)到達(dá)過(guò)程中也不會(huì)產(chǎn)生高負(fù)載,使得整體訓(xùn)練不會(huì)給邊緣設(shè)備帶來(lái)更多的影響,也不會(huì)給其他業(yè)務(wù)形成干擾,影響正常設(shè)備使用。

圖2 邊緣訓(xùn)練的訓(xùn)練損失

圖3 邊緣訓(xùn)練的資源開(kāi)銷(xiāo)
為了避免在邊緣設(shè)備上持續(xù)產(chǎn)生高訓(xùn)練負(fù)載,避免在數(shù)據(jù)就緒后持續(xù)對(duì)邊緣設(shè)備產(chǎn)生影響,也為了充分利用數(shù)據(jù)就緒過(guò)程,本文提出了一種邊緣設(shè)備流式數(shù)據(jù)的訓(xùn)練方法,主要包含邊緣設(shè)備上的小批量數(shù)據(jù)處理以及邊緣設(shè)備間的聯(lián)邦學(xué)習(xí)交互,以使數(shù)據(jù)在不斷到達(dá)的過(guò)程中就不斷進(jìn)行模型訓(xùn)練。本文進(jìn)一步就局部迭代輪數(shù)進(jìn)行了自適應(yīng)地控制,以平衡邊緣設(shè)備的負(fù)載和整體的訓(xùn)練效果。