英偉達的AI芯片霸主之路!_風聞
半导体行业观察-半导体行业观察官方账号-专注观察全球半导体最新资讯、技术前沿、发展趋势。2019-11-25 11:41
來源:內容由公眾號半導體行業觀察(ID:icbank)原創,謝謝!
隨着人工智能發展如火如荼,我們看到Nvidia的GPU成為了人工智能時代的基礎設施,為人工智能服務提供必不可少的算力。本文為大家回顧Nvidia走上人工智能加速硬件主導者位置的歷程,希望能給大家帶來一些啓示。
Nvidia緣起:PC遊戲時代
Nvidia的誕生還要追溯到多媒體PC機時代。在上世紀90年代,PC機走向了多媒體時代,其中3D遊戲又是多媒體時代最閃耀的明星。為了能加速3D遊戲的運行,圖像處理芯片就成了多媒體PC時代的一種熱門新品類。最初,加速3D遊戲運行在常規的顯示卡之外還需要一張3D加速卡,而3D加速卡的首創者——3dfx也憑藉着其Voodoo系列加速卡成為了當時的3D加速引領者。
看到了3D顯示這個巨大機會的並不只3dfx一家公司。Nvidia於上世紀90年代中成立,公司的目標市場就是顯示市場。1998年,Nvidia推出了TNT系列顯卡,擁有了與3dfx同台競技的資格。之後,3dfx的後幾代顯卡產品存在各種問題,而Nvidia卻在2000年順勢拿出了同時支持3D加速和transformation and lighting (T&L,指一系列圖像處理中需要的座標和光照變幻運算)的GeForce系列顯卡,在性能上大幅領先3dfx,並最終奠定了其遊戲顯卡領域的霸主地位。事實上,在GeForce之前,顯卡並不負責繁重的T&L計算,而必須由CPU來做這些運算;GeForce是第一個用顯卡支持T&L來大幅提升系統性能的顯卡,並且Nvidia認為顯卡支持了之前必須由CPU來完成的工作,因此提出了GPU這個概念。可以説GeForce是Nvidia最重要的產品之一,同時我們也可以從GeForce的誕生看到Nvidia並不是拘泥於產品傳統品類定義的公司,而是會積極地拓寬其產品的應用範圍。這樣的公司基因也直接造就了之後Nvidia在人工智能領域的領先地位。
GPGPU和CUDA:Nvidia最好的一筆投資
在推出GPU之後,Nvidia順利地佔領了遊戲顯卡市場的主導地位。遊戲市場雖然不小,但是其增長天花板也較低。因此,Nvidia也在嘗試各種不同的市場機會。
在2000年左右,學術界對於使用GPU做通用計算(GPGPU)產生了興趣。當時,主要面向執行通用算法的CPU是執行科學計算的主力,但是CPU為了能在通用算法上都有較好的性能,因此很多芯片面積事實上用在了片上內存和分支預測等控制邏輯,而真正用於計算的單元並不多。相反,GPU架構中的控制邏輯較為簡單,絕大多數芯片面積都用於渲染、多邊形等計算。學術界發現,科學運算中的矩陣等計算可以很簡單地映射到GPU的處理單元,因此能實現非常高的計算性能。
當時,GPGPU最主要的瓶頸在於難以使用。由於GPU是面向圖像應用而開發,因此要在其編程模型中支持通用高性能計算並不容易,需要許多手工調試和編碼,因此造成了很高的門檻,能熟練使用的人並不多。另一方面是廠商對於GPGPU應用的態度。事實上,當時GPGPU的研究主要在學術界,在工業界並沒有很多人清楚GPGPU未來能有多少價值,不少公司雖然也有研究GPGPU的團隊,但是大多僅僅是做一些評估和嘗試性的工作,並沒有認真打算大規模應用。
Nvidia對於GPGPU卻是抱着另一種態度。在2006年,Nvidia推出了Tesla架構。在這個架構中,Nvidia一改之前使用矢量計算單元做渲染的做法,而是把一個矢量計算單元拆成了多個標量計算渲染單元,並稱之為“unified shader”。這樣一來,Tesla GPU的渲染單元除了在渲染性能更強之外,也更適合做通用計算了。在2007年,Nvidia順勢推出了CUDA系列編程環境。CUDA是GPGPU領域的一個創舉,通過CUDA可以大大降低用GPU做通用計算的難度,因此大大降低了GPGPU應用的門檻。
究竟是Nvidia之前就策劃要做GPGPU,因此才推出Tesla架構以及CUDA,還是Nvidia在推出Tesla架構之後為了充分發揮其潛力而順便推出CUDA,我們今天不得而知。但是,我們能看到的是,CUDA首先在GPGPU領域引起了很大的反響,因此在第二年有了開源版本的OpenCL來在其他GPU上實現類似的功能;另一方面,我們看到Nvidia在GPU領域最大的競爭對手AMD在當時對於GPGPU並沒有太多動作,以至於一年後的OpenCL事實上是蘋果而非由AMD發起的。在當時,蘋果希望能在各種設備(尤其是移動設備)上充分利用GPU來完成計算,因此發起了OpenCL組織,參與的公司除了蘋果之外還有ARM、AMD、Nvidia等。然而,為了兼容性考量,OpenCL並無法在所有GPU上都實現最優的性能,因此相比於專注於給自家GPU做優化的CUDA來説性能差了一截。AMD在當時並沒有自己提出一個與CUDA爭鋒相對的協議而只是選擇加入OpenCL組織也證明了當時AMD對於GPGPU的觀望態度。
AlexNet + Nvidia GPU引領了人工智能風潮
時間走到了2012年,Nvidia在經過移動市場的失望後,迎來了新的藍海市場。2012年的重要性在於,深度學習開山鼻祖之一的Geoff Hinton的學生Alex Krizhevsky成功訓練出了深度卷積神經網絡AlexNet,並憑藉該網絡在圖像分類識別領域大幅提升了性能(15%的錯誤率,比第二名真正高出了十個絕對百分點),從而成為人工智能的標誌性事件。
在2012年之前,絕大多數圖像分類任務都是使用類似支持矢量機(SVM)這樣的經典算法實現。SVM這樣的算法非常適合應用在數據量較少的應用中。然而,隨着互聯網時代的來臨,人們積累的數據量遠遠大於之前的時代,而在擁有大量數據的情況下,神經網絡就成了理論上更好的選擇。然而,在當時訓練一個深層神經網絡還存在一個挑戰,就是算力問題。使用普通的CPU在ImageNet上訓練一個深度學習網絡需要數年的時間,因此無法實用。而Alex Krizhevsky的創舉在於使用Nvidia GPU成功訓練了一個性能有突破性提升的深度神經網絡,從而開啓了新的人工智能時代。
AlexNet性能的大幅提升使得人工智能在圖像分類等有大量實際應用的場景達到了可用的性能,而Nvidia GPU則伴隨着深度學習模型訓練和推理所需要的大量算力成為了人工智能時代的新基礎設施。這也可以説是Nvidia數年前在GPGPU領域投資所收穫的回報:如果沒有CUDA這樣的高性能GPGPU編程工具,或許AlexNet就無法被訓練出來,而人工智能時代可能就無法被開啓。而在之後,隨着深度學習網絡熱潮的興起,高校和工業界在越來越多的場景使用深度學習——目前在圖像、語音、自然語言處理、推薦系統等大量場景深度學習都已經落地。隨之而來的是對於GPU算力的進一步需求,而Nvidia也是順勢而為,在最近幾年接連推出為了人工智能而優化的GPU以及相關配套軟件資源(用於推理的TensorRT,基於CUDA的高性能深度學習加速庫CuDNN,CuBLAS等等),從而讓自己在人工智能時代的地位更加穩固。反觀AMD,事實上由於AMD一直處於追趕階段,因此遲遲不敢下決心去做一些新的嘗試。當年GPGPU領域AMD投入不足,導致Nvidia的CUDA佔據了先機。在性能上,AMD所依賴的通用OpenCL性能據調查比起CUDA要差30%以上。更關鍵的是AMD的人工智能開發者生態一直做不起來,因為OpenCL性能差且使用不方便,導致使用OpenCL的開發者少,開發者少就更少人能為OpenCL開發方便的接口和共享設計資源,這進一步導致OpenCL開發社區人氣不足,有GPGPU開發需求的開發者都會把Nvidia的CUDA作為其第一選擇。在GPU硬件上,直到Nvidia已經推出專門針對人工智能優化的TensorCore之後,AMD對於要不要在GPU上加入對人工智能的支持仍然遲疑不決,一直到2018年才推出對人工智能的相關支持,因此導致在人工智能領域遠遠落後了。最後必須指出的是,一直以來AMD的思路都是性價比,而人工智能的主要客户卻是對於價格不怎麼敏感的企業客户,因此AMD之前的低價戰術也沒辦法打動這些客户。
Nvidia人工智能的今天和未來
目前,Nvidia已經佔據了人工智能算力領域的主導位置。在數據中心領域,即使有一些初創公司推出訓練和推理加速芯片,但是想要取代Nvidia需要相當長的時間。首先,大規模部署芯片對於產品的可靠性有相當高的需求,而且分佈式系統是一個系統工程,需要芯片在各類指標上(不只是算力,還包括通信,接口帶寬等)都達到優秀的指標,光這一點就需要初創公司相當多的時間去打磨。此外,Nvidia更高的壁壘在於開發者生態,需要開發出一個易用的編程模型和相關編譯器的難度並不亞於設計芯片,而要孵化開發者生態則需要更多的時間。我們認為,至少在未來3-5年內,Nvidia在數據中心的地位難以被撼動。
但這並不意味着Nvidia在人工智能時代就可以高枕無憂。Nvidia 的軟肋仍然在於其移動端——隨着人工智能從雲端逐漸走向邊緣和終端,邊緣和終端類的AI加速芯片或許是其他公司的機會。Nvidia之前推出的終端/邊緣類產品並不算特別領先或成功,例如Jetson系列終端GPU的能效比並不領先,芯片架構也是沿用數年前的設計。我們認為,AI加速在終端的市場份額可能會佔據總體AI芯片市場不小的份額,如果Nvidia無法抓住終端AI市場,那麼其最終在整個AI市場的份額可能會被侷限在雲端數據中心。