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)
  1. 并行机器学习面临着两个挑战:集群本身的Unequal performance machines和网络通信上的Low bandwidth, High delay问题。集群越大,线性扩展的代价就越大,网络通信会占据时间开销的主要部分。
  2. BSP和Asynchronous协议各有缺点
  3. SSP协议的好处在于,faster worker会遇到参数版本过于stale的问题,导致每一步迭代都需要网络通信,从而达到了平衡计算和网络通信时间开销的效果。
  4. Petuum提供了分布式共享global模型参数的接口,使得很容易可以将多线程版本算法修改为Petuum版本。
  5. SSP放宽一致性约束后,结果可以达到更好。
    但还不够激动人心,因此改进的空间也很大。
  6. Asynchronous的问题在于,整体对参数的更新量delta_w=delta_w1+delta_w2+...(delta_wi表示单个worker i根据部分数据计算的参数更新量),delta_wi之间应该是不能跨迭代次数的(而SSP则是放宽了这种约束),因此Asynchronous并没有收敛的保证。而SSP是有收敛的保证的,论文提供了一个bound。
  7. 对于非凸问题来说,BSP和SSP有可能收敛到的最优解不一样。对于非凸优化问题(比如说神经网络),有大量局部最优解,随机梯度下降(可以跳出局部最优解)比批量梯度下降效果要更好。LDA本身也是非凸优化问题,不过如果采用变分法就会目标函数变成凸优化。
Structure-aware dynamic scheduler (STRADS)
  1. STRADS负责模型的并行,涉及到参数的partition。
  2. LDA(主题参数,归属主题(混合概率),隐变量)和DL模型(分层参数)的参数具有天然的分块,可能会好做一些。
Fault tolerance
  1. 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

More

from: http://www.cnblogs.com/wei-li/p/Petuum.html

十分钟了解分布式计算:Petuum相关推荐

  1. 十分钟了解分布式计算:GraphX

    GraphX原型论文 GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collabora ...

  2. 十分钟了解分布式计算:Spark

    Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...

  3. 十分钟了解分布式计算:GraphLab

    GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文 Low, Yucheng, et al. "Distri ...

  4. 十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数

    2019独角兽企业重金招聘Python工程师标准>>> 这是十分钟成为 TiDB Contributor 系列的第二篇文章,让大家可以无门槛参与大型开源项目,感谢社区为 TiDB 带 ...

  5. 用D3.js 十分钟实现字符跳动效果

    用D3.js 十分钟实现字符跳动效果 注 本文基于 D3.js 作者 Mike Bostock 的 例子 原文分为三部分, 在这里笔者将其整合为了一篇方便阅读. 该效果基于 D3.js, 主要使用到了 ...

  6. 飞机的“黑色十分钟”能被人工智能消灭吗?

    [导读]近年来,"AI的应用和落地"逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的"化学反应".例如,在日常生活中,AI可以推送我们喜欢的新 ...

  7. 十分钟上手2022latex安装与入门

    序言:本次下载是为美赛而用,因此我们选择的下载组合为texlive+texstudio,使用windows10安装.在此提醒大家,类似工具的下载建议大家亲历亲为,不要相信一些诱导性网站,都是非官方的安 ...

  8. 十分钟用Windows服务器简单搭建DHCP中继代理!!

                         十分钟用Windows服务器简单搭建DHCP中继代理!! 一.什么是中继代理? 大家都知道DHCP分配地址都需要用到IP广播,但是广播是不能在两个网段之间进行 ...

  9. 《科学》:媲美AlphaFold2的蛋白质结构预测新工具问世,一台游戏计算机十分钟出结果,完全免费...

    来源:学术头条本文约2000字,建议阅读5分钟 整个研究学界都将受益. 如今,人工智能已经渗透到人们生活的方方面面,各种深度学习算法也越来越多地应用于各个领域.尤其在生物和医学领域,人工智能技术可以说 ...

最新文章

  1. wordpress安装
  2. kettle spoon中“表输入”到“表输出”的乱码问题
  3. Mat转CImage
  4. ORACLE 调试输出,字符串执行函数
  5. 面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?
  6. cisco 交换机vlan-trunk的配置详解及应用实例:
  7. 小米第一款智能手表来了 或支持安装手机App
  8. Android开发之网络
  9. 高质量外链该怎样做?
  10. vb导出mysql字段名_VB获取数据库字段名
  11. STM32蜂鸣器驱动程序
  12. 华硕 小布 类似机器人_盘点足球赛事背后的高科技 华硕机器人小布化身观赛助理...
  13. 牛顿与莱布尔茨的微积分战争
  14. Lrc2Srt字幕转换精灵
  15. 7-28 猴子选大王(20 分)
  16. numeric scale mysql_MySQL基础教程1 — 数据类型之数值类型 - numeric
  17. c++数据结构350、121
  18. 几何画板在教学中的常见应用
  19. 计算机视觉室内定位的原理,基于计算机视觉的室内定位与导航系统
  20. 51单片机ALE引脚

热门文章

  1. /bin/bash^M: bad interpreter
  2. 小工匠聊架构-超高并发秒杀系统设计 04_流量削峰设计
  3. Quartz-Java Web项目中使用Quartz
  4. Imageloader4-ImageLoader中的变量
  5. linux shell mysql备份_linux shell 备份mysql 数据库
  6. 学习笔记Spark(三)—— Spark架构及原理(spark架构、spark RDD)
  7. Windows 下安装 Redis
  8. 快速排名系统询火星推荐_搜狗网站快速排名系统 - 新站权重如何快速提升
  9. 远程过程调用失败_Dubbo 本地调用
  10. vscode 在标签的src引入别名路径_从零开始 - VSCode 插件运行机制