ps-lite是一個參數(shù)服務(wù)器(ps)的實(shí)現(xiàn)。在有參數(shù)服務(wù)器之前,其實(shí)也就5年前,大部分分布式機(jī)器學(xué)習(xí)算法都是靠定期同步來實(shí)現(xiàn)的,比如MPI的all_reduce,或者map-reduce的reduce。定期同步有2個問題:
- 什么時候同步取決于跑的最慢的進(jìn)程
- 同步時不能干別的,只能同步
所以,后來async sgd出來之后,google提出了用參數(shù)服務(wù)器來避免所有進(jìn)程在一個時間點(diǎn)上都停下來同步。而是利用參數(shù)服務(wù)器來共享參數(shù),而每個訓(xùn)練進(jìn)程只需要干2件事情:
- 從參數(shù)服務(wù)器拉取最新的參數(shù)
- 利用自己的數(shù)據(jù)計算參數(shù)的diff,然后將diff發(fā)送ps,ps負(fù)責(zé)merge
word2vec是13年Google提出的一個新的類似于LDA的主題模型,用來做詞的向量表示。word2vec包含cbow, skip-gram 2個算法。優(yōu)化方法也有層次Softmax(HS)和負(fù)采樣(NS)兩種。為了體驗一下ps-lite, 因此決定基于ps-lite來實(shí)現(xiàn)cbow的NS算法。