分布式機器學習
發布時間:2018/9/10 10:01:14 訪問次數:1682
- 51電子網公益庫存:
- F0505S-1W
- F1212S-1W
- F1452GH1
- F15U20DN
- F1H16TP
- F36037GFZV
- F3AA012E
- F3AA024E
- F4-100R06KL4
- FA-20H 16.0000MF12Z-AC3
- 601HE0000B01
- 6125TD1-R
- 6125TD2-R
- 6125TD4-R
- 6-1394461-2
- 68HC68W1
- 6DI100A050
- 6DI100A-050
- 6DI120A-060
- 6MBI15S-120
專注于 petuum 研究方向的方面。事實上,我們今天使用的大部分主流 ml 軟件都位于同一方面(例如 graphlab,tensorflow 等)。
了解分布式深度學習
分布式深度學習是通用分布式機器學習的一個子領域,由于其在各種應用中的有效性,最近變得非常突出。在深入分析深度學習的細節及其解決的問題之前,我們應該定義一些重要的術語:數據并行性和模型并行性。
數據并行性
數據并行性是一種通過分區數據啟用的并行化技術。在數據并行分布式計算中,我們首先將數據劃分為幾個分區,其中分區的數量等于工作機器的數量(即計算節點)。然后,我們讓每個工作者擁有一個獨立的分區,讓他們對該數據進行計算。由于我們有多個節點并行掃描數據,因此我們應該能夠掃描比使用單個節點時更多的數據 - 我們通過分布式并行計算提高吞吐量。http://yushuokeji.51dzw.com/
在分布式機器學習中,我們的目標是加速使用多個節點的模型訓練的收斂速度,應用數據并行性是相當直觀的:我們讓每個工作機在自己的數據分區上執行訓練(即隨機梯度下降)并生成一組其上的參數更新(即梯度)。然后,我們讓所有節點通過網絡通信同步其參數狀態,直到達成一致。只要同步不花費太多時間并且我們得到較單節點結果的改進,我們就實現了目標!從本質上講,這就是 google 深度學習系統 distbelief 的工作原理。
模型并行性
與數據并行性相比,模型并行性是一個更復雜和模糊的概念。一般來說,在模型并行性中,我們嘗試對機器學習模型本身進行分區,以將工作負載分配給多個工作機,而不是對數據進行分區。例如,假設我們正在解決矩陣分解問題,其中矩陣非常龐大,我們想要學習這個巨大矩陣的每個參數。為了要應用模型并行性,我們必須將矩陣劃分為許多小塊(子矩陣),然后讓每個工作機處理一些小塊。這樣,如果一個節點上的 ram 不足以存儲矩陣中的所有參數,我們就能夠利用多個節點的額外 ram 起到杠桿作用。由于不同的節點具有映射到矩陣的不同塊的不同工作負載,我們因此能在并行計算時獲得加速。
問題是,我們應該如何劃分模型?由于我們有這么多的機器學習模型,每個模型都有自己的特征和表示,因此就沒有實現模型并行的主要方法。http://jialina.51dzw.com/
分布式機器學習?
通常來說,分布式機器學習(dml)是一個跨學科的領域,它幾乎涵蓋計算機科學的各個領域:理論(譬如統計學、學習理論、優化論)、算法、以及機器學習核心理論(深度學習、圖模型、核方法)。在這些子領域中,有無數的問題需要探索和研究。另外,分布式能夠很好地利用大數據,它已經成為目前工業界最廣泛應用的機器學習技術。
分布式機器學習試圖解決什么樣的問題?
為了最容易的理解 dml,我們將它分成四類研究問題。但請注意,這些類別并非是相互排斥的。
如何使用統計學、優化理論和算法?
由于大多數機器學習任務本質上是在減小一組訓練數據的「損失」,我們就更多關注以下問題:優化過程需要多長時間才能達到收斂?或者說,收斂速度(收斂率)是多少?收斂解有多少?需要多少訓練數據才能保證良好的解?為了研究這些問題,研究人員采用了理論分析工具,如優化理論或統計學習理論。然而,在大規模機器學習的背景下,我們給出了更多的計算資源,我們的目標是通過并行或分布式計算技術利用額外資源來加速(即減少模型的訓練/測試時間),我們也很想弄清楚另一組看上去相似但不同的問題:通過分布式或并行訓練,我們的模型和參數是否保證在沒有加速的情況下收斂到相同的狀態?如果他們沒有收斂到同一個狀態,那么我們離原始解決方案有多遠,我們距離真正的最優解決方案有多遠?達到「良好」趨同還需要哪些其他假設/條件?如果我們將分布式訓練和非分布式訓練進行比較到底能有多快?我們如何評估這個?我們如何設計培訓過程(例如數據采樣,參數更新)以確保良好的可擴展性和良好的收斂性?
如何開發更適合分布式設置的機器學習模型或訓練算法
這一研究重點是開發新的機器學習模型或調整(擴展)現有模型以處理更大規模的數據。
如何構建大規模 dml 應用程序
還有一些特定的應用問題,如大規模圖像分類,它需要擴展非常具體的模型/算法的研究。大多數這些解決方案可以直接部署到生產線中。
如何開發并行或分布式計算機系統來擴大機器學習http://www.jialinadianzi.com
這一系列研究相當直觀:如果我們的模型或算法無法在一個節點上完成計算工作流程,我們可以嘗試開發分布式系統以使用更多節點(和更多的計算資源)。但是要做到這一點,我們需要面對很多系統問題:一致性:如果多個節點同時朝著一個目標努力,我們如何確保它們的一致?例如,如果他們一起解決一個優化問題,但卻有著數據集的不同分區呢?容錯:如果我們將工作負載分配到 1000 個計算節點的集群,那么 1000 個節點中的一個崩潰會怎么樣?有沒有辦法能解決它而不只是從任務的最開始重新啟動?通信:機器學習涉及大量 i / o 操作(例如磁盤讀寫)和數據處理過程 - 我們是否可以設計存儲系統,以便為不同類型的環境實現更快的 i / o 和非阻塞數據處理程序(例如,單節點本地磁盤,分布式文件系統,cpu i / o,gpu i / o 等等)?資源管理:構建計算機集群的成本非常高,因此集群通常由許多用戶共享。我們應該如何管理集群并適當地分配資源以滿足每個人的要求,同時最大限度地提高使用率?編程模型:我們是否應該按照與非分布式機器學習模型/算法相同的方式對分布式機器學習模型/算法進行編程?我們能否設計一種需要更少編碼并提高效率的新的編程模型?我們可以用單節點方式編程,同時使用分布式計算技術自動放大程序嗎?http://tenghaowy.51dzw.com/
文章來源:雷鋒網:本文為ai研習社編譯的技術博客
- 51電子網公益庫存:
- F0505S-1W
- F1212S-1W
- F1452GH1
- F15U20DN
- F1H16TP
- F36037GFZV
- F3AA012E
- F3AA024E
- F4-100R06KL4
- FA-20H 16.0000MF12Z-AC3
- 601HE0000B01
- 6125TD1-R
- 6125TD2-R
- 6125TD4-R
- 6-1394461-2
- 68HC68W1
- 6DI100A050
- 6DI100A-050
- 6DI120A-060
- 6MBI15S-120
專注于 petuum 研究方向的方面。事實上,我們今天使用的大部分主流 ml 軟件都位于同一方面(例如 graphlab,tensorflow 等)。
了解分布式深度學習
分布式深度學習是通用分布式機器學習的一個子領域,由于其在各種應用中的有效性,最近變得非常突出。在深入分析深度學習的細節及其解決的問題之前,我們應該定義一些重要的術語:數據并行性和模型并行性。
數據并行性
數據并行性是一種通過分區數據啟用的并行化技術。在數據并行分布式計算中,我們首先將數據劃分為幾個分區,其中分區的數量等于工作機器的數量(即計算節點)。然后,我們讓每個工作者擁有一個獨立的分區,讓他們對該數據進行計算。由于我們有多個節點并行掃描數據,因此我們應該能夠掃描比使用單個節點時更多的數據 - 我們通過分布式并行計算提高吞吐量。http://yushuokeji.51dzw.com/
在分布式機器學習中,我們的目標是加速使用多個節點的模型訓練的收斂速度,應用數據并行性是相當直觀的:我們讓每個工作機在自己的數據分區上執行訓練(即隨機梯度下降)并生成一組其上的參數更新(即梯度)。然后,我們讓所有節點通過網絡通信同步其參數狀態,直到達成一致。只要同步不花費太多時間并且我們得到較單節點結果的改進,我們就實現了目標!從本質上講,這就是 google 深度學習系統 distbelief 的工作原理。
模型并行性
與數據并行性相比,模型并行性是一個更復雜和模糊的概念。一般來說,在模型并行性中,我們嘗試對機器學習模型本身進行分區,以將工作負載分配給多個工作機,而不是對數據進行分區。例如,假設我們正在解決矩陣分解問題,其中矩陣非常龐大,我們想要學習這個巨大矩陣的每個參數。為了要應用模型并行性,我們必須將矩陣劃分為許多小塊(子矩陣),然后讓每個工作機處理一些小塊。這樣,如果一個節點上的 ram 不足以存儲矩陣中的所有參數,我們就能夠利用多個節點的額外 ram 起到杠桿作用。由于不同的節點具有映射到矩陣的不同塊的不同工作負載,我們因此能在并行計算時獲得加速。
問題是,我們應該如何劃分模型?由于我們有這么多的機器學習模型,每個模型都有自己的特征和表示,因此就沒有實現模型并行的主要方法。http://jialina.51dzw.com/
分布式機器學習?
通常來說,分布式機器學習(dml)是一個跨學科的領域,它幾乎涵蓋計算機科學的各個領域:理論(譬如統計學、學習理論、優化論)、算法、以及機器學習核心理論(深度學習、圖模型、核方法)。在這些子領域中,有無數的問題需要探索和研究。另外,分布式能夠很好地利用大數據,它已經成為目前工業界最廣泛應用的機器學習技術。
分布式機器學習試圖解決什么樣的問題?
為了最容易的理解 dml,我們將它分成四類研究問題。但請注意,這些類別并非是相互排斥的。
如何使用統計學、優化理論和算法?
由于大多數機器學習任務本質上是在減小一組訓練數據的「損失」,我們就更多關注以下問題:優化過程需要多長時間才能達到收斂?或者說,收斂速度(收斂率)是多少?收斂解有多少?需要多少訓練數據才能保證良好的解?為了研究這些問題,研究人員采用了理論分析工具,如優化理論或統計學習理論。然而,在大規模機器學習的背景下,我們給出了更多的計算資源,我們的目標是通過并行或分布式計算技術利用額外資源來加速(即減少模型的訓練/測試時間),我們也很想弄清楚另一組看上去相似但不同的問題:通過分布式或并行訓練,我們的模型和參數是否保證在沒有加速的情況下收斂到相同的狀態?如果他們沒有收斂到同一個狀態,那么我們離原始解決方案有多遠,我們距離真正的最優解決方案有多遠?達到「良好」趨同還需要哪些其他假設/條件?如果我們將分布式訓練和非分布式訓練進行比較到底能有多快?我們如何評估這個?我們如何設計培訓過程(例如數據采樣,參數更新)以確保良好的可擴展性和良好的收斂性?
如何開發更適合分布式設置的機器學習模型或訓練算法
這一研究重點是開發新的機器學習模型或調整(擴展)現有模型以處理更大規模的數據。
如何構建大規模 dml 應用程序
還有一些特定的應用問題,如大規模圖像分類,它需要擴展非常具體的模型/算法的研究。大多數這些解決方案可以直接部署到生產線中。
如何開發并行或分布式計算機系統來擴大機器學習http://www.jialinadianzi.com
這一系列研究相當直觀:如果我們的模型或算法無法在一個節點上完成計算工作流程,我們可以嘗試開發分布式系統以使用更多節點(和更多的計算資源)。但是要做到這一點,我們需要面對很多系統問題:一致性:如果多個節點同時朝著一個目標努力,我們如何確保它們的一致?例如,如果他們一起解決一個優化問題,但卻有著數據集的不同分區呢?容錯:如果我們將工作負載分配到 1000 個計算節點的集群,那么 1000 個節點中的一個崩潰會怎么樣?有沒有辦法能解決它而不只是從任務的最開始重新啟動?通信:機器學習涉及大量 i / o 操作(例如磁盤讀寫)和數據處理過程 - 我們是否可以設計存儲系統,以便為不同類型的環境實現更快的 i / o 和非阻塞數據處理程序(例如,單節點本地磁盤,分布式文件系統,cpu i / o,gpu i / o 等等)?資源管理:構建計算機集群的成本非常高,因此集群通常由許多用戶共享。我們應該如何管理集群并適當地分配資源以滿足每個人的要求,同時最大限度地提高使用率?編程模型:我們是否應該按照與非分布式機器學習模型/算法相同的方式對分布式機器學習模型/算法進行編程?我們能否設計一種需要更少編碼并提高效率的新的編程模型?我們可以用單節點方式編程,同時使用分布式計算技術自動放大程序嗎?http://tenghaowy.51dzw.com/
文章來源:雷鋒網:本文為ai研習社編譯的技術博客
熱門點擊
- 宇宙弦理論
- 英特爾創立50周年大事記
- 量子計算時代
- 2017年度十大科學突破盤點
- 18650與21700電池特點和性能
- WaveSense技術
- 全球首款4D NAND閃存
- 跨境電商詳解
- 半導體材料產業現狀及比較
- 金融科技(FinTech)技術
推薦電子資訊
- 微軟新專利:皮膚感應邊框
- 該專利名為“基于抓握的裝置適應(Grip-Based&... [詳細]