色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

NVIDIA Tensor Core深度學習核心解析及跑分測試

dKBf_eetop_1 ? 來源:未知 ? 作者:李倩 ? 2018-09-22 08:12 ? 次閱讀

核心解析

不久前,NVIDIA在SIGGRAPH 2018上正式發布了新一代GPU架構——Turing(圖靈),黃仁勛稱Turing架構是自2006年CUDA GPU發明以來最大的飛躍。

Turing架構的兩大重要特性便是集成了用于光線追蹤的RT Core以及用于AI計算的Tensor Core,使其成為了全球首款支持實時光線追蹤的GPU。

不過說到AI計算,NVIDIA GPU成為最好的加速器早已是公認的事實,但將Tensor Core印上GPU名片的并不是這次的Turing,而是他的上任前輩——Volta。

基于Volta架構的Titan V是NVIDIA在計算領域成就的集大成者。深度學習神經網絡已成為NVIDIA GPU的背后驅動力,作為最先進的計算加速器,它集成了用于機器學習操作的內置硬件和軟件加速,深度學習能力完全可以被當做Titan V和Volta的名片。

Titan V與初代基于開普勒的GeForce GTX Titan已經相去甚遠,初代Titan的定位是一款萬能顯卡,既可作為游戲發燒友的旗艦游戲顯卡,也為專業消費者提供全雙精度浮點(FP64)計算能力。

在Titan V誕生之前,Titan產品線幾乎都是基于這種設計方法,一顆巨大的GPU核心是NVIDIA“高大全”設計思路的最好代表。

而在Titan V上,NVIDIA再次擴展了大核心的上限。Volta最引人注目的則是其全新的專用處理模塊——Tensor Core(張量計算核心),它與Volta的其他微架構改進,以及支持深度學習和高性能計算(HPC)的軟件/框架集成在一起。

憑借面積達815mm?的巨大GV100核心,Titan這一產品線變得比以往任何時候都更接近工作站級,Titan V在擁有世界最強圖形渲染性能的同時,深度學習和高性能計算方面的性能都有了極大的提升,當然它的價格也達到了工作站級的3000美元。

強化算力,重造Titan

除了深度學習和通用計算之外,Titan品牌的這次迭代還涉及到其他一些因素。 NVIDIA其實已經不太需要通過Titan系列為自己樹立形象,最初的GTX Titan已經通過NVIDIA K20Xs為Oak Ridge國家實驗室的Titan超級計算機提供計算力。況且,Titan系列在產品價格和性能方面也沒有任何特別的競爭壓力。

盡管Titan V的非ECC HBM2顯存和GeForce驅動程序堆棧都更加面向消費者,但該卡仍可直接受益于框架和API的軟件支持,這是NVIDIA深度學習開發整體工作的一部分。

鑒于單路Titan V并不會對服務器計算卡Quadro GV100產生什么影響,NVIDIA在Titan V上只砍掉了針對服務器多路互聯設計的NVLink高速總線,而主要的計算能力(FP64/FP16/Tensor Core)都被完整保留。

與Pascal及更早期的產品均使用面向PC設計的GPU以及常規GDDR5(x)顯存不同,NVIDIA這次選擇了一顆規模巨大、產量和良品率都不高的服務器級芯片,有大量的晶體管被花費在了非圖形功能上(即Tensor Core),這是NVIDIA在計算領域押下的賭注,NVIDIA已經不滿足于只在傳統圖形計算卡和通用計算方面處于領先地位。

由于是首次分析GPU的深度學習性能,所以目前市面上還沒有確定一套標準的基準測試,特別是對于Volta獨特的張量內核和混合精度功能。對于Titan V,我們將使用百度DeepBench、NVIDIA的Caffe2 Docker、Stanford DAWNBench和HPE深度學習基準套件(DLBS)來測試。

但是在深入研究這些測試數據之前,雷鋒網首先會就深度學習、GPU、Volta微架構以及深度學習性能基準進行一些背景介紹。

GPU與深度學習

首先要說明的是,雖然“機器學習”或更通用的“AI”有時可互換用于“深度學習”,但從技術上講,它們各自指的是不同的東西,機器學習是AI的子集,深度學習則是機器學習的子集。

深度學習是因“深度神經網絡”(Deep Neural Networks)而得名,其最終被設計為識別數據中的模式,產生相關預測,接收關于預測準確度的反饋,然后基于反饋進行自我調整。計算發生在“節點”上,“節點”被組織成“層”:原始輸入數據首先由“輸入層”處理,“輸出層”推出代表模型預測的數據。兩者之間的任何一層都被稱為“隱藏層”,而“deep”則代表著深度神經網絡有許多隱藏層。

