【前言】
由于最近在看分布式机器学习相关的东西,所以希望能把学习心得记录在这里。本系列主要介绍CMU的开源分布式框架Petuum源码的学习。由于本人水平很菜,希望大家不吝赐教,共同学习。
本文主要记录我在学习K-Means源码当中的收获和疑问。
【正文部分】
1.Petuum
首先看看Petuum的组成部分,主要包括Bösen(a bounded-asynchronous distributed key-value store)和Strads( a dynamic ML update scheduler.),详细的说明可以参考[官方文档][1]
2.关于K-Means可以参考Wiki的介绍:
https://en.wikipedia.org/wiki/K-means_clustering
本文中对KMeans的解读,需要弄清的问题是:
1.KMeans算法在Petuum系统是是如何实现并行的?
2.参数是如何在参数服务器(Parameter Server)与Worker之间进行更新和分配的?
3.在效率方面有哪些提升?
4.有没有数学理论上的保证?
3. 源码解读:
3.1 代码结构:
K-Means在Petuum中是用C++来实现的,源码位于bosen/app/kmeans目录下,
3.2 核心代码:
<