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

分散式深度學習框架PK:Caffe

中國人工智慧資訊智庫社交主平臺新智元主辦的 AI WORLD 2017 世界人工智慧大會11月8日在北京國家會議中心舉行, 大會以“AI 新萬象, 中國智慧+”為主題, 上百位元AI領袖作了覆蓋技術、學術和產業最前沿的報告和討論, 2000多名業內人士參會。

以下文章是新智元編譯 作者:施少懷 褚曉文 編譯:弗格森 馬文

這篇論文評估了四個state-of-the-art 的分散式深度學習框架, 即Caffe-MPI, CNTK, MXNet 和 TensorFlow分別在單個GPU、多GPU和多節點的環境中的表現。

在學術和產業界, 深度學習框架都已經被廣泛地部署在面向深度學習應用的GPU伺服器中。 在深度神經網路的訓練過程中,

有許多標準的進程或者演算法, 比如卷積或者隨機梯度下降(SGD), 但是, 不同的框架的運行性能是不一樣的, 即使是在相同的GPU硬體下運行相同深度的模型。

在這篇論文中, 我們評估了四個state-of-the-art 的分散式深度學習框架, 即Caffe-MPI, CNTK, MXNet 和 TensorFlow分別在單個GPU、多GPU和多節點的環境中的表現。 我們首先以SGD為基礎構建DNN訓練標準流程的性能模型, 然後用三種流行的卷積神經網路(AlexNet, GoogleNet和ResNet-50)對這些框架的運行性能進行基準測試, 進而分析哪些因素造成了這四個框架之間的表現差距。 通過分析和實驗解析, 我們找出可以進一步優化的瓶頸和開銷(overheads)。 研究的主要貢獻是雙重的。 首先, 測試結果為最終用戶為自己的場景選擇合適的框架提供了參考。 其次, 所提出的性能模型和詳細分析為演算法設計和系統組態提供了進一步的優化方向。

用CNN評估Caffe- MPI, CNTK, MXNet 和 TensorFlow四個深度學習框架性能

近年來, 深度學習技在許多AI應用上獲得了巨大的成功。 擁有大量的資料之後, 深度神經網路可以很好地學習特徵表示。 但是, 非常深的神經網路以及大規模的資料, 對計算資源的需求也是極大的。 幸運的是, 一些硬體加速器, 包括GPU、FPGA和英特爾至強處理器都能用於減少模型的訓練時間。

另一方面, 最近, 有研究證明, 擁有非常大的mini-batch的DNN可以得到很好的聚斂, 進而達到局部最小化, 這對於高效地利用多處理器或者集群來說非常有意義。 要處理大規模的設計網路, 一個單一的加速器的計算資源是有限的(比如, 計算單元和存儲),

所以, 有人提出了並行訓練演算法以解決這一問題, 相應的例子包括模型並行和資料並行。 這也刺激科技巨頭在雲服務上部署可擴展的深度學習工具。 亞馬遜採納了MXNet作為亞馬遜雲服務(AWS)主要的深度學習框架, 谷歌在穀歌雲上使用TensorFlow, 微軟在Amazon Azure上部署CNTK。 此外, 浪潮也開發了Caffe-MPI, 來支援HPC上的分散式部署。

英偉達推出的cuDNN是一個高性能DNN資料庫, 有了cuDNN, CNTK, MXNet 和TensorFlow 不僅在單GPU上實現了高的輸送量, 而且在多GPU和多機器上, 也可以擁有很好的可擴展性。

這些框架提供了一個簡便的方法, 讓用戶可以開發DNN, 並嘗試優化相關的演算法, 通過使用硬體平臺, 比如多核CPU、多核GPU和多GPU以及多機器, 來實現較高的輸送量。

然而, 由於不同廠商會有不同的實現方法,

即使是在相同的硬體平臺上訓練相同的DNN, 這些工具也展示了不同的性能。 此前, 有研究者用各種DNN評估了不同的工具在不同的硬體平臺上的表現, 但是, 框架和GPU的更新速度如此之快, 導致很多基準並不能反映更新的GPU以及軟體的最新性能。 此外, 多GPU和多機器的可擴展性一直也沒有得到很好的研究, 而這是集群中最重要影響因素之一。 這篇論文擴展了此前的工作——用DNN 評估了四個分散式深度學習工具(即, Caffe-MPI, CNTK, MXNet 和 TensorFlow)在GPU集群上的表現。 我們使用了四台機器, 由52Gb的InfiniBand 網路連接, 每一台都配備了四塊英偉達Tesla P40, 以測試每一個框架在訓練CNN時的表現, 覆蓋單一GPU、多GPU和多機器環境。 我們首先測試了SGD優化的運行表現, 隨後, 我們聚焦於多GPU和多機器環境下的 同步 SGD (S-SGD)表現,
以分析性能的細節。 我們的主要發現有以下四點:

