楊加圣 尹雯姣 彭麗麗 劉小光
江蘇電力信息技術(shù)有限公司
用戶在日常使用各類移動終端的過程中會產(chǎn)生大量數(shù)據(jù)。各大互聯(lián)網(wǎng)公司通過諸如聚類、分類、回歸等機(jī)器學(xué)習(xí)相關(guān)技術(shù)分析這些數(shù)據(jù),用于詞條競價、搜索排序,以及各類內(nèi)容服務(wù)優(yōu)化。在此過程中,往往需先匯聚數(shù)據(jù),再進(jìn)行分析。將原始數(shù)據(jù)經(jīng)由開放網(wǎng)絡(luò)傳輸匯聚,容易泄露用戶隱私。聯(lián)邦學(xué)習(xí)訓(xùn)練,通過各節(jié)點(diǎn)的本地訓(xùn)練并匯聚中間結(jié)果的方式,避免直接傳輸原始數(shù)據(jù),并能達(dá)到和集中式訓(xùn)練同等的訓(xùn)練效果。
現(xiàn)有工作主要從學(xué)習(xí)模型的收斂分析和訓(xùn)練的配置調(diào)整兩個角度對聯(lián)邦學(xué)習(xí)進(jìn)行了訓(xùn)練優(yōu)化:一部分工作研究聯(lián)邦學(xué)習(xí)的理論模型,如模型匯聚精度隨全局迭代輪數(shù)增長之間的聯(lián)系等;另一部分工作將聯(lián)邦學(xué)習(xí)等作為服務(wù)部署到網(wǎng)絡(luò)邊緣,以滿足邊緣用戶的訓(xùn)練。
如果等到所有用戶數(shù)據(jù)就緒之后,再進(jìn)行聯(lián)邦學(xué)習(xí)訓(xùn)練,不僅會浪費(fèi)數(shù)據(jù)就緒的整個過程,產(chǎn)生不必要的等待,而且會在數(shù)據(jù)就緒之后的短時間內(nèi)持續(xù)在邊緣設(shè)備上產(chǎn)生高峰訓(xùn)練負(fù)載,影響邊緣設(shè)備的正常使用。因此,亟需研究利用流式數(shù)據(jù)的到達(dá)特點(diǎn),不斷在流式數(shù)據(jù)到達(dá)的過程中在邊緣設(shè)備上進(jìn)行負(fù)載的攤銷,不斷進(jìn)行小批量數(shù)據(jù)計(jì)算,避免給邊緣設(shè)備帶來過高的負(fù)載,以達(dá)到和數(shù)據(jù)就緒后不斷反復(fù)迭代產(chǎn)生類似的訓(xùn)練效果。
本文描述了一種邊緣設(shè)備流式數(shù)據(jù)的訓(xùn)練方法,主要包含邊緣設(shè)備上的小批量數(shù)據(jù)處理以及邊緣設(shè)備間的聯(lián)邦學(xué)習(xí)交互,以達(dá)到在數(shù)據(jù)不斷到達(dá)的過程中就不斷進(jìn)行模型訓(xùn)練,避免數(shù)據(jù)就緒后的高峰負(fù)載,也避免了邊緣設(shè)備因訓(xùn)練擁塞對其他業(yè)務(wù)產(chǎn)生的影響。具體來說,本文首先為不斷到達(dá)的數(shù)據(jù)維護(hù)數(shù)據(jù)權(quán)重,并利用到達(dá)數(shù)據(jù)的采樣進(jìn)行數(shù)據(jù)權(quán)重的更新,再輔以不斷的聯(lián)邦學(xué)習(xí)交互,以期在數(shù)據(jù)就緒時產(chǎn)生的訓(xùn)練模型已有不錯的效果。
(1)系統(tǒng)描述。面向流式數(shù)據(jù)的邊緣訓(xùn)練結(jié)構(gòu)如圖1所示。本文提及的面向流式數(shù)據(jù)的邊緣訓(xùn)練架構(gòu)包含兩個部分。第一部分為邊緣設(shè)備上的流式數(shù)據(jù)處理;第二個部分為邊緣設(shè)備與邊緣服務(wù)器構(gòu)成聯(lián)邦學(xué)習(xí)訓(xùn)練。整個聯(lián)邦學(xué)習(xí)包含多個大的時隙,在每一次時隙結(jié)束的時候,邊緣服務(wù)器都會從各邊緣設(shè)備上收集模型進(jìn)行匯聚。在每一個時隙之內(nèi),各個邊緣設(shè)備利用自身設(shè)備到達(dá)的流式數(shù)據(jù)進(jìn)行模型訓(xùn)練。具體的過程是在每一個時隙開始的時候,各邊緣設(shè)備從邊緣服務(wù)器出獲取最新的模型;在時隙內(nèi),利用該模型和流式數(shù)據(jù)進(jìn)行模型的更新計(jì)算;并在一個時隙結(jié)束的時候,將局部更新的最新模型上傳至邊緣服務(wù)器。在每一個邊緣設(shè)備上,有一個單獨(dú)的線程負(fù)載在每個時隙的開始與結(jié)束和邊緣服務(wù)器進(jìn)行交互,并在每一個時隙內(nèi)部不斷處理到達(dá)的流式數(shù)據(jù)。由于數(shù)據(jù)到達(dá)動態(tài)變化,在沒有數(shù)據(jù)的時候,該線程就會掛起,等到新數(shù)據(jù)到來的時候,就會觸發(fā)時隙內(nèi)的模型更新。
(2)問題建模。對于一臺邊緣設(shè)備i,建模其時序到達(dá)的數(shù)據(jù)流為{…,xit1,…,xitM,…},其中xitj表示在時隙t里的時間戳j,設(shè)備i上到達(dá)的流式數(shù)據(jù)規(guī)模。在這里整個時間軸被分為{1,…,T}共T個時隙,且每個時隙都有M個均勻間隔的時間戳。在每一個時隙結(jié)束的時候,每臺邊緣設(shè)備會產(chǎn)生一個中間模型wit。該模型是一個多維的向量,描述了特定模型結(jié)構(gòu)下的模型參數(shù)。在每個時隙結(jié)束的時候,邊緣服務(wù)器收集所有邊緣設(shè)備上的模型{wit}將其聚合成為時隙t的全局模型并將該模型下發(fā)至所有設(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ù)。該過程不斷迭代,直到時隙結(jié)束。
實(shí)際上,L(xitj)無需包含所有xitj個流式數(shù)據(jù)樣本。L(xitj)可以用特定的方式在xitj個流式數(shù)據(jù)樣本中進(jìn)行采樣。例如,每兩個樣本選取一個樣本放入L所構(gòu)成的函數(shù)內(nèi)等。這樣的好處是,L可以不用包含入所有的樣本,繼而大幅降低邊緣設(shè)備上的訓(xùn)練計(jì)算負(fù)擔(dān)。其極端的兩個情況分別是:所有樣本包含入函數(shù)及僅有一個隨機(jī)采樣的樣本包含入函數(shù)。一般來說,L中包含的樣本數(shù)量越多,邊緣設(shè)備訓(xùn)練計(jì)算產(chǎn)生的模型效果就越可信,結(jié)果也越有可能更好。然而,若一個時隙內(nèi)xit1,…,xitM這些數(shù)據(jù)都是源自同一個數(shù)據(jù)分布的話,適當(dāng)降低L中的樣本規(guī)模,反而能夠在大致保證模型訓(xùn)練效果的同時,大幅度降低訓(xùn)練負(fù)載。
每一個時隙內(nèi)的局部輪數(shù)和模型的訓(xùn)練效果具有關(guān)聯(lián)。若一個時隙內(nèi)的局部輪數(shù)集合為{yit1,…,yitM},那么對于一個時隙而言,邊緣設(shè)備產(chǎn)生的模型wit與其最優(yōu)模型之間的差距可以表示為wit-w*it≤χ(yit1,…,yitM,xit1,…,xitM)。也就是,隨著數(shù)據(jù)規(guī)模的上升和局部迭代輪數(shù)的上升,wit與其最優(yōu)模型w*it的差距會不斷減小。不僅如此,在將每個時隙的收斂推廣到整個時間軸就可以得到面向整個訓(xùn)練的模型效果,也就是
在上述建模的基礎(chǔ)上,本文調(diào)整每個時隙t每個設(shè)備i上的局部迭代輪數(shù)。這是由于過多的局部迭代輪數(shù)雖然能夠讓訓(xùn)練產(chǎn)生的模型快速收斂,但會引入大量的計(jì)算開銷;同時過少的局部迭代輪數(shù)反而無法使得模型收斂。因此本文設(shè)計(jì)的調(diào)整局部迭代輪數(shù)的方法為:
(1)每一個時隙t時間戳j的開始,收集上一個時間戳產(chǎn)生的訓(xùn)練效果。也就是,上一個時間戳j-1的局部訓(xùn)練輪數(shù)為yit(j-1);邊緣設(shè)備產(chǎn)生的模型為wit(j-1);上一時隙全局模型為以及邊緣設(shè)備i因計(jì)算產(chǎn)生的最大持續(xù)計(jì)算負(fù)載為
(2)通過收集訓(xùn)練效果,計(jì)算邊緣設(shè)備i在時隙t時間戳j上需要更新的局部輪數(shù)偏差Δijt。該訓(xùn)練偏差與收集所得訓(xùn)練效果構(gòu)成關(guān)系為
(3)利用局部輪數(shù)偏差Δijt進(jìn)行局部輪數(shù)的更新,即
直觀來說,上述3個步驟的執(zhí)行遵循動態(tài)調(diào)整、逐步優(yōu)化的原則。也就是,該動態(tài)調(diào)整過程不斷依照上一個時間戳的效果進(jìn)行局部輪數(shù)的修正。當(dāng)上一個時間戳的局部輪數(shù)過大時,如邊緣設(shè)備負(fù)載過高或是局部模型與全局模型之間的偏
圖1 面向流式數(shù)據(jù)的邊緣訓(xùn)練架構(gòu)差較為穩(wěn)定時,即可減少當(dāng)前時間戳的局部輪數(shù)。反之,若上一時間戳的負(fù)載相對較小且局部模型與全局模型之間的偏差仍然震蕩還未收斂,當(dāng)前時間戳的局部輪數(shù)可以適當(dāng)放大。函數(shù)將這些因素統(tǒng)籌考慮在內(nèi)。
本文就所提出的面向流式數(shù)據(jù)的邊緣訓(xùn)練進(jìn)行了實(shí)驗(yàn)驗(yàn)證。圖2展示了訓(xùn)練損失。無論是數(shù)據(jù)就緒后采用藍(lán)色傳統(tǒng)的批量梯度下降,還是利用本文所提出的面向流式數(shù)據(jù)的紅色的訓(xùn)練,都能夠在同一個數(shù)據(jù)集上達(dá)到相近的訓(xùn)練損失。圖3展示了訓(xùn)練過程中的資源開銷。相比于藍(lán)色的傳統(tǒng)批量梯度下降,也就是必須等到所有數(shù)據(jù)就緒后才進(jìn)行持續(xù)一段時間的高負(fù)載訓(xùn)練,紅色部分是本文所提出的方法,在數(shù)據(jù)不斷到達(dá)的過程中就陸續(xù)進(jìn)行訓(xùn)練計(jì)算,利用小批量數(shù)據(jù)進(jìn)行模型參數(shù)的更新。因此,避免了數(shù)據(jù)就緒后長時間持續(xù)的高負(fù)載占用;在流式數(shù)據(jù)到達(dá)過程中也不會產(chǎn)生高負(fù)載,使得整體訓(xùn)練不會給邊緣設(shè)備帶來更多的影響,也不會給其他業(yè)務(wù)形成干擾,影響正常設(shè)備使用。
圖2 邊緣訓(xùn)練的訓(xùn)練損失
圖3 邊緣訓(xùn)練的資源開銷
為了避免在邊緣設(shè)備上持續(xù)產(chǎn)生高訓(xùn)練負(fù)載,避免在數(shù)據(jù)就緒后持續(xù)對邊緣設(shè)備產(chǎn)生影響,也為了充分利用數(shù)據(jù)就緒過程,本文提出了一種邊緣設(shè)備流式數(shù)據(jù)的訓(xùn)練方法,主要包含邊緣設(shè)備上的小批量數(shù)據(jù)處理以及邊緣設(shè)備間的聯(lián)邦學(xué)習(xí)交互,以使數(shù)據(jù)在不斷到達(dá)的過程中就不斷進(jìn)行模型訓(xùn)練。本文進(jìn)一步就局部迭代輪數(shù)進(jìn)行了自適應(yīng)地控制,以平衡邊緣設(shè)備的負(fù)載和整體的訓(xùn)練效果。