.精品久久久麻豆国产精品,а√天堂网www在线中文,国产成人欧美一区二区三区,疯狂的欧美乱大交另类,99热都是精品久久久久久

Jul 30, 2020

高考放榜抽獎|不止GPU!這些硬件也影響著深度學習訓練速度

今天起,全國各地將陸續(xù)進入高考“放榜”時間。將近兩周的等待后,考生們終于盼到了成績出爐。寬泛科技祝所有考生都能得償所愿,在2020年秋季,去到理想的院校,開啟嶄新的征程。有志于投身人工智能研究的青年,在關注計算機專業(yè)選擇時,也不妨先了解一下影響深度學習訓練速度的種種因素。?計算機科學與技術學科高校排名(點擊查看)

本文實驗數(shù)據(jù)來源:知乎@Justin ho


工程師之于計算機就相當于賽車手對待跑車一樣,必須十分熟悉它的每一個部件,明白各自的用途,然后在每一次調(diào)參當中充分發(fā)揮各部分的潛力,最終才能爆發(fā)出最大的性能。本次分享以圖像任務訓練為例,將從CPU、內(nèi)存、硬盤、GPU這些方面對算法性能的影響進行逐一分析,配合相應的實驗,給出相應的優(yōu)化建議。


數(shù)據(jù)流動路徑


假設我們現(xiàn)在有一批圖片集放在硬盤當中,待讀取進內(nèi)存送入GPU運算,那么一般會經(jīng)歷以下流程:


  1. CPU發(fā)出讀取指令,從硬盤中找到圖片數(shù)據(jù),并存到內(nèi)存中;

  2. CPU從內(nèi)存中取出一批數(shù)據(jù),轉化為numpy array,并作數(shù)據(jù)預處理/增強操作,如翻轉、平移、顏色變換等。處理完畢后送回內(nèi)存。

  3. CPU內(nèi)存(后面簡稱內(nèi)存)和GPU內(nèi)存(后面簡稱顯存)各開辟一塊緩沖區(qū),內(nèi)存中的一個batch的數(shù)據(jù)通過PCIe通道傳輸?shù)斤@存當中。

  4. GPU核心從顯存中獲取數(shù)據(jù)進行并行計算,計算結果返回至顯存中。

  5. 計算好的結果將從顯存經(jīng)過PCIe通道返回到內(nèi)存。


這5個步驟涉及到幾個影響數(shù)據(jù)傳輸速度的環(huán)節(jié):


  1. 硬盤讀取速度;

  2. PCIe傳輸速度;

  3. 內(nèi)存讀寫速度;

  4. cpu頻率。


我們首先來說說硬盤。


硬盤



在深度學習模型進行訓練前,往往需要從本地硬盤讀取數(shù)據(jù)到內(nèi)存,并做一些預處理,硬盤讀取速度會極大影響訓練的效率。如果讀取速度快,送進GPU的數(shù)據(jù)多,GPU的利用率就越高。當然提高數(shù)據(jù)傳送效率除了有硬件的部分也有軟件的部分,我們先來討論硬件方面的影響。而目前市售硬盤有機械硬盤和固態(tài)硬盤兩種,固態(tài)硬盤根據(jù)接口分為sata、M.2 NVME、PCIe三種。我們使用Kaggle著名數(shù)據(jù)集dogs_cats_redux,從兩個硬盤中分別測試數(shù)據(jù)讀取的速度。



從代碼里面可以看到,先用opencv讀取圖片,然后統(tǒng)一進行resize到(224, 224)的操作,固態(tài)硬盤的讀取速度差不多是機械硬盤的7倍!


PCIe


內(nèi)存中的數(shù)據(jù)通過PCIe總線傳輸?shù)紾PU顯存當中,如果是單顯卡的機器,大部分都能工作在PCIe 3.0 x16帶寬下,此時的帶寬為15.754GB/s。PCIe各代速率對比如下圖,來自百度百科



當一個batch的數(shù)據(jù)(假設tensor shape: (32, 224, 224, 3))通過PCIe (3.0 x16)傳輸至GPU時,理論上所需時間為:2.44ms。(float 32的tensor的size為32×224×224×3×8≈0.0385GB)。


但目前市售的桌面級cpu(以英特爾酷睿系列的i7 cpu為例),CPU直連的PCIe通道一般只有16條,如果插了雙GPU,那么只能工作在PCIe 3.0 x8帶寬上(如果你的主板支持的話),那么理論延遲時間加倍。因此一般多卡機器如4卡、8卡、10卡,均最低使用雙路工作站或服務器級別的CPU,如英特爾至強系列,此系列單U最低都能提供40條PCIe總線。


