基于ps-lite实现分布式的word2vec

ps-lite是一个参数服务器(ps)的实现。在有参数服务器之前,其实也就5年前,大部分分布式机器学习算法都是靠定期同步来实现的,比如MPI的all_reduce,或者map-reduce的reduce。定期同步有2个问题:

  • 什么时候同步取决于跑的最慢的进程
  • 同步时不能干别的,只能同步

所以,后来async sgd出来之后,google提出了用参数服务器来避免所有进程在一个时间点上都停下来同步。而是利用参数服务器来共享参数,而每个训练进程只需要干2件事情:

  • 从参数服务器拉取最新的参数
  • 利用自己的数据计算参数的diff,然后将diff发送ps,ps负责merge

word2vec是13年Google提出的一个新的类似于LDA的主题模型,用来做词的向量表示。word2vec包含cbow, skip-gram 2个算法。优化方法也有层次Softmax(HS)和负采样(NS)两种。为了体验一下ps-lite, 因此决定基于ps-lite来实现cbow的NS算法。

代码见 https://github.com/xlvector/sw2v

你可能感兴趣的:(基于ps-lite实现分布式的word2vec)