日前,英偉達(dá) Developer Blog 上一篇博文詳細(xì)陳述了英偉達(dá)Volta Tensor Core GPU 在深度學(xué)習(xí)社群取得的巨大突破,以及種種突破背后的技術(shù)細(xì)節(jié)。
2017 年 5 月,在 GTC 2017 上,英偉達(dá) CEO 黃仁勛發(fā)布 Volta 架構(gòu) Tesla V100,它被稱為史上最快 GPU 加速器。2018 年 3 月,同樣也是在 GTC 上,黃仁勛發(fā)布「全球最大的 GPU」——DGX-2,搭載 16 塊 V100 GPU,速度達(dá)到 2 petaflops。
近年來,英偉達(dá)在高速計算之路上越走越快。日前,英偉達(dá) Developer Blog 上一篇博文詳細(xì)陳述了英偉達(dá)Volta Tensor Core GPU 在深度學(xué)習(xí)社群取得的巨大突破,以及種種突破背后的技術(shù)細(xì)節(jié)。
由深度學(xué)習(xí)驅(qū)動的人工智能現(xiàn)在解決了曾一度被認(rèn)為不可能的挑戰(zhàn),比如讓計算機理解自然語言、進行對話以及自動駕駛。既然深度學(xué)習(xí)能如此有效地解決一系列挑戰(zhàn),隨著算法復(fù)雜度呈現(xiàn)指數(shù)級增長,我們是否能將計算變得更快呢?基于此,英偉達(dá)設(shè)計了Volta Tensor Core架構(gòu)。
為了更快地計算,英偉達(dá)與許多公司以及研究人員一樣,一直在開發(fā)計算的軟件和硬件平臺。Google 是個典型的例子——他們的研究團隊創(chuàng)建了 TPU(張量處理單元)加速器,當(dāng)利用 TPU 進行加速時,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時可以達(dá)到優(yōu)異的性能。
這篇文章中,我們分享了英偉達(dá)實現(xiàn) GPU 巨大的性能提升后,在 AI 社群中取得的一些進步:我們已經(jīng)在單芯片和單服務(wù)器上創(chuàng)造了 ResNet-50 的訓(xùn)練速度記錄。最近,fast.ai也宣布了他們利用英偉達(dá) VoltaTensor Core GPU 在單個云實例上的創(chuàng)紀(jì)錄表現(xiàn) 。
以下是我們的結(jié)果:
在訓(xùn)練 ResNet-50 時,一個 V100 Tensor Core GPU 的處理速度能達(dá)到 1075 張圖像/秒,與上一代 Pascal GPU 相比,它的性能提高了 4 倍。
一個由 8 個 Tensor Core V100 驅(qū)動的 DGX-1 服務(wù)器的處理速度能達(dá)到 7850 張圖像/秒,幾乎是去年在同一系統(tǒng)上處理速度(4200 張圖像/秒)的兩倍。
一個由 8 個 Tensor Core V100 驅(qū)動的 AWS P3 云實例可以在不到 3 小時內(nèi)完成
ResNet-50 的訓(xùn)練,比 TPU 實例快 3 倍。
圖 1:Volta Tensor Core GPU 在訓(xùn)練 ResNet-50 時所取得的速度突破
英偉達(dá) GPU 在對算法進行大規(guī)模并行處理時效果極好,因此它極其適合用于深度學(xué)習(xí)。我們一直都沒有停止探索的腳步,Tensor CoreGPU 是我們利用多年的經(jīng)驗和與世界各地的人工智能研究人員的密切合作,為深度學(xué)習(xí)模型創(chuàng)造的一種新的架構(gòu)。
結(jié)合高速 NVLink 互連以及在當(dāng)前所有框架內(nèi)的深度優(yōu)化,我們獲得了最先進的性能。英偉達(dá) CUDA GPU 的可編程性在這里也非常重要。
V100 Tensor Core 打破了單處理器的最快處理速度記錄
英偉達(dá) Volta GPU 中引入了Tensor Core GPU 架構(gòu),這是英偉達(dá)深度學(xué)習(xí)平臺的巨大進步。這種新硬件能加速矩陣乘法和卷積計算,這些計算在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時占總計算的很大一部分。
英偉達(dá) Tensor Core GPU 架構(gòu)能夠提供比功能單一的 ASIC 更高的性能,在不同工作負(fù)載下仍然具備可編程性。例如,每一個 Tesla V100 Tensor Core GPU 用于深度學(xué)習(xí)可以達(dá)到 125 teraflop 的運算速度,而 Google TPU 芯片只能達(dá)到 45 teraflop。包含 4 個 TPU 芯片的「Cloud TPU」可以達(dá)到 125 teraflop,相比之下,4 個 V100 芯片可以達(dá)到 500 teraflop。
我們的 CUDA 平臺使每一個深度學(xué)習(xí)框架都能充分利用Tensor Core GPU 的全部能力,加速諸如 CNN、RNN、GAN、RL 等各類神經(jīng)網(wǎng)絡(luò),以及基于這些網(wǎng)絡(luò)每年出現(xiàn)的成千上萬個變種。
接下來是對Tensor Core架構(gòu)的更深入講解,大家可以在這里看到它獨特的功能。圖 2 顯示了 Tensor Core 計算張量的過程,雖然存儲是在低精度的 FP16 中,但是用精度更高的 FP32 來進行計算,可以在維持精度時最大化吞吐量。
圖 2:Volta Tensor Core 矩陣乘法計算
隨著最近的軟件改進,目前在單個 V100 上訓(xùn)練 ResNet-50 的速度達(dá)到了 1360 張圖像/秒。我們現(xiàn)在正努力將這一訓(xùn)練軟件集成到流行的框架中,詳情如下。
為了讓性能最佳,基于 Tensor Core 進行張量操作的存儲器布局應(yīng)該為 channel-interleaved 型數(shù)據(jù)布局(Number-Height-Width-Channel,常被稱為 NHWC),但往往默認(rèn)是 channel-major 型數(shù)據(jù)布局(Number-Channel-Width-Height,通常稱為 NCHW)。因此,cuDNN 庫會在 NCHW 和 NHWC 之間執(zhí)行張量轉(zhuǎn)置操作,如圖 3 所示。正如前面所提到的,由于卷積運算現(xiàn)在的速度非常快,所以這些轉(zhuǎn)置操作占了總運行時間中相當(dāng)大的一部分。
為了消除這些轉(zhuǎn)置操作,我們直接用 NHWC 格式表示 RN-50 模型圖中的每個張量,MXNet 框架支持這一功能。此外,對所有其他非卷積層,我們還將優(yōu)化的 NHWC 實現(xiàn)添加到 MXNet 和 cuDNN 中,從而消除了訓(xùn)練過程中對張量轉(zhuǎn)置的需求。
圖 3:優(yōu)化 NHWC 格式,以消除張量轉(zhuǎn)置
另一個優(yōu)化是基于阿爾達(dá)姆定律(并行計算中的加速比是用并行前的執(zhí)行速度和并行后的執(zhí)行速度之比來表示的,它表示了在并行化之后的效率提升情況),這一法則能預(yù)測并行處理的理論加速。由于 Tensor Core 顯著地加速了矩陣乘法和卷積層的計算,因此在訓(xùn)練時對其他層的計算占據(jù)了總運行時間很大的一部分。我們可以確定這些新的性能瓶頸并進行優(yōu)化。
如圖 4 所示,數(shù)據(jù)會移動到 DRAM 或從 DRAM 中移出,因此許多非卷積層的性能會受到限制。可以利用片上存儲器將連續(xù)的層融合在一起,避免 DRAM traffic。例如,我們在 MXNet 中創(chuàng)建一個圖優(yōu)化傳遞功能,以檢測連續(xù)的 ADD 和 ReLu 層,只要有可能就將這些層替換成融合層。在 MXNet 中可以非常簡單地使用 NNVM(神經(jīng)網(wǎng)絡(luò)虛擬機,Neural Network Virtual Machine)來實現(xiàn)這些類型的優(yōu)化。
圖 4 :進行層融合操作,消除反復(fù)數(shù)據(jù)讀/寫
最后,我們繼續(xù)為常見的各類卷積創(chuàng)建額外的專用 kernel,以進行優(yōu)化。
我們目前正在將許多這種優(yōu)化應(yīng)用于多個深度學(xué)習(xí)框架之中,包括 TensorFlow、PyTorch 和 MXNet 。我們利用單個 Tensor Core V100 GPU 進行標(biāo)準(zhǔn)的 90-epoch 訓(xùn)練,基于在 MXNet 上做的改進,處理速度達(dá)到 1075 張圖像/秒,與此同時,我們的訓(xùn)練與單精度訓(xùn)練一樣達(dá)到了相同的 Top-1 分類精度(超過 75%)。我們在單機測試中的處理速度可以達(dá)到 1360 張圖像/秒,這意味著性能還有很大的提升空間。可以在NGC(NVIDIA GPU CLOUD)上利用 NVIDIA-optimized deep learning framework containers 實現(xiàn)性能的提升。
創(chuàng)紀(jì)錄的最高單節(jié)點速度
多個 GPU 可以作為單節(jié)點運行,以實現(xiàn)更高的吞吐量。然而,在將多個 GPU 縮到單服務(wù)節(jié)點中工作時,需要 GPU 之間存在高帶寬/低延遲通信路徑。英偉達(dá) NVLink 高速互連結(jié)構(gòu)允許我們將 8 個 GPU 作為單服務(wù)器運行,實現(xiàn)性能擴展。這些大規(guī)模的加速服務(wù)器可以讓深度學(xué)習(xí)的計算達(dá)到 petaflop 量級的速度,并且在云端和本地部署中都可以被廣泛使用。
然而,雖然將 GPU 擴展到 8 個可以顯著提高訓(xùn)練性能,但在這種框架下,主 CPU 執(zhí)行其他工作時性能會受到限制。而且,在這種框架下,對連接 GPU 的數(shù)據(jù)管道性能要求極高。
數(shù)據(jù)管道從磁盤中讀取編碼的 JPEG 樣例,然后再執(zhí)行解碼、調(diào)整圖像大小、圖像增強(如圖 5 所示)操作。這些操作提高了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,從而提高了訓(xùn)練模型的預(yù)測準(zhǔn)確性。而因為在訓(xùn)練時,有 8 個 GPU 在進行運算操作,這會限制框架的整體性能。
圖 5:圖像解碼和增強數(shù)據(jù)管道
為了解決這個問題,我們開發(fā)了 DALI(Data Augmentation Library,數(shù)據(jù)擴充庫),這是一個與框架無關(guān)的庫,可以將計算從 CPU 轉(zhuǎn)移到 GPU 上。如圖 6 所示,DALI 將 JPEG 解碼的一部分、調(diào)整圖像大小以及其他所有增強操作移動到 GPU 上。這些操作在 GPU 上的執(zhí)行速度要比在 CPU 上快得多,這緩解了 CPU 的負(fù)荷。DALI 使得 CUDA 的并行處理能力更加突出。消除 CPU 瓶頸之后,在單節(jié)點上的計算速度可以達(dá)到 7850 張圖像/秒。
圖 6:利用 DALI 優(yōu)化工作負(fù)荷
英偉達(dá)正在幫助將 DALI 融入到所有主流人工智能框架中。這一解決方案有助于提升具備 8 個以上 GPU 的系統(tǒng)的性能,比如英偉達(dá)最近發(fā)布的帶有 16 個 Tesla V100 GPU 的DGX-2。
創(chuàng)紀(jì)錄的單個云實例處理速度
我們使用單 GPU 和單節(jié)點運行來訓(xùn)練 ResNet-50(90 epoch),使預(yù)測準(zhǔn)確率超過 75%。通過算法的創(chuàng)新和超參數(shù)調(diào)節(jié),可以進一步減少訓(xùn)練時間,在更少的 epoch 下達(dá)到更高精度。GPU 具備可編程的特性,并支持所有深度學(xué)習(xí)框架,這使得 AI 研究者能夠探索新的算法,并利用現(xiàn)有的算法進行研究。
fast.ai 團隊最近分享了基于英偉達(dá)硬件的優(yōu)秀成果,他們使用 PyTorch 在遠(yuǎn)小于 90 epoch 的訓(xùn)練下達(dá)到了很高的精確度。Jeremy Howard 和 fast.ai 的研究人員利用 8 個 V100 Tensor Core GPU,在一個 AWS P3 實例上用 ImageNet 訓(xùn)練 ResNet-50。他們對算法進行創(chuàng)新,調(diào)節(jié)了一系列超參數(shù),不到 3 個小時就將模型訓(xùn)練好了,這比基于云實例的 TPU 計算(需要將近 9 個小時來訓(xùn)練 ResNet-50)快三倍。
我們進一步期望這一博客中描述的提高吞吐量的方法同樣也適用于其他訓(xùn)練,例如前面提到的 fast.ai 的例子。
效果呈現(xiàn)指數(shù)級增長
自從 Alex Krizhevsky 利用兩塊 GTX 580 GPU 贏得了 ImageNet 比賽,我們在深度學(xué)習(xí)加速方面所取得的進步令人難以置信。Krizhevsky 當(dāng)時花了 6 天時間來訓(xùn)練他的神經(jīng)網(wǎng)絡(luò)——AlexNet,這一網(wǎng)絡(luò)在當(dāng)時的表現(xiàn)優(yōu)于所有其他的圖像識別方法,引發(fā)了一場深度學(xué)習(xí)革命。我們最近發(fā)布的 DGX-2 可以在 18 分鐘內(nèi)訓(xùn)練好 AlexNet。從圖 7 可以看到,在這 5 年多的時間里,隨著硬件性能的提升,處理速度加快了 500 倍。
圖 7:在 ImageNet 上訓(xùn)練 AlexNet 所需要的時間
Facebook 人工智能研究院(FAIR)開源了他們的語言翻譯模型 Fairseq,在不到一年的時間里,我們基于 DGX-2 和軟件棧的改進(見圖 8),在訓(xùn)練 Fairseq 時實現(xiàn)了 10 倍的加速。
圖 8:訓(xùn)練 Fairseq 所需要的時間
圖像識別和語言翻譯僅僅是研究人員用 AI 力量解決無數(shù)難題的用例之一。Github 上共有超過 6 萬個使用 GPU 加速框架的神經(jīng)網(wǎng)絡(luò)項目,GPU 的可編程性為 AI 社群正在構(gòu)建的所有類型的神經(jīng)網(wǎng)絡(luò)提供加速。我們的快速改進使得 AI 研究人員能夠想象出更復(fù)雜的神經(jīng)網(wǎng)絡(luò),以解決更困難的挑戰(zhàn)。
這些長久的進步得益于我們對 GPU 加速計算的全堆棧優(yōu)化算法。從構(gòu)建最先進的深度學(xué)習(xí)加速器到復(fù)雜的系統(tǒng)(HBM、COWOS、SXM、NVSwitch、DGX),從先進的數(shù)字計算庫和深度軟件棧(cuDNN,NCCL,NGC) 到加速所有的 DL 框架,英偉達(dá)對 AI 的承諾為 AI 開發(fā)者提供了無與倫比的靈活性。
我們將繼續(xù)優(yōu)化整個堆棧,并持續(xù)實現(xiàn)性能的指數(shù)級提升,為 AI 社群提供推動深度學(xué)習(xí)創(chuàng)新研究的有力工具。
總結(jié)
AI 繼續(xù)改變著各行各業(yè),驅(qū)動出無數(shù)用例。理想的 AI 計算平臺需要提供出色的性能,能支持龐大且不斷增長的模型,并具備可編程性,以應(yīng)對模型的多樣性需求。
英偉達(dá)的 Volta Tensor Core GPU 是世界上最快的 AI 處理器,只用一塊芯片就能讓深度學(xué)習(xí)的訓(xùn)練速度達(dá)到 125 teraflop。我們很快會將 16 塊 Tesla V100 整合到一個單服務(wù)器節(jié)點中,以創(chuàng)建世界上最快的計算服務(wù)器,提供 2 petaflops 的計算性能。
除了在加速上的優(yōu)異性能,GPU 的可編程性以及它在云、服務(wù)器制造商和整個 AI 社群中的廣泛使用,將帶來下一場 AI 變革。
無論你選擇什么深度學(xué)習(xí)框架(Caffe2, Chainer, Cognitive Toolkit, Kaldi, Keras, Matlab, MXNET, PaddlePaddle, Pytorch,TensorFlow),都可以用英偉達(dá)硬件進行加速。此外,英偉達(dá) GPU 還用于訓(xùn)練 CNN、RNN、GAN、RL、混合網(wǎng)絡(luò)架構(gòu)以及每年基于這些網(wǎng)絡(luò)的成千上萬個變體。AI 社群中目前存在很多驚人的應(yīng)用,我們期待著為 AI 的下一步發(fā)展提供動力。
-
gpu
+關(guān)注
關(guān)注
28文章
4752瀏覽量
129056 -
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3791瀏覽量
91313
原文標(biāo)題:5 年提速 500 倍,英偉達(dá) GPU 創(chuàng)紀(jì)錄突破與技術(shù)有哪些?
文章出處:【微信號:AItists,微信公眾號:人工智能學(xué)家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論