對於相對較淺的CNN(比如AlexNet), 在擁有大的mini-batch和快速的GPU條件下, 載入大量的訓練資料可能會成為一個潛在的瓶頸。 可以採用有效的資料預處理, 來減少相應的影響。

為了更好地使用cuDNN, 可以考慮自動調參(autotune)和輸入資料層(例如, NCWH, NWHC)。 CNTK 和 MXNet都展示了cuDNN的autotune configuration, 在前向或者反向傳播中, 這都能帶來更好的性能。

在多GPU條件下的 S-SGD中, CNTK沒有隱藏梯度資訊傳遞中的重疊, 但是MXNet 和TensorFlow 用與前面層神經網路的梯度資訊傳遞, 對迴圈層中的梯度聚合進行並行化。 通過隱藏梯度資訊傳遞中的重疊, 可擴展性能夠做到更好。

在四個高輸送量的多GPU伺服器, 所有框架的擴展性都不是特別理想。 通過56Gbps網路介面的intra-node梯度通信比通過PCIe的intra-node慢得多。

這篇論文接下來介紹了這一研究的相關工作,不同方法實施的SGD和S-SGD的初步研究,並為S-SDG的不同實現提供了一些性能模型。在論文的第五部分,作者介紹了他們的實驗方法和實驗結果,以及在第六部分進行了分析。限於篇幅,本文接下來介紹這一研究的實驗方法和結果,具體內容請查閱原始論文。

實驗方法

我們首先指定了實驗所採用的硬體環境。我們使用4個節點的GPU集群,其中每個節點都有4個NVIDIA Tesla P40卡,而節點之間的網路連接是一個56 Gbps的InfiniBand和一個Gbps乙太網。表2是實驗的硬體設置。

表2:用於資料並行化的實驗硬體設置

圖1展示了這個集群的拓撲結構,圖2展示了不同元件間的資料傳輸頻寬的內部節點拓撲。每塊Tesla P40 GPU 都以1.3 GHz的基本核心頻率運行,自動提升功能被禁用,以確保我們實驗結果的複現性。

圖1:GPU集群的拓撲結構

圖2:單個節點的拓撲結構

在每個節點中安裝的測試框架的版本如表3所示。

表3:實驗使用的軟體

評估運行性能的一種流行且有效的方法是測量處理一個mini-batch的輸入資料的一個反覆運算的持續時間或每秒處理的樣本數量。我們在這些工具上使用適當的mini-batch大小(儘量充分利用GPU資源)來對CNN進行基準測試。

我們選擇了三個流行的CNN(即:在ILSVRC-2012 ImageNet資料集運行的AlexNet,GoogleNet和ResNet-50)。集群中的每台機器都有一個資料集的副本。不同框架的資料格式是不同的,我們列出了測試框架下的資料格式。

這三種深層模型對於測試框架的性能都有各自的特性。它們有不同的配置,詳細資訊如表4所示。

表4:神經網路的實驗設置

實驗結果

下面是CNTK、MXNet和TensorFlow分別在單個 P40 卡、多個P40卡,以及跨4個節點的GPU集群訓練AlexNet、GoogleNet和ResNet-50的運行性能。

A. 單GPU

圖3:在單個GPU上3個網路的性能比較。(越低越好)

B. 多GPU

圖4:在單個節點上使用多個GPU時3個網路的性能

C. 多機器

圖5:用多台機器來擴展3個網路的性能。請注意,每台機器有4個GPU,8個GPU和16個GPU的情況分別是在2台機器和4台機器上。

表8:所有測試用例的速度。

總結

