机器学习算法和计算机领域的其余算法相比,有本身的一些独特特色,算法
(1)迭代性:模型的更新并不是一次完成,须要循环迭代屡次;编程
(2)容错性:即便在每一个循环中产生一些错误,模型最终的收敛不受影响;架构
(3)参数收敛的非均匀性:模型中有些参数通过几个循环便再也不改变,其余参数须要很长时间收敛。框架
这些特色决定了分布式机器学习系统的设计和其余分布式计算系统(例如Spark)的设计有很大不一样。机器学习
Petuum是一个专门针对机器学习算法特色的分布式平台,而通用的分布式计算系统Spark以数据流应用为主,因此两者的应用对象不一样。Spark有一个机器学习库MLLib, 但构建于数据流操做之上,并不是针对机器学习算法的特色而设计。分布式
Petuum的系统设计创建于机器学习的特征之上,目前包含两个主要模块:key-value store和scheduler,主要处理两类并行化方法:(1)数据并行;(2)模型并行。性能
数据并行,简单而言,就是把数据分布到不一样机器上,每台机器计算一个模型的更新(update), 而后对这些update进行汇总并用之更新模型。学习
模型并行,把模型参数进行切分并放置到不一样机器上,每台机器对本身那部分进行更新。spa
Key-value store模块负责数据并行,采用的架构是parameter server,一致性协议是Staleness Synchronous Parallel (SSP)。SSP的基本思想是容许各机器以不一样步调对模型进行更新,可是加一个限制,使得最快的机器的进度和最慢机器的进度之差不要太大。这样作的好处是:既减轻慢的机器拖整个系统的后腿,又能保证模型的最终收敛。经过调节SSP的staleness参数,SSP能够转化成数据流系统经常使用的BSP(Bulk Synchronous Parallel) 协议或者早期机器学习系统(如Yahoo LDA)使用的ASP(Asynchronous Parallel)。设计
另一个模块scheduler用于模型并行。scheduler提供的编程接口主要包含三个操做:(1)schedule: 调度节点根据模型参数的相互依赖性和收敛的不均匀性,自动选择一个待更新的参数子集;(2)push: 调度节点令计算节点并行地为选好的参数计算update;(3)pull:调度节点从计算节点收集update,并更新参数。
Petuum的主要特性包括:(1)高性能;(2)可编程性;提供了简单易用的编程接口,用户可在Petuum上实现本身的机器学习算法。(3)丰富的机器学习库。咱们用Petuum的统一编程接口实现了14个重要的机器学习算法。
相比于李沐的parameter server系统,Petuum做为一个机器学习框架,共享参数模型采用哈希表存储,更新时采用延迟一致性协议,这种模型决定了Petuum在集群规模和可支持的参数数量上都要比Parameter Server少1到2个数量级,固然对比Spark MLLib列表数据存储和BSP同步模式,在相同集群规模下是能够多训练2到3个数量级的参数的。另外,Spark数据处理部分和Petuum其实没什么太大联系,前景的话,若是处理数据就直接spark吧,机器学习就直接Parameter Server好了。
参考文献:
1.Eric P. Xing, Qirong Ho, Wei Dai, Jin Kyu Kim, Jinliang Wei, Seunghak Lee, Xun Zheng, Pengtao Xie, Abhimanu Kumar, Yaoliang Yu:Petuum: A New Platform for Distributed Machine Learning on Big Data. KDD 2015: 1335-1344
2.Mu Li, David G. Andersen, Jun Woo Park, Alexander J. Smola, Amr Ahmed, Vanja Josifovski, James Long, Eugene J. Shekita, Bor-Yiing Su:Scaling Distributed Machine Learning with the Parameter Server. OSDI 2014: 583-598