沐神的第三代parameter server的worker節點只需要保存部分參數,怎麼理解?
在第三代paarmeter server架構中,woker節點只需要保存部分參數(Scaling Distributed Machine Learning with the Parameter Server, Mu Li, OSDI 2014, Page 5, Figure 3 paperuri:(e28a18693beb4c429ed6f4cb9220a317)),但在每個節點中進行訓練中,通常都需要所有的參數參與,這怎麼理解?而且這個說法與網上AutoVision (by 仙道菜)里模擬的參數更新過程也不符合啊?困擾好久了,求大神指導
這個主要是針對稀疏數據說的,因為每個worker只會拿到一部分數據,很有可能是不需要整個模型就能計算梯度,例如主需要拿到數據裡面出現過的特徵對應的權重
是說的模型分片存儲吧
@李沐 大神說的概括了點,我來詳細的說下,如有不足,還請指出~
舉個全連接深度學習網路DNN的例子,這個網路結構里的參數分為兩類。
- 第一類是:輸入層和第一個隱層之間的參數,
- 第二類是:隱層與隱層之間的參數以及隱層和輸出層之間的參數。
ParameterServer架構中每個worker獲取的樣本集都是固定的。設總共有10k個訓練樣本,3個worker。那麼可能worker1僅被分配了3k個訓練樣本,而且在整個的訓練流程中,worker1也只處理這3k個樣本。
對於稀疏數據來說,假設總共有500個特徵,而worker1獲得的3k條樣本里可能只包括了200個特徵。
因此對於worker1來說,無論是forward還是backward,在輸入層與第一個隱層之間,都僅會對這200個特徵對應的參數進行處理(其餘300個特徵對應的輸入是0,所以它們的參數值不會參與到forward/backward中)。
所以,worker1從ParameterServer那pull參數時,第一類參數僅需要獲得那200個特徵對應的即可;第二類參數則需要全部都pull下來。這就是所謂的worker節點只需要保留部分參數。
當然,上述例子可能體現不出部分保留參數的優勢。但對於某些特殊應用場景,如ctr預估,特徵總數通常上千萬,而每條樣本可能只有幾十個特徵,一個worker即便處理1w個樣本,可能所需要的第一類參數也只有1w個。這種情況下,輸入層維度是上千萬,如果無法按需獲取特徵的參數,每個worker都要pull所有的特徵的話,網路絕對吃不消。
推薦閱讀:
※目前世界上有對強人工智慧的嘗試嗎?具體瓶頸是什麼?
※目前火熱的Deep Learning會滅絕傳統的SIFT/ SURF的特徵提取的演算法嗎?
※目前主流的attention方法都有哪些?
※CNN為什麼能使用在NLP?
※學習神經網路,需要哪些前導知識?
TAG:深度學習DeepLearning | mxnet |