NVIDIA深度學習Tensor Core全面解析(下篇)

雷鋒網消息,在《NVIDIA深度學習Tensor Core全面解析(上篇)》中,我們從硬件上分析了Titan V的Volta核心,本篇將通過多項測試來考驗Volta架構,利用各種深度學習框架來了解Tensor Core的性能。

深度學習的基準測試

很多時候,深度學習這樣的新領域會讓人難以理解。從框架到模型,再到API和庫,AI硬件的許多部分都是高度定製化的,因而被行業接受的公開基準測試工具很少也就不足為奇。隨着ImageNet和一些衍生模型(AlexNet、VGGNet、Inception、Resnet等)的影響,ILSVRC2012(ImageNet大規模視覺識別挑戰)中的圖像數據集訓練逐漸被行業所認可。

基本上所有現代深度學習框架都支持CUDA和cuDNN,對於Volta而言,所有支持FP16存儲的框架也都支持Tensor Core加速,啟用FP16存儲后Tensor Core加速會自動啟用,因此我們可以利用這些框架來了解Tensor Core的性能。


在常見的第三方深度學習基準套件中,Fathom和TBD是更傳統的基準測試套件,其測試針對特定框架和模型進行了配置,涵蓋了許多不同的機器學習應用程序。 同時,最近的深度學習框架側重於比較給定模型和跨框架的數據集的性能。

而DeepBench本身並不使用框架,而是使用低級庫來評估不同設備的機器學習性能。就其本身而言,雖然它並不直接將框架/模型/應用程序性能與其他測試聯繫在一起,但它提供了代表供應商優化的數學操作和硬件性能的指標,每個產品的二進制文件都使用硬件供應商提供的庫進行編譯。

DAWNBench則更加與眾不同,與其說它是一個基準測試套件,不如說是對三個數據集(ImageNet、CIFAR10和SQuAD)的訓練和推斷結果進行類似於競賽的報告,重點考量端對端的計算精確度和成本。

至於HPE DLBS,作為HPE深度學習指南的一部分,它主要以GPU為中心,堅持使用TensorFlow、MXNet、PyTorch和Caffe類型框架,還包括TensorRT測試。雖然其具有良好的多測試批處理、日誌記錄、監控和報告功能,但它只輸出純粹的性能和時間指標,不涉及端對端的時間精度或成本。

從這些基準測試軟件中可以看出,深度學習框架之間的差異很容易使測試結果變得毫無意義,從而影響我們對這些框架的研究。convnet-benchmark和PyTorch的創始人Soumith Chintala指出,如果沒有機器學習的背景,很難獨立地驗證深度學習基準測試的準確性和範圍,不過MLPerf測試項目似乎試圖解決這個問題。

MLPerf是由DAWNBench等測試軟件的設計者和工程師聯合打造的全新高端基準測試套件,希望囊括Fathom的跨域測試方法以及DAWNBench對超過閾值精度模型的端對端計算時間考察。不過它目前正在處於alpha階段,開發團隊表示其尚不適合進行精確的硬件對比。

綜合考慮之下,本次測試將不包含MLPerf項目,而是使用DeepBench、Caffe2 Docke、Stanford DAWN和HPE DLBS來進行。

DeepBench訓練測試之GEMM和RNN

首先進行的是GEMM測試,利用某些深度學習應用程序(DeepSpeech、Speaker ID和Language Modeling)中的內核進行GEMM操作,測出的性能比在cuBLAS中運行純矩陣-矩陣乘法更有代表性。

測試的結果在意料之內,啟用Tensor Core可以大幅提升性能。深入研究細節可以發現,Tensor Core對於特定類型的矩陣-矩陣乘法會有特別的影響。

通過深度學習應用程序拆分GEMM測試,我們可以了解Tensor Core在理想和非理想情況下的表現。

Speaker ID GEMM工作負載實際上只包含兩個內核,其中10微秒的時間差意味着大約1 TFLOPS的算力差異。

通過對語言模型內核的研究,可以了解Tensor Core在非理想情況下的性能。這些核矩陣的大小是m=512或1024,n=8或16,k=500000,雖然每個數在技術上都可以被8整除——這是滿足張量核加速度的基本要求之一——但這些矩陣的形狀與Tensor Core支持的16*16*16、32*8*16和8*32*16等基本WMMA形狀不太匹配。假如Tensor Core真正在獨立的8x8x8級別上運行,那麼運算8*8*8矩陣的性能也不會很好。

因此,Tensor Core無法高效的將這些非常不平衡的矩陣分解為n=8或16。而且,Tensor Core在DeepSpeech內核上的性能也出現異常:

從所有子項的平均成績來看,這個浮點運算性能令人印象深刻。當矩陣適合於Tensor Core時,性能可以超過90TFLOPS;相反如果二者無法契合,並正確的換位沒有發揮作用,性能會低至<1TFLOPS的水平。

對於DeepBench RNN內核的測試,RNN類型之間沒有明顯的差異,但是在每種RNN類型中,如果將不同內核挨個進行對比判斷,也可以看到與GEMM中相同的趨勢。

