自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

云計算 分布式
隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)量的增大,很多對于數(shù)據(jù)的處理工都遷移到了云端,衍生了很多分布式計算的計算模型,比較著名的就是MapReduce、MPI、BSP等。后來也產(chǎn)生了一些分布式計算系統(tǒng),大家耳熟能詳?shù)腍adoop就是基于 MapReduce實現(xiàn)的。本文的主人公是Parameter Server,其實也不算是新寵了,這個模型已經(jīng)被提出好幾年了,只不過在國內(nèi)還不是特別熱。不過最近一些云服務巨頭們開始了對于PS的深入開發(fā)和研究。

首先還是要聲明一下,這個文章是我在入職阿里云1個月以來,對于分布式計算的一點膚淺的認識,可能有些地方不夠妥善,還請看官可以指出不足的地方,共同進步。

一.背景

隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)量的增大,很多對于數(shù)據(jù)的處理工作(例如一些推薦系統(tǒng)、廣告推送等)都遷移到了云端,也就是分布式計算系統(tǒng)上。衍生了很多牛逼的分布式計算的計算模型,比較著名的就是MapReduce、MPI、BSP等。后來也產(chǎn)生了一些分布式計算系統(tǒng),大家耳熟能詳?shù)腍adoop就是基于 MapReduce實現(xiàn)的。

本文的主人公是Parameter Server,其實也不算是新寵了,這個模型已經(jīng)被提出好幾年了,只不過在國內(nèi)還不是特別熱。不過最近一些云服務巨頭們開始了對于PS的深入開發(fā)和研究。

引用一位算法大神的話簡單描述下什么事Parameter Server:總結(jié)是一種計算模型SSP+一種分布式設計看板模式Client+Server(partitioned table)+基于算法的調(diào)度策略(Scheduler)??赡苡行┩瑢W還不太理解這句話,沒關(guān)系,下面通過一個實例來介紹一下PS。

二.場景

因為我在學習PS的過程中是對照Map Reduce來學習的。所以也通過一個機器學習算法的并行計算的實例,來比較Map Reduce和PS。為了更好地突出PS的優(yōu)勢,這里用到的算法是一個梯度逼近***結(jié)果的一種算法-邏輯回歸(Logical Regression)。

為了更好地幫大家理解這些內(nèi)容,我也羅列了一些必須的知識儲備:

1.邏輯回歸算法-***fork里面的代碼看一下

2.隨機梯度下降SGD

3.李沐大神實現(xiàn)的一個PS開源庫,上面有一個論文,一定要讀

4.并行邏輯回歸-等會會借用里面的內(nèi)容來講

5.ps開源代碼網(wǎng)站

三.Work Flow

首先還是要補充幾句,Map-Reduce在實現(xiàn)并行算法的過程中有它的優(yōu)勢,但是也有很大的弊端,它在處理梯度問題上沒有很好的效率。這一點PS通過client+server的模式很好的解決了這個問題。

1.Map-Reduce處理LR

首先來看下Map-Reduce是如何解決邏輯回歸(下文統(tǒng)一稱為LR)的。首先是map的過程,將很大的數(shù)據(jù)切割成key-value的形式,我們在這里假設所有的數(shù)據(jù)都是稠密的。比如說你有100行數(shù)據(jù),切割成5份,那么每一個worker就處理其中的20行數(shù)據(jù)。Reduce主要是負責統(tǒng)一 worker的計算結(jié)果。下面具體到LR的算法實現(xiàn)來講解下Map-Reduce的過程。

先來看看整體的流程圖:

 

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

***步:首先是進行map階段對于長尾數(shù)據(jù)的分割,我們假設數(shù)據(jù)是稠密非稀疏的。邏輯回歸的并行計算的數(shù)據(jù)分割,可以按行分、按列分或者行列一起分。分好的數(shù)據(jù)通過key-value的形式傳到每一個worker中,對應上圖的map phase階段的worker。當然,map里也包含LR的計算邏輯,邏輯請大家看上面的資料自己學習下。分割圖如下:

 

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

第二步:利用隨機梯度(SGD)方法逼近***解,在凸函數(shù)中LR是可以***接近***模型的,可以通過限定循環(huán)次數(shù)和收斂條件來實現(xiàn)。這其中就有一個問題,認真研究LR的同學可能會發(fā)現(xiàn),如果我們使用SGD的話,因為worker之間雖然有一定的通信機制,但是并不是實時同步的,所以每一個worker并不知道對方的梯度是多少,形象的描述一下就是我們可以把SGD看成一個下坡問題。

 

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