在這項工作中,我們評估了4個流行的分散式深度學習框架(Caffe-MPI, CNTK, MXNet 和 TensorFlow)的性能,通過在與56 Gbps InfiniBand連接的4個節點的密集GPU集群上(每個節點4個Tesla P40 GPU)訓練3個CNN(AlexNet、GoogleNet和ResNet-50)。我們首先構建了性能模型來測量同步SGD的加速,包括Caffe-MPI, CNTK, MXNet 和 TensorFlow的不同實現。然後,我們對這四種框架的性能進行基準測試,包括單GPU、多GPU和多機器環境。根據實驗結果和分析,顯示了四種不同實現之間的性能差異,並且存在一些次優化方法,可以進一步優化以提高評估框架的性能,包括I/O、cuDNN調用,以及跨節點GPU之間的資料通信。

對於未來的工作,我們計畫在低頻寬或高延遲網路(例如,1 Gbps的乙太網)中評估DL框架的可擴展性。分散式SGD可能包括非同步SGD和模型並行。

通過56Gbps網路介面的intra-node梯度通信比通過PCIe的intra-node慢得多。

這篇論文接下來介紹了這一研究的相關工作,不同方法實施的SGD和S-SGD的初步研究,並為S-SDG的不同實現提供了一些性能模型。在論文的第五部分,作者介紹了他們的實驗方法和實驗結果,以及在第六部分進行了分析。限於篇幅,本文接下來介紹這一研究的實驗方法和結果,具體內容請查閱原始論文。

實驗方法

我們首先指定了實驗所採用的硬體環境。我們使用4個節點的GPU集群,其中每個節點都有4個NVIDIA Tesla P40卡,而節點之間的網路連接是一個56 Gbps的InfiniBand和一個Gbps乙太網。表2是實驗的硬體設置。

表2:用於資料並行化的實驗硬體設置

圖1展示了這個集群的拓撲結構,圖2展示了不同元件間的資料傳輸頻寬的內部節點拓撲。每塊Tesla P40 GPU 都以1.3 GHz的基本核心頻率運行,自動提升功能被禁用,以確保我們實驗結果的複現性。

圖1:GPU集群的拓撲結構

圖2:單個節點的拓撲結構

在每個節點中安裝的測試框架的版本如表3所示。

表3:實驗使用的軟體

評估運行性能的一種流行且有效的方法是測量處理一個mini-batch的輸入資料的一個反覆運算的持續時間或每秒處理的樣本數量。我們在這些工具上使用適當的mini-batch大小(儘量充分利用GPU資源)來對CNN進行基準測試。

我們選擇了三個流行的CNN(即:在ILSVRC-2012 ImageNet資料集運行的AlexNet,GoogleNet和ResNet-50)。集群中的每台機器都有一個資料集的副本。不同框架的資料格式是不同的,我們列出了測試框架下的資料格式。

這三種深層模型對於測試框架的性能都有各自的特性。它們有不同的配置,詳細資訊如表4所示。

表4:神經網路的實驗設置

實驗結果

下面是CNTK、MXNet和TensorFlow分別在單個 P40 卡、多個P40卡,以及跨4個節點的GPU集群訓練AlexNet、GoogleNet和ResNet-50的運行性能。

A. 單GPU

圖3:在單個GPU上3個網路的性能比較。(越低越好)

B. 多GPU

圖4:在單個節點上使用多個GPU時3個網路的性能

C. 多機器

圖5:用多台機器來擴展3個網路的性能。請注意,每台機器有4個GPU,8個GPU和16個GPU的情況分別是在2台機器和4台機器上。

表8:所有測試用例的速度。

總結

在這項工作中,我們評估了4個流行的分散式深度學習框架(Caffe-MPI, CNTK, MXNet 和 TensorFlow)的性能,通過在與56 Gbps InfiniBand連接的4個節點的密集GPU集群上(每個節點4個Tesla P40 GPU)訓練3個CNN(AlexNet、GoogleNet和ResNet-50)。我們首先構建了性能模型來測量同步SGD的加速,包括Caffe-MPI, CNTK, MXNet 和 TensorFlow的不同實現。然後,我們對這四種框架的性能進行基準測試,包括單GPU、多GPU和多機器環境。根據實驗結果和分析,顯示了四種不同實現之間的性能差異,並且存在一些次優化方法,可以進一步優化以提高評估框架的性能,包括I/O、cuDNN調用,以及跨節點GPU之間的資料通信。

對於未來的工作,我們計畫在低頻寬或高延遲網路(例如,1 Gbps的乙太網)中評估DL框架的可擴展性。分散式SGD可能包括非同步SGD和模型並行。

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