天天看點

AdaComp:邊緣裝置上的分布式深度學習

本文出自論文 Distributed deep learning on edge-devices: feasibility via adaptive compression,主要提出來AdaComp,一種新的算法用于壓縮workers對伺服器模型的更新。1

在本文中,我們通過以下問題展開研究論述:在廣域網連接配接裝置上進行分布式深度學習可行嗎?我們展示了這樣的設定帶來了一些重要挑戰,最顯著的是承載最新模型的伺服器必須維持的入口流量。為了減少這種壓力,我們提出了AdaComp,一種新的算法用于壓縮workers對伺服器模型的更新。這種方法結合了有效的梯度選擇和學習率調整,适用于随機梯度下降的方法。我們發現:與标準異步随機梯度下降相比,worker發送到伺服器上的資料總量減少了兩個數量級,同時又保持了模型的準确性。

文章目錄

    • 一、簡介
    • 二、分布式深度學習
    • 三、邊緣裝置上的分布式深度學習
    • 四、使用AdaComp方法的壓縮更新
    • 五、實驗評估
    • 六、相關工作
    • 七、結論

一、簡介

  1. 在網絡邊緣的處理裝置數量正在急劇增長,在本文中,我們探索了對于那些密集型任務利用邊緣裝置的可能性。這種新模式引出了重大的可行性問題,為了說明可行性問題,我們實作了TensorFlow論文中考慮的最大分布場景,使用200台機器來合作學習一個模型。我們的解決方案是引入一個新的壓縮技術,使用梯度選擇将更新從workers發送到PS。于是我們研究了更新壓縮和裝置可靠性方面的模型精度。
  2. 本文的主要貢獻點為:(1)在邊緣裝置配置中公開參數伺服器模型含義;(2)提出了AdaComp,一個在PS中減少入口流量的新壓縮技術。(3)使用TensorFlow來實驗AdaComp,然後在模型精度方面與其他競争者做比較分析。

二、分布式深度學習

  1. PS通過初始化要學習的參數向量 開始,訓練資料D被劃分成工作者w1,w2,w3。每個worker都異步運作,隻要有一個準備好了,就從PS中擷取參數向量的目前版本,執行SGD步驟并發送向量更新給PS。在圖中,w2在i-3次疊代中得到參數 θ \theta θ狀态,執行SGD步驟并發送更新給PS。與此同時,w1和w3,在w2之前完成了它們的步驟,并發送了它們的更新。在每個更新接收階段,PS更新 θ \theta θ,參數 θ \theta θ的時間戳在w1更新被接收後也發生了改變。
  2. 在PS模型中,n個worker并行地訓練它們的本地向量然後發送更新,也稱為staleness。對于一個worker來說,其本地向量 θ ( w ) \theta ^{(w)} θ(w)的staleness是 θ \theta θ被涉及到擷取w的時間次數。
    AdaComp:邊緣裝置上的分布式深度學習

三、邊緣裝置上的分布式深度學習

  1. 我們考慮的執行設定用邊緣裝置節點和借助Internet的資料中心網絡來替代資料中心工作節點,PS處在一個中央位置。正式執行的模型與PS模型保持一緻:我們假設workers有足夠的記憶體去擁有 θ \theta θ的複制,資料在n個workers中被打亂,最終它們同意合作完成機器學習任務。
  2. 減少在PS的入口流量:在邊緣裝置設定中,裝置合作使用一個全局 θ \theta θ的計算,我們認為關鍵的度量标準是PS處理傳入worker更新所需的帶寬。由于我們的設定意味着在裝置上進行最佳計算,而不是使上行鍊路飽和,是以workers将發送更新到PS作為背景任務。是以,我們測量PS收集點的總入口流量,以便于對深度學習任務所引起的來自workers的上傳流量有一個聚合視圖,進行更好的觀察。
  3. Shokri提出了一種壓縮機制用于減少從每個worker發送到PS的更新規模,被稱作選擇性随機梯度下降。在本地資料一個疊代後,一個worker僅發送計算梯度的一個子集,而不是所有。這個選擇可以是随機制定的,或者僅保持最大的梯度。壓縮比被固定值(0,1)所表示,實驗表明單核SGD模型精度并沒有被這種壓縮方法影響太大。