比較有趣的是,Titan Xp與Titan V在未使用Tensor Core加速時的表現有很接近,Titan Xp的高頻率為其性能起到了一定的幫助。

DeepBench訓練測試之Convolutions

在卷積訓練工作負載測試中,Tensor Core再次顯着提高了性能。鑒於卷積層是圖像識別和分類的基礎,因而卷積運算是Tensor Core加速的最大潛在受益者之一。

從所有測試項的平均成績可以看出,Volta在啟用了Tensor Core的FP16混合精度運算能力后性能再次取得了領先。不過與GEMM不同,在FP32卷積上啟用Tensor Core會導致明顯的性能損失。

當計算涉及不匹配的張量尺寸時,標準精度模式遵循cuDNN指定的最快前向算法(如Winograd),而混合精度模式必須對所有內核使用隱式預計算GEMM,這會造成兩種混合精度模式的性能會出現下滑。

要符合Tensor Core加速的要求,輸入和輸出通道尺寸必須是8的倍數,輸入、過濾和輸出數據的類型必須是半精度。使用Tensor Core實現卷積加速要求張量採用NHWC格式,但大多數框架都希望採用NCHW格式的張量。在這種情況下,輸入通道不是8的倍數,但測試程序會自動填充以解決此問題。

需要注意的是,所有這些NCHW內核都需要轉換為NHWC。想要從Tensor Core中受益,需要正確的調整卷積格式,本次測試使用的是NVIDIA提供的標準庫和makefile。NVIDIA指出,一旦進行加速卷積,它會消耗掉相當多的運行時間,這將會對FP32和FP16混合精度模式造成影響。

DeepBench推理測試之GEMM

數據精度方面,百度將DeepBench GEMM和卷積定義支持32bit累加的INT8格式,以支持Volta和Pascal上的INT8計算。

Titan V和Titan Xp均擁有4倍於INT32的INT8性能,DeepBench的INT8推理測試正中Pascal引入的DP4A矢量點積能力之下懷。Volta同樣擁有這一能力,在指令集中二者均顯示為IDP和IDP4A。

對IGEMM來說,正如CUTLASS所示,DP4A是一項定製操作。因此除語言建模之外,INT8的性能都非常之高。當然,與硬件不匹配的張量尺寸不適合Tensor Core加速,這一點與之前完全一樣。

在完全連接(仿射)層中,每個節點都與前一層中的各節點相連接。對於一個典型的CNN來說,完全連接的層意味着可以結合所有提取的特徵做出最終預測並對圖像進行分類。這些測試結果數據也意味着大型且規則的矩陣可以在Tensor Core加速中獲得更大的收益。

DeepBench推理測試之Convolutions

再次來到卷積測試環節,8位乘法/32位累加再次出現在INT8推理中。

測試中最引人注目的是Titan Xp,在Resnet、Speaker ID和Vision項目中,Titan Xp表現出了強勁的INT8吞吐量。

從內核方面來看,並沒有發現這一現象的根源所在,猜測可能是由於Pascal的DP4A庫好驅動程序比Volta更為成熟所致,亦或許是Volta通過單獨的INT單元處理這些運算。

DeepBench推理測試之RNN和Sparse GEMM

DeepBench的最後一項推理測試是RNN和Sparse GEMM,雖然測試中可以選擇FP16,但實際上它們都只支持FP32運算。

雖然RNN可能會有加速,但DeepBench和NVIDIA目前僅支持單精度RNN推理。

NVIDIA Caffe2測試之ResNet50和ImageNet

雖然內核和深度學習數學運算可能很有用,但實際應用中是使用真實數據集進行訓練的。使用標準的ILSVRC 2012圖片集,在ImageNet上通過ResNet50模型來訓練和推斷,可以展示更具參考的性能數據。

雖然FP16和Tensor Core有單獨的開關,但Titan V在啟用和禁用Tensor Core的情況下運行FP16的性能是完全一樣的。


只看原始吞吐量性能的話,Titan V在所有批尺寸下都處於領先地位。憑藉Tensor Core,Titan V可處理的批尺寸達到甚至超過了64,而其他顯卡即便有12 GB顯存也無法與之相比。

不過只看原始吞吐量性能的問題在於,深度學習的實際性能從來沒有這麼簡單。首先,許多模型可能會犧牲精度和訓練時間以換取針對吞吐量的優化,如果模型需要較長的時間來收斂,那麼每秒訓練的峰值性能就沒有參考意義了。

這些問題與使用FP16存儲和Tensor Core的Volta尤為相關,如果在實際應用中使用了有損縮放或單精度批量歸一化,這在吞吐量性能中都是無法體現的。

HPE DLBS Caffe2測試之ResNet50和ImageNet

接下來,我們看一下深度學習指南中的HPE DLBS。與通常的深度學習測試不同,HPE DLBS基本上只輸出吞吐量和時間指標。

