7月2日,2019可信云大會(huì)在北京國(guó)際會(huì)議中心隆重開幕。2019可信云大會(huì)以“智能云網(wǎng)邊,可信創(chuàng)未來”為主題,由中國(guó)信息通信研究院主辦。
下午13:30大會(huì)特設(shè)的智能云論壇活動(dòng)正式開始,MAXP大賽最佳案例獲得者清華大學(xué)計(jì)算機(jī)系研究生耿金坤做了《大規(guī)模分布式機(jī)器學(xué)習(xí)未來發(fā)展之我見》的精彩演講。
耿金坤
很高興,也很榮幸能夠站在這個(gè)臺(tái)上跟大家分享一下關(guān)于我的科研經(jīng)歷,以及結(jié)合本次比賽的經(jīng)歷,分享一點(diǎn)關(guān)于分布式機(jī)器學(xué)習(xí)的有趣故事。
剛才陳媛提到對(duì)于產(chǎn)業(yè)界來講,可能更重要的是落地,對(duì)于高校來講,更著重的是創(chuàng)新,也就是要往前看一步,從高校的角度來看,到底會(huì)有什么樣的故事,跟大家聊一聊。
眾所周知,我們目前處在大數(shù)據(jù)驅(qū)動(dòng)的AI時(shí)代,大數(shù)據(jù)成為業(yè)界常態(tài)有兩個(gè)原因:1.數(shù)據(jù)量在爆炸式增長(zhǎng)。數(shù)據(jù)將在2020年達(dá)到175ZB。
2.模型復(fù)雜度不斷增加。目前想要得到更高的準(zhǔn)確度,擬合能力必須足夠強(qiáng),這個(gè)模型深度要跟上。以后很有可能還會(huì)再出現(xiàn)2000層、3000層的網(wǎng)絡(luò),這使得單機(jī)根本沒有辦法承受。
在未來的發(fā)展過程中,只想靠一臺(tái)單機(jī)筆記本寫300行,跑一個(gè)模型,圈一筆投資不太可行。現(xiàn)在一提到機(jī)器學(xué)習(xí)就是數(shù)據(jù)中心化,就是上云,動(dòng)輒幾百臺(tái)甚至上千臺(tái)規(guī)模的也有進(jìn)行聯(lián)合訓(xùn)練。
在大規(guī)模分布式學(xué)習(xí)中有哪些基本問題?主要有四個(gè)問題:
DML架構(gòu)和參數(shù)同步算法
參數(shù)同步模式
數(shù)據(jù)/模型并行模式
新型加速技術(shù)的應(yīng)用
基礎(chǔ)架構(gòu)與同步算法。
大家都在推自己的分布式框架,美國(guó)服務(wù)器,Tensorflow、PaddlePaddle等,無非就是有三種架構(gòu):
1.基于參數(shù)服務(wù)器的架構(gòu)
稍微有點(diǎn)系統(tǒng)開發(fā)經(jīng)驗(yàn)的都知道,每個(gè)Work負(fù)責(zé)訓(xùn)練模型,然后把自己的參數(shù)推送到參數(shù)服務(wù)器,然后由worker推送下來,這是最基本的工作流。
2.基于Mesh的架構(gòu)
3.基于Ring的架構(gòu)
對(duì)比,基于PS架構(gòu)是最常用的,最經(jīng)典的Tensorflow、MXNet都是支持PS架構(gòu),優(yōu)勢(shì)顯而易見,被多數(shù)主流框架支持;部署簡(jiǎn)單;彈性擴(kuò)展好;魯棒性強(qiáng)。劣勢(shì)是容易產(chǎn)生中心化瓶頸。
基于Mesh負(fù)載更加均衡,但擴(kuò)展性比較差。
基于Ring這個(gè)架構(gòu)目前被廣泛關(guān)注,起源并不是分布式,起源于高性能,但大家一提到Ring都提到百度,其實(shí)百度并不是Ring的發(fā)明者,早在2009年由三個(gè)學(xué)者在一個(gè)論文中發(fā)表這個(gè)算法,這個(gè)算法的優(yōu)點(diǎn)是帶寬最優(yōu),2017年百度一個(gè)科學(xué)家是以博客形式貼出來,廣受關(guān)注。帶寬最優(yōu),意思是如果給定這樣帶寬資源,同步效率不可能做得比Ring更高,所以大家都很認(rèn)可它。劣勢(shì)是魯棒性差,比如把所有的節(jié)點(diǎn)連成一個(gè)圈,只要有一個(gè)節(jié)點(diǎn)斷掉,這個(gè)工作流就沒有辦法進(jìn)行,路棒性很差。
一個(gè)公司如果很有錢,或跟BAT協(xié)商好,搭一個(gè)私有集群來訓(xùn)練業(yè)務(wù),私有集群就沒有必要采用經(jīng)典架構(gòu),扁平架構(gòu)反而效率很低,可以考慮采用模塊化架構(gòu)。BQ這種情況可以不用扁平式的算法,而可以采用層次化的算法進(jìn)行高效同步。
參數(shù)同步模式。
SP、ASP、SSP三種模式。
BSP是目前最常用的,假如現(xiàn)在有三個(gè)節(jié)點(diǎn),節(jié)點(diǎn)性能肯定不一樣,有的節(jié)點(diǎn)跑得快,有的節(jié)點(diǎn)跑得慢,有的節(jié)點(diǎn)率先把參數(shù)算出來,BSP要求每一次迭代時(shí)所有的節(jié)點(diǎn)都必須等最慢的節(jié)點(diǎn)算完以后,然后大家把自己的參數(shù)進(jìn)行同步,同步完成以后同時(shí)開始第二次迭代。這個(gè)形式優(yōu)劣勢(shì)都很明顯,優(yōu)勢(shì)在于每一個(gè)worker下一次開始都能拿到最新的全局參數(shù),意味著同步迭代質(zhì)量很高,但劣勢(shì)也很明顯,那些跑的快的worker要等慢的worker,導(dǎo)致計(jì)算資源很大程度被浪費(fèi)。
所以為了解決這個(gè)問題采用ASP異步同步,就是沒有同步,比如現(xiàn)在worker2比較快,運(yùn)行第0次迭代,就可以直接運(yùn)行第1次迭代,所達(dá)到的參數(shù)就是有多新就多新,比如運(yùn)行完第一次迭代以后,要進(jìn)行參數(shù)同步,只能從Work0和1那里拿到第0次迭代參數(shù)。ASP這種情況帶來的問題是迭代質(zhì)量偏低,本來BSP運(yùn)行100次、200次就可以收斂,但ASP需要運(yùn)行300次、400次,甚至異構(gòu)性很強(qiáng)的話,這種情況有可能就不收斂。
由于這兩個(gè)都有問題,既不用BSP也不用ASP,用SSP,就是允許同步的過程中采用舊的參數(shù)進(jìn)行同步,但舊的參數(shù)能夠舊到什么程度必須有一個(gè)閾值。如果認(rèn)為比我慢一次迭代的參數(shù),接受它。
對(duì)比起來BSP實(shí)現(xiàn)簡(jiǎn)單,在PS、現(xiàn)有主流框架中都被廣泛支持。好處是算法在線性好,如果采用BSP進(jìn)行分布式訓(xùn)練,初始化條件是給定的,算法模型是給定的,輸入是給定的,不管運(yùn)行100次、200次這樣的算法都應(yīng)該可以在線出相同的結(jié)果。劣勢(shì)是快節(jié)點(diǎn)必須等慢節(jié)點(diǎn),性能嚴(yán)重的被最慢者拖慢。