但這些延遲時間相比起GPU計算、IO等這些時間來說,其實影響甚微,加上還有軟件層面的速度優(yōu)化,這個延遲可以忽略不計,因此裝機時不必太多糾結于PCIe通道數(shù)上。


CPU頻率


沒錯!CPU頻率也會對數(shù)據(jù)讀取速度有影響,這跟市面上大多裝機分享所說的不同,但實驗證明頻率也對讀取速度有比較大的影響。


測試條件:


CPU i7-8700k是可超頻的u,因此通過Bios的超頻設置,分別設置為2.5GHz、3.0GHz、3.5GHz、4.7GHz四個不同的頻率,分別測試OpenCv讀取12500張狗狗圖的速度,結果對比如下:


實際上,由于所有數(shù)據(jù)預處理的操作都在CPU上執(zhí)行,因此CPU頻率越高,生成圖片的速度就越快,這樣的差距也在情理之中。當機器擁有多顯卡時,CPU喂數(shù)據(jù)的速度可能會成為整個系統(tǒng)的瓶頸。


內(nèi)存頻率


我們來測試一下在不同內(nèi)存頻率下,OpenCv讀圖的速度。內(nèi)存頻率分別設為2133MHz、2400MHz、2666MHz、3000MHz。



可以看到,這幾個內(nèi)存頻率下,讀取速度幾乎沒差別,其實內(nèi)存的帶寬相對來說已經(jīng)足夠大,真正的短板在于硬盤。這里附上維基百科給出的內(nèi)存頻率-帶寬對比表格:


從表中看出,即使內(nèi)存頻率低至1866MHz,帶寬已經(jīng)達到15GB/s,已經(jīng)接近PCIe 3.0 x16的帶寬(15.75GB/s),也就是說內(nèi)存?zhèn)鬏敂?shù)據(jù)到顯存的時候也能跑滿PCIe 3.0 x16的帶寬,因此內(nèi)存帶寬遠遠不是瓶頸。


GPU


有錢就買最貴的就對了(誤)。目前市面上許多深度學習裝機教程已經(jīng)對顯卡的選擇作了非常細致的解釋,這里就不作推薦什么價位買什么顯卡的重復勞動了,這里聊聊顯卡的幾項指標(如非特別說明,本文提到的顯卡一律指Nvidia的顯卡,目前幾乎沒人用AMD顯卡做深度學習,或許未來有)。


  • CUDA核心數(shù)


CUDA核心數(shù)基本確定了一張顯卡的算力,當前服務器級別的Tesla V100顯卡擁有高達5120個cuda核心;工作站級別最強的RTX 8000顯卡以及TITAN系列最強的RTX TITAN,CUDA數(shù)為4608個;而當前桌面級別最強的RTX2080ti,擁有4352個CUDA核心。核心數(shù)越多意味著執(zhí)行并行計算的量就更多。詳細的顯卡規(guī)格對比可以參考維基百科:List of Nvidia graphics processing units


  • 內(nèi)存顆粒


最新幾代的顯存顆粒類型分別有GDDR5X(1080ti)、GDDR6(2080ti)、HBM、HBM2(V100),對應的帶寬如下表:



HBM2顯存的帶寬已經(jīng)高達256GB/s,Nvidia目前把這種顯存只用在最高端的顯卡上,而AMD這邊則已經(jīng)應用到桌面級顯卡。(英偉達官方宣傳其V100的HBM2顯存擁有900GB/s的帶寬,應該是擁有多個channel的結果)


  • TensorCore


TensorCore最早出現(xiàn)在Nvidia的Volta架構,用于加速深度學習經(jīng)常需要的矩陣運算。當使用TensorCore時,我們需要從以往的單精度運算(float32)轉換成為混合精度(float16+float32)計算,而TensorCore正是能加速這些混合精度運算。所謂“混合精度-mix precision”,如下圖,假設A和B是FP16精度的矩陣,矩陣相乘后再和一個FP16或者FP32精度的矩陣相加,會得到一個FP16或者FP32的矩陣(取決于你相加的矩陣是什么精度)。



由FP32轉換成FP16計算,能夠減少一半的顯存使用量,運算時的吞吐量大大增加。實際上,擁有640個tensorcore的V100,吞吐量是P100的12倍(詳見Nvidia的TensorCore介紹文檔)。

  • Nvidia的TensorCore介紹文檔 鏈接:

    https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf


我們來看看幾款顯卡的TensorCore數(shù)量:



在桌面級顯卡中,2080ti擁有最多的544個TensorCore,而RTX Titan則有576個TensorCore。


  • 浮點算力


浮點算力是最能反映顯卡性能的指標,對于深度學習來說,單精度(float32)的運算最常見,因此最受關注的是float32的算力。而近來混合精度計算越來越受歡迎,float16的算力也越來越重要。至于int8一般用在要求極端速度的推理任務上。而float64一般在HPC應用中常用,所以基本可以忽略這一項。我們來看看幾款Volta、Turing架構的顯卡詳細參數(shù)表:


數(shù)據(jù)來自英偉達官網(wǎng)和GPU-L


當前單精度和半精度浮點算力最高的是RTX Titan,而算力緊追其后的是Tesla V100和Titan V,但這兩款的核心數(shù)和顯存均是最高。更大的顯存意味著每次輸入數(shù)據(jù)的batch size可以更大,以及在GAN應用中可以生成更大分辨率的圖片。如果用于高精度的科學計算,Tesla V100和Titan V是最佳選擇。如果要考慮性價比,那無疑是2080ti最佳。


為什么服務器級別的Tesla卡在算力上與桌面級、工作站級的顯卡相差無幾,價格卻差這么大呢?除了上面的雙精度算力最高之外,筆者認為還有以下因素——Nvlink、Nvswitch。


  • Nvlink


Nvlink是英偉達在2014年推出的GPU互聯(lián)技術,由于以往的多卡環(huán)境中,GPU與其它GPU通信的時候,必須先通過PCIe把數(shù)據(jù)傳輸?shù)紺PU,再由CPU傳輸?shù)狡渌麲PU,整體計算速度受限于PCIe的速度(要知道HBM2顯存的帶寬已經(jīng)達到了900GB/s),PCIe 3.0 x 16雙向帶寬最多只有30GB/s。Nvlink的出現(xiàn)正是為了解決這個問題,看看下面Nvlink的說明圖:



先看左圖,有了Nvlink,GPU與GPU之間的通信不需要再通過CPU,直接通過Nvlink通信,雙向帶寬高達100GB/s(nvlink 2.0)。右圖是單服務器雙路CPU及8路GPU的架構,兩個CPU分別對應4個GPU,當其中一組GPU需要向另一組GPU進行通信時,以往同樣只能先通過PCIe傳輸?shù)紺PU,然后再通過QPI通道(帶寬為25.6GB/s)傳輸?shù)搅硪粋€CPU,最后再通過PCIe送進另一組GPU。而Nvlink支持跨CPU節(jié)點的直接通信,V100每個GPU有6條Nvlink通道,總帶寬高達300GB/s。


但從上圖可以看到,即使每個GPU擁有6條Nvlink通道,仍然無法做到“全連接”(即任意兩個GPU之間存在雙向通道)。這就引出了下一個更加瘋狂的技術:Nvswitch。


  • Nvswitch


Nvidia官網(wǎng)介紹視頻的這兩張圖很好地介紹了兩者之間的區(qū)別。下圖一個主板上的8塊GPU通過6塊Nvswitch芯片與另一塊主板上的任意一塊GPU進行通信,使得8對GPU能夠同時以300GB/s的速度進行通信,實現(xiàn)16個GPU全連接。除此之外,Nvswitch還能使得整個服務器作為一塊擁有0.5TB顯存、2PetaFLOPS算力的“大顯卡”使用。


PS:2080ti雖然也能使用Nvlink,但速度被砍了一刀。


選擇困難,無從下手?


專業(yè)深度學習解決方案,就在這!省心又高效


寬泛科技旗下Cloudhin?云軒支持Deep learning和高性能計算服務器定制,針對主要深度學習框架(如TensorFlow、Caffe 2、Theano或Torch)進行了優(yōu)化和設置,在桌面上即可提供強大的深度學習功能。



WS4123深度學習工作站搭載9代8核16線程Intel Core i9處理器,核芯迭代,動力強勁。可選雙路Nvidia Tesla GPU,基于Volta架構,增加與深度學習高度相關的Tensor單元,單個GPU即可提供高達100個CPU的性能。輕松應對如云計算、數(shù)據(jù)分析、后期制作、技術計算等多任務處理。



專業(yè)勤修,銳意進取。云軒技術工程師畢業(yè)于NVIDIA深度學習研究所,豐富經(jīng)驗,值得信賴。更多定制方案請聯(lián)系客服,我們將實時響應您的定制需求。



高考放榜,祝學子高中!


今天起,全國各地進入高考“放榜”時間。據(jù)官方已公布的信息,高考查分時間主要集中在23至26日。


寬泛科技祝莘莘學子皆能得償所愿考上心儀大學!


參與紅包抽獎:

1.公眾號后臺回復關鍵詞“福利”,掃碼進入抽獎頁面。

2.本次活動隨機抽取75人,截止7月24日18:00開獎。

3.獲獎紅包可于小程序主頁-去提現(xiàn)按鈕,點擊提現(xiàn)。





聯(lián)系我們


如果您有合作需求或?qū)氋F建議,歡迎來信。

郵箱:hezuo@kuanfans.com

合作熱線:400-610-1360轉375899