【分布式计算】MapReduce的替代者-Parameter Server

首先还是要声明一下,这个文章是我在入职阿里云1个月以来,对于分布式计算的一点肤浅的认识,可能有些地方不够妥善,还请看官可以指出不足的地方,共同进步。

一.背景

随着互联网的发展,数据量的增大,很多对于数据的处理工作(例如一些推荐系统、广告推送等)都迁移到了云端,也就是分布式计算系统上。衍生了很多牛逼的分布式计算的计算模型,比较著名的就是MapReduce、MPI、BSP等。后来也产生了一些分布式计算系统,大家耳熟能详的Hadoop就是基于MapReduce实现的。

本文的主人公是Parameter Server,其实也不算是新宠了,这个模型已经被提出好几年了,只不过在国内还不是特别热。不过最近一些云服务巨头们开始了对于PS的深入开发和研究。

引用一位算法大神的话简单描述下什么事Parameter Server:总结是一种计算模型SSP+一种分布式设计看板模式Client+Server(partitioned table)+基于算法的调度策略(Scheduler)。可能有些同学还不太理解这句话,没关系,下面通过一个实例来介绍一下PS。

二.场景

因为我在学习PS的过程中是对照Map Reduce来学习的。所以也通过一个机器学习算法的并行计算的实例,来比较Map Reduce和PS。为了更好地突出PS的优势,这里用到的算法是一个梯度逼近最佳结果的一种算法-逻辑回归(Logical Regression)。

为了更好地帮大家理解这些内容,我也罗列了一些必须的知识储备:
1.逻辑回归算法-最好fork里面的代码看一下
2.随机梯度下降SGD
3.李沐大神实现的一个PS开源库,上面有一个论文,一定要读
4.并行逻辑回归-等会会借用里面的内容来讲
5.ps开源代码网站

三.Work Flow

首先还是要补充几句,Map-Reduce在实现并行算法的过程中有它的优势,但是也有很大的弊端,它在处理梯度问题上没有很好的效率。这一点PS通过client+server的模式很好的解决了这个问题。


1.Map-Reduce处理LR

首先来看下Map-Reduce是如何解决逻辑回归(下文统一称为LR)的。首先是map的过程,将很大的数据切割成key-value的形式,我们在这里假设所有的数据都是稠密的。比如说你有100行数据,切割成5份,那么每一个worker就处理其中的20行数据。Reduce主要是负责统一worker的计算结果。下面具体到LR的算法实现来讲解下Map-Reduce的过程。

先来看看整体的流程图:

第一步:首先是进行map阶段对于长尾数据的分割,我们假设数据是稠密非稀疏的。逻辑回归的并行计算的数据分割,可以按行分、按列分或者行列一起分。分好的数据通过key-value的形式传到每一个worker中,对应上图的map phase阶段的worker。当然,map里也包含LR的计算逻辑,逻辑请大家看上面的资料自己学习下。分割图如下:

第二步:利用随机梯度(SGD)方法逼近最优解,在凸函数中LR是可以无限接近最优模型的,可以通过限定循环次数和收敛条件来实现。这其中就有一个问题,认真研究LR的同学可能会发现,如果我们使用SGD的话,因为worker之间虽然有一定的通信机制,但是并不是实时同步的,所以每一个worker并不知道对方的梯度是多少,形象的描述一下就是我们可以把SGD看成一个下坡问题。

每个worker都在往终点方向下山(收敛模型),但是它们彼此间并不能实时协作,也就是说A不知道B爬到哪里,C不知道A爬到哪里。传入一个路径,我就接着向下爬一点,可能会走重复的路径。所以说Map-Reduce的SGD是一种范围的梯度。每个worker不一定一直往下走,可能走走停停甚至往后走一点,但是因为数据量巨大总是可以走到终点的。 但是这样就会浪费了很多效率,这也就是Parameter Server重点解决的问题。

第三步:负责reduce的服务器统一出一个模型输出。