HPE DLBS的一大特色是支持NVIDIA Caffe2測試使用的數據集,我們同樣可以在ImageNet上使用ResNet50模型來訓練和推斷。但是由於二者的模型和實現不同,測出的吞吐量性能無法與NVIDIA Caffe2直接進行比較。

在測試中,Titan V無法支持某些特定的批尺寸,但總體趨勢和之前的測試基本相同,FP16和Tensor Core提供了更高的吞吐量。不過遺憾的是,HPE DLBS Caffe2測試似乎不支持INT8推理。

HPE DLBS TensorRT測試之ResNet50和ImageNet

HPE DLBS的另一大特色是支持TensorRT(NVIDIA推理優化引擎)的基準測試功能, NVIDIA近年來已將TensorRT與新的深度學習功能(如INT8/DP4A和Tensor Core的16位累加器模式)相結合以進行推理。

使用Caffe模型,TensorRT可以根據需要調整模型,以便在給定的精度下進行推理。我們在Titan X(Maxwell)和Titan Xp(Pascal)上運行了64、512和1024的批尺寸,在Titan V運行了128、256和640的批尺寸。

Titan Xp的高INT8性能在一定程度上印證了GEMM/卷積性能,這兩個工作負載似乎都在使用DP4A。不過雷鋒網並未了解到DP4A如何在Titan V上實現,只知道它由Volta指令集提供支持,且Volta確實擁有獨立的INT32單元。

DAWNBench測試之CIFAR10圖像分類

就實際應用的性能而言,深度學習訓練更適合用時間/準確性和成本來描述,而這兩點分別對應DAWNBench的兩項子測試。對於使用CIFAR10的圖像分類來說,這兩項子測試為:

時間/準確性:訓練CIFAR10數據集的圖像分類模型,報告訓練所需的時間,且要求測試集準確性至少為94%。

成本:在公共雲基礎架構上,計算達到94%或更高的測試集準確性所需的總時間,將所花費的時間(以小時為單位)乘以每小時實例的成本,以獲得訓練模型的總成本。

測試選用PyTorch的CIFAR10訓練實現中最快的兩個,其中一個基於ResNet34,是為了在NVIDIA GeForce GTX 1080 Ti上運行,而第二個基於ResNet18,是為了在單個Tesla V100上運行。這些都是DAWNBench中最近的熱門測試,可以認為它們是相當符合現代的項目,同時CIFAR10也不是一個非常密集的數據集。

CIFAR10的小型圖像數據集運行良好,第一個訓練實現是在單個GTX 1080 Ti上運行,需要35分37秒才能訓練到94%的準確性,而在第二個訓練實現中,Titan V只用了5分41秒就完成了94%的目標。

順帶一提,雖然Titan V在第一個訓練實現中不會使用Tensor Core,但憑藉相對於Pascal的一般改進,Titan V在這個測試中的速度依然比Titan Xp快20%左右,同時系統峰值功耗也下降了大約80W。

結語

Tensor Core是Titan V的重要組成部分,本文的目的也是儘可能的了解Volta,所以測試着重考察了Tensor Core加速。

本次測試還有許多沒有涉及到的各種其他測試和套件,它們普遍在設計上有太多欠缺。事實證明,無論從整體還是局部來看,都不可能找到一個負載貼合當下實際、提供端到端指標、覆蓋多個機器學習域、支持Tensor Core和混合精度,最重要的是易於非專業開發者使用的深度學習套件。

即便是參考價值較大的DAWNBench,設計本意也並非提供一個通用的基準,而是為方便研究者和開發者創建他們自己的實現。DAWNBench的深度學習框架仍然需要修改以作為一款有效的基準測試使用,但重新配置一個與Volta兼容的混合精度模型就不是一件可以輕鬆完成的事情。

這實際上與Titan V自身相關,Tensor Core和混合精度需要專門的開發來適配支持,只能在特定情況下明顯提升性能。且即便用戶的代碼和數據集可以與Tensor Core良好的匹配,到頭來神經網絡處理也會受到來自傳統ALU的限制。

而對於主流消費者群體來說,Tensor Core的發展對他們意味着什麼?最新的Turing架構證明,Tensor Core在遊戲卡領域同樣可以有所應用。雷鋒網曾在NVIDIA RTX 2080Ti/2080/2070發佈時報道過,RTX光線追蹤技術就是使用Tensor Core對圖像進行降噪以彌補光線數量的限制。NVIDIA唯一需要考慮的問題是,這些玩家是否樂意為這些Tensor Core買單。

對於任何考慮購買Titan V以滿足計算需求的人來說,投資Titan V就意味着投資混合精度深度學習模型和基於WMMA的HPC GEMM加速。在cuDNN、cuBLAS以及早期DP4A和FP16*2混合精度計算的背景下,Tensor Core是試圖用可編程硬件來實現深度學習加速的一種自然進化。

可以肯定的是,Titan V絕對代表了NVIDIA對未來GPGPU的願望。

via:Anandtech


想在手機閱讀更多電玩遊戲資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems