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