每個worker都在往終點方向下山(收斂模型),但是它們彼此間并不能實時協(xié)作,也就是說A不知道B爬到哪里,C不知道A爬到哪里。傳入一個路徑,我就接著向下爬一點,可能會走重復的路徑。所以說Map-Reduce的SGD是一種范圍的梯度。每個worker不一定一直往下走,可能走走停停甚至往后走一點,但是因為數(shù)據(jù)量巨大總是可以走到終點的。 但是這樣就會浪費了很多效率,這也就是Parameter Server重點解決的問題。

第三步:負責reduce的服務器統(tǒng)一出一個模型輸出。

#p#

2.Parameter Server的一些機制

下面我們看下Parameter Server是怎么解決這個問題。首先看下PS的總體架構(gòu),PS是由client和server組成的,client對應于上文的worker,負責計算。server是負責統(tǒng)一所有的client它們的參數(shù),server間是聯(lián)通的。

如下圖:

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

 


總體來看,PS的優(yōu)勢是通過server來協(xié)同client的輸出,如上一節(jié)的下山問題,PS可以協(xié)同每一個client按照一個方向直線下山,從而提高了效率。而這其中也有很多的技術(shù)細節(jié)需要考慮。

1).并行化設計

PS可以運用很多并行化的思想從而提高效率。

(1)首先在client端,計算和上傳數(shù)據(jù)是采用的多線程機制,計算和數(shù)據(jù)傳輸在不同的線程中進行從而增加了效率。同時server并不是等待所有參數(shù)都上傳完成,才向下分發(fā)的。如果一個client_a計算比較慢,server可以暫時不采用client_a的數(shù)據(jù),而采用歷史數(shù)據(jù)。

(2)數(shù)據(jù)上傳也可以用樹狀結(jié)構(gòu)代替直接上傳,在client和server之間增加一層樹狀結(jié)構(gòu)可以提高數(shù)據(jù)傳輸效率,節(jié)約server的處理資源??梢詮南聢D的左邊,變?yōu)橛疫叀?/p>

 

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

2).pull和push機制

首先,是在client端應該上傳怎樣的數(shù)據(jù),因為每個client節(jié)點都會不停的接受和反饋數(shù)據(jù)給server,那么到底應該push怎樣的數(shù)據(jù)上去呢?這個一般來講是選擇步長最長的參數(shù),也就是***的梯度值的參數(shù)push上去。

3).server端的異構(gòu)形式

因為每個client只處理一部分參數(shù),server端需要將這些參數(shù)拼接起來,所以server端是一個異構(gòu)的組成形式。

 

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

3.Parameter Server處理LR

上面講了很多PS的機制,這里具體說一下PS怎么實現(xiàn)LR。因為LR的輸出是一個線性的回歸模型。輸出的結(jié)果是下面的這種式子:

z=w1*x1+w2*x2…..+w10*x2+….

我們要求的是里面的w1,w2,w3….這些參數(shù),在PS中每個client計算的是其中的某些△w。通過server將這些△w同步上去,然后再push下去繼續(xù)迭代計算。這樣的好處是對于梯度問題,每個client可以沿著一個方向走。

 

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

后話:我的理解還很淺,具體實現(xiàn)還有非常多的技術(shù)細節(jié)要敲定,部署在集群上也會出現(xiàn)各種問題,如:log怎么輸出,有的client掛了怎么辦等等。建議有空可以看下李沐的開源項目的代碼,還有上面提到的一些文檔。

博文出處:http://blog.csdn.net/buptgshengod/article/details/46819051

責任編輯:Ophira 來源: 李博Garvin的專欄
相關(guān)推薦

2010-05-19 08:28:57

Traffic SerApache

2011-12-02 09:53:34

2024-03-01 09:53:34

2022-08-01 07:07:05

Python人工智能機器學習

2017-09-01 05:35:58

分布式計算存儲

2023-01-18 10:44:15

RedpandaKafkaAPI

2015-10-15 14:05:51

StormSparkMapReduce

2015-10-19 09:52:11

2009-08-21 09:34:59

XML-PRCEasyrest

2009-05-26 10:40:17

九城魔獸王者世界

2012-09-19 14:09:20

Hadoop開源

2013-03-26 13:43:08

Java分布式計算

2010-07-06 09:39:20

SQL Server分

2019-06-19 15:40:06

分布式鎖RedisJava

2010-09-10 08:54:02

2022-12-11 09:27:01

MapReduceHadoop框架

2021-04-15 11:04:13

云計算分布式邊緣計算邊緣計算

2014-10-22 14:04:50

傲游瀏覽器

2010-04-02 10:26:14

云計算

2021-06-01 05:51:37

云計算并行計算分布式計算
點贊
收藏

51CTO技術(shù)棧公眾號