目前,,全世界超過90%的數(shù)據(jù)都是在過去的兩三年之內(nèi)產(chǎn)生的,。隨著人工智能,、自動駕駛,、5G、云計算等各種技術(shù)的不斷發(fā)展,,海量數(shù)據(jù)都將會繼續(xù)源源不斷的產(chǎn)生,。預(yù)計到2025年,數(shù)據(jù)總量將比現(xiàn)在增長10倍,。在這些技術(shù)的發(fā)展中,,很大的一部分都基于對大數(shù)據(jù)的研究和分析。正因為如此,,很多人就形象的將數(shù)據(jù)比喻為人工智能時代的石油,。
為了對海量的數(shù)據(jù)進行處理,基于傳統(tǒng)CPU的計算結(jié)構(gòu)已經(jīng)很難滿足需求了,,我們需要更加強大的硬件和芯片,,來更快、更好的完成這些工作,。
此外,,我們也需要更好的方法,比如使用各種人工智能的算法和模型,,來幫助我們進行數(shù)據(jù)的分析和處理,,并得到有意義的結(jié)論。如果把這兩者結(jié)合起來,,就產(chǎn)生了各種各樣的人工智能芯片,。
在這篇文章里,我們來一起看一下關(guān)于人工智能芯片的幾個有意思的事情,。我想討論的重點,,是在實際的工程實踐和應(yīng)用場景里,如何對人工智能加速芯片進行合理的評價和選擇,,以及各種不同的AI芯片的優(yōu)缺點都有哪些,。我會給大家介紹一個簡單的思維框架,幫助大家理解和思考,。
討論:一個前提條件
在開始討論之前,,我們首先要明確一些討論的前提條件,這些對于接下來的分析至關(guān)重要,。很多人常犯的一個邏輯謬誤,,就是在討論問題的時候缺少一個特定的討論范圍,這個英文叫做context,,中文通常翻譯成語境,,或者上下文。
說白了,,這個就是我們在討論問題的時候,,要圈定一個討論的范圍,,大家都在這個圈圈里討論問題。這就像拳擊或者格斗比賽一樣,,要在那個擂臺上比拼,,不能跑到臺下打。否則的話,,就會像老郭和于大爺說的那樣:
你和他講道理,,他和你講法制;
你和他講法制,,他和你講政治,;
你和他講政治,他和你講國情,;
你和他講國情,,他和你講文化;
你和他講文化,,他和你講道理……
同樣的,,對于我們要討論的人工智能芯片,其實有很多不同的應(yīng)用領(lǐng)域,。從這個角度來看,,AI芯片可以分成移動端和服務(wù)器端兩大類,也有很多人把兩類稱為終端和云端,。
事實上,,在這兩類應(yīng)用中,人工智能芯片在設(shè)計要求上有著本質(zhì)區(qū)別,。比如,,移動端更加注重AI芯片的低功耗、低延時,、低成本,,而部署在云端的AI芯片,可能會更加注重算力,、擴展能力,,以及它對現(xiàn)有基礎(chǔ)設(shè)施的兼容性等等。
對于這兩類人工智能芯片,,我們很難直接進行比較,。這就好像一棵大樹,它的樹干負(fù)責(zé)支撐起這顆樹,,并且還能輸送各種營養(yǎng)物質(zhì),。它的樹葉就負(fù)責(zé)進行光合作用,,并生產(chǎn)營養(yǎng)物質(zhì),。但是我們很難比較樹干和樹葉,,究竟誰更有用。
在這篇文章里,,我們要把討論的范圍縮小,,只關(guān)注部署在服務(wù)器端的人工智能芯片的相關(guān)問題。
此外,,我們還需要明確一下具體討論哪些AI芯片,。這篇文章將主要對比四種最常見的芯片:CPU、GPU,、ASIC和FPGA,。其他的一些相對小眾的芯片種類,比如類腦芯片和量子芯片等等,,就不列入討論的范圍了,。
分析:一個思維框架
我們現(xiàn)在明確了討論的領(lǐng)域和對象,也就是部署在服務(wù)器端的四種常見的芯片,,接下來應(yīng)該確定的是,,通過什么樣的方式來衡量這些AI芯片的優(yōu)缺點。
在這里給大家介紹一個我們在工程實踐里經(jīng)常使用的思維框架,。具體來說,,當(dāng)我們考慮在數(shù)據(jù)中心里大量部署AI芯片的時候,通常需要考慮以下幾個重要的因素,。
首先就是算力,,也就是芯片的性能。這里的性能有很多方面,,比如這個芯片做浮點或者定點數(shù)運算的時候,,每秒的運算次數(shù),以及這個芯片的峰值性能和平均性能等等,。
但是,,算力或者性能其實并不是衡量AI芯片好壞的唯一標(biāo)準(zhǔn)。事實上,,在很多時候它甚至不是最重要的標(biāo)準(zhǔn),。那么,還有哪些考慮的因素呢,?
在這個思維框架里,,一共有五個衡量因素。除了性能之外,,還有靈活性,、同構(gòu)性、成本和功耗四點。
其中,,靈活性指的是這個AI芯片對不同應(yīng)用場景的適應(yīng)程度,。也就是說,這個芯片能不能被用于各種不同的AI算法和應(yīng)用,。
同構(gòu)性指的是,,當(dāng)我們大量部署這個AI芯片的時候,我們能否重復(fù)的利用現(xiàn)有的軟硬件架構(gòu)和資源,,還是需要引入其他額外的東西,。舉個簡單的例子,比如我的電腦要外接一個顯示器,,如果這個顯示器的接口是HDMI,,那么就可以直接連。但是如果這個顯示器的接口只有VGA或者DVI或者其他接口,,那么我就要買額外的轉(zhuǎn)接頭才行,。這樣,我們就說這個設(shè)備,,也就是顯示器,,它對我現(xiàn)有系統(tǒng)的同構(gòu)性不好。
成本和功耗就比較好理解了,。成本指的就是錢和時間,,當(dāng)然如果細(xì)摳的話,還有投入的各種人力物力,,以及沒有選擇其他芯片帶來的機會成本等等,。不過歸根到底還是錢和時間。成本包含兩大部分,,一部分是芯片的研發(fā)成本,,另一部分是芯片的部署和運維成本。
功耗就更好理解了,,指的就是某種AI芯片對數(shù)據(jù)中心帶來的額外的功耗負(fù)擔(dān),。
比較:4種芯片,5個維度
現(xiàn)在我們知道了這個思維框架里的五個重要元素,,那么我們就能對前面提到的四種芯片,,也就是CPU、GPU,、ASIC和FPGA做一個定性的比較了,。這里聲明一下,這些對比僅代表我個人的觀點,,也歡迎大家在留言里和我交流你的想法,。
CPU
對于CPU來說,,它仍然是數(shù)據(jù)中心里的主要計算單元。事實上,,為了更好的支持各種人工智能應(yīng)用,,傳統(tǒng)CPU的結(jié)構(gòu)和指令集也在不斷迭代和變化。
比如,,英特爾最新的Xeon可擴展處理器,就引入了所謂的DL Boost,,也就是深度學(xué)習(xí)加速技術(shù),,來加速卷積神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和推理性能。但是相比其他三種芯片,,CPU的AI性能還是有一定差距,。
CPU最大的優(yōu)勢就是它的靈活性和同構(gòu)性。對于大部分?jǐn)?shù)據(jù)中心來說,,它們的各種軟硬件基礎(chǔ)設(shè)施都是圍繞CPU設(shè)計建設(shè)的,。所以CPU在數(shù)據(jù)中心的部署、擴展,、運維,,包括生態(tài)其實都已經(jīng)非常成熟了。它的功耗和成本不算太低,,但也還在可接受的范圍內(nèi),。
GPU
GPU有著大規(guī)模的并行架構(gòu),非常適合對數(shù)據(jù)密集型的應(yīng)用進行計算和處理,,比如深度學(xué)習(xí)的訓(xùn)練過程,。和CPU相比,GPU的性能會高幾十倍甚至上千倍,。因此業(yè)界的很多公司,,都在使用GPU對各種AI應(yīng)用進行加速。
GPU的另外一個優(yōu)勢,,是它有著比較成熟的編程框架,,比如CUDA,或者OpenCL等等,,這是GPU在AI領(lǐng)域得到爆發(fā)最直接的推動力量之一,,也是GPU相比FPGA或者ASIC的最大優(yōu)勢之一。
但是,,GPU的最大問題就是它的功耗,。比如,英偉達(dá)的P100,、V100和A100 GPU的功耗都在250W到400W之間,。相比于FPGA或ASIC的幾十瓦甚至幾瓦的功耗而言,,這個數(shù)字顯得過于驚人了。
而對于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練來說,,它往往需要大量密集的GPU集群來提供充足的算力,。這樣一來,一個機柜的功耗就可能會超過幾十千瓦,。這就需要數(shù)據(jù)中心為它修改供電和散熱等結(jié)構(gòu),。比如傳統(tǒng)的數(shù)據(jù)中心大都靠風(fēng)扇散熱,但如果要部署GPU,,就可能要改成水冷散熱,。對于大數(shù)據(jù)中心來說,這是筆巨大的開銷,。
伴隨著高功耗,,更大的問題實際是高昂的電費開支。要知道,,現(xiàn)代數(shù)據(jù)中心的運維成本里,,電費開支占40%甚至更高。所以,,對于GPU在數(shù)據(jù)中心里的大規(guī)模部署,,我們通常考慮的是它所帶來的性能優(yōu)勢,,能否抵消它帶來的額外電費,。
ASIC
ASIC就是所謂的人工智能專用芯片。這里的典型代表,,就是谷歌阿爾法狗里用的TPU,。根據(jù)谷歌的數(shù)據(jù),TPU在阿爾法狗里替代了一千多個CPU和上百個GPU,。
在我們的衡量體系里,,這種AI專用芯片的各項指標(biāo)都非常極端,比如它有著極高的性能和極低的功耗,,和GPU相比,,它的性能可能會高十倍,功耗會低100倍,。
但是,,研發(fā)這樣的芯片有著極高的成本和風(fēng)險。與軟件開發(fā)不同,,芯片開發(fā)全程都需要大量的人力物力投入,,開發(fā)周期往往長達(dá)數(shù)年,而且失敗的風(fēng)險極大,。放眼全球,,同時擁有雄厚的資金實力和技術(shù)儲備以進行這類研發(fā)的公司,,大概用兩只手就能數(shù)的出來。也就是說,,這種方案對于大多數(shù)公司而言并可能沒有直接的借鑒意義,。
此外呢,AI專用芯片的靈活性往往比較低,。顧名思義,,包括谷歌TPU在內(nèi)的AI專用芯片,通常是針對某種特定應(yīng)用而設(shè)計開發(fā),,因此它可能很難適用于其他的應(yīng)用,。在使用成本的角度,如果要采用基于ASIC的方案,,就需要這類目標(biāo)應(yīng)用有足夠的使用量,以分?jǐn)偢甙旱难邪l(fā)費用,。同時,,這類應(yīng)用需要足夠穩(wěn)定,避免核心的算法和協(xié)議不斷變化,。而這對于很多AI應(yīng)用來說是不現(xiàn)實的,。
值得一提的是,我國在人工智能專用芯片領(lǐng)域涌現(xiàn)出來了一波優(yōu)秀的公司,,比如寒武紀(jì),、地平線,還有之前被賽靈思收購的深鑒科技等等,。受篇幅限制,,關(guān)于這些公司的具體產(chǎn)品和技術(shù),這里就不再展開了,。
FPGA
最后再來說一下FPGA,。我個人認(rèn)為,FPGA能夠在這些性能指標(biāo)中達(dá)到比較理想的平衡,。當(dāng)然了,,我目前的職業(yè)就和FPGA緊密相關(guān),所以這個結(jié)論有屁股決定腦袋之嫌,,謹(jǐn)供大家借鑒,。
在性能方面,F(xiàn)PGA可以實現(xiàn)定制化的硬件流水線,,并且可以在硬件層面進行大規(guī)模的并行運算,,而且有著很高的吞吐量。
FPGA最主要的特點其實是它的靈活性,,它可以很好的應(yīng)對包括計算密集型和通信密集型在內(nèi)的各類應(yīng)用,。此外,,F(xiàn)PGA有著動態(tài)可編程、部分可編程的特點,,也就是說,,F(xiàn)PGA可以在同一時刻處理多個應(yīng)用,也可以在不同時刻處理不同的應(yīng)用,。
在數(shù)據(jù)中心里,,目前FPGA通常以加速卡的形式配合現(xiàn)有的CPU進行大規(guī)模部署。FPGA的功耗通常為幾十瓦,,對額外的供電和散熱等環(huán)節(jié)沒有特殊要求,,因此可以兼容數(shù)據(jù)中心的現(xiàn)有硬件基礎(chǔ)設(shè)施。
在衡量AI芯片的時候,,我們也經(jīng)常使用性能功耗比這個標(biāo)準(zhǔn),。也就是說,即使某種芯片的性能非常高,,但是功耗也非常高的話,,那么這個芯片的性能功耗比就很低。這也是FPGA相比GPU更有優(yōu)勢的地方,。
在開發(fā)成本方面,,F(xiàn)PGA的一次性成本其實遠(yuǎn)低于ASIC,因為FPGA在制造出來之后,,可以通過重復(fù)編程來改變它的邏輯功能,。而專用芯片一旦流片完成就不能修改了,但是每次流片都會耗資巨大,。這也是為什么包括深鑒在內(nèi)的很多AI芯片的初創(chuàng)企業(yè),,都使用FPGA作為實現(xiàn)平臺的原因。
所以說,,相比其他硬件加速單元而言,,F(xiàn)PGA在性能、靈活性,、同構(gòu)性,、成本和功耗五個方面達(dá)到了比較理想的平衡,這也是微軟最終選用FPGA,,并在數(shù)據(jù)中心里進行大規(guī)模部署的主要原因,,有興趣的朋友,可以看之前的文章《FPGA在微軟數(shù)據(jù)中心的前世今生》,。
結(jié)語
在這篇文章里,,我們討論了人工智能芯片的主要分類,比如按應(yīng)用場景,,可以分成服務(wù)器端和移動端兩類,。我們介紹了四種可以用來執(zhí)行人工智能應(yīng)用的芯片,,分別是CPU、GPU,、ASIC和FPGA,。我們還根據(jù)一個思維框架,從性能,、靈活性,、同構(gòu)性、功耗,、成本五個方面,,分別衡量了這四種芯片的優(yōu)缺點。
事實上,,對于這個問題并沒有一個唯一的答案,。我們只有根據(jù)特定的“Context”,也就是具體情況具體分析,,才能找到最適用于某個應(yīng)用的AI芯片,。而這種理性的思維方式,其實也適用于我們?nèi)粘9ぷ骱蜕畹母鞣N事情,,這也是本文想要傳達(dá)的最重要的內(nèi)容,。