首页 > 代码库 > 十分钟了解分布式计算:Petuum
十分钟了解分布式计算:Petuum
Petuum是一个分布式机器学习专用计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server,NIPS 2013 重点探讨其核心内容SSP协议。
主要思想
Parameter server提供了一个易于读写Global模型参数的接口,而SSP协议允许distributed workers读写本地缓存中stale版本的参数(而不是每次都花大量时间时间等待central storage传回最新参数)。更进一步,通过限制参数的stale程度,SSP模型提供了机器学习算法的正确性保证。
Stale Synchronous Parallel (SSP)
- 并行机器学习面临着两个挑战:集群本身的Unequal performance machines和网络通信上的Low bandwidth, High delay问题。集群越大,线性扩展的代价就越大,网络通信会占据时间开销的主要部分。
- BSP和Asynchronous协议各有缺点
- SSP协议的好处在于,faster worker会遇到参数版本过于stale的问题,导致每一步迭代都需要网络通信,从而达到了平衡计算和网络通信时间开销的效果。
- Petuum提供了分布式共享global模型参数的接口,使得很容易可以将多线程版本算法修改为Petuum版本。
- SSP放宽一致性约束后,结果可以达到更好。
但还不够激动人心,因此改进的空间也很大。 - Asynchronous的问题在于,整体对参数的更新量delta_w=delta_w1+delta_w2+...(delta_wi表示单个worker i根据部分数据计算的参数更新量),delta_wi之间应该是不能跨迭代次数的(而SSP则是放宽了这种约束),因此Asynchronous并没有收敛的保证。而SSP是有收敛的保证的,论文提供了一个bound。
- 对于非凸问题来说,BSP和SSP有可能收敛到的最优解不一样。对于非凸优化问题(比如说神经网络),有大量局部最优解,随机梯度下降(可以跳出局部最优解)比批量梯度下降效果要更好。LDA本身也是非凸优化问题,不过如果采用变分法就会目标函数变成凸优化。
Structure-aware dynamic scheduler (STRADS)
- STRADS负责模型的并行,涉及到参数的partition。
- LDA(主题参数,归属主题(混合概率),隐变量)和DL模型(分层参数)的参数具有天然的分块,可能会好做一些。
Fault tolerance
- Petuum的Fault tolerance功能非常简单,通过在Parameter Sever上taking snapshots,将参数备份到持久化存储,而结点的故障恢复是没有支持的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。