這些隱藏層可以在不斷增加的抽象層次上運行,使得它們甚至可以從復雜的輸入數據中提取和區分非線性特征。一個標準的例子是圖像識別,其中初始層尋找某些邊緣或形狀,這通知后面的層尋找鼻子和眼睛,之后的層可能尋找面部。最后的圖層組合了所有這些數據以進行分類。

隨著輸入數據在模型中向前推進,計算包括特殊的內部參數(權重),最后會產生一個表示模型預測與正確值之間誤差的損失函數。然后使用此錯誤信息反向運行模型以計算將改善模型預測的權重調整,該前向和后向傳遞(或反向傳播)序列包括單個訓練迭代。

為了進行推斷,這個過程自然地排除了逆向傳遞,最終需要的計算強度比訓練模型更小。從這個意義上說,推斷也不太需要像FP32這樣高的精度,并且可以對模型進行適當的修剪和優化,以便在特定的設備上部署。然而推斷設備對延遲、成本和功耗變得更加敏感,尤其是在邊緣計算的場景下。

卷積神經網絡(CNN)和遞歸神經網絡(RNN)是深度神經網絡的兩個重要子類型。卷積本身是一種操作,將輸入數據和卷積核結合起來形成某種特征映射,轉換或過濾原始數據以提取特征。

CNN通常是“前饋”的,因為數據在沒有循環的情況下流過各層。而對于RNN(以及像LSTM和GRU這樣的變體)來講,每次計算后都會有一個單獨的權重循環回自身,給網絡一種“記憶”感,這讓網絡能夠做出有時間意識的預測,在文本分析等場景中很有用。

由于深度學習數學可以歸結為線性代數,因此某些操作可以重寫為對GPU更友好的矩陣間乘法。當NVIDIA首次開發并公布cuDNN時,其中一個重要實現就是將算法降級為矩陣乘法以加速卷積。多年來cuDNN的發展包括“預先計算的隱式GEMM”卷積算法,它恰好是觸發Tensor Core卷積加速的唯一算法。

NVIDIA GPU的優勢

對于深度學習訓練來說,GPU已經成為加速器的最佳選擇。大多數計算本質上是并行的浮點計算,即大量的矩陣乘法,其最佳性能需要大量的內存帶寬和大小,這些需求與HPC的需求非常一致,GPU正好可以提供高精度浮點計算、大量VRAM和并行計算能力,NVIDIA的CUDA可謂恰逢其時。

CUDA和NVIDIA的計算業務的發展與機器學習的研究進展相吻合,機器學習在2006年左右才重新成為“深度學習”。GPU加速神經網絡模型相比CPU可提供數量級的加速,反過來又將深度學習重新推廣到如今的流行詞匯。與此同時,NVIDIA的圖形競爭對手ATI在2006年被AMD收購;OpenCL 1.0在2009年才發布,同年AMD剝離了他們的GlobalFoundries晶圓廠。

隨著DL的研究人員和學者們成功地使用CUDA來更快地訓練神經網絡模型,NVIDIA才發布了他們的cuDNN庫的優化深度學習原語,其中有很多以HPC為中心的BLAS(基本線性代數子例程)和相應的cuBLAS先例,cuDNN將研究人員創建和優化CUDA代碼以提高DL性能的需求抽象出來。至于AMD的同類產品MIOpen,去年才在ROCm保護傘下發布,目前也只在Caffe公開發布。

所以從這個意義上講,盡管NVIDIA和AMD的底層硬件都適合DL加速,但NVIDIA GPU最終成為了深度學習的參考實現。

剖析Tensor Core

在關于Volta混合精度Tensor Core的幾個謎團中,一個比較煩人的問題是4 x 4矩陣乘法的能力。Tensor Core是一種新型處理核心,它執行一種專門的矩陣數學運算,適用于深度學習和某些類型的HPC。Tensor Core執行融合乘法加法,其中兩個4*4 FP16矩陣相乘,然后將結果添加到4*4 FP16或FP32矩陣中,最終輸出新的4*4 FP16或FP32矩陣。

NVIDIA將Tensor Core進行的這種運算稱為混合精度數學,因為輸入矩陣的精度為半精度,但乘積可以達到完全精度。碰巧的是,Tensor Core所做的這種運算在深度學習訓練和推理中很常見。