2.Parameter Server的一些机制

下面我们看下Parameter Server是怎么解决这个问题。首先看下PS的总体架构,PS是由client和server组成的,client对应于上文的worker,负责计算。server是负责统一所有的client它们的参数,server间是联通的。
如下图:

总体来看,PS的优势是通过server来协同client的输出,如上一节的下山问题,PS可以协同每一个client按照一个方向直线下山,从而提高了效率。而这其中也有很多的技术细节需要考虑。

1).并行化设计
PS可以运用很多并行化的思想从而提高效率。
(1)首先在client端,计算和上传数据是采用的多线程机制,计算和数据传输在不同的线程中进行从而增加了效率。同时server并不是等待所有参数都上传完成,才向下分发的。如果一个client_a计算比较慢,server可以暂时不采用client_a的数据,而采用历史数据。
(2)数据上传也可以用树状结构代替直接上传,在client和server之间增加一层树状结构可以提高数据传输效率,节约server的处理资源。可以从下图的左边,变为右边。

2).pull和push机制
首先,是在client端应该上传怎样的数据,因为每个client节点都会不停的接受和反馈数据给server,那么到底应该push怎样的数据上去呢?这个一般来讲是选择步长最长的参数,也就是最大的梯度值的参数push上去。

3).server端的异构形式
因为每个client只处理一部分参数,server端需要将这些参数拼接起来,所以server端是一个异构的组成形式。


3.Parameter Server处理LR

上面讲了很多PS的机制,这里具体说一下PS怎么实现LR。因为LR的输出是一个线性的回归模型。输出的结果是下面的这种式子:
z=w1*x1+w2*x2…..+w10*x2+….
我们要求的是里面的w1,w2,w3….这些参数,在PS中每个client计算的是其中的某些△w。通过server将这些△w同步上去,然后再push下去继续迭代计算。这样的好处是对于梯度问题,每个client可以沿着一个方向走。



后话:我的理解还很浅,具体实现还有非常多的技术细节要敲定,部署在集群上也会出现各种问题,如:log怎么输出,有的client挂了怎么办等等。建议有空可以看下李沐的开源项目的代码,还有上面提到的一些文档。

作者微信公众号:凡人机器学习

长期分享机器学习实战相关信息,感谢关注!

本文来自博客 “李博Garvin“
转载请标明出处:http://blog.csdn.net/buptgshengod]

时间: 2024-08-31 04:20:02

【分布式计算】MapReduce的替代者-Parameter Server的相关文章

基于参数服务器(Parameter server)的PS-SMART算法

前天第二届阿里云安全算法挑战赛终于胜利结束了,得了个季军,虽然名次不是最理想的,不过很高兴能认识一大群数据达人,整个比赛的过程也很让人享受.这次比赛过程中我在对网页内容进行分析的时候,部分内容使用了基于Parameter Server的PS-SMART进行分析.我看了一下,好像其他队伍都没有用这个算法,就想给大家简单介绍一下. 我用PS-SMART的原因主要要有2个: 1,节省资源,虽然PS-SMART跑起来感觉比较慢,不过很省资源,很适合这次算法赛(资源有限制). 2,支持稀疏矩阵,可以直接对

【分布式计算】DFS && BigTable

1.背景 分布式计算的发迹应该是google在2003年发表的三篇paper,分别是GFS.MapReduce.BigTable.其中MapReduce大家都很熟悉了,不懂的同学也可以看看我之前写的文章[分布式计算]MapReduce的替代者-Parameter Server 为什么google会搞分布式计算这件事儿呢,因为在那个年代每天会产生几个T的日志,但是当时的磁盘只允许存储几百G的文件,07年之前淘宝的所有数据都是用完就删除的,因为没地方存.后来,人们认识到数据是值钱的,所以需要一种存储

阿里云机器学习平台编程模型演进之路

