1. 程式人生 > >分布式對偶平均法(DDA)

分布式對偶平均法(DDA)

異步 設計 並且 描述 strong 註意 而不是 mach 16px

Consensus-Based Distributed Optimization:

Practical Issues and Applications in Large-Scale Machine Learning

摘要

本文討論了實際的基於共識的分布式優化算法。在基於共識的優化算法中,節點用共識叠代交織局部梯度下降步驟。梯度步驟將解決方案驅動到最小化器,而共識叠代使值同步,以便當目標是凸的且可分離時,所有節點收斂到網絡範圍的最優。共識更新需要溝通。如果通信是同步的並且節點在更新之前等待從其每個鄰居接收一個消息,則進度受最慢節點的限制。為了對失敗或停止節點具有魯棒性,應使用異步通信。使用雙向通信的異步協議會導致死鎖,因此單向協議是必需的。然而,使用單向異步協議,不再可能保證共識矩陣是雙重隨機的。同時,協調方案必須在平均水平上達成共識,以避免偏向優化目標。我們報告了在MPI集群中運行Push-Sum Distributed Dual Averaging進行凸優化的實驗。實驗說明了當某些節點不可靠並且可能失敗或消息遇到時變延遲時,使用異步基於共識的分布式優化的好處。

特點

基於平均的、異步的、單向拓撲

Push-sum Distributed Dual Averaging Method

從魯棒性和有效性來看,使用單向的(基於推送)通信並且不依賴雙隨機矩陣的算法是最理想的。

通過分布式優化算法,所有的節點在優化過程中具有相同的作用,從而消除了單點故障並增加魯棒性。

分布式可以避免其他的開銷,比如聚合生成樹。

基於共識的分布式優化算法通常將局部梯度下降步驟與分布式平均的叠代交織以協調或同步網絡上的值。這些算法的一般主題是將局部優化例程與分布式一致性算法交錯以協調節點網絡的最佳可分離功能,其組件分布在計算節點上。

DDA算法

$$z_i(t+1)=\sum^n_{j=1}{p_{ij}z_j(t)-g_i(t)}$$

$$x_i(t+1)=\Pi^{\psi}_{\chi}{(z_i(t+1),a(t))}$$

解釋:\(g_i(t)\) 是 \(f_i\) 的偏導數,以上第一條算法就是基於普通的Push-sum算法。問題在於,並不能保證 \(z_i(t)\) 是在約束集內的,也就不能使用 \(z\) 來求偏導數。第二個式子就是表示將 \(z_i(t+1)\) 投影成 \(x_i(t+1)\)用以求 \(\partial f_i(\cdot) /\partial x_i(\cdot)\)

TP:投影算法表示:
$$\Pi^\psi_\chi(z,a)= \arg \min_{x\in\chi}{\{<z,x>,\frac{1}{a}\psi(x)\}}$$

\(\psi(x)\)滿足大於等於0且在原點等於0.

問題

 --同步算法的實現比較困難。叠代的時間取決於最慢的智能的通信時間。並且,這不能用於time-varying系統。
本質上,我們是在優化加權的目標函數\(\hat{f}(x)=\sum^n_{i=1}\pi_i f_i(x)\).如果取雙隨機轉移矩陣,那麽有\(1^TP=1^T\),這保證了分布是均衡的。

 --雙向通信模型的問題:

 --通訊開銷大

 --可能產生死鎖

PS-DDA算法

基於Push-sum和DDA算法的改進版本,消除了算法對雙隨機矩陣的要求。
算法描述:
$$w_i(t+1)=\sum^n_{j=1}p_{ij}w_j(t)$$

$$z_i(t+1)=\sum^{n}_{j=1}p_{ij}z_j(t)-g_i(t)$$

$$x_i(t+1)=\Pi^\psi_\chi ( \frac{z_i(t+1)}{w_i(t+1)},a(t))$$

實驗步驟的要點

單向性
PS-DDA要求單向發送信息的性質,接收器生成收到信息\(w\)和\(z\)的信息和。

數值穩定性
隨著叠代次數的增加,權重會逐漸減小。但是,如果有的節點計算特別快,會導致無法更新。可以通過增加條件,當\(w_i(t)\)小於某個閾值的時候就停止更新。

步長去同步化
隨著轉移矩陣和通信的異步化,步長也需要作出相應的改變。如果繼續使用同步的步長,可能出現叠代次數相差巨大的步長差距也很大,不利於“Averaging”。因此,使用一個接近一樣的步長是有必要的,最簡單有效的方法就是使用一個同步的時鐘來取代叠代次數計算步長的方法,這樣可以幫助決策向量更快地收斂。實際過程中采用多少步長合適,需要根據網絡情況以及計算能力自行設計。

消息處理機制
--采用異步的算法,無疑會產生使用消息的策略問題。分析兩種極端的策略:
等待直到收到每一個鄰居至少一次消息,再開始計算更新。顯然這是違背異步原則的,因為每次都要等待最晚發送的那個鄰居。

--每次自動收取緩沖池的數據進行計算並清空緩沖池。這個策略的問題在於我們平均的只是“緩沖池”中的節點數據,而不是所有節點的數據。

--還有一個值得註意的地方,對更舊的數據采用較小的權重來“Averaging”會加快收斂速度。

通信策略
由於每個節點的CPU的計算能力不同,計算函數的復雜度也可能不同,導致的可能問題是:計算和通訊速度極度不平衡。如果有一個節點計算速度極快,那它頻繁收取緩沖信息,那麽網絡的平均計算可能無法繼續。設置最小通信時間來阻止計算速度過快的情況。閾值設置需要根據實際情況,如果節點情況差異很小,甚至不需要設置。

分布式對偶平均法(DDA)