Tensor Core雖然在GPU里是全新的運算單元,但其實它與標準的ALU流水線并沒有太大差別,只不過Tensor Core處理的是大型矩陣運算,而不是簡單地單指令流多數據流標量運算。Tensor Core是靈活性和吞吐量權衡的選擇,它在執行標量運算時的表現很糟糕,但它可以將更多的操作打包到同一個芯片區域。

Tensor Core雖然有一定的可編程性,但仍然停留在4*4矩陣乘法累加層面上,并且不清楚累積步驟是如何以及何時發生的。盡管被描述為進行4*4矩陣數學運算,但實際上Tensor Core運算似乎總是使用16*16矩陣,并且操作一次跨兩個Tensor Core進行處理。這似乎與Volta架構中的其他變化有關,更具體地說,與這些Tensor Core是如何集成進SM中有關。

對于Volta架構,SM被劃分為四個處理塊或子核。對于每個子核,調度器每個時鐘向本地分支單元(BRU)、Tensor Core陣列、數學分派單元或共享MIO單元發出一個warp指令,這就首先阻止了Tensor運算和其他數學運算同時進行。在利用兩個Tensor Core時,warp調度器直接發出矩陣乘法運算,并且在從寄存器接收輸入矩陣之后,執行4*4*4矩陣乘法。待完成矩陣乘法后,Tensor Core再將得到的矩陣寫回寄存器。

在Tensor Core執行實際指令時,即使在使用NVVM IR(LLVM)的編譯器級別上,也僅存在用于warp級矩陣操作的本征,對于CUDA++和PTX ISA,warp級別仍然是唯一級別。加載輸入矩陣的形式是每個扭曲線程持有一個片段,其分布和身份均未指定。從廣義上講,它遵循標準CUDA核心的基于線程級別拼接的GEMM計算的相同模式。

一般而言,給定A*B+C Tensor Core操作,片段由A的8個FP16*2元素(即16個FP16元素)和B的另外8個FP16*2元素,以及FP16累加器的4個FP16*2元素或 FP32累加器的8個FP32元素組成。

在矩陣乘法累加運算之后,計算結果會分散在每個線程的目標寄存器片段中,需要在整個范圍內統一,如果其中一個warp線程退出,這些低級操作基本上就會失敗。

Citadel LLC團隊的低級微基準測試揭示了許多Volta微體系結構細節,包括Tensor Core操作和相關的片段,與輸入矩陣相比,它們都位于寄存器和標識中。他們觀察到,子核核心以特定的拼接模式計算矩陣乘法,其中所有32個warp線程都在運行。

從概念上講,Tensor Core在4*4子矩陣上運行,以計算更大的16*16矩陣。warp線程被分成8組,每組4個線程,每個線程組連續計算一個8*4塊,總共要經過4組的過程,每一個線程組都處理了目標矩陣的1/8。

在一個集合中,可以并行完成四個HMMA步驟,每個步驟適用于4*2子塊。這四個線程直接鏈接到寄存器中的那些矩陣值,因此線程組可以處理單個Step 0 HMMA指令,從而一次性計算子塊。

由于矩陣乘法在數學上需要對某些行列進行復用,以允許跨所有8*4塊并行執行,每個4*4矩陣被映射到兩個線程的寄存器。在計算16*16父矩陣的4*4次子矩陣運算中,這將包括將連續計算的集合相加,形成16*16矩陣中4*8個元素的相應塊。盡管Citadel沒有對FP16進行測試,但它們發現FP16 HMMA指令只產生2個步驟,而不是4個步驟,這或許與FP16只占用的較小的寄存器空間有關。

通過獨立的線程調度和執行,以及warp同步和warp-wide結果分配,基本的4*4*4 Tensor Core操作轉換為半可編程16*16*16混合精度矩陣乘法累加。雖然CUDA 9.1支持32*8*16 and 8*32*16矩陣,但相乘的矩陣都需要相應的列和行為16,最終矩陣為32*8或8*32。

Tensor Core的運行方式似乎是NVIDIA GEMM計算層次結構的一個硬件實現的步驟,如CUTLASS(用于GEMM操作的CUDA C ++模板庫)中所示。對于傳統的CUDA核心,最后一步需要將warp tile結構分解為由各個線程擁有的標量和向量元素。使用WMMA API(現在表示張量核),所有這些都被抽象掉了,只剩下了需要處理的合作矩陣片段加載/存儲和多重積累。積累發生在一個FMA類型的操作中。

