一. 為什么分布式訓(xùn)練
深度學(xué)習(xí)需要大量數(shù)據(jù)冻晤,實(shí)踐證明多機(jī)多卡可以讓算法研究人員更多的調(diào)整網(wǎng)絡(luò)和參數(shù)已達(dá)到模型可用的狀態(tài)(hyper parameters)茵烈。多數(shù)情況下我們會(huì)采用數(shù)據(jù)并行(更穩(wěn)定的收斂)的訓(xùn)練方式形导,一個(gè)更好的理解數(shù)據(jù)并行和模型并行的文章來自李沐【談?wù)勀銓?GPU/CPU集群下做到Data/Model Parallelism的區(qū)別"的理解环疼?】
二.現(xiàn)有資源調(diào)度器對比
構(gòu)建深度學(xué)習(xí)集群可以更好的利用gpu資源。在閑時(shí)可以使用多機(jī)多卡來快速訓(xùn)練網(wǎng)絡(luò)朵耕。這其中的技術(shù)難點(diǎn)主要是資源調(diào)度器炫隶。細(xì)數(shù)國內(nèi)外互聯(lián)網(wǎng)巨頭,他們都有自己的資源管理系統(tǒng)阎曹,比如Google的Borg伪阶,Twitter的Mesos,阿里巴巴的Fuxi处嫌,微軟的Apollo等栅贴。
1. YARN是hadoop開源的第二代資源管理器,在分布式mr和spark都有應(yīng)用熏迹。
YARN的架構(gòu)如下圖:
說明:
- ResourceManager包括Scheduler和ApplicationsManager檐薯,其中Scheduler負(fù)責(zé)匯總Node Manager上報(bào)的資源信息。ApplicationsManager調(diào)度資源給job注暗,啟動(dòng)app master坛缕。Scheduler可以根據(jù)不同的應(yīng)用場景使用不同的plugin,比如:FairScheduler和CapacityScheduler
- Node Manager 每個(gè)機(jī)器上一個(gè)捆昏,負(fù)責(zé)匯總本地資源信息赚楚,監(jiān)控本地container執(zhí)行情況
- App Mstr每個(gè)job一個(gè),負(fù)責(zé)啟動(dòng)屡立、恢復(fù)container的執(zhí)行情況
YARN作為資源調(diào)度器直晨,在實(shí)際使用中應(yīng)該有的特性
- 份額限制(Quota)和進(jìn)入控制(admission control)
支持不同的queue,權(quán)限控制 - 作業(yè)優(yōu)先級與資源搶占
高優(yōu)先級的搶占定期運(yùn)行的job - 服務(wù)高可用問題
zookeeper集群 - 日志統(tǒng)一收集和滾動(dòng)
mesos/YARN可通過上層框架解決膨俐,比如Mesos中的 aurora和Marathon勇皇,YARN中的Twill和Slider,這個(gè)對類似tensorboard可視化工具比較關(guān)鍵
2. 另一個(gè)使用較多的資源調(diào)度器是Mesos
Mesos架構(gòu)圖如下:
說明
Mesos的架構(gòu)更加簡潔
- Agent負(fù)責(zé)收集node的資源使用信息給master
- framework 包含調(diào)度器和執(zhí)行器2部分焚刺。調(diào)度器向Mesos master注冊并申請資源敛摘。執(zhí)行器會(huì)被分發(fā)運(yùn)行在申請到的node上
Mesos vs YARN二者側(cè)重點(diǎn)的區(qū)別,主要如下圖:
值得說明的是:mesosphere乳愉,結(jié)合mesos和容器化等技術(shù)兄淫,實(shí)現(xiàn)了DataCenter的“操作系統(tǒng)”,能夠快速搭建后端服務(wù)集群
三.業(yè)界深度機(jī)器學(xué)習(xí)平臺使用調(diào)度器情況
Yahoo為了復(fù)用已經(jīng)規(guī)穆Γ化成熟的hadoop捕虽,spark集群。引入了CaffeOnSpark坡脐。其另一個(gè)好處是:復(fù)用集群泄私,大量數(shù)據(jù)不用在集群之間相互copy。相關(guān)新聞blog。CaffeOnSpark會(huì)作為spark的第三方包被安裝部署到集群晌端。
Server-to-server direct communication (Ethernet or InfiniBand) achieves faster learning and eliminates scalability bottleneck.
支持InfiniBand捅暴,rdma 更快速的通訊
Incremental learning is supported to leverage previously trained models or snapshots.
支持fine-tune
四.mpi on YARN的例子
分布式深度學(xué)習(xí)為了優(yōu)化通訊一般會(huì)使用mpi,在YARN和Mesos上都可以運(yùn)行mpi咧纠。其中mpi on YARN的一個(gè)例子mpich2-yarn
實(shí)現(xiàn)一個(gè)可以運(yùn)行在YARN上的應(yīng)用程序需要實(shí)現(xiàn)2各組件蓬痒。
1.Client
其主要負(fù)責(zé)提交應(yīng)用程序和管理應(yīng)用程序
2.AppplicationMaster
其主要負(fù)責(zé)程序的任務(wù)切分,調(diào)度和監(jiān)控等等