四、使用AdaComp方法的壓縮更新

  1. AdaComp是一種友善地結合壓縮和staleness減少概念的解決方案,主要針對下一步的壓縮工作結果。我們發現由workers推送的更新内容通常是稀疏的,基于最大更新值的選擇方法是一種很好的壓縮方法,并且幾乎不損失資訊。第二,我們發現在相關方法中,延遲緩解僅在整個更新的粒度上進行處理。AdaComp的新穎之處在于,它不是在更新時計算延遲,而是根據每個參數來進行計算。通過消除更新沖突的重要部分,單個參數上的稀疏性和延遲緩解将允許異步worker操作者去提高效率。
  2. 選擇方式:我們對在每個worker選擇梯度時提出來一個新穎的方式,隻有每個矩陣 V l V_l Vl​和向量 β l \beta _l βl​的最大梯度的比例c被保留。與随機選擇相比,這個選擇方式允許跨DNN層平衡學習,并更好地反映出計算梯度。
  3. 算法細節:PS在給定的時間戳上跟蹤所有收到的更新。當一個worker擷取參數 θ \theta θ時,它接收到相關聯的時間戳j。它計算一個SGD步驟,并使用選擇方式來壓縮更新。與此同時,中間的更新增加PS的時間戳到 i ⩾ j i \geqslant j i⩾j。我們定義了一個對每個參數 θ k \theta_k θk​自适應staleness,其滿足為: σ k ( i ) = ∑ u = j i − 1 ι { Δ θ k ( u ) ̸ ≠ 0 } \sigma _k(i)=\sum_{u=j}^{i-1} \iota _{\left \{ \Delta \theta _{k}(u) \not\neq 0 \right \}} σk​(i)=∑u=ji−1​ι{Δθk​(u)̸​̸​=0}​。我們通過以下更新公式: θ k ( i + 1 ) = θ k ( i ) − α k ( i ) Δ θ k ( i ) \theta _{k}(i+1)=\theta _{k}(i)-\alpha _{k}(i) \Delta \theta _{k}(i) θk​(i+1)=θk​(i)−αk​(i)Δθk​(i)。
  4. 複雜性:AdaComp對于PS計算每個參數 θ k \theta _{k} θk​的自适應staleness σ k \sigma _{k} σk​意味着增加了複雜度。但最終對于workers來說,選擇最大的參數并不會增加複雜性。
    AdaComp:邊緣裝置上的分布式深度學習
    AdaComp:邊緣裝置上的分布式深度學習

五、實驗評估

  1. 實驗平台:在執行期間,該平台為每個worker在有效計算時間和向PS推送步驟之間增加了一個随機等待時間。這個時間保證worker更新的順序是随機的,模拟workers可用的硬體或資源的可能變化。在這樣的設定中,要觀察的有趣名額是根據執行的疊代次數達到的精度,無論計算是在虛拟設定中還是真實部署中進行,執行的疊代次數都是相同的。
  2. 實驗設定和競争者:我們使用MNIST資料集來實驗我們的設定,對于對比方來說也一樣。我們使用卷積神經網絡來進行實驗,它是由兩個卷積層和兩個全連接配接層組成的。我們将AdaComp與基礎的Async-SGD方式來比較性能,學習率是被staleness劃分的且對于每個更新都是全局值。
  3. 精度結果:對于Comp-ASGD和AdaCom,它們有着較低的c值,結果是非常明顯的。這允許極大減少PS必須處理的通信量,進而降低深度學習任務的操作成本。
    AdaComp:邊緣裝置上的分布式深度學習
    AdaComp:邊緣裝置上的分布式深度學習
  4. 面對worker故障時的AdaComp精度:分布式深度學習精度的一個關鍵因素是裝置故障計算的可靠性。該實驗證明如果所學習的資料集足夠豐富,邊緣裝置的崩潰故障不會影響模型的準确率,而且故障的影響仍然非常有限。
  5. 面對異構workers時的AdaComp精度:對于每個邊緣裝置,它的網絡限制、硬體和并發執行任務的聯合作用可能會導緻批處理計算延遲的顯著變化。為了評估面對異構時AdaComp的性能,實驗在三種不同的workers上進行:fast、medium、slow。三個類的AdaComp中,最快的worker可以在較短數量的疊代過程中對網絡學習做出更多貢獻,在開始快速地增加準确率。然而,當DNN适應了最好的workers更新時,它并沒有從較慢的workers中學習到足夠多來達到和具有一個類的實驗的相同精度。
    AdaComp:邊緣裝置上的分布式深度學習

六、相關工作

  1. 一個更精确的梯度可以通過對部分workers計算的梯度進行平均來進行計算。Chen等人展示出如果PS在每次疊代中并沒有等待最後k個workers則一個同步的SGD能更有效。在我們的設定中,workers是使用者裝置沒有保證其響應時間的上限。
  2. 在給定一個非常大數量的邊緣裝置,每個僅處理一些資料并且每個都配置這一個弱連接配接,一個模型被學習。一個活動workers的子集(在每次疊代中改變)運作在模型被分享前的workers資料,并對其進行多次疊代。全局更新此時也被同步執行。使用所提出的AdaComp算法,聯邦學習是通信有效的,但并不能充分利用資料并行性來加速計算,而這正是我們所針對的參數伺服器模型的目标。

七、結論

本文讨論了在邊緣裝置上運作分布式深度學習訓練任務的最顯著含義。由于裝置的上傳限制以及在這種設定下的低可靠性,異步SGD對于執行學習任務來說是一個自然的解決方案。我們于是提出了AdaComp,一個新的算法來通過适應它們的各自參數staleness來壓縮更新。與異步SGD算法相比,參數伺服器上的入口流量減少了191倍。這種通路流量的大幅減少,以及面對崩潰時的可靠性,使我們有可能考慮在邊緣裝置上實際部署學習任務,以支援邊緣服務和應用程式。

  1. 源碼位址:AdaComp ↩︎

繼續閱讀