在寄存器級別上,NVIDIA在他們的Hot Chips 2017論文中提到“使用三個相對較小的乘法和累加器數據的4*4矩陣,可以執行64次乘加運算。”而增強的Volta SIMT模型的每線程程序計數器(能夠支持張量核)通常需要每個線程2個寄存器槽。HMMA指令本身會盡可能多復用寄存器,所以我無法想象寄存器在大多數情況下不會出現瓶頸。

對于獨立的4*4矩陣乘法累加,Tensor Core陣列在寄存器、數據路徑和調度方面很有核能并沒有物理設計,它只能用于特定的子矩陣乘法。

無論如何,從NVIDIA的角度來看,Volta不是一顆深度學習的專用ASIC,它仍然覆蓋GPGPU的領域,因此保持CUDA可編程Tensor Core適用于GEMM / cuBLAS和HPC是合乎邏輯的。對于CUDA c++的CUTLASS來說,情況更是如此,因為它的WMMA API支持旨在為廣泛的應用程序啟用Tensor CoreGEMM操作。從根本上說,NVIDIA深度學習硬件加速的發展與cuDNN(以及cuBLAS)的發展有很大關系。

讓FP16適用于深度學習

Volta的深度學習能力是建立在利用半精度浮點(IEEE-754 FP16)而非單精度浮點(FP32)進行深度學習訓練的基礎之上。

該能力首先由cuDNN 3支持并在Tegra X1的Maxwell架構中實現,隨后原生半精度計算被引入Pascal架構并被稱為“偽FP16”,即使用FP32 ALUs處理成對的FP16指令,理論上可以使每個時鐘的FP16吞吐量增加一倍。這一特性實際上已經在Tensor Core處理寄存器中矩陣片段的過程中得到體現,其兩個FP16輸入矩陣被收集在8個FP16*2或16個FP16元素中。

就FP32與FP16而言,由于單精度浮點所包含的數據多于半精度浮點,因此計算量更大,需要更多的內存容量和帶寬來容納和傳輸數據,并帶來更大的功耗。因此,在計算中成功使用低精度數據一直是窮人的圣杯,而目標則是那些不需要高精度數據的應用程序。

除了API/編譯器/框架的支持之外,深度學習一直都有在使用FP16數據類型時損失精度的問題,這會讓訓練過程不夠準確,模型無法收斂。

據雷鋒網了解,NVIDIA以前也曾在類似的情況下推出過“混合精度”這一概念,在Pascal的快速FP16(針對GP100)和DP4A/DP2A的整數點積操作(針對GP102、GP104和GP106 GPU)中,就曾提出過類似的說法。

當時人們關注的是推理能力,就像Titan V的“深度學習TFLOPS”一樣,Titan X(Pascal)推出了“44 TOPS(新型深度學習推斷指令)”。新的指令對4元8位向量或2元8位/16位向量執行整數點積,從而得到一個32位整數積,可以與其他32位整數一起累積。

對于Volta的混合精度而言,重要的精度敏感數據(如主權重)仍然會存儲為FP32;而Tensor Core的混合精度訓練則會將兩個半精度輸入矩陣相乘得到一個精度乘積,然后累積成一個精度和。NVIDIA表示,在將結果寫入內存之前,Tensor Core會將結果轉換回半精度,這樣當使用半精度格式時,寄存器和存儲器中需要的數據更少,這有助于處理超大矩陣中的數據。

FP16與FP32所包含的數據空間并不相同,歸一化方法可以解決FP32格式數據超出FP16可表示范圍的問題。舉個例子,許多激活梯度的值都落在FP16的范圍之外,但由于這些值聚集在一起,因此將損耗乘以縮放因子便可以移動FP16范圍內的大部分值。在完成最終的權重更新之前,將梯度重新縮放到原始范圍,便可以維持其原始的精度。

不過,并非所有的數學、神經網絡和層都適用于FP16,通常FP16和Tensor Core的混合精度最適合卷積和RNN重圖像處理等,而對于不適合的神經網絡框架或類型,FP16將默認禁用或不推薦使用。

內存改進,SM變化

使用Tensor Core處理混合精度數據似乎可以減輕內存帶寬問題,但事實證明,盡管Volta在幾乎所有方面都得到了內存子系統的增強,但幅度并不明顯。

首先,Volta有一個12 KB的L0指令緩存,雖然Pascal及其他之前的GPU核心也有指令緩存,但Volta更高效的L0是子核心SM分區私有的,因此它對warp調度器來說也是私有的,這對Volta架構更大的指令大小是一種補償,并有可能為支持Tensor Core通道的框架做出貢獻。同時Volta指令延遲也要低于Pascal,特別是核心FMAs從6個周期減少到了4個周期。

