用NVIDIA A100 GPUs提高計算機視覺


NVIDIA A100 GPUs提高計算機視覺

Improving Computer Vision with NVIDIA A100 GPUs

2020年英偉達GPU技術會議的主題演講中,英偉達創始人兼首席執行官黃延森介紹了基於英偉達安培GPU架構的新英偉達A100 GPU。             

在這篇文章中,我們詳細介紹了A100的令人興奮的新特性,這些特性使NVIDIA GPU成為計算機視覺工作負載的一個更好的動力。我們還展示了NVIDIA最近的兩個CV研究項目:語義分割的層次多尺度注意和Bi3D:通過二元分類的立體深度估計,並展示了它們如何受益於A100。              NVIDIA A100是有史以來最大的7nm芯片,由54B晶體管、40gb的HBM2 GPU存儲器和1.5tb/s的GPU存儲器帶寬組成。A100為深度學習(DL)訓練提供了高達624 TF的FP16算術吞吐量,為DL推理提供了多達1248個INT8算術吞吐量的TOP。在高水平上,英偉達A100配備了一套令人興奮的新功能:             

多實例GPU(MIG)允許將A100 Tensor-Core GPU安全地划分為多達七個單獨的GPU實例,用於CUDA應用程序             

使用TensorFloat 32(TF32)指令加速FP32數據處理的第三代張量核             

第三代NVLink的互連速度是PCIe gen 4的10倍             

對於CV工作負載,與V100上的一個視頻解碼器相比,A100中的視頻解碼器數量急劇增加到5個。它還包括五個新的硬件JPEG解碼器引擎和新的改進硬件光流。             

要深入了解NVIDIA安培體系結構,請參閱NVIDIA安培體系結構深度和A100白皮書。

CV research at NVIDIA

CVPR 2020年,NVIDIA的研究人員發表了15篇研究論文。在這篇文章中,我們展示了英偉達最近的兩個研究項目:              

分層多尺度注意在語義分割中的應用             

NVIDIA A100 Tensor核心GPU體系結構

Hierarchical Multi-Scale Attention for Semantic Segmentation

在自動駕駛、醫學成像甚至變焦虛擬背景中,有一項重要的技術是常用的:語義分割。這是將圖像中的像素標記為屬於N個類(N是任意數量的類)之一的過程,其中類可以是汽車、道路、人或樹等。對於醫學圖像,類對應於不同的器官或解剖結構。             

NVIDIA是一種應用廣泛的語義分割技術。我們還認為,改進語義分割的技術也可能有助於改進許多其他密集預測任務,如光流預測(預測物體運動)、圖像超分辨率等。             

多尺度推理是提高語義分割效果的常用方法。多個圖像尺度通過一個網絡,然后將結果與平均值或最大池相結合。             

在分層多尺度注意語義分割中,提出了一種基於注意的多尺度預測方法。我們表明,在一定尺度下的預測能夠更好地解決某些失效模式,並且網絡學會在這種情況下支持這些尺度,以便生成更好的預測。我們的注意機制是分層的,這使得它的訓練內存效率比其他最近的方法高出大約4倍。除了加快訓練速度之外,這還允許我們訓練更大的作物尺寸,從而提高模型精度。             

我們在兩個數據集:城市景觀和地圖景觀上展示了我們的方法的結果。對於具有許多弱標記圖像的城市景觀,我們還利用自動標記來提高泛化能力。使用這種方法,我們在地圖(61.1 IOU val)和城市景觀(85.1 IOU測試)中都獲得了最新的結果。

Bi3D: Stereo Depth Estimation via Binary Classifications

基於立體的深度估計是計算機視覺的基石,最先進的方法可以提供精確的結果。有些應用,如自主導航,並不總是需要厘米級的精確深度,但有嚴格的延遲要求。             

事實上,深度估計所需的准確度、延遲和感興趣的范圍因手頭的任務而異。例如,高速公路行駛需要在極低的延遲下進行更長的測量范圍,但可以處理粗略量化的深度。更重要的是在毫秒內探測到一個大約80米的障礙物,而不是在10毫秒后發現它正好在81.2米之外。另一方面,平行停車不需要非常快的結果,但對誤差的容忍度要低得多。因此,需要一種靈活的立體深度估計方法,以便在推斷時進行權衡。             

