您的位置:首頁>科技>正文

機器學習利器TensorFlow程式設計模型發展及介紹

1.機器學習在阿裡哪些地方應用?

2.PAI上的演算法是怎樣基於MapReduce實現的?

3.MPI模型有什麼優點和缺點?

4.TensorFlow支援哪些內容?

隨著訓練資料規模的持續擴大, 模型特徵的持續增長, 常用的機器學習演算法面臨著越來越多的挑戰。 從很多人熟悉的R語言, 到基於MPI的多機的計算框架, 再到支援超大規模特徵的Parameter Server架構, 再到如今的深度學習計算框架, 機器學習平臺上的程式設計模型也在不斷演進, 以滿足業務上持續的挑戰。 本次主題主要和大家分享PAI分散式機器學習平臺的多種程式設計模型的演進過程。

機器學習在阿裡的應用

阿裡是一家資料公司, 阿裡的各項業務都嚴重依賴機器學習, 比如搜索、個性化推薦、精准廣告、風控模型、智慧客服和物流等多項業務, 在使用這些業務的背後都依賴於機器學習。

為了支撐集團業務對機器學習的需求, 我們構建阿裡雲機器學習平臺PAI, 我們致力於構建阿裡集團的統一機器學習平臺, 該平臺致力於建設一站式的資料採擷建模平臺, 平臺具備的功能如下:

該平臺提供完整鏈路的資料建模服務, 包括資料清洗元件、特徵處理元件、模型訓練元件、模型生命週期管理元件和線上預測服務。 通過機器學習平臺, 完整的從前端資料清洗到最後模型的預測, 整個生命週期都可以基於機器學習PAI來做。

阿裡資料規模及其龐大, 機器學習平臺PAI致力於提供先進計算框架, 通過技術推動商業的發展, 具體支持MapReduce、MPI、Parameter Server和Deep Learning Framework等框架。

程式設計模型演進

MapReduce程式設計模型

MapReduce程式設計模型的核心是分而治之, 將常見的資料處理抽象成兩個操作, Map & Reduce, Map操作就是根據使用者資料分片映射成特定輸出,

後接Reduce對資料進行加工, MapReduce模型之所以非常流行, 因為MapReduce在框架層面解決了以下幾個分散式難題:

支援計算任務的劃分和調度

支援資料的分散式存儲和劃分

支援計算任務的同步

支持計算節點的容錯與恢復

那麼, PAI上的演算法是怎樣基於MapReduce實現的?舉例說明:

TF-IDF(term frequency–inverse document frequency), 是用來評價某一單詞對於某篇文檔的重

要性。

• TF = COUNT(Word, Document) / SIZE(Document)代表單個單詞在文檔中出現次數

