前一段時間我看到有文章說現在很多AI計算改用GPU而不是CPU。為什麼這麼做呢?GPU一般不只是用來做顯卡的么?


問題本身提問的角度有些偏。計算力和數據吞吐量是平台的兩個主要指標,雲計算是分散式計算,可以由大量CPU構成計算平台,而強項是數據量多,但數據相關不大。GPU多半是數據不大、但計算量超大的情況下最好的選擇。

可是,目前AI計算,應該說是深度學習,其要求計算能力和數據量都很大,這樣雲計算不一定合適,特別是數據相關性也大。比如谷歌早期的深度學習平台DistBelief,其速度不如兩塊GPU卡。

當然將GPU放入雲計算,這是最早Amazon先做的,很遺憾谷歌開始不贊成,覺得雲計算不需要GPU。直到深度學習非常普及之後,Tensorflow出現,谷歌搞出來TPU,還是不想用GPU。

深度學習最適合的不是CPU也不是GPU,而是定製的晶元。人工智慧呢,AI晶元也不少提,大多數是對深度學習模型的訓練和推理進行加速而言。如果是以前的演算法,比如數據量大而計算相對輕的,還有數據相關性低的,雲計算的平台就能夠升任,多核的伺服器也不會差多少,不需要GPU都可以。

一點拙見,僅供參考。


CPU(中央處理器)和GPU(圖像處理器)都是為了完成計算任務而設計的。

兩者的區別在於存在於片內的緩存體系和數字邏輯運算單元的結構差異:

CPU雖然有多核,但總數沒有超過兩位數,每個核都有足夠大的緩存和足夠多的數字和邏輯運算單元,並輔助有很多加速分支判斷甚至更複雜的邏輯判斷的硬體。

GPU的核數遠超CPU,被稱為眾核(NVIDIA Fermi有512個核)。每個核擁有的緩存大小相對小,數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱於CPU)。

從結果上導致CPU擅長處理具有複雜計算步驟和複雜數據依賴的計算任務,而GPU適合對大量數據進行並行的簡單計算。

看看這個視頻,NVIDIA真是好一波嘲諷。。。

GPU對CPU的嘲諷深度學習 花書 AI聖經京東¥ 119.00去購買?


我們拿CPU和GPU進行比較

? Nvidia曾經有一個非常直觀的科普視頻(原視頻地址:https://www.youtube.com/watch?reload=9v=-P28LKWTzrIfeature=emb_titleab_channel=NVIDIA),這裡搬運了過來。

Mythbusters Demo GPU versus CPURedflashing的視頻 · 472 播放

? 正如某些科普文章提到過,GPU之所以快的原因是因為高效的並行計算,對矩陣乘法和卷積具有極大的計算優勢。但鮮有對其進行解釋,其真正的原因是在於內存帶寬,但不一定是並行計算。

? 首先,CPU是延遲優化的,而GPU是帶寬優化的。通常我們會打這樣的比方。把CPU比作一輛法拉利,而GPU則為貨運卡車。兩者的任務是從任意位置A取貨,並將這些貨物運輸到另一個任意位置B。CPU(法拉利)可以在RAM中快速獲取一些內存數據(貨物),而GPU(貨運卡車)執行速度較慢(延遲更高)。然而CPU(法拉利)需要來回多次運輸完成工作([公式])然而GPU(貨運卡車)則可以一次獲取更多內存數據進行運輸[公式]

? 換句話說,CPU更傾向於快速處理少量數據(例如算術運算:[公式]),而GPU更擅長處理大量數據(例如矩陣運算:[公式]),最好的CPU內存帶寬大約50GB/s?,而常見的GPU(RTX2060)內存帶寬為336GB/s(RTX3090的GDDR6X顯存更是高達912GB/s-1006GB/s)。因此,計算操作需要的內存空間越大,GPU優勢就越顯著。但是,在GPU的情況下,最大的問題在於延遲對性能的影響。結合CPU的低延遲和GPU的高帶寬可以有效隱藏延遲充分發揮互補優勢。但對於深度學習的典型任務場景,數據一般佔用大塊連續的內存空間,GPU可以提供最佳的內存帶寬,並且線程並行帶來的延遲幾乎不會造成影響。

? 除此之外,GPU還存在其他優勢。除了第一步數據從主存(RAM)上提取到L1緩存和寄存器的性能優勢。第二步雖然對性能不太重要,但依舊會增加GPU的領先優勢。通常來說與執行單元(指的是CPU的核心或者GPU的流處理器)的距離越近,則訪問速度越快,其中寄存器和L1緩存與CPU距離最近。GPU的優勢在於:GPU為每個處理單元(流處理器或者SM)均配備了一些寄存器,而GPU成百上千個處理單元就使得寄存器總的數量非常多(為CPU的30倍,高達14MB)且速度達到80TB/s。相比之下,CPU的寄存器大小通常為64-128KB,運行速度為10-20TB/s。當然以上的比較在數值上會有欠缺,並且CPU寄存器和GPU寄存器並不相同。兩者的大小和速度的差異是主要關鍵點。

? 最後一點GPU的優勢在於:大量且快速的寄存器和L1緩存的易於編程性,使得GPU非常適合用於深度學習。這一點就不展開細說了,具體可以Nvidia官方參考資料

參考文檔

  • Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning
  • Why are GPUs well-suited to deep learning?
  • What is a GPU and do you need one in Deep Learning?


GPU採用的是並行計算處理技術,能夠極大緩解計算層面的瓶頸,讓深度學習成為實用的演算法,NVIDIA在做CUDA架構的時候就預測到超級計算機極大的潛力,CUDA為GPU在深度學習領域鋪路,GPU大規模並行計算架構恰好符合深度學習的需要,而在GPU的強大計算能力的支持下,深度學習的演算法得以突破,可以在短時間內高效能的得到數據結果。


GPU適用於數據並行的任務, CPU適用於邏輯型串列任務。 而當前所謂的人工智慧,基於神經網路的,恰恰適合數據並行。 借用知友舉過的類似例子: 有一百萬道小學數學題和4道微積分待解決, 現在GPU就如同有一萬個小學生同時做題,CPU如同有4個大學生同時做題,小學生雖然不會微積分,但一百萬道題還是so easy的,給大學生做這任務量就懵逼了。


推薦閱讀:
相关文章