Bi3D為這個問題提供了一個解決方案。給定一個嚴格的時間預算,Bi3D可以在短短幾毫秒內檢測到比給定距離更近的物體(圖1(b))。這種二進制深度以極低的延遲產生1位信息。將多個深度的二進制決策組合起來,可以使用任意粗略量化(圖1(c))來估計深度,並且復雜性與量化級別的數量成線性關系。Bi3D還可以使用量化級別的預算來獲得特定深度范圍內的連續(高質量深度)(圖1(d))。對於標准立體聲(即,整個范圍內的連續深度,圖1(e)),Bi3D接近或等同於最先進的微調立體聲方法。

Figure 1. Given the plane at depth D, overlaid on the left image (a), Bi3D can estimate a binary depth in just a few milliseconds (b). It can estimate a quantized depth with arbitrary quantization, and complexity linear with the number of levels (c). It can also produce continuous depth either for the full range (e), or for a selective range of interest while detecting out of range objects (d).

該方法的核心是Bi3DNet,它以左圖像和右圖像以及候選視差d{i}作為輸入(圖2)。輸出是一個二進制分割概率圖,它將范圍分割為兩個:大於或小於d{i}的差異。即使測試一個視差d{i}也會告訴您任何像素處的視差是否小於或大於d{i}。通過測試多個這樣的差異,您可以估計像素從前到后的轉換深度,即該像素的深度。有關更多信息,請參閱NVlabs/Bi3D GitHub repo。

Figure 2. Bi3DNet takes as input the stereo image pair and a candidate disparity d_{i}to segment the left image into two: disparities that are larger or smaller than d_{i}. The first module, FeatNet, extracts features from the left and right images. SegNet, a 2D encoder-decoder architecture with skip connections, takes as input the left image features and the right image features shifted by disparity d_{i}. It generates a binary segmentation probability map that we further refine with the help of the input left image using the SegRefine module.

A100 training results

在本節中,我們將討論語義分割和Bi3D網絡的訓練性能:

·       TF32: speeding up FP32 effortlessly

·       Automatic mixed precision training

TF32: Speeding up FP32 effortlessly

安培第三代張量核支持一種新的數學模式:TF32。TF32是一種混合格式,用於以更高的效率處理FP32的工作。具體地說,由於使用了8位指數,TF32使用與FP16相同的10位尾數來確保精度,同時與FP32具有相同的范圍。通過在精度和效率之間取得平衡,與Volta GPU上的單精度浮點數學(FP32)相比,A100 GPU上運行在Tensor核上的TF32可以提供高達10倍的吞吐量。             

在安培張量核上,TF32是所有DL工作負載的默認數學模式,而不是Volta/Turing gpu上的FP32。在內部,當在TF32模式下工作時,安培張量磁芯接受兩個FP32矩陣作為輸入,但在內部執行TF32中的矩陣乘法。結果被添加到FP32累加器中。             

要在A100上使用TF32,請像通常使用FP32數據類型那樣編寫和運行代碼。其余的由DL框架自動處理。從20.06版開始,TensorFlow、Pythorch和MXNet的NVIDIA DL框架容器支持A100上的TF32,可以從NVIDIA NGC免費下載。             

在圖3中,我們展示了訓練多尺度注意語義分割網絡和Bi3D網絡時的吞吐量,其中V100上有FP32,A100上有TF32。在沒有任何代碼更改的情況下,TF32分別提供了1.6倍和1.4倍的加速。

 Figure 3. Training throughput of TF32 on A100-40GB vs. FP32 on V100-32GB GPU. Semantic segmentation: batch size 2 on Cityscapes dataset. Bi3D: batch size 8 on SceneFlow dataset. Numbers in parentheses denotes average time for processing 1 training batch. Bars represent speedup factor vs. FP32 on V100-32GB GPU. The higher, the better.

Automatic mixed precision training

TF32旨在將NVIDIA Tensor核心技術的處理能力帶到所有DL工作負載中,而無需開發人員進行任何代碼更改。             