• IDF = log(N / docs(Word, Document)代表某單詞在所有文檔出現的次數

在Mapper裡載入每一篇文檔, 同時我們會遍歷這篇文檔, 統計文檔中每個單詞出現的頻率, 統計這篇文檔中所有單詞的個數, 也會統計包含單詞的文檔個數;在Mapper裡實現後, 會將相應資料推送到Reducer, 在Reducer運算元裡, 會根據某個單詞在文檔裡出現的次數除以這篇文檔包含所有單詞個數, 就會得到term frequyency, 然後我們會拿到一個單詞出現的次數和所有文檔裡包含單詞的次數, 根據公式可以計算出inverse document frequency, 將TF與IDF相乘, 從而得到某個單詞對某篇文檔重要性。

和其它機器學習演算法相比, MapReduce模型特別適合一些不同計算任務之間獨立、資料並行度高的演算法,

也適合不需要不同節點通信的機器學習演算法。

MPI程式設計模型

MPI全稱叫消息傳遞介面(Message Passing Interface), 嚴格意義來說, MPI並不是程式設計模型, 更多是消息傳遞介面。 MPI定義了很多底層通信介面, 包括Send、Receive、Bcast和AllReduce等, MPI庫支持單機多Instance和多機多Instance實現, 正是由於MPI提供了高度靈活, 描述能力強的介面, 在過去的一二十年裡, 在科學計算領域得到大量應用。 如今, 在分散式運算集群裡, 也有很多演算法可以借鑒MPI進行實現。

由於MPI計算任務通過底層分散式調度系統動態調度到不同機器上,而跑MPI任務時需要提前知道MPI任務需要運行相應host名字,所以我們對MPI底層網路拖口建立進行了重構,以此適配分散式調度系統。目前PAI機器學習上,支持兩個版本的MPI,分別是MPICH (CPU)和OpenMPI (GPU),PAI MPI支援分散式調度,無需事先指定資源,支持本地調試,線上執行。

當給客戶推薦商品時,會基於邏輯回歸模型去判斷商品是否會被用戶點擊,該名用戶是男是女,方便給用戶推薦商品。根據模型函數建立模型損失函數和梯度函數,圖右為模型狀態,我們想要收斂到最佳狀態的模型,通過多輪反覆運算達到收斂,得到滿意模型。這就要求在每輪反覆運算間對不同節點之間大家計算出的模型進行通信,進行allReduce的操作。

圖為PAI MPI邏輯回歸具體實現,假設有N個節點做好資料的分片,在每一輪反覆運算裡會載入使用者的訓練資料,同時會基於當前模型計算梯度,在本地加和後會調用MPI介面AllReduce,這樣,每輪反覆運算後所有計算節點都會得到新的模型,基於最新模型開始下一輪反覆運算,就會得到相對較優的邏輯回歸模型。

PAI Parameter Server

MPI雖然介面靈活,演算法實現快,但MPI也有缺點,比如不支援單點容錯等。由於模型越來越複雜,訓練樣本越來越多,特徵維數越來越高,對此,阿裡獨立自研設計實現Parameter Server框架,在集團內大規模使用,框架特點如下:

支援上百億超大規模特徵

支援多種資料切分方式

模型分片

高速通信框架,使得在不同worker和server間資料同步效率提高

優化記憶體使用

支援節點容錯,使得PAI Parameter Server在數千台機器上進行模型訓練任務成為可能

Deep Learning深度學習

傳統機器學習演算法做模型訓練時,注意力可能放在訓練資料上,放在了資料加工、圖形處理上,我們需要更多理解資料,發現新特徵;深度學習與常規的機器學習相比,從資料的理解到模型的創新,目前理論上可以證明,神經網路層數越多,層次越深,模型訓練效果就會越好,這意味著我們需要支援更深的人工神經網路,更多的參數,更龐大的模型,更高量級的通信量,更靈活的表示模型。

TensorFlow

TensorFlow是穀歌第二代深度學習框架,支援各種神經網路,具備高度的靈活性和豐富的社區生態,支持CNN、RNN、LSTM等網路。

圖為一個簡單的分類模型,第一塊和第二塊代碼,定義了訓練樣本和測試樣本,第三塊定義了模型結構,第四塊定義了模型評估的實現,我們會用測試樣本評估當前模型準確度。

接下來通過TensorFlow session API開始驅動模型訓練,可以看出,TensorFlow提供API非常靈活,功能強大。目前在PAI上也提供了TensorFlow的計算服務。

PAI Pluto (多機多卡Caffe)

Caffe在圖像領域得到大量使用,是流行的深度學習框架,網路通過有向無環圖定義,對於CNN網路可以支援的更好,大量用於圖像識別。

我們實現了多機多卡版Caffe,完全相容Caffe語法,基於OpenMPI通信框架,支援線性加速比,多資料來源支援。

機器學習即服務

PAI本身就是機器學習即服務的產品,通過PAI提供包括資料清洗、特徵工程、模型訓練和模型評價等多套工具。

由於MPI計算任務通過底層分散式調度系統動態調度到不同機器上,而跑MPI任務時需要提前知道MPI任務需要運行相應host名字,所以我們對MPI底層網路拖口建立進行了重構,以此適配分散式調度系統。目前PAI機器學習上,支持兩個版本的MPI,分別是MPICH (CPU)和OpenMPI (GPU),PAI MPI支援分散式調度,無需事先指定資源,支持本地調試,線上執行。

當給客戶推薦商品時,會基於邏輯回歸模型去判斷商品是否會被用戶點擊,該名用戶是男是女,方便給用戶推薦商品。根據模型函數建立模型損失函數和梯度函數,圖右為模型狀態,我們想要收斂到最佳狀態的模型,通過多輪反覆運算達到收斂,得到滿意模型。這就要求在每輪反覆運算間對不同節點之間大家計算出的模型進行通信,進行allReduce的操作。

圖為PAI MPI邏輯回歸具體實現,假設有N個節點做好資料的分片,在每一輪反覆運算裡會載入使用者的訓練資料,同時會基於當前模型計算梯度,在本地加和後會調用MPI介面AllReduce,這樣,每輪反覆運算後所有計算節點都會得到新的模型,基於最新模型開始下一輪反覆運算,就會得到相對較優的邏輯回歸模型。

PAI Parameter Server

MPI雖然介面靈活,演算法實現快,但MPI也有缺點,比如不支援單點容錯等。由於模型越來越複雜,訓練樣本越來越多,特徵維數越來越高,對此,阿裡獨立自研設計實現Parameter Server框架,在集團內大規模使用,框架特點如下:

支援上百億超大規模特徵

支援多種資料切分方式

模型分片

高速通信框架,使得在不同worker和server間資料同步效率提高

優化記憶體使用

支援節點容錯,使得PAI Parameter Server在數千台機器上進行模型訓練任務成為可能

Deep Learning深度學習

傳統機器學習演算法做模型訓練時,注意力可能放在訓練資料上,放在了資料加工、圖形處理上,我們需要更多理解資料,發現新特徵;深度學習與常規的機器學習相比,從資料的理解到模型的創新,目前理論上可以證明,神經網路層數越多,層次越深,模型訓練效果就會越好,這意味著我們需要支援更深的人工神經網路,更多的參數,更龐大的模型,更高量級的通信量,更靈活的表示模型。

TensorFlow

TensorFlow是穀歌第二代深度學習框架,支援各種神經網路,具備高度的靈活性和豐富的社區生態,支持CNN、RNN、LSTM等網路。

圖為一個簡單的分類模型,第一塊和第二塊代碼,定義了訓練樣本和測試樣本,第三塊定義了模型結構,第四塊定義了模型評估的實現,我們會用測試樣本評估當前模型準確度。

接下來通過TensorFlow session API開始驅動模型訓練,可以看出,TensorFlow提供API非常靈活,功能強大。目前在PAI上也提供了TensorFlow的計算服務。

PAI Pluto (多機多卡Caffe)

Caffe在圖像領域得到大量使用,是流行的深度學習框架,網路通過有向無環圖定義,對於CNN網路可以支援的更好,大量用於圖像識別。

我們實現了多機多卡版Caffe,完全相容Caffe語法,基於OpenMPI通信框架,支援線性加速比,多資料來源支援。

機器學習即服務

PAI本身就是機器學習即服務的產品,通過PAI提供包括資料清洗、特徵工程、模型訓練和模型評價等多套工具。

Next Article
喜欢就按个赞吧!!!
点击关闭提示