隨著每個SM中調度器比例的增加,砍掉第二個調度端口似乎是對具有獨立數據路徑和數學調度單元的子核心的權衡。而具備FP32/INT32執行能力,也為其他低精度/混合精度模型打開了大門。這些子核方面的增強,都是為了優化Tensor Core陣列。

另一個重大變化是合并L1緩存和共享內存。在同一個塊中,共享內存可配置為每SM 最高96 KB。HBM2控制器也進行了更新,其效率提高了10~15%。

深度學習基準測試

深度學習從框架到模型,再到API和庫,AI硬件的許多部分都是高度定制化的,這樣的新領域有時會讓人非常難以理解。

俗話說“光說不練假把式”,實踐永遠是檢驗真理的唯一標準。對計算機來說,介紹的再詳細也不如真刀真槍跑一下測試,沒有什么比benchmark更能提現硬件的實際表現了。

隨著ImageNet和一些衍生模型(AlexNet、VGGNet、Inception、Resnet等)的影響,ILSVRC2012(ImageNet大規模視覺識別挑戰)中的圖像數據集訓練逐漸被行業所認可。

現在基本上所有深度學習框架都支持CUDA和cuDNN,對于Volta而言,支持FP16存儲的框架也都支持Tensor Core加速,啟用FP16存儲后Tensor Core加速會自動啟用。

在隨后的下篇文章里,我們將通過多項測試來考驗Volta架構,利用各種深度學習框架來了解Tensor Core的性能。

測試篇

本篇將通過多項測試來考驗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在游戲卡領域同樣可以有所應用。RTX光線追蹤技術就是使用Tensor Core對圖像進行降噪以彌補光線數量的限制。NVIDIA唯一需要考慮的問題是,這些玩家是否樂意為這些Tensor Core買單。

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100714
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4729

    瀏覽量

    128890
  • 深度學習
    +關注

    關注

    73

    文章

    5500

    瀏覽量

    121111

原文標題:干貨!NVIDIA Tensor Core深度學習核心解析及跑分測試