然而,對於那些希望解鎖最高吞吐量的更精明的研究人員來說,混合精度訓練仍然是最有效的選擇,它主要使用FP16,但在必要時也使用FP32數據類型。             

NVIDIA gpu上的自動混合精度(AMP)培訓可以很容易地啟用,無需更改代碼(使用NVIDIA NGC TensorFlow容器時)或只需幾行額外代碼。在FP16模式下工作時,安培張量磁芯接受FP16矩陣,並累積在FP32矩陣中。安培的FP16模式提供的吞吐量是TF32的兩倍。             

4顯示了在V100和A100上以混合精度訓練多尺度注意語義分割網絡和Bi3D網絡時的吞吐量。A100上的AMP與V100 32 GB GPU上的AMP相比,速度分別提高了1.6倍和1.4倍。

Figure 4. AMP training throughput on A100 vs. V100-32GB GPUs. Semantic segmentation: batch size 4 on Cityscapes dataset. Bi3D: batch size 8 on SceneFlow dataset. Numbers in parentheses denotes average time for processing one training batch. Bars represent speedup factor vs. mixed precision training on V100-32GB GPU. The higher, the better.

Multi-instance GPU for training

多實例GPU(MIG)將單個NVIDIA A100 GPU划分為多達七個獨立的GPU實例。它們同時運行,每個都有自己的內存、緩存和流式多處理器(SM)。這使得A100 GPU能夠以比以前的GPU高7倍的利用率提供有保證的服務質量(QoS)。             

對於多尺度注意力語義分割和Bi3D網絡訓練等繁重的訓練工作,可以創建兩個所謂的MIG 3g.20gb實例,每個實例都有20gb的GPU內存和42sms。這使得兩位研究人員可以獨立進行研究,而不必擔心在內存和計算方面相互干擾。              

在本節中,我們將在配置為2x MIG 3g.20gb實例的A100 GPU上測試兩個並行訓練工作負載。一個用於訓練多尺度注意語義分割網絡,另一個用於Bi3D網絡。             

5顯示,在並行訓練的同時,MIG實例分別為語義分割和Bi3D兩個網絡保持了完整A100的71%和54%的吞吐量。

Figure 5. MIG instances training performance vs. a full A100 GPU. Semantic segmentation: batch size 2 on Cityscapes dataset with AMP. Bi3D: batch size 8 on SceneFlow dataset. Numbers in parentheses denotes average time for processing 1 training batch. Bars represent MIG instance performance as a fraction of a full A100 performance. The higher, the better.

Speeding up the CV input pipeline with NVJPG, NVDEC, and NVIDIA DALI

NVIDIA A100 GPU增加了幾個加速CV輸入管道的功能:

·       NVJPG: Image decoder for DL training

·       NVDEC: Video decoder for DL training

·       NVIDIA Data Loading Library

NVJPG: Image decoder for DL training

A100 GPU增加了一個新的基於硬件的JPEG解碼功能。JPEG解碼的輸入瓶頸是實現圖像DL訓練/推理高吞吐量的根本問題之一。CPU和GPU對JPEG解碼的效率不是很高,這是因為用於處理圖像位的串行操作。此外,如果即使JPEG解碼的一部分在CPU中完成,PCIe也會成為另一個瓶頸。             

A100通過添加硬件JPEG解碼引擎來解決這些問題。A100包括一個五核硬件JPEG解碼引擎,可通過nvJPEG庫訪問。雖然解碼器一次處理五個樣本,但您可以提交任意數量的樣本。批處理由nvJPEG庫在內部處理。盡管如此,我們還是建議在請求中提供具有相似大小和相同色度格式的樣本。這樣,它們被成批地放在一起,從而使每個JPEG解碼器核心的利用率相等,從而獲得最佳性能。

NVDEC: Video decoder for DL training

DL平台中,輸入視頻以行業標准格式壓縮,如H264/HEVC/VP9等。在DL平台上實現高端到端吞吐量的一個重要挑戰是能夠保持輸入視頻解碼性能與訓練/推理性能相匹配。否則,無法利用GPU的完整DL性能。             