票选最美云上大数据暨大数据技术峰会上,阿里云大数据事业部高级专家九丰为大家带来题为"阿里云机器学习平台编程模型演进之路"的演讲.本文主要从机器阿里云机器学习平台PAI开始谈起,重点分享了PAI分布式机器学习平台的多种编程模型,包括MapReduce.Parameter Server和MPI等,也简谈了TensorFlow和Pluto.   以下为精彩内容整理: 随着训练数据规模的持续扩大,模型特征的持续增长,常用的机器学习算法面临着越来越多的挑战.从很多人熟悉的R语言,到基于MPI的多

PAI深度学习Tensorflow框架多机多卡多PS Server使用说明

简介 PAI目前已经上线了支持多机.多卡.多PS Server的TensorFlow服务,目前只支持华北2 Region.华北2 Region因为支持多机多卡功能,适用于大规模数据的训练,相关服务需要收费,有需要的相关机构可以联系我们. 原理说明 Parameter Server节点:用来存储TensorFlow计算过程中的参数.配置多个PS节点,计算参数将会被自动切片并存储在不同的PS节点中,从而减小Worker和PS节点通信过程中的带宽限制的影响. Worker节点:"多机多卡"中

组策略错误报告Windows Server 2008 R2解决方法

本文主要介绍了Windows Server 2008 R2组策略的错误报告解决.结合环境拓补图让我们自己学习下有关的组策略解决方案. 之前我们向大家介绍了组策略与桌面管理相结合 保护用户数据安全.其实在Windows Server 2008 R2中,微软增加了1000多个Windows Server 2008 R2和Windows 7特有的组策略对象及多个新组件,用来扩充Windows 活动目录组策略管理的核心能力.但组策略的基本功能没有变化,但具有更多的选项和设置.下面的一例事件是我在日常工作

MapReduce with MongoDB and Python[ZT]

MapReduce with MongoDB and Python 从 Artificial Intelligence in Motion 作者:Marcel Pinheiro Caraciolo (由于Artificial Intelligence in Motion发布的图在墙外,所以将图换到cnblogs) Hi all,  In this post, I'll present a demonstration of a map-reduce example with MongoDB and

大规模数据的分布式机器学习平台

来自阿里云IDST褚崴为大家带来分布式机器学习平台方面的内容,主要从大数据的特点和潜在价值开始讲起,然后介绍阿里的业务场景中常用到的机器学习算法,以及阿里采用的分布式机器学习框架,最后介绍了PAI算法平台,一起来看下吧.   大数据的特点和潜在价值 我们正在步入大数据的时代,大数据至少具备以下四个特点: 海量样本:数据的规模巨大,特征非常多,每40个月翻一番,数据管理复杂: 内容多样:非结构化数据.异质数据,每天产生的数据里有图像.语音.视频,还有各类传感器产生的数据,各种定位的信息,交易记录-

大数据分析你不能不懂的6个核心技术

目前,大数据领域每年都会涌现出大量新的技术,成为大数据获取.存储.处理分析或可视化的有效手段.大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度. 1.大数据生命周期 图1展示了一个典型的大数据技术栈.底层是基础设施,涵盖计算资源.内存与存储和网络互联,具体表现为计算节点.集群.机柜和数据中心.在此之上是数据存储和管理,包括文件系统.数据库和类似YARN的资源管理系统.然后是计算处理层,如hadoop.MapRe

大数据基础设施论坛:如何构建符合大数据时代的网络基础设施?

[CSDN现场报道]2014年12月12-14日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中科院计算所与CSDN共同协办,以推进大数据科研.应用与产业发展为主旨的2014中国大数据技术大会(Big Data Technology Conference 2014,BDTC 2014)暨第二届CCF大数据学术会议在北京新云南皇冠假日酒店盛大开幕. 2014中国大数据技术大会第二日上午的大数据基础设施论坛上,Mellannox亚太区市场开发总监刘通.武汉绿色网络信息服务有限责任公司