十分钟了解分布式计算: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代码是非常枯燥的 ...
随机推荐
- <转>修改TM2013聊天记录保存目录final版
一直很钟意TM的清爽,然而在升级到TM2013 preview1后,发生了一件很让人头痛的事. 那就是无法设定消息目录,TM会默认为保存在我的文档下.这让使用dropbox同步聊天记录的我感到十 ...
- python的反射机制
转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作 ...
- 深入浅出设计模式——备忘录模式(Memento Pattern)
模式动机 为了使软件的使用更加人性化,对于误操作,我们需要提供一种类似“后悔药”的机制,让软件系统可以回到误操作前的状态,因此需要保存用户每一次操作时系统的状态,一旦出现误操作,可以把存储的历史状态取 ...
- (八)open函数的flag详解
3.1.4.open函数的flag详解13.1.4.1.读写权限:O_RDONLY O_WRONLY O_RDWR(1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬 ...
- picasso-强大的Android图片下载缓存库
编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! pica ...
- oracle sql 优化
2. 选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先 ...
- python的函数及参数
函数式编程最重要的是增强代码的重用性和可读性 def 函数名(参数): ... 函数体 ... 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体 ...
- ijg库的使用的几点注意
ijg库(http://www.ijg.org/)是用于处理jpeg解码和压缩的库,最新版本为2014发布的版本,可以在官网中下载jpegsr9a.zip 使用vs中个nmake 进行编译,对于这个版 ...
- Xcode 8 的 Debug 新特性
Contents OverView Static Analyzer Localizability Instance Cleanup Nullablility Runtime Issue View De ...
- django中上传图片的写法(转)
view参数 @csrf_exemptdef before_upload_avatar(request): before = True return render_to_response( ...