A100在這方面有了很大的飛躍,它增加了五個NVDEC(NVIDIA解碼)單元,而在V100中只有一個NVDEC。通過NVIDIA顯示驅動程序管理所有nvdec的負載,現有應用程序可以在不做任何更改的情況下獲得附加解碼功能的好處。             

NVJPG和NVDEC解碼器都是獨立於CUDA核心的,允許加速的數據預處理任務與GPU上的網絡訓練任務並行運行。

NVIDIA Data Loading Library

DALI是一個高度優化的構建塊集合,是一個執行引擎,用於加速DL應用程序輸入數據的預處理。對於DL工作負載的數據預處理直到最近才引起人們的注意,被訓練復雜模型所需的巨大計算資源所掩蓋。因此,預處理任務通常在CPU上運行,這是由於OpenCV或Pillow等庫的簡單性、靈活性和可用性。GPU體系結構和軟件的最新進展顯著提高了DL任務中的GPU吞吐量,因此您可以比處理框架提供的數據更快地訓練模型,從而使GPU缺少數據。             

DALI是我們努力為前面提到的數據管道問題找到可伸縮和可移植解決方案的結果。這個庫可以很容易地集成到不同的DL訓練和推理應用程序中。DALI自動利用A100的JPEG和視頻解碼硬件功能,顯著加快CV輸入管道。             

6顯示了一個典型的類似ResNet50的圖像分類管道。

Figure 6. ResNet50-like image classification pipeline.

7顯示了當使用DALI將解碼從CPU切換到各種基於GPU的方法時,可以預期的性能提升。對不同批量的CPU-libjpeg-turbo解決方案、Volta-CUDA解碼、A100硬件JPEG解碼器、A100雙硬件CUDA解碼器進行了測試。

Figure 7: End-to-end data processing pipeline throughput comparison between CPU, CUDA, A100 hardware-accelerated, and dual CUDA and hardware-accelerated JPEG image decoding for a ResNet50-like image classification model. CPU – Platinum 8168@2GHz 3.7GHz Turbo (Skylake) HT On; NVIDIA V100-16GB GPU with E5-2698 v4@2GHz 3.6GHz Turbo (Broadwell) HT On; NVIDIA A100 GPU with Platinum 8168@2GHz 3.7GHz Turbo (Skylake) HT On; Dataset: training set of ImageNet.

Optical flow accelerator

光流和立體視差是計算機視覺中兩種基本的圖像分析方法。光流測量兩幅圖像之間點的視運動,立體視差測量兩個平行校准相機系統中物體的(逆)深度。如圖8所示。

Figure 8. Illustration of optical flow and stereo disparity.

光流和立體視差被廣泛應用於計算機視覺任務中,包括汽車和機器人導航、電影制作、視頻分析和理解、增強和虛擬現實等。             

光流和立體視差的測量已經研究了幾十年,但是盡管目前的技術有了很大的進步,但它們仍然是一個挑戰性的問題,特別是要以現代相機的像素速率獲得實時、密集的數據,這種速度通常超過50兆像素/秒,而且很容易達到10倍。             

A100包括一個新的改進的光流引擎,它提供了更高的精度,每像素流矢量,和感興趣的區域。該模塊支持4K時高達300fps的光流和立體視差估計,該硬件加速器獨立於CUDA核,能夠高精度、高性能地計算給定幀對之間的光流矢量。可以通過參數選擇來調整質量和性能。             

光流硬件可以使用NVIDIA光流SDK編程,也可以通過DALI和OpenCV訪問,這是一個流行的開源計算機視覺庫,帶有跟蹤算法,可以利用NVIDIA gpu上的光流硬件計算運動矢量。             

已經利用光流SDK的應用程序通過即將到來的驅動程序更新在A100上獲得更高的性能和更高的精度。在即將發布的光流SDK中,將提供利用感興趣區域和每像素流向量等新功能的api。

結論             

新的A100 GPU配備了用於計算機視覺工作負載的新功能:             

用於JPEG和視頻解碼器的專用硬件,以加快數據輸入管道             

新一代光流加速硬件             

提高FP32數據處理速度的新張量核指令             

提高了FP16的吞吐量             

允許更好地共享和隔離工作負載的多實例GPU


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM