FM-PS初步性能分析

目標

使系統(tǒng)能夠發(fā)揮分布式的能力,即scalability.

實驗設計

假設(設定提交任務部分延遲相對于訓練是可以忽略不計的)
若有兩個Tworker和一個Pserver威蕉,每個Tworker負責5000張image的數(shù)據(jù)
則對比對象則是一個進程單獨負責訓練韧涨,負責10000張訓練數(shù)據(jù)
時間(time)和計算資源(cpu使用率)的分布會是什么樣呢侮繁?

單進程實驗

epoch:5
mini_batch_size:15
training_data_size:10000
evaluation_data_size:500
可以看到訓練時間占了幾乎百分之百的部分
其中train:14.988s, evaluation:0.598s
那么訓練中的時間是如何分布的呢?

至此我們可以以此為baseline娩贷,先初步觀察一下單Pserver單Tworker的時間分布

單Pserver單Tworker

epoch:5
mini_batch_size:15
training_data_size:10000
evaluation_data_size:500
采取和單進程一樣的配置

預想

可以設想彬祖,由于優(yōu)化器在Pserver上品抽,所以forwardbackward的時間綜合應該要持平
對于Tworker來說:
optimizer的時間 =
pull + push + fill + extract(get_gradient_from_network) + slice_gradient
之前單進程的時間的是4.044秒

分析

訓練時間

可以看到這次花在訓練上的時間是60s左右桑包,比baseline慢了四倍之多。
所以現(xiàn)在需要分析是不是按我們的預想的分布來發(fā)展.
pull/push次數(shù)應該是:10000*5/15 = 3333(次)
時間分布

one_batch_forward_and_backward

訓練分布

可以看到訓練時間的分布基本符合我們的預期烧颖,也就是說窄陡,四倍的開銷均來源于優(yōu)化器部分的實現(xiàn)。

優(yōu)化器

optimizer的時間 =
pull + push + fill + extract(get_gradient_from_network) + slice_gradient
已知baseline:4.044秒
根據(jù)上述公式我們得到:
pull(24.982) + push(3.657) + fill_and_extract(0.2) + slice_gradient(19.512) = 48.351秒
因此接下來需要詳細分析如何減小這一部分的時間消耗

PULL

pull_parameter函數(shù)時間分布

1.對于pull涂圆,RPC調(diào)用润歉,目前是在本機的一對一通信颈抚,0.9秒并不是主要的部分,但可以預見若worker和server數(shù)量增加贩汉,該部分的開銷會增加匹舞,同時,若在不同機器上網(wǎng)絡延遲會進一步影響該項性能赐稽,值得以后多注意又憨,但目前不是主要目標。

2.可以看到調(diào)用了20040次構建ndarray寒匙,這讓pull成為主要的性能瓶頸躏将。那么正確的實現(xiàn)應該是如何調(diào)用呢?
可以猜測的是現(xiàn)在的實現(xiàn)是存在問題的会宪,對于目前的神經(jīng)網(wǎng)絡來說蚯窥,是6個參數(shù)塞帐,1-3層的權重和偏置巍沙,那么應該只有在第一次拿到參數(shù)時需要構建array,之后每一次都把對應key的參數(shù)賦值進array榔幸,而不是每一次都創(chuàng)建一個新的ndarray矮嫉。

3.可以看到反序列化的開銷也是占比較大的一塊,花費了3.735秒拨齐,對于這一塊挺尿,可以將python實現(xiàn)的ParserFromString替換為底層是c++實現(xiàn)的代碼,從而降低這里的時間占比

Slice Gradient

分析

1.可以看到這里也有和pull一樣的問題,大量的時間花在對于每一個參數(shù)數(shù)值的填充上窄俏,可以改成在第一次時創(chuàng)建相應的梯度PB對象碘菜,之后維護PB對象忍啸,對其值進行更新,而不是每一次都創(chuàng)建PB對象计雌,再構造一個結(jié)構無異的梯度組凿滤。
2.替換python實現(xiàn)的protobuf函數(shù)為底層c++實現(xiàn)的代碼

PUSH

push端的性能問題主要在Pserver端如何相應RPC調(diào)用上,因此接下來轉(zhuǎn)入C++實現(xiàn)的Pserver端的性能分析

  //遍歷key-gradient pair
  for(size_t i = 0; i < size; i++){
    const task::KeyValuePair& pair = kth_gradient.pairs(i);
    const uint32_t pair_size = pair.values_size();
    vector<uint32_t> shape{pair_size};
    gradients_[pair.name()] =  make_shared<VectorParameter>(1, shape);
    for(int j = 0; j < pair_size; j++){
      gradients_[pair.name()]->values[j] = pair.values(j);
    }
  }
  //update
  //TODO:
  //交給線程在背后detach去做
  update_parameter();

可以看到有同樣的問題,在響應push請求時眷蚓,不斷的構造出了新的array或者Matrix導致時間大量的消耗反番,同時對于參數(shù)更新不應該在push函數(shù)內(nèi)進行更新叉钥,可以啟動一個(detach)線程在背后去更新投队,然后立即返回

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歉秫,一起剝皮案震驚了整個濱河市雁芙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兔甘,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異澡匪,居然都是意外死亡唁情,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門惦费,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抢韭,“玉大人,你說我怎么就攤上這事瞧省》透鳎” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵候学,是天一觀的道長梳码。 經(jīng)常有香客問我,道長暇藏,這世上最難降的妖魔是什么濒蒋? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮瓮顽,結(jié)果婚禮上围橡,老公的妹妹穿的比我還像新娘。我一直安慰自己拣播,他們只是感情好收擦,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布塞赂。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳍置。 梳的紋絲不亂的頭發(fā)上送淆,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音辟拷,去河邊找鬼阐斜。 笑死,一個胖子當著我的面吹牛隅俘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播为居,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼蒙畴,長吁一口氣:“原來是場噩夢啊……” “哼膳凝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸠项,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤祟绊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后牧抽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘉熊,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年扬舒,在試婚紗的時候發(fā)現(xiàn)自己被綠了阐肤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡讲坎,死狀恐怖孕惜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晨炕,我是刑警寧澤衫画,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站瓮栗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏费奸。R本人自食惡果不足惜弥激,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愿阐。 院中可真熱鬧微服,春花似錦、人聲如沸换况。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舒裤,卻和暖如春喳资,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腾供。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工仆邓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伴鳖。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓节值,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榜聂。 傳聞我的和親對象是個殘疾皇子搞疗,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容