英偉達官方解讀:Volta Tensor Core GPU實現AI性能新里程碑
選自NVIDIA
作者:Loyd Case
機器之心編譯
參與:Panda
大規模深度學習應用的開發對性能有很高的需求,作為深度學習加速器 GPU 硬體的核心供應商,英偉達一直在不斷創新以滿足 AI 社區對計算性能的需求。近日,英偉達開發者博客發文介紹了 Volta Tensor Core GPU 在 AI 性能提升上的里程碑進展。機器之心對該博客文章進行了編譯介紹。更多有關 Volta Tensor Core GPU 的情況可參閱機器之心文章《英偉達 Volta 架構深度解讀:專為深度學習而生的 Tensor Core 到底是什麼?》
具備深度學習力量的人工智慧現在已能解決一些曾被認為不可能解決的難題,比如自然語音和自動駕駛領域內的計算機理解和交談。深度學習現在已能有效解決大量難題,在這種進展的推動下,演算法複雜度的指數級增長已經帶來了對更高速的計算的極大渴求。為了滿足這些需求,英偉達設計了 Volta Tensor Core 架構。
英偉達和很多其它公司與研究者一直都在開發計算硬體和軟體平台來解決這一需求。比如,谷歌打造了 TPU(張量處理單元)加速器,能夠給可以運行在 TPU 上的數量有限的神經網路帶來優良的表現。
在這篇博文中,我們將分享英偉達最近的一些進展,這些進展能為 AI 社區帶來極大的 GPU 性能提升。採用這些改進,我們已經在單塊晶元和單個伺服器上實現了創紀錄的 ResNet-50 性能表現。
最近,fast.ai 也宣布了他們在單個雲實例上的創紀錄性能表現,請參閱:http://www.fast.ai/2018/04/30/dawnbench-fastai/
我們的結果表明:
在訓練 ResNet-50 時,單個 V100 Tensor Core GPU 能實現每秒 1075 張圖像的處理速度,相比於前一代 Pascal GPU,性能提升了 4 倍。
具有 8 個 Tensor Core V100 的單個 DGX-1 伺服器能實現每秒 7850 張圖像的處理速度,幾乎是一年前同樣系統 4200 張圖像/秒的處理速度的 2 倍。
由 8 個 Tensor Core V100 驅動的單個 AWS P3 可以用不到 3 小時時間訓練完 ResNet-50,比 TPU 實例快 3 倍。
圖 1:Volta Tensor Core GPU 創造了 ResNet-50 的新速度記錄(AWS P3.16xlarge 實例包含 8 個 Tesla V100 GPU)
英偉達 GPU 在多種不同演算法上的大規模並行處理性能優異,自然非常適合深度學習。但不止於此。憑藉我們多年的經驗以及與全世界 AI 研究者的緊密合作,我們創造了一種針對多種深度學習模型優化過的新架構——英偉達 Tensor Core GPU。
通過將高速 NVLink 互連與深度優化組合到所有當前的框架中,我們實現了當前最佳的表現。英偉達 CUDA GPU 的編程能力能確保用於大量不同現代網路的性能表現,同時還能提供一個催生新型框架和未來深度網路創新發明的平台。
V100 Tensor Core 創造單塊處理器最快速度記錄
Volta GPU 中的英偉達 Tensor Core GPU 架構是英偉達深度學習平台巨大進步的代表。這種新型硬體能加速矩陣乘法和卷積計算,這些計算佔到了訓練神經網路計算操作的大部分。
英偉達 Tensor Core GPU 架構讓我們既可以提供比單個功能的 ASIC 更優的性能,同時又是可編程的,可用於各種不同的工作負載。比如說,每個 Tesla V100 Tensor Core GPU 都能提供 125 TFLOPS(每秒萬億次浮點運算)的深度學習性能,相對而言,谷歌 TPU 晶元的速度是 45 TFLOPS。一個 Cloud TPU 中的 4 塊 TPU 晶元能提供 180 TFLOPS 的性能;相比而言,4 塊 V100 晶元能提供 500 TFLOPS 的性能。
我們的 CUDA 平台讓每一種深度學習框架都能充分利用我們的 Tensor Core GPU 的全部力量來加速正在快速增多的各種神經網路類型,比如 CNN、RNN、GAN、RL 以及每年湧現的數以千計的變體。
讓我們再向 Tensor Core 架構繼續深入一點,以凸顯其特有的能力。圖 2 展示了 Tensor Core 正在操作以低精度 FP16 存儲但以更高精度 FP32 計算的張量,這能在最大化吞吐量的同時仍然維持必要的精度。
圖 2:Volta Tensor Core 矩陣乘法和累加
使用最近的軟體改進,ResNet-50 訓練現在可以在獨立測試(standalone testing)中在單個 V100 上達到 1360 張圖像/秒的驚人速度。我們現在正在努力將這個訓練軟體整合進流行的框架中,如下所述。
為了實現最佳的表現,Tensor Core 所運行的張量應該處於內存中一個通道交織的數據布局中(數量-高度-寬度-通道,通常簡稱為 NHWC)。訓練框架在內存中所預期的布局是以通道為主要的數據布局(數量-通道-寬度-高度,通常簡稱為 NCHW。所以要使用 cuDNN 庫來執行 NCHW 和 NHWC 之間的張量轉置操作,如圖 3 所示。正如之前提到的,因為現在卷積本身已經非常快了,所以這些轉置會佔到相當可觀的一部分運行時間。
為了消除這些轉置,我們採用的方法是直接用 NHWC 格式表示 ResNet-50 模型圖中的每個張量,這是 MXNet 框架支持的功能。此外,我們還向 MXNet 和 cuDNN 添加了用於所有其它非卷積層的優化過的 NHWC 實現,從而在訓練階段無需任何張量轉置。
圖 3:優化過的 NHWC 格式能消除張量轉置
阿姆達爾定律(Amdahl"s Law)帶來了另一個優化機會,該定律預測了並行處理的理論加速能力。因為 Tensor Core 能顯著提升矩陣乘法和卷積層的速度,訓練工作負載中的其它層就會佔到運行時間的更大一部分。因此,我們確定了這些新的性能瓶頸並且對它們進行了優化。
很多非卷積層的性能都受限於在 DRAM 中移入或移出數據,如圖 4 所示。將連續層融合到一起要用到片上內存和避免與 DRAM 的數據流動。比如,我們在 MXNet 中創造了一種圖優化傳遞(graph optimization pass)來檢測連續的 ADD 和 ReLU 層,並在任何可以替代的時候用融合後的實現來替代它們。使用 NNVM(神經網路虛擬機),在 MXNet 中實現這些類型的優化是很簡單的。
圖 4:融合層能消除數據讀/寫
最後,我們通過為常出現的卷積類型創建額外的專用核來繼續優化單個卷積。
我們目前正將這些優化方法中的許多方法納入到多個深度學習框架中,其中包括 TensorFlow、PyTorch 和 MXNet。通過我們為 MXNet 貢獻的方法,使用標準的 90 epoch 訓練方案,我們在單個 Tensor Core V100 上實現了 1075 張圖像/秒的性能,同時還實現了與單精度訓練一樣的 Top-1 分類準確度(超過 75%)。這為我們留下了進一步提升的巨大空間,因為我們可以在獨立測試中實現 1360 張圖像/秒的速度。英偉達 GPU Cloud(NGC)上的英偉達優化的深度學習框架容器將會提供這些性能提升。
最快的單節點速度記錄
多個 GPU 可以作為單個節點運行,從而實現顯著更高的吞吐量。但是,擴展成在單個伺服器節點中合作的多個 GPU 需要在 GPU 之間有高帶寬/低延遲的通信路徑。我們的 NVLink 高速互連結構讓我們可以將性能擴展成單個伺服器中的 8 個 GPU。這些得到了大規模加速的伺服器能提供 1 PFLOPS(每秒千萬億次浮點計算)的深度學習性能,並且可廣泛用於雲和內部部署。
但是,擴展到 8 個 GPU 會顯著增加訓練性能,甚至足以讓該框架中主 CPU 執行的其它工作成為性能的限制因素。具體而言,該框架中向 GPU 饋送數據的流程需要很大的性能提升。
這個數據流程包括從磁碟讀取編碼的 JPEG 樣本、解碼樣本、調整尺寸和增強圖像(見圖 5)。這些增強操作能提升神經網路的學習能力,讓訓練後的模型有更高準確度的預測表現。使用 8 個 GPU 處理該框架的訓練部分時,這些重要的操作就會限制整體的性能表現。
圖 5:用於圖像解碼和增強的數據流程
為了解決這一問題,我們開發了 DALI(數據增強庫),這是一個不受限於具體框架的庫,可以將 CPU 的工作負載遷移到 GPU 上執行。如圖 6 所示,DALI 將部分 JPEG 解碼工作以及尺寸調整和所有其它增強工作移到了 GPU 上。這些操作在 GPU 上的執行速度比在 CPU 上快得多,因此減輕了 CPU 的工作負載。DALI 凸顯了 CUDA 的通用並行處理能力。去除了 CPU 的瓶頸限制,我們可以在單個節點上維持 7850 張圖像/秒的處理速度。
圖 6:使用 DALI 進行了 GPU 優化的工作負載
英偉達正在助力將 DALI 整合進所有主要的 AI 框架中。這個解決方案也讓我們可以將性能擴展到不止 8 個 GPU,比如最近宣布的英偉達 DGX-2 系統,帶有 16 個 Tesla V100 GPU。
最快的單個雲實例速度記錄
對於我們的單個 GPU 和單節點運行,我們使用了事實上標準的 90 epoch 來訓練 ResNet-50 達到超過 75% 的準確度。但是,訓練時間可以通過演算法創新和超參數調節來進一步減少,以便更少的 epoch 也能達到同樣的準確度。GPU 為 AI 研究者提供了編程能力,並且支持所有深度學習框架,從而讓他們可以探索新的演算法方法和利用已有的演算法。
fast.ai 團隊最近分享了他們的出色結果,使用 PyTorch 在遠低於 90 epoch 內實現了很高的準確度。Jeremy Howard 和 fast.ai 的研究者整合了關鍵的演算法創新和調節技術來在 ImageNet 上訓練 ResNet-50,在單個 AWS P3 實例上僅使用了 3 個小時——而該實例包含 8 個 V100 Tensor Core GPU。相比於基於 TPU 的雲實例(訓練 ResNet-50 需要接近 9 小時時間),ResNet-50 在 GPU 雲實例上的運行速度可以達到其 3 倍之多。
我們還進一步期望本博客中所描述的提升吞吐量的方法也將適用於其它方法(比如 fast.ai 的方法),並能幫助它們實現更快的融合。
帶來指數級的性能提升
自 Alex Krizhevsky 使用 2 個 GTX 580 GPU 贏得了第一屆 ImageNet 比賽以來,我們在加速深度學習方面已經取得了非凡的進展。Krizhevsky 花了 6 天時間才訓練完他那出色的神經網路 AlexNet,其表現超越了當時其它所有圖像識別方法,開啟了深度學習革命。現在,使用我們最近宣布的 DGX-2,我們可以在短短 18 分鐘內訓練完 AlexNet。圖 7 展示了在過去短短 5 年時間裡實現的 500 倍性能提升。
圖 7:在 ImageNet 數據集上訓練 AlexNet 的時間
Facebook 人工智慧研究所(FAIR)已經共享了他們的語言翻譯模型 Fairseq:https://github.com/facebookresearch/fairseq。使用我們最近發布的 DGX-2 和我們為數眾多的軟體堆棧提升,我們在不到 1 年時間裡在 Fairseq 上實現了 10 倍的性能提升(見圖 8)。
圖 8:訓練 Facebook 的 Fairseq 的時間
研究者正在使用 AI 的力量來解決數不勝數的用例,圖像識別和語言翻譯只是其中的兩個代表。在 GitHub 上,使用 GPU 加速的框架的神經網路項目數量已經超過了 60000。我們的 GPU 的編程能力能為 AI 社區正在構建的各種各樣的神經網路提供加速。這樣的快速提升讓 AI 研究者可以去構想更加複雜的神經網路,以使用 AI 攻克富有挑戰性的難題。
這些持續的提升改進源自我們為 GPU 加速的計算開發的全棧式的優化方法。從構建最先進的深度學習加速器到複雜系統(HBM、COWOS、SXM、NVSwitch、DGX),從高級數值庫和深度軟體堆棧(cuDNN、NCCL、NGC)到加速所有深度學習框架,英偉達在 AI 方面的努力能為 AI 開發者提供無與倫比的靈活性。
我們將繼續優化整個堆棧並繼續提供指數級的性能提升,以為 AI 社區提供推動深度學習創新向前發展的工具。
總結
AI 在繼續變革每個行業,催生數不勝數的用例。理想的 AI 計算平台要能提供出色的性能,能夠擴展支持巨大且越來越大的模型規模,並且還要具備編程能力以應對越來越多樣化的模型架構。
英偉達的 Volta Tensor Core GPU 是目前世界上最快的 AI 處理器,單塊晶元就能提供高達 125 TFLOPS 的深度學習性能。我們很快就將在單個伺服器節點中集成 16 個 Tesla V100,以打造世界上最快的計算伺服器,能提供高達 2 PFLOPS 的性能。
除了性能,每家伺服器製造商的每個云為整個 AI 社區所提供的 GPU 的編程能力和廣泛的可用性都在推動實現下一代人工智慧。
不管哪種深度學習框架,英偉達的硬體都能對其提供加速:Caffe2、Chainer、Cognitive Toolkit、Kaldi、Keras、Matlab、MXNET、PaddlePaddle、Pytorch 和 TensorFlow。此外,英偉達 GPU 能用於各種各樣且越來越多的網路類型,其中包括 CNN、RNN、GAN、RL、混合網路架構以及每年新出現的數以千計的變體架構。AI 社區已經創造了很多精彩出色的應用,我們希望能為 AI 的未來發展提供力量。
本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。
------------------------------------------------
※從基礎概念到數學公式,這是一份520頁機器學習筆記(圖文並茂)
※這是一份「不正經」的深度學習簡述
TAG:機器之心 |