GPU:大數據算力時代,英偉達的王者逆襲之路

在大數據時代算力為王,英偉達提前站在了風口上,逆風變順風局逆襲成為王者(股價20倍漲幅)。


--------------------分割線---------------

1. 什麼是GPU,和CPU的區別:

2. GPU應用場景以及未來形態:

3. 對我們有什麼用;

1. GPU的前世今生:

GPU即圖形處理器(代表公司NVIDIA),主要是處理和圖像相關的數據。

CPU和GPU的區別,是由於其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理。這些都使得CPU的內部結構異常複雜。而GPU面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純淨的計算環境。


GPU:大數據算力時代,英偉達的王者逆襲之路


GPU的誕生是依賴於CPU的。

任何一臺計算機,也包括智能手機,遊戲機等有計算能力的設備,都有一個計算的核心芯片就是CPU(Central Processing Unit),它負責所有的計算,並且控制計算機的全部工作。CPU代表公司Intel。

CPU的性能從上個世紀60年代中期開始,幾乎按照每18個月翻一番的速度在進步(摩爾定律),從1965年至今,差不多翻了34次了,也就是說計算速度提高了160億倍。如果再把這個進步分解一下,又可以分成兩個維度,一個是主頻的提高,另一個是集成電路芯片密度(稱為集成度)的提高。主頻提高後,本來一秒鐘算10萬個週期,現在可以算30億個,增加了幾萬倍。密度提高後,本來幾個週期完成一次計算任務,現在可以流水作業、分工合作,一個週期完成好幾次計算。兩者的加速是疊加的,使得今天計算機的速度變得飛快。但是,CPU的主頻不可能無限制提高,因為光速是一個絕對的瓶頸,今天計算機CPU內部,電子運動的速度已經接近光速所給的極限了,幾乎沒有了再提高的可能性,事實上從10年前開始,這條路就走不通了。

英特爾公司的辦法是,將計算機CPU的集成度進一步提高,最早一個集成電路中只有幾千個晶體管,今天最多的有60億個,這樣計算可以並行開展,這也是為什麼我們計算機和手機CPU有什麼四核、八核之說。那麼接下來,為什麼不能做成16核、32核甚至100核呢?因為以今天的工藝,做到那麼多核處理器的體積要大得不得了,僅僅散熱問題就沒法解決。就像在工作中,人多不一定力量大,人力達到一定數量溝通協調的就是關鍵瓶頸,這時效率不升反降。

面對這個問題怎麼辦呢?英特爾的態度是沒法解決,多買一些處理器,多建造一些服務器進行堆疊,再把計算中心修得大一點就好了(簡單粗暴)。在很多場合也沒有條件這麼做,比如在無人駕駛汽車中,放不下這麼大的服務器。

英偉達的創始人黃仁勳在想CPU的計算速度之所以不夠快,是因為它被設計成能夠適應所有的計算了,裡面很多晶體管都用來搭建控制電路了。另外,因為計算太複雜,因此處理器本身設計得太複雜。而在計算機裡面,有一種計算相對單一,就是控制顯示器的圖形計算。

對此,英偉達提出一種所謂的“統一計算架構”(CUDA)的概念,就是很多很多核都做同一件事情,並且在此基礎上設計出圖形處理器GPU。有了GPU,即圖形處理器,很多重複一致的計算就可以並行了。


GPU:大數據算力時代,英偉達的王者逆襲之路


GPU比CPU相比好處有兩個:

第一,控制電路簡單了,因此更多的晶體管用於了計算,而不是控制,這樣本來10億個晶體管可以搭建四個內核,還有希望搭建八個、十六個甚至更多。

第二,將單個兒單個兒的計算,變成一批一批的計算。在現實生活中,大部分的計算每次都是在兩個數之間進行的,比如A+B=C,它是一個運算指令(“+”)帶上兩個數字(“A”和“B”),下一次做X-Y,是另一個運算指令(“-”)帶上另外兩個數字(“X”和“Y”)。因此計算機處理器實際上是按照一個指令通道(流)對應一個數據通道設計的(被稱為SISD)。

舉個例子,一般的計算就如同你蹲在地上一個個地撿豆子。而圖形計算是整個一條線(在計算機科學裡被稱為向量)按照同一種操作一口氣算完A1+B1=C1,A2+B2=C2...最後A1000+B1000=C1000,對於這些計算來講,指令都是一樣的,只是使用不同的數據而已,因此它可以設計出非常多的功能簡單的計算核心,然後對一條指令開發很多數據通道(即所謂的SIMD)即可。

這就相當於用一個吸塵器在地上吸豆子,你走過一條線,就吸起一大堆,效率就高多了。

GPU的工作大部分就是這樣,計算量大,但沒什麼技術含量,而且要重複很多很多次。就像你有個工作需要算幾億次一百以內加減乘除一樣,最好的辦法就是僱上幾十個小學生一起算,一人算一部分,反正這些計算也沒什麼技術含量,純粹體力活而已。而CPU就像博士生積分微分都會算,缺點就是工資高(一個博士生工資頂二十個小學生),你要是工廠老闆你僱哪個?

GPU的設計邏輯是用很多簡單的計算單元去完成大量的計算任務,純粹的人海戰術。這種策略基於一個前提,就是小學生A和小學生B的工作沒有什麼依賴性,是互相獨立的。很多涉及到大量計算的問題基本都有這種特性,比如你說的破解密碼,挖礦和很多圖形學的計算。這些計算可以分解為多個相同的簡單小任務,每個任務就可以分給一個小學生去做(體力活)。但還有一些任務涉及到“流”的問題。比如去相親,雙方看著順眼才能繼續發展。總不能這邊還沒見面呢,那邊找人把證都給領了。這種比較複雜的問題都是CPU來做的(用腦子)。芯片業界對各家的評價如下:

總結一下,GPU能幹的活CPU也能幹,只不過此時用CPU就像大炮打蚊子,大材小用。正所謂術業有專攻,殺雞焉用牛刀。


GPU:大數據算力時代,英偉達的王者逆襲之路


2. 應用範圍以及未來形態:

現在當下一下流行的應用場景:

數字礦機:簡單的說就是比特幣礦機,國內的數字貨幣龍頭企業比特大陸招了很多人專門搞GPU芯片,就是為了最大限度提升芯片挖礦的效率。目前比特大陸手裡的礦機已經佔據了全球一半多的算力(可惜在港股沒上市成功)。

密碼破解,例如需要窮舉法進行暴力破解的場景,牽扯到大量的並行計算,這時用GPU就能體現算力的優勢。

超級計算:國內建設了幾個超級計算機中心(例如位於廣州的銀河系列),應對一些需要快速計算的場景,例如航天參數的校正,需要在短時間內算出結果,因為火箭的飛行速度太快了,慢1s就能造成很大的距離偏差,因此這種計算速度都是要求在ms級別的。

圖像識別:例如在公安行業,通過前端的攝像頭拍攝到犯罪嫌疑人的照片,然後上傳到圖片數據庫裡面進行查找匹配圖片,這時需要快速的識別計算結果。有利於快速確定其位置,採取抓捕措施。視頻監控廠商在這個領域深耕多年,比如海康和大華。


GPU:大數據算力時代,英偉達的王者逆襲之路


GPU未來的形態是什麼樣的?

GPU最早是針對圖形計算設計的,但是後來英偉達發現機器學習的算法也可以用這種方式實現,於是到了2016年,英偉達又針對機器學習的特點,設計了針對機器學習的GPU

,它最新的P40處理器內部有多達3000個所謂“統一計算架構”的內核。雖然每一個能力都比不上英特爾四核處理器中的一個內核,但是P40等GPU的內核數量非常多,因此做人工智能計算就非常快。例如特斯拉搞的輔助駕駛,一片這樣的處理器就能解決所有的問題。

在AlphaGo對陣李世石的比賽中,就是用了176個英偉達的GPU,承擔了主要的計算功能。但是畢竟機器學習中的向量計算和通用的向量計算還是有所不同,能否讓計算的內核功能再專一一點,只做和一種非常特定的機器學習算法(即Google的人工神經網絡算法)相關的向量計算呢?

在圍棋比賽中戰勝柯潔的Google AlphaGo的技術,它的核心硬件TPU(Tensor Processing Unit)。AlphaGo棋下得好的一個重要原因是採用了Google自己開發的一種新的計算機處理器TPU,簡單地講這是一種只適合人工智能計算的專用處理器。

於是,Google提出了一種張量(Tensor)計算的概念。所謂張量,它原本是一個數學概念,表示各種向量或者數值之間的關係。比如你的兩張照片是兩個不同的向量,它們之間的一些相似性就是一個張量。

人工神經網絡的算法可以看成是張量的計算。

Google就在英偉達等公司GPU的基礎上,進一步讓計算變得專注,設計了一種僅僅針對特定張量計算的處理器,叫做TPU,其中T就代表張量(Tensor)。Google宣稱,一個TPU對AlphaGo這樣的任務,效率抵得上15-30個英偉達的GPU。其實TPU和GPU誰更好,完全要看做什麼事情了。

3. 對個人而言有什麼用?

可能有用的地方在於以後買電腦的時候,可以根據自己的需求(玩遊戲還是學習編程)選擇CPU和GPU各有側重的型號,不要再當小白被商家忽悠

從技術的角度來看,從CPU到GPU,再到TPU,效率提升的根本原因在於兩個字——專注,相比之下,手機和電腦的CPU是非常“不專注”的。

在實際生活中,情況和計算機處理器其實很相似。在工業革命時代開始後,英國工廠主把分工做得特別細,於是效率大增。舉個例子,即使是製作縫衣服針這件事,當分工很細緻後,一個工人一天能生產上千根,如果一個工人做所有的工序,一天恐怕連10根都做不了。因此,英國工業革命後,就把整個歐洲的加工業碾壓了。這其實就好比TPU和CPU的關係。

但是,TPU的使用有一個前提,就是這種芯片的市場至少要有上百萬片,否則就不值得做,因為它做一個樣片的成本就得上百萬美元,而設計成本則是上千萬。如果市場需求量只有幾萬片,還不如用很多CPU來工作呢。這就如同製作縫衣服針,一年僅歐洲恐怕要用到上億根,才值得做社會分工。如果只用三五十根,還不如讓幾個工人慢慢磨呢!因此,分工和專注的前提都是市場規模足夠大。

對於個人而言,工作的技能什麼時候需要專而精,什麼時候需要廣博,其實沒有一定之規,但是一個很好的判斷標準就是市場是否大到需要非常專而精。以手術為例,很多手術非常常見,比如今天激光矯正視力的手術,它就值得一個醫生一輩子把這一件事情做好,一個有1000例手術經驗的醫生通常要比一個只做了10例的好很多,由於市場足夠大,他做好這件事可以吃一輩子。但是很多手術一輩子也見不到兩次,一個醫院為此專門準備一個醫生,效率就太低了。一項技能,如果應用的場景特別多,就值得做精做深,因為這樣足夠吃一輩子。相反,如果使用的場合比較少,就不值得花時間,不如把自己培養得廣博些。

這也是目前大公司裡面流程存在的原因,每個人只要專注於自己的領域,整體的工作效率就能大大提升。但是在小公司裡面流程這條路就走不通了。因為大公司面向的行業空間足以支撐整個流程的運轉,但是對個人職業生涯而言利弊就不好說了.


分享到:


相關文章: