高級(jí)分布式系統(tǒng)匯總:高級(jí)分布式系統(tǒng)目錄匯總-CSDN博客
分布式機(jī)器學(xué)習(xí)算法
按照通信步調(diào),大致可以分為同步算法和異步算法兩大類。
同步算法下,通信過(guò)程中有一個(gè)顯式的全局同步狀態(tài),稱之為同步屏障。當(dāng)工作節(jié)點(diǎn)運(yùn)行到同步屏障 ,就會(huì)進(jìn)入等待狀態(tài),直到其工作節(jié)點(diǎn)均運(yùn)行到同步屏障為止。接下來(lái)不同工作節(jié)點(diǎn)的信息被聚合并分發(fā)回來(lái),然后各個(gè)工作節(jié)點(diǎn)據(jù)此開(kāi)展下一輪的模型訓(xùn)練。
異步算法下,各個(gè)工作節(jié)點(diǎn)不再需要等待,而是以一個(gè)或多個(gè)全局服務(wù)器為作為中介,實(shí)現(xiàn)對(duì)全局模型的更新和讀取。這樣可以顯著減少通信時(shí)間,從而獲得更好的多機(jī)擴(kuò)展性。
同步算法--同步SGD算法(SSGD)
同步算法--同步SGD算法(SSGD)最基礎(chǔ)的同步算法,將SGD套用到同步的BSP框架中。
實(shí)際上就是將各個(gè)工作節(jié)點(diǎn)依據(jù)本地訓(xùn)練數(shù)據(jù)所得到的梯度疊加起來(lái),整個(gè)過(guò)程等價(jià)于一個(gè)批量大小增加K倍的單機(jī)SGD算法。
特點(diǎn):由于在每一個(gè)小批量更新之后都有一個(gè)同步過(guò)程,通信頻率較高。
同步SGD算法優(yōu)點(diǎn)與缺點(diǎn)
優(yōu)點(diǎn):在每個(gè)小批量計(jì)算的計(jì)算量很大,模型規(guī)模不大的情況下,可以獲得理想的加速性能。
缺點(diǎn):小批量中樣本較少,模型規(guī)模較大時(shí),可能會(huì)花費(fèi)數(shù)倍于計(jì)算時(shí)間的代價(jià)進(jìn)行通信。
解決方法:
? 在通信環(huán)節(jié)加入時(shí)空濾波,減少通信量
? 擴(kuò)大本地學(xué)習(xí)時(shí)的批量大小,拉長(zhǎng)本地訓(xùn)練時(shí)間
啟發(fā):
隨著批量大小的增加,隨機(jī)梯度的方差變小,會(huì)降低算法跳出某些局部最優(yōu)解的可能。
? 當(dāng)批量大小較大,模型比較容易收斂到優(yōu)化曲面比較尖銳的局部最優(yōu);當(dāng)批量大小較小時(shí),會(huì)收斂到優(yōu)化曲面
相對(duì)平緩的的局部最優(yōu)點(diǎn)。
? 考慮到小批量中的樣本較多時(shí)求得的梯度更加準(zhǔn)確,我們可以相應(yīng)地增加習(xí)率使得每步更新得更多一些,從而
解決收斂變慢的問(wèn)題。
同步和異步的融合
同步和異步算法有各自的優(yōu)缺點(diǎn)和適用場(chǎng)景,如果可以把它們結(jié)合起來(lái)應(yīng)用,取長(zhǎng)補(bǔ)短,或許可以更好地達(dá)到收斂速率與收斂精度的平衡。
分布式機(jī)器學(xué)習(xí)理論
分布式機(jī)器學(xué)習(xí)的目標(biāo):適用大規(guī)模計(jì)算資源,充分利用大數(shù)據(jù)來(lái)訓(xùn)練數(shù)據(jù),從而加速訓(xùn)練速度或者實(shí)現(xiàn)訓(xùn)練規(guī)模的突破。
? 收斂性:具有良好的收斂性質(zhì),能夠以可接受的收斂速率收斂到(正則化)經(jīng)驗(yàn)風(fēng)險(xiǎn)的最優(yōu)模型;
? 加速比:相比與對(duì)應(yīng)的單機(jī)優(yōu)化算法,達(dá)到同樣的模型精度所需要的時(shí)間明顯降低,甚至隨著工作節(jié)點(diǎn)的增加,需要的時(shí)間以線性的階數(shù)減少;
? 泛化性:不出現(xiàn)過(guò)擬合現(xiàn)象,不僅訓(xùn)練性能好,測(cè)試性能也好。
為了達(dá)到更好的加速比,會(huì)人為的減少工作節(jié)點(diǎn)之間的通信量。
分布式機(jī)器學(xué)習(xí)系統(tǒng)
目前使用的分布式機(jī)器學(xué)習(xí)系統(tǒng)大多可以被三種架構(gòu)所覆蓋,可分為三種:基于IMR的系統(tǒng)、基于參數(shù)服務(wù)器的系統(tǒng)和基于數(shù)據(jù)流的系統(tǒng)。
基于IMR的系統(tǒng)主要的適用場(chǎng)景是“同步數(shù)據(jù)并行。它從大數(shù)據(jù)處理平臺(tái)演化而來(lái),運(yùn)行邏輯比較簡(jiǎn)單。
基于參數(shù)服務(wù)器的系統(tǒng)可以同時(shí)支持同步和異步的并行算法。它的接口簡(jiǎn)單明了、邏輯清晰,可以很方便、靈活地與單機(jī)算法相結(jié)合。
基于數(shù)據(jù)流的系統(tǒng)由一個(gè)有向無(wú)環(huán)圖定義,可以靈活地描述復(fù)雜地并行模式。
基于參數(shù)服務(wù)器的系統(tǒng)--Multiverso參數(shù)服務(wù)器
采用數(shù)據(jù)表的結(jié)構(gòu)存儲(chǔ)參數(shù)。依據(jù)模型的不同,數(shù)據(jù)有不同的具體形式:可以是簡(jiǎn)單向量,也可以是矩陣、張量或哈希表;可以使稠密的形式,也可以稀疏的形式。
Multiverso系統(tǒng)使用消息驅(qū)動(dòng)的服務(wù)模式,也就是用一個(gè)消息隊(duì)列接收并保存來(lái)向工作節(jié)點(diǎn)的請(qǐng)求。服務(wù)器端會(huì)監(jiān)聽(tīng)隊(duì)列中的消息,并按照請(qǐng)求的類別由相應(yīng)的消息響應(yīng)函數(shù)完成服務(wù)。為了提高服務(wù)器端處理的效率,Multiverso系統(tǒng)采用線程池對(duì)請(qǐng)求并行處理。
Multiverso系統(tǒng)實(shí)現(xiàn)同步和異步算法
Multiverso系統(tǒng)的客戶端邏輯
包含的功能:用戶接口(API),客戶端的存儲(chǔ)邏輯和客戶端的發(fā)送邏輯。
? 客戶端的存儲(chǔ)邏輯
包含兩個(gè)部分:一是用來(lái)存儲(chǔ)從參數(shù)服務(wù)器端獲得的全局參數(shù),二是用來(lái)保存本地產(chǎn)生的模型。
? 客戶端的發(fā)送邏輯
在網(wǎng)絡(luò)傳輸前對(duì)數(shù)據(jù)進(jìn)行分包和聚合。在接受參數(shù)服務(wù)器端傳來(lái)的最新參數(shù)時(shí),客戶端也需要將來(lái)自不同服務(wù)器的信息匯總,然后把信息存儲(chǔ)到本地模型容器之中。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-800538.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-800538.html
到了這里,關(guān)于高級(jí)分布式系統(tǒng)-第15講 分布式機(jī)器學(xué)習(xí)--分布式機(jī)器學(xué)習(xí)算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!