聯(lián)邦學(xué)習(xí): 統(tǒng)一數(shù)據(jù)協(xié)作和隱私保護的技術(shù)解決之道
上圖展示了分布式機器學(xué)習(xí)的基本框架:數(shù)據(jù)和模型的切分,單機間的計算協(xié)同,單機計算結(jié)果的合并;數(shù)據(jù)和模型的切分:如何處理的大數(shù)據(jù)或大模型進行切分,在多個機器上做并行訓(xùn)練。單機間的計算協(xié)同:在把這些數(shù)據(jù)和模型放到多個計算節(jié)點之后就,怎樣實現(xiàn)不同機器之間的通信和同步,使得它們可以協(xié)作把機器學(xué)習(xí)模型訓(xùn)練好。單機計算結(jié)果的合并:當(dāng)每個計算節(jié)點都能夠訓(xùn)練出一個局部模型之后,怎樣把這些局部模型做聚合,最終形成一個統(tǒng)一的機器學(xué)習(xí)模型。
關(guān)于數(shù)據(jù)切分,訓(xùn)練中所涉及的數(shù)據(jù)和模型規(guī)模巨大,需要基于分布式的機器學(xué)習(xí)平臺,部署了數(shù)十個乃至數(shù)百個并行運行的計算節(jié)點對模型做訓(xùn)練。
第一種模式是數(shù)據(jù)并行化訓(xùn)練,不同的機器有同一個模型的多個副本,每個機器分配到不同的數(shù)據(jù),然后將所有機器的計算結(jié)果按照某種方式合并。常見的方法基于“隨機采樣”,隨機采樣可以盡量保證每臺機器上的局部訓(xùn)練數(shù)據(jù)與原始數(shù)據(jù)是獨立同分布的。但是也有明顯缺點,例如計算復(fù)雜度比較高,訓(xùn)練樣本未被選中,導(dǎo)致訓(xùn)練樣本浪費。
還有一種方法是全局置亂切分的方法,該方法將訓(xùn)練數(shù)據(jù)進行隨機置亂,然后將打亂后的數(shù)據(jù)順序劃分為相應(yīng)的小份,隨后將這些小份數(shù)據(jù)分配到各個工作節(jié)點上。相比于隨機采樣方法,其計算復(fù)雜度比全局隨機采樣要小很多,而且置亂切分能保留每一個樣本,直觀上對樣本利用更充分,同時和有放回的隨機采樣在收斂率上是基本一致的。
數(shù)據(jù)并行化的目標是將數(shù)據(jù)集均等地分配到系統(tǒng)的各個節(jié)點 (node),其中每個節(jié)點都有模型的一個副本。每個節(jié)點都會處理該數(shù)據(jù)集的一個不同子集并更新其本地權(quán)重集。這些本地權(quán)重會在整個集群中共享,從而通過一個累積算法計算出一個新的全局權(quán)重集。這些全局權(quán)重又會被分配至所有節(jié)點,然后節(jié)點會在此基礎(chǔ)上處理下一批數(shù)據(jù)。數(shù)據(jù)并行化是應(yīng)用最為廣泛的并行策略,但隨著數(shù)據(jù)并行訓(xùn)練設(shè)備數(shù)量的增加,設(shè)備之間的通信開銷也在增長。 另一種模式是模型并行: 系統(tǒng)中的不同機器(GPU/CPU等)負責(zé)模型的不同部分。常見的場景例如,神經(jīng)網(wǎng)絡(luò)模型的規(guī)模比較大,無法存儲于本地內(nèi)存,則需要對模型進行劃分,不同網(wǎng)絡(luò)層被分配到不同的機器,或者同一層內(nèi)部的不同參數(shù)被分配到不同機器。對于神經(jīng)網(wǎng)絡(luò)這種高度非線性的結(jié)構(gòu),各個工作節(jié)點不能相對獨立地完成對自己負責(zé)的參數(shù)訓(xùn)練和更新,必須依賴與其他工作節(jié)點的協(xié)作。常用的模型并行方法有,橫向按層劃分、縱向跨層劃分和模型隨機劃分。
除去上面兩類并行方式,還有一類是混合并行 (Hybrid parallelism),在一個集群中,既有模型并行,又有數(shù)據(jù)并行。例如,在最近的Optimizing Multi-GPU Parallelization Strategies for Deep Learning Training,就提到如何如何使用混合并行的方法(在每個數(shù)據(jù)并行的基礎(chǔ)上,加入多個設(shè)備,進行模型并行)從而實現(xiàn)更好的加速。
分布式機器學(xué)習(xí)系統(tǒng)的另一個挑戰(zhàn)是單機間的計算協(xié)同。
同步通信 vs 異步通信
通信的步調(diào)是需要考慮的問題之一,在機器學(xué)習(xí)過程中,不同機器的數(shù)據(jù)大小,機器效能,訓(xùn)練速度會有差異,有的機器訓(xùn)練速度比較快,有的機器訓(xùn)練速度比較慢。如果采用同步通信的方式,其他機器需要等最慢的機器完成計算,才能往前繼續(xù)訓(xùn)練,導(dǎo)致整個進程受集群里最慢的機器的嚴重影響。
為了實現(xiàn)高效的分布式機器學(xué)習(xí)的效率,異步通信被廣泛關(guān)注和使用。在異步通信過程中,每臺機器完成本地訓(xùn)練之后就把局部模型、局部梯度或模型更新推送到全局模型上去,并繼續(xù)本地的訓(xùn)練過程,而不去等待其他的機器。還有通信的拓撲結(jié)構(gòu):常見的有,基于參數(shù)服務(wù)器的通信拓撲結(jié)構(gòu)和基于流程圖的通信拓撲結(jié)構(gòu);
另外一點是通信的頻率:通信越頻繁,通信的代價就會越高,可能會降低訓(xùn)練的速度。常見優(yōu)化包括模型壓縮,模型量化,隨機丟棄等等。
除了通信以外,單機的計算結(jié)果合并,并聚合成整體模型,也是一個非常具有挑戰(zhàn)的一個問題。在業(yè)界里常用的方式有參數(shù)平均,集成模型等。例如參數(shù)平均就是把各個不同的局部模型做簡單的參數(shù)平均。參數(shù)平均是最簡單的一種數(shù)據(jù)并行化。若采用參數(shù)平均法,訓(xùn)練的過程如下所示:
參數(shù)平均比較簡單,但是不適用于非凸問題時,例如深度學(xué)習(xí)?梢钥紤]使用模型集成。
通過上面的介紹,我們對分布式機器學(xué)習(xí)技術(shù)有了一定的認識。實際上,聯(lián)邦學(xué)習(xí)本質(zhì)上也是一種分布式機器學(xué)習(xí)技術(shù)/框架;蛘哒f,是某種數(shù)據(jù)并行化訓(xùn)練。在了解分布式機器學(xué)習(xí)后,聯(lián)邦學(xué)習(xí)將不再神秘。
各個參與方就如同不同的worker,每方保留自己的底層數(shù)據(jù),并且無需分享這些數(shù)據(jù)給其他worker。多個worker攜帶自己的數(shù)據(jù),在加密形態(tài)的前提下共建模型,提升AI模型的效果。
最早在 2016 年由谷歌和愛丁堡大學(xué)學(xué)者提出,原本用于解決安卓手機終端用戶在本地更新模型的問題,Google案例中的聯(lián)邦學(xué)習(xí)過程:1. 設(shè)備端下載當(dāng)前模型;2. 基于本地數(shù)據(jù)來更新模型;3. 云端整合多方更新,迭代模型。
從上圖我們可以看到,客戶端(移動設(shè)備)負責(zé)模型更新和上載,需要具備一定的計算資源。同時,這里還有很多優(yōu)化點,包括訓(xùn)練時間,訓(xùn)練頻率等。
聯(lián)邦學(xué)習(xí)和傳統(tǒng)分布式系統(tǒng)的差異
正如我們前面所說,聯(lián)邦學(xué)習(xí)本質(zhì)上也是一種分布式機器學(xué)習(xí)技術(shù)/框架,但是他和和傳統(tǒng)分布式系統(tǒng)還是存在明顯差異:Server與Worker的關(guān)系:分布式系統(tǒng)中Server對Worker是完全所有權(quán)/控制權(quán),但是在聯(lián)邦學(xué)習(xí)中是是相對松散的,并沒有所有權(quán)/控制權(quán)。這也導(dǎo)致了額外的挑戰(zhàn)。不同設(shè)備數(shù)據(jù)的差異性:分布式機器學(xué)習(xí)的每個節(jié)點基本上是均衡的,而在聯(lián)邦學(xué)習(xí)的架構(gòu)里,Worker節(jié)點與節(jié)點之間的數(shù)據(jù)差距是無法保證的。在聯(lián)邦學(xué)習(xí)架構(gòu)中,不同worker,還有server不是在局域網(wǎng)內(nèi)部,需要消耗大量的網(wǎng)絡(luò),并需要考慮網(wǎng)絡(luò)的穩(wěn)定性。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
圖片新聞