用NVIDIA A100 GPUs提高计算机视觉
用NVIDIA A100 GPUs提高計(jì)算機(jī)視覺(jué)
Improving Computer Vision with NVIDIA A100 GPUs
在2020年英偉達(dá)GPU技術(shù)會(huì)議的主題演講中,英偉達(dá)創(chuàng)始人兼首席執(zhí)行官黃延森介紹了基于英偉達(dá)安培GPU架構(gòu)的新英偉達(dá)A100 GPU。
在這篇文章中,我們?cè)敿?xì)介紹了A100的令人興奮的新特性,這些特性使NVIDIA GPU成為計(jì)算機(jī)視覺(jué)工作負(fù)載的一個(gè)更好的動(dòng)力。我們還展示了NVIDIA最近的兩個(gè)CV研究項(xiàng)目:語(yǔ)義分割的層次多尺度注意和Bi3D:通過(guò)二元分類(lèi)的立體深度估計(jì),并展示了它們?nèi)绾问芤嬗贏100。
NVIDIA A100是有史以來(lái)最大的7nm芯片,由54B晶體管、40gb的HBM2 GPU存儲(chǔ)器和1.5tb/s的GPU存儲(chǔ)器帶寬組成。A100為深度學(xué)習(xí)(DL)訓(xùn)練提供了高達(dá)624 TF的FP16算術(shù)吞吐量,為DL推理提供了多達(dá)1248個(gè)INT8算術(shù)吞吐量的TOP。在高水平上,英偉達(dá)A100配備了一套令人興奮的新功能:
多實(shí)例GPU(MIG)允許將A100 Tensor-Core GPU安全地劃分為多達(dá)七個(gè)單獨(dú)的GPU實(shí)例,用于CUDA應(yīng)用程序
使用TensorFloat 32(TF32)指令加速FP32數(shù)據(jù)處理的第三代張量核
第三代NVLink的互連速度是PCIe gen 4的10倍
對(duì)于CV工作負(fù)載,與V100上的一個(gè)視頻解碼器相比,A100中的視頻解碼器數(shù)量急劇增加到5個(gè)。它還包括五個(gè)新的硬件JPEG解碼器引擎和新的改進(jìn)硬件光流。
要深入了解NVIDIA安培體系結(jié)構(gòu),請(qǐng)參閱NVIDIA安培體系結(jié)構(gòu)深度和A100白皮書(shū)。
CV research at NVIDIA
在CVPR 2020年,NVIDIA的研究人員發(fā)表了15篇研究論文。在這篇文章中,我們展示了英偉達(dá)最近的兩個(gè)研究項(xiàng)目:
分層多尺度注意在語(yǔ)義分割中的應(yīng)用
NVIDIA A100 Tensor核心GPU體系結(jié)構(gòu)
Hierarchical Multi-Scale Attention for Semantic Segmentation
在自動(dòng)駕駛、醫(yī)學(xué)成像甚至變焦虛擬背景中,有一項(xiàng)重要的技術(shù)是常用的:語(yǔ)義分割。這是將圖像中的像素標(biāo)記為屬于N個(gè)類(lèi)(N是任意數(shù)量的類(lèi))之一的過(guò)程,其中類(lèi)可以是汽車(chē)、道路、人或樹(shù)等。對(duì)于醫(yī)學(xué)圖像,類(lèi)對(duì)應(yīng)于不同的器官或解剖結(jié)構(gòu)。
NVIDIA是一種應(yīng)用廣泛的語(yǔ)義分割技術(shù)。我們還認(rèn)為,改進(jìn)語(yǔ)義分割的技術(shù)也可能有助于改進(jìn)許多其他密集預(yù)測(cè)任務(wù),如光流預(yù)測(cè)(預(yù)測(cè)物體運(yùn)動(dòng))、圖像超分辨率等。
多尺度推理是提高語(yǔ)義分割效果的常用方法。多個(gè)圖像尺度通過(guò)一個(gè)網(wǎng)絡(luò),然后將結(jié)果與平均值或最大池相結(jié)合。
在分層多尺度注意語(yǔ)義分割中,提出了一種基于注意的多尺度預(yù)測(cè)方法。我們表明,在一定尺度下的預(yù)測(cè)能夠更好地解決某些失效模式,并且網(wǎng)絡(luò)學(xué)會(huì)在這種情況下支持這些尺度,以便生成更好的預(yù)測(cè)。我們的注意機(jī)制是分層的,這使得它的訓(xùn)練內(nèi)存效率比其他最近的方法高出大約4倍。除了加快訓(xùn)練速度之外,這還允許我們訓(xùn)練更大的作物尺寸,從而提高模型精度。
我們?cè)趦蓚€(gè)數(shù)據(jù)集:城市景觀和地圖景觀上展示了我們的方法的結(jié)果。對(duì)于具有許多弱標(biāo)記圖像的城市景觀,我們還利用自動(dòng)標(biāo)記來(lái)提高泛化能力。使用這種方法,我們?cè)诘貓D(61.1 IOU val)和城市景觀(85.1 IOU測(cè)試)中都獲得了最新的結(jié)果。
Bi3D: Stereo Depth Estimation via Binary Classifications
基于立體的深度估計(jì)是計(jì)算機(jī)視覺(jué)的基石,最先進(jìn)的方法可以提供精確的結(jié)果。有些應(yīng)用,如自主導(dǎo)航,并不總是需要厘米級(jí)的精確深度,但有嚴(yán)格的延遲要求。
事實(shí)上,深度估計(jì)所需的準(zhǔn)確度、延遲和感興趣的范圍因手頭的任務(wù)而異。例如,高速公路行駛需要在極低的延遲下進(jìn)行更長(zhǎng)的測(cè)量范圍,但可以處理粗略量化的深度。更重要的是在毫秒內(nèi)探測(cè)到一個(gè)大約80米的障礙物,而不是在10毫秒后發(fā)現(xiàn)它正好在81.2米之外。另一方面,平行停車(chē)不需要非常快的結(jié)果,但對(duì)誤差的容忍度要低得多。因此,需要一種靈活的立體深度估計(jì)方法,以便在推斷時(shí)進(jìn)行權(quán)衡。
Bi3D為這個(gè)問(wèn)題提供了一個(gè)解決方案。給定一個(gè)嚴(yán)格的時(shí)間預(yù)算,Bi3D可以在短短幾毫秒內(nèi)檢測(cè)到比給定距離更近的物體(圖1(b))。這種二進(jìn)制深度以極低的延遲產(chǎn)生1位信息。將多個(gè)深度的二進(jìn)制決策組合起來(lái),可以使用任意粗略量化(圖1(c))來(lái)估計(jì)深度,并且復(fù)雜性與量化級(jí)別的數(shù)量成線性關(guān)系。Bi3D還可以使用量化級(jí)別的預(yù)算來(lái)獲得特定深度范圍內(nèi)的連續(xù)(高質(zhì)量深度)(圖1(d))。對(duì)于標(biāo)準(zhǔn)立體聲(即,整個(gè)范圍內(nèi)的連續(xù)深度,圖1(e)),Bi3D接近或等同于最先進(jìn)的微調(diào)立體聲方法。
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 ?. 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)。輸出是一個(gè)二進(jìn)制分割概率圖,它將范圍分割為兩個(gè):大于或小于d{i}的差異。即使測(cè)試一個(gè)視差d{i}也會(huì)告訴您任何像素處的視差是否小于或大于d{i}。通過(guò)測(cè)試多個(gè)這樣的差異,您可以估計(jì)像素從前到后的轉(zhuǎn)換深度,即該像素的深度。有關(guān)更多信息,請(qǐng)參閱NVlabs/Bi3D GitHub repo。
Figure 2. Bi3DNet takes as input the stereo image pair and a candidate disparity to segment the left image into two: disparities that are larger or smaller than . 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 . 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
在本節(jié)中,我們將討論語(yǔ)義分割和Bi3D網(wǎng)絡(luò)的訓(xùn)練性能:
· TF32: speeding up FP32 effortlessly
· Automatic mixed precision training
TF32: Speeding up FP32 effortlessly
安培第三代張量核支持一種新的數(shù)學(xué)模式:TF32。TF32是一種混合格式,用于以更高的效率處理FP32的工作。具體地說(shuō),由于使用了8位指數(shù),TF32使用與FP16相同的10位尾數(shù)來(lái)確保精度,同時(shí)與FP32具有相同的范圍。通過(guò)在精度和效率之間取得平衡,與Volta GPU上的單精度浮點(diǎn)數(shù)學(xué)(FP32)相比,A100 GPU上運(yùn)行在Tensor核上的TF32可以提供高達(dá)10倍的吞吐量。
在安培張量核上,TF32是所有DL工作負(fù)載的默認(rèn)數(shù)學(xué)模式,而不是Volta/Turing gpu上的FP32。在內(nèi)部,當(dāng)在TF32模式下工作時(shí),安培張量磁芯接受兩個(gè)FP32矩陣作為輸入,但在內(nèi)部執(zhí)行TF32中的矩陣乘法。結(jié)果被添加到FP32累加器中。
要在A100上使用TF32,請(qǐng)像通常使用FP32數(shù)據(jù)類(lèi)型那樣編寫(xiě)和運(yùn)行代碼。其余的由DL框架自動(dòng)處理。從20.06版開(kāi)始,TensorFlow,ythorch和MXNet的NVIDIA DL框架容器支持A100上的TF32,可以從NVIDIA
NGC免費(fèi)下載。
在圖3中,我們展示了訓(xùn)練多尺度注意語(yǔ)義分割網(wǎng)絡(luò)和Bi3D網(wǎng)絡(luò)時(shí)的吞吐量,其中V100上有FP32,A100上有TF32。在沒(méi)有任何代碼更改的情況下,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核心技術(shù)的處理能力帶到所有DL工作負(fù)載中,而無(wú)需開(kāi)發(fā)人員進(jìn)行任何代碼更改。
然而,對(duì)于那些希望解鎖最高吞吐量的更精明的研究人員來(lái)說(shuō),混合精度訓(xùn)練仍然是最有效的選擇,它主要使用FP16,但在必要時(shí)也使用FP32數(shù)據(jù)類(lèi)型。
NVIDIA gpu上的自動(dòng)混合精度(AMP)培訓(xùn)可以很容易地啟用,無(wú)需更改代碼(使用NVIDIA NGC TensorFlow容器時(shí))或只需幾行額外代碼。在FP16模式下工作時(shí),安培張量磁芯接受FP16矩陣,并累積在FP32矩陣中。安培的FP16模式提供的吞吐量是TF32的兩倍。
圖4顯示了在V100和A100上以混合精度訓(xùn)練多尺度注意語(yǔ)義分割網(wǎng)絡(luò)和Bi3D網(wǎng)絡(luò)時(shí)的吞吐量。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
多實(shí)例GPU(MIG)將單個(gè)NVIDIA A100 GPU劃分為多達(dá)七個(gè)獨(dú)立的GPU實(shí)例。它們同時(shí)運(yùn)行,每個(gè)都有自己的內(nèi)存、緩存和流式多處理器(SM)。這使得A100 GPU能夠以比以前的GPU高7倍的利用率提供有保證的服務(wù)質(zhì)量(QoS)。
對(duì)于多尺度注意力語(yǔ)義分割和Bi3D網(wǎng)絡(luò)訓(xùn)練等繁重的訓(xùn)練工作,可以創(chuàng)建兩個(gè)所謂的MIG 3g.20gb實(shí)例,每個(gè)實(shí)例都有20gb的GPU內(nèi)存和42sms。這使得兩位研究人員可以獨(dú)立進(jìn)行研究,而不必?fù)?dān)心在內(nèi)存和計(jì)算方面相互干擾。
在本節(jié)中,我們將在配置為2x MIG 3g.20gb實(shí)例的A100 GPU上測(cè)試兩個(gè)并行訓(xùn)練工作負(fù)載。一個(gè)用于訓(xùn)練多尺度注意語(yǔ)義分割網(wǎng)絡(luò),另一個(gè)用于Bi3D網(wǎng)絡(luò)。
圖5顯示,在并行訓(xùn)練的同時(shí),MIG實(shí)例分別為語(yǔ)義分割和Bi3D兩個(gè)網(wǎng)絡(luò)保持了完整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增加了幾個(gè)加速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增加了一個(gè)新的基于硬件的JPEG解碼功能。JPEG解碼的輸入瓶頸是實(shí)現(xiàn)圖像DL訓(xùn)練/推理高吞吐量的根本問(wèn)題之一。CPU和GPU對(duì)JPEG解碼的效率不是很高,這是因?yàn)橛糜谔幚韴D像位的串行操作。此外,如果即使JPEG解碼的一部分在CPU中完成,PCIe也會(huì)成為另一個(gè)瓶頸。
A100通過(guò)添加硬件JPEG解碼引擎來(lái)解決這些問(wèn)題。A100包括一個(gè)五核硬件JPEG解碼引擎,可通過(guò)nvJPEG庫(kù)訪問(wèn)。雖然解碼器一次處理五個(gè)樣本,但您可以提交任意數(shù)量的樣本。批處理由nvJPEG庫(kù)在內(nèi)部處理。盡管如此,我們還是建議在請(qǐng)求中提供具有相似大小和相同色度格式的樣本。這樣,它們被成批地放在一起,從而使每個(gè)JPEG解碼器核心的利用率相等,從而獲得最佳性能。
NVDEC: Video decoder for DL training
在DL平臺(tái)中,輸入視頻以行業(yè)標(biāo)準(zhǔn)格式壓縮,如H264/HEVC/VP9等。在DL平臺(tái)上實(shí)現(xiàn)高端到端吞吐量的一個(gè)重要挑戰(zhàn)是能夠保持輸入視頻解碼性能與訓(xùn)練/推理性能相匹配。否則,無(wú)法利用GPU的完整DL性能。
A100在這方面有了很大的飛躍,它增加了五個(gè)NVDEC(NVIDIA解碼)單元,而在V100中只有一個(gè)NVDEC。通過(guò)NVIDIA顯示驅(qū)動(dòng)程序管理所有nvdec的負(fù)載,現(xiàn)有應(yīng)用程序可以在不做任何更改的情況下獲得附加解碼功能的好處。
NVJPG和NVDEC解碼器都是獨(dú)立于CUDA核心的,允許加速的數(shù)據(jù)預(yù)處理任務(wù)與GPU上的網(wǎng)絡(luò)訓(xùn)練任務(wù)并行運(yùn)行。
NVIDIA Data Loading Library
DALI是一個(gè)高度優(yōu)化的構(gòu)建塊集合,是一個(gè)執(zhí)行引擎,用于加速DL應(yīng)用程序輸入數(shù)據(jù)的預(yù)處理。對(duì)于DL工作負(fù)載的數(shù)據(jù)預(yù)處理直到最近才引起人們的注意,被訓(xùn)練復(fù)雜模型所需的巨大計(jì)算資源所掩蓋。因此,預(yù)處理任務(wù)通常在CPU上運(yùn)行,這是由于OpenCV或Pillow等庫(kù)的簡(jiǎn)單性、靈活性和可用性。GPU體系結(jié)構(gòu)和軟件的最新進(jìn)展顯著提高了DL任務(wù)中的GPU吞吐量,因此您可以比處理框架提供的數(shù)據(jù)更快地訓(xùn)練模型,從而使GPU缺少數(shù)據(jù)。
DALI是我們努力為前面提到的數(shù)據(jù)管道問(wèn)題找到可伸縮和可移植解決方案的結(jié)果。這個(gè)庫(kù)可以很容易地集成到不同的DL訓(xùn)練和推理應(yīng)用程序中。DALI自動(dòng)利用A100的JPEG和視頻解碼硬件功能,顯著加快CV輸入管道。
圖6顯示了一個(gè)典型的類(lèi)似ResNet50的圖像分類(lèi)管道。
Figure 6. ResNet50-like image classification pipeline.
圖7顯示了當(dāng)使用DALI將解碼從CPU切換到各種基于GPU的方法時(shí),可以預(yù)期的性能提升。對(duì)不同批量的CPU-libjpeg-turbo解決方案、Volta-CUDA解碼、A100硬件JPEG解碼器、A100雙硬件CUDA解碼器進(jìn)行了測(cè)試。
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
光流和立體視差是計(jì)算機(jī)視覺(jué)中兩種基本的圖像分析方法。光流測(cè)量?jī)煞鶊D像之間點(diǎn)的視運(yùn)動(dòng),立體視差測(cè)量?jī)蓚€(gè)平行校準(zhǔn)相機(jī)系統(tǒng)中物體的(逆)深度。如圖8所示。
Figure 8. Illustration of optical flow and stereo disparity.
光流和立體視差被廣泛應(yīng)用于計(jì)算機(jī)視覺(jué)任務(wù)中,包括汽車(chē)和機(jī)器人導(dǎo)航、電影制作、視頻分析和理解、增強(qiáng)和虛擬現(xiàn)實(shí)等。
光流和立體視差的測(cè)量已經(jīng)研究了幾十年,但是盡管目前的技術(shù)有了很大的進(jìn)步,但它們?nèi)匀皇且粋€(gè)挑戰(zhàn)性的問(wèn)題,特別是要以現(xiàn)代相機(jī)的像素速率獲得實(shí)時(shí)、密集的數(shù)據(jù),這種速度通常超過(guò)50兆像素/秒,而且很容易達(dá)到10倍。
A100包括一個(gè)新的改進(jìn)的光流引擎,它提供了更高的精度,每像素流矢量,和感興趣的區(qū)域。該模塊支持4K時(shí)高達(dá)300fps的光流和立體視差估計(jì),該硬件加速器獨(dú)立于CUDA核,能夠高精度、高性能地計(jì)算給定幀對(duì)之間的光流矢量。可以通過(guò)參數(shù)選擇來(lái)調(diào)整質(zhì)量和性能。
光流硬件可以使用NVIDIA光流SDK編程,也可以通過(guò)DALI和OpenCV訪問(wèn),這是一個(gè)流行的開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù),帶有跟蹤算法,可以利用NVIDIA gpu上的光流硬件計(jì)算運(yùn)動(dòng)矢量。
已經(jīng)利用光流SDK的應(yīng)用程序通過(guò)即將到來(lái)的驅(qū)動(dòng)程序更新在A100上獲得更高的性能和更高的精度。在即將發(fā)布的光流SDK中,將提供利用感興趣區(qū)域和每像素流向量等新功能的api。
結(jié)論
新的A100 GPU配備了用于計(jì)算機(jī)視覺(jué)工作負(fù)載的新功能:
用于JPEG和視頻解碼器的專(zhuān)用硬件,以加快數(shù)據(jù)輸入管道
新一代光流加速硬件
提高FP32數(shù)據(jù)處理速度的新張量核指令
提高了FP16的吞吐量
允許更好地共享和隔離工作負(fù)載的多實(shí)例GPU
總結(jié)
以上是生活随笔為你收集整理的用NVIDIA A100 GPUs提高计算机视觉的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NVIDIA空中导航SDK改造5G通信
- 下一篇: 用Microsoft DirectX光线