十分钟了解分布式计算: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,将参数备份到持久化存储,而结点的故障恢复是没有支持的。
杂谈
前两天去ICML看到了Eric Xing真人,他说之所以Petuum用C++而不是Scala等在Github上活跃的语言实现是因为这只是一个原型,GraphX的图并行太局限了无法处理真正的海量数据,且GraphX的点一致性模式没有收敛保证而Petuum的SSP是理论保证的。虽说文人相轻,但GraphX的model partition是否会遇到瓶颈,在海量数据中Petuum的正确性和效率是否会击败GraphX,还是很值得一看的。
Resource
Petuum: Source Code Read and Initial Test Result
How to Use Spark for ML Algorithms and Why ?
Publications
[1] More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server Qirong Ho, James Cipar, Henggang Cui, Jin Kyu Kim, Seunghak Lee, Phillip. B. Gibbons, Garth A. Gibson, Greg R. Ganger, Eric P. Xing. Neural Information Processing Systems, 2013 (NIPS 2013) Slides
十分钟了解分布式计算:Petuum的更多相关文章
- 十分钟了解分布式计算:Google Dataflow
介绍 Google Cloud Dataflow是一种构建.管理和优化复杂数据处理流水线的方法,集成了许多内部技术,如用于数据高效并行化处理的Flume和具有良好容错机制流处理的MillWheel.D ...
- 十分钟了解分布式计算:GraphX
GraphX原型论文 GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collabora ...
- 十分钟了解分布式计算:Spark
Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...
- 十分钟了解分布式计算:GraphLab
GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文 Low, Yucheng, et al. "Distri ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- 十分钟轻松让你认识ASP.NET MVC6
这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在project.json文件中添加了 ...
- 十分钟轻松让你认识ASP.NET 5(MVC6)
ASP.NET 5差不多快发布了.自己也学习了有两个月了.今天给没有接触asp.net 5的同学写一个简单地十分钟教程,教你认识一下asp.net 5. 1.安装kvm 首先,你需要以管理员权限打开c ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))
十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的 ...
随机推荐
- python 的 from import 机制
[A.py] from B import D class C:pass [B.py] from A import C class D:pass 为什么执行A的时候不能加载D呢? 如果将A.py改为:i ...
- 常用js总结1
1.cookie.js(封装了cookie的基本操作) 1.引入cookie.js <script type="text/javascript" src="../j ...
- 类似\u4e0b\u6ce8\u903e\u65f6解码
HttpUtility.UrlDecode("\u4e0b\u6ce8\u903e\u65f6"); HttpUtility.UrlDecode("\\u5c1a\\u6 ...
- awk命令简单介绍
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- 使用Github管理项目代码的版本
作为开源代码库以及版本控制系统,Github拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法. 在Git中并不存在主库这样的概 ...
- 【转】Linux系统启动过程分析
[转]Linux系统启动过程分析 转自:http://blog.chinaunix.net/uid-23069658-id-3142047.html 经过对Linux系统有了一定了解和熟悉后,想对其更 ...
- Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...
- 解决maven的报错
昨晚用Mars版本建maven工程,测试springboot,一路很顺畅,没有啥阻碍. 今天换了台机器,结果就不好用了,建完maven工程后,pom文件报错,该生成的代码结构也没有,更别提jar包了. ...
- 6/17 Sprint3
首页改进:
- meta name="viewport" content="width=device-width,initial-scale=1.0" 解释
<meta name="viewport" content="width=device-width,initial-scale=1.0"> c ...