文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    總結深度學習,GPU推理性能提升的三大因素

    2017年,英偉達推出了適用于深度學習的Volta架構,它的設計重點之一是可以更好地分攤指令開銷。Volta架構中引入了Tensor Core,用于
    發表于 09-21 10:35 ?3496次閱讀

    NVIDIA火熱招聘深度學習/高性能計算解決方案架構師

    目前NVIDIA在中國熱招解決方案架構師, 該崗位致力于協同客戶經理將NVIDIA最新的深度學習/高性能計算解決方案與技術帶給我們的客戶, 幫助客戶通過實施
    發表于 08-25 17:02

    NVIDIA火熱招聘深度學習 (Deep Learning) 達人

    在此附上NVIDIA深度學習亞太區相關職位的招聘信息,有意向或想查看詳細工作說明的朋友歡迎發送英文簡歷或來信至 allelin@nvidia.com Wechat :hrallenli
    發表于 08-25 17:04

    NVIDIA 招聘 軟件測試篇(深圳、上海)

    NVIDIA企業級產品的驗證,測試2.輔助NVIDIA測試框架的設計,實現3.精通Linux系統及相關指令4.熟悉python,能用python寫自動化
    發表于 03-21 16:09

    Windows 2016核心是否支持Nvidia?

    你好,我們目前在我們的DC中運行4個Nvidia M60刀片。我們的正常設置是Server 2016核心版。這是否支持Nvidia?謝謝。克。馬克斯以上來自于谷歌翻譯以下為原文Hello,We
    發表于 09-28 16:36

    NVIDIA深度學習平臺

    為幫助數據科學家和開發人員充分利用深度學習領域中的機遇,NVIDIA為其深度學習軟件平臺發布了三項重大更新,它們分別是
    發表于 08-06 15:00 ?1947次閱讀

    NVIDIA Volta GPU中內置的Tensor Core GPU架構是NVIDIA深度學習平臺的巨大進步

    Tensor Core所運行的張量應位于存儲器的channel-interleaved型數據布局(數量-高度-寬度-通道數,通常稱為NHWC),以實現最佳性能。訓練框架預期的內存布局是通道主序的數據
    的頭像 發表于 05-21 17:35 ?9210次閱讀
    <b class='flag-5'>NVIDIA</b> Volta GPU中內置的<b class='flag-5'>Tensor</b> <b class='flag-5'>Core</b> GPU架構是<b class='flag-5'>NVIDIA</b><b class='flag-5'>深度</b><b class='flag-5'>學習</b>平臺的巨大進步

    浪潮AI超級服務器AGX-5專為AI深度學習和高性能計算性能擴展設計

    AGX-5專為解決當前AI深度學習和高性能計算的性能擴展難題而設計,單機在8U空間配置16顆目前性能最強的NVIDIA Tesla V100 Tensor
    發表于 11-18 10:30 ?2280次閱讀

    AWS近日宣布將采用NVIDIA T4 Tensor Core GPU,計劃將于未來幾周內推出。

    全新實例搭配AWS Marketplace上的NVIDIA CUDA-X AI 加速軟件,適用于經濟高效的機器學習、深度學習和圖形處理。
    的頭像 發表于 04-03 09:01 ?2871次閱讀

    騰訊云正式發布了基于NVIDIA T4的虛擬GPU計算產品

    基于多精度支持,NVIDIA T4擁有可加速深度學習訓練和推理、機器學習以及數據科學工作負載的 Tensor
    的頭像 發表于 12-13 10:37 ?4195次閱讀

    NVIDIA安培大核心GPU已集合多個國內廠商技術

    NVIDIA今天在GTC大會上宣布,多家中國頂級云服務提供商、系統制造商都部署了NVIDIA A100 Tensor Core GPU、NVIDIA
    的頭像 發表于 12-16 10:21 ?3171次閱讀

    阿里云震旦異構計算加速平臺基于NVIDIA Tensor Core GPU

    阿里云震旦異構計算加速平臺基于NVIDIA Tensor Core GPU,通過機器學習模型的自動優化技術,大幅提升了算子的執行效率,刷新了NVID
    的頭像 發表于 08-13 10:17 ?3667次閱讀

    通過深度學習模型預測轉移性癌癥風險

      實驗在 UT 西南醫學中心生物高性能混凝土集群上進行,并使用CUDA – 加速 NVIDIA V100 Tensor Core GPU。他們在 170 萬個細胞圖像上訓練了多種深度
    的頭像 發表于 04-08 09:39 ?5827次閱讀

    火山引擎機器學習平臺與NVIDIA加深合作

    隨著 AI 在醫療健康和生命科學領域應用的不斷增加,GPU 算力的需求迅猛增長?;鹕揭鏅C器學習平臺在 NVIDIA A100 Tensor Core GPU 的硬件基礎架構之上,基于
    的頭像 發表于 07-05 08:59 ?981次閱讀

    NVIDIA MLPerf Training v2.0性能提供動力的全堆棧優化

      NVIDIA MLPerf v2.0 提交基于經驗證的 A100 Tensor Core GPU 、 NVIDIA DGX A100 系統 以及
    的頭像 發表于 08-15 16:43 ?1287次閱讀
    為<b class='flag-5'>NVIDIA</b> MLPerf Training v2.0性能提供動力的全堆棧優化
    主站蜘蛛池模板: jizzxxxx18中国内地| 超碰在线视频| 国产av免费观看日本| 九九热视频免费观看| 欧美一第一页草草影院| 亚洲AV国产精品无码精| 97欧美精品大香伊蕉在人线| 国产GV无码A片在线观看| 久久91精品国产91| 日韩经典欧美一区二区三区| 亚洲成人中文| 99国产在线精品观看二区| 国产色婷亚洲99精品AV| 欧美精品成人久久网站| 亚洲精品无码久久久久A片 | 国产精品一区二区四区| 麻豆精品国产剧情观看| 亚洲AV无码久久流水呻蜜桃久色| 3D漫画H精品啪啪无码| 国产精品无码人妻99999| 暖暖日本在线手机免费完整版 | 污文啊好棒棒啊好了| 777午夜精品久久AV蜜臀| 国产在线精彩亚洲| 日本午夜精品久久久无码| 制服国产欧美亚洲日韩| 国产精品99久久免费黑人人妻 | 国产午夜电影院| 欧美一区二区三区播放| 优优色影院| 国产偷啪自怕网| 日日摸夜夜添夜夜爽出水| 2021国产精品国产精华| 果冻传媒2021精品在线观看| 日韩亚洲欧美中文在线| 99久久久无码国产精品免费人妻| 灰原哀被啪漫画禁漫| 玩弄放荡人妻一区二区三区| yellow免费观看在线| 毛片999| 一级黄色香蕉视频|