導(dǎo)讀:AI 計(jì)算架構(gòu)百百種,有使用 GPU,也有 FPGA、DSP,或者是目前流行在各種嵌入式計(jì)算架構(gòu)的類神經(jīng)網(wǎng)絡(luò) ASIC,也就是 NPU 技術(shù)等。這些都是很常見的計(jì)算架構(gòu),在各種不同的應(yīng)用中也發(fā)揮各自的計(jì)算特性和效能表現(xiàn)。
AI 計(jì)算架構(gòu)百百種,有使用 GPU,也有 FPGA、DSP,或者是目前流行在各種嵌入式計(jì)算架構(gòu)的類神經(jīng)網(wǎng)絡(luò) ASIC,也就是 NPU 技術(shù)等。這些都是很常見的計(jì)算架構(gòu),在各種不同的應(yīng)用中也發(fā)揮各自的計(jì)算特性和效能表現(xiàn)。
雖然目前有各種測試方式來比較不同架構(gòu)的性能落差,但追根究底,不同架構(gòu)原本的設(shè)計(jì)目的就有不同,有的必須要兼顧通用計(jì)算,因此在芯片布局中必須塞入更多邏輯管理單元,有的專注于純粹的計(jì)算能量,完全不考慮其他工作,因此可能在芯片幾乎大部分都塞乘加法器(MAC)之類的計(jì)算單元,也有的計(jì)算架構(gòu)考慮的是各種情境下的通用計(jì)算需求,這些不同的考慮就產(chǎn)生的不同的效能/能效結(jié)果。
而近來欲在人工智能領(lǐng)域挑戰(zhàn) GPU 架構(gòu)的各類計(jì)算新秀,都不約而同的號稱可提供相較于 GPU 計(jì)算倍數(shù)以上的算力輸出。GPU 性能變成這些新架構(gòu)最直觀的比較基準(zhǔn)。
比如說包含寒武紀(jì)、華為的達(dá)芬奇架構(gòu),甚至是美國的 Habana 公司,都在產(chǎn)品發(fā)布時(shí)號稱可在同樣的規(guī)模設(shè)定下達(dá)到最高 1~3 倍于 NVIDIA 方案的性能輸出。
后起之秀超越 GPU 的算力已經(jīng)變成常識,且其宣稱的性能優(yōu)勢也越來越大,所以 GPU 這種傳統(tǒng) AI 計(jì)算架構(gòu)注定已經(jīng)是末路黃花?其實(shí)這也還言之過早。當(dāng)然,以行銷而言,直接點(diǎn)出自己產(chǎn)品和競品之間的技術(shù)落差是最直接有效的方法,但廠商往往只會指出對自己有利的部分,而對那些較不利的部分略之不談,因此討論這些新架構(gòu)時(shí),還是得從其設(shè)計(jì)目的、具體架構(gòu)的真實(shí)際算效率來觀察,才不會被廠商宣稱的數(shù)字所蒙蔽。
最后,若這新架構(gòu)在計(jì)算能量方面遠(yuǎn)優(yōu)于舊架構(gòu),為何市場不選擇這些理論上效率更高的計(jì)算架構(gòu)?反而偏好既有的、沒那么有效率的架構(gòu)?
寒武紀(jì)與 TPU 淵源深,達(dá)芬奇、Habana 則都借鑒 GPU,精簡以求效率為共通點(diǎn)
其實(shí)近幾年崛起的多數(shù) AI 計(jì)算架構(gòu)都可以說是脫胎自 GPU 計(jì)算架構(gòu),由于 GPU 必須肩負(fù)龐大的通用計(jì)算工作,所以計(jì)算單元內(nèi)包含了更復(fù)雜的邏輯、分支預(yù)測、緩存、繪圖管線、暫存設(shè)計(jì),而新近的 AI 計(jì)算架構(gòu)通常把 GPU 復(fù)雜的 ALU(算法邏輯計(jì)算單元) 中他們認(rèn)為多馀的部分去除,只留下純粹的乘加法器,并根據(jù)需要添加自己的算法框架支持,或者是為了泛用而增加的可編程邏輯處理能力,再通過 SDK 包裝之后就變成 AI 方案。
DT 君就以近來幾個(gè)比較熱門的 AI 計(jì)算架構(gòu)來觀察,可以發(fā)覺其實(shí)寒武紀(jì)與 Google TPU 的淵源較深,而華為的達(dá)芬奇與美國 Habana 則可以說有異曲同工之妙。
圖|寒武紀(jì)的基礎(chǔ)架構(gòu)(來源:寒武紀(jì))
寒武紀(jì)和 TPU 都是基于龐大乘加法器建構(gòu)而成的類神經(jīng)元計(jì)算架構(gòu)。從生物觀點(diǎn)來看,神經(jīng)元中有許多突觸,負(fù)責(zé)為別的神經(jīng)元傳遞信息。同樣,個(gè)別神經(jīng)元也會接收來自許多其他神經(jīng)元的信息。
以寒武紀(jì) DianNao 相關(guān)論文中所揭露的內(nèi)部結(jié)構(gòu)來觀察,可以發(fā)現(xiàn)其計(jì)算體系分為三層,分別是 NFU-1 部分的乘法單元??偣灿?16X16=256 個(gè)乘法器。這些乘法器同時(shí)計(jì)算,也就是說,一個(gè)周期可以執(zhí)行 256 個(gè)乘法。
NFU-2 則是是加法樹??偣灿?16 個(gè)。每個(gè)加法樹是按照 8-4-2-1 這樣組成的結(jié)構(gòu),每個(gè)加法數(shù)有 15 個(gè)加法器。NFU-3 是激活單元,共 16 個(gè),主要工作是根據(jù)前面兩個(gè)單元計(jì)算得到的刺激量,從而判斷是否需要激活操作。
除了這三個(gè) NFU 階段的計(jì)算邏輯部分,還有三個(gè) Buffer 分別負(fù)責(zé)存儲輸入數(shù)據(jù)、存儲權(quán)值(filter 值),以及存儲計(jì)算結(jié)果。從整體架構(gòu)來看,其實(shí)非常單純,也不需要進(jìn)行任何邏輯判斷,所以效能/能效可以達(dá)到非常高的程度。
圖|寒武紀(jì)論文中揭露的 Cambricon-X 架構(gòu)(來源:寒武紀(jì))
而最新的 Cambricon-X 架構(gòu)其實(shí)就是在 DianNao 的基礎(chǔ)之下針對近來流行的稀疏系數(shù)矩陣計(jì)算架構(gòu),稀疏計(jì)算可以牽涉到前段時(shí)間火了一陣子,號稱中國 NVIDIA,但后來賣給 Xilinx 的深鑒科技,其聯(lián)合創(chuàng)始人韓松經(jīng)過研究發(fā)現(xiàn),傳統(tǒng)的深度學(xué)習(xí)網(wǎng)絡(luò)模型的許多權(quán)重系數(shù)是可以去除的,甚至能去掉 90% 以上還不會不影響模型的計(jì)算精度。
傳統(tǒng)作法中,要刪除權(quán)值系數(shù)必須花費(fèi)很長的時(shí)間去分析模型,這也是之前深鑒方案之所以曾提到壓縮神經(jīng)網(wǎng)絡(luò)模型與建立模型所需的時(shí)間相仿甚至還要更長的主要原因。
雖然刪減了大量權(quán)值系數(shù)后,模型網(wǎng)絡(luò)所需要的乘法計(jì)算次數(shù)可大幅減少,但因?yàn)橄禂?shù)的稀疏具有不可控的隨機(jī)性,不同 filter 的有效權(quán)重可能是不同位置的,所以,這就造成了大量權(quán)重并行計(jì)算時(shí),無法做到同步,導(dǎo)致目前現(xiàn)有的處理器設(shè)計(jì)都并不能充分利用系數(shù)稀疏帶來的加速效果。
寒武紀(jì)的 Cambricon-X 就是在 DianNao 的基礎(chǔ)之下,追求對稀疏系數(shù)優(yōu)化的架構(gòu)。而 Google 的 TPU 架構(gòu)發(fā)展也邀請了曾經(jīng)參與寒武紀(jì)核心技術(shù)研發(fā)的核心人物 Olivier Temam,甚至 Google 在 TPU 的論文也引用了寒武紀(jì)團(tuán)隊(duì)成員前期發(fā)表的 6 篇論文,因此寒武紀(jì)與 Google 的 TPU 在設(shè)計(jì)上有相當(dāng)深的淵源。
二者較大的差異主要是在稀疏權(quán)值處理方面:TPU 屬于二維的脈動陣列,輸入數(shù)據(jù)的復(fù)用效率明顯較低。而寒武紀(jì)的 Cambricon-X 在矩陣越稀疏的情況下效率越高,但反之,效率就可能會明顯降低。
圖|華為達(dá)芬奇架構(gòu)。(來源:DT 君)
而華為的達(dá)芬奇架構(gòu)主要也是眾多乘加法器構(gòu)成的架構(gòu),華為將這個(gè)乘加法器叢集稱為 Cube,不過與其他類神經(jīng)網(wǎng)絡(luò)芯片不同的是,華為在數(shù)據(jù)流調(diào)度方面用了特殊的手法,讓數(shù)據(jù)流量可以最大化,從而創(chuàng)造更高的能效表現(xiàn)。
而華為在達(dá)芬奇架構(gòu)所強(qiáng)調(diào)的 3D Cube 計(jì)算架構(gòu),其實(shí)與 NVIDIA 的 CUDA 和 TensorCore 有著異曲同工之妙,同樣都是以矩陣處理陣列的立體形式來處理 MAC 中的乘加計(jì)算,而華為正也因此將之稱為 3D Cube。
但達(dá)芬奇架構(gòu)有個(gè)更特殊的作法是,其在達(dá)芬奇核心中整合了標(biāo)量,矢量,張量等各種指令集,可以配合其軟件堆棧定制、優(yōu)化數(shù)據(jù)打包和處理流程,是可自定義的 SIMD(單一指令多重?cái)?shù)據(jù)流) 架構(gòu)。依其號稱的效能推論,應(yīng)該是從個(gè)別應(yīng)用情境進(jìn)行針對性的深度優(yōu)化才有辦法達(dá)成,因此可能會非常倚賴編譯器。
而另一個(gè)最近才冒出頭的 AI 加速架構(gòu) Habana,根據(jù)該公司的自述資料,其創(chuàng)立于 2016 年,通過為處理性能、成本和功能帶來數(shù)量級改進(jìn)解鎖人工智能的真正潛力。該公司著手從頭開發(fā)人工智能處理器,為深度訓(xùn)練神經(jīng)網(wǎng)絡(luò)的特定需求以及生產(chǎn)環(huán)境中的推理部署進(jìn)行優(yōu)化。
圖|Habana 公司的 Goya 芯片架構(gòu)示意圖。(來源:Habana)
乍看之下和中國此起彼落的 AI 芯片架構(gòu)訴求相當(dāng)一致,甚至在效能訴求上,也和寒武紀(jì)、達(dá)芬奇架構(gòu)一樣,都號稱是以倍數(shù)的優(yōu)勢超越 GPU,不過 Habana 相較其他計(jì)算架構(gòu),其實(shí)更類似 GPU。
Habana 的 Goya HL-1000 推理芯片的核心是配備可編程能力自有指令集的 8 個(gè) VLIW(超長指令集)TPC 內(nèi)核,該公司聲稱,該架構(gòu)具備了在所有的神經(jīng)網(wǎng)絡(luò)推理任務(wù)創(chuàng)建的 400 個(gè)內(nèi)核庫類型,也支持 8 至 32 位浮點(diǎn)和整數(shù)格式計(jì)算工作。
其 VLIW 架構(gòu)是比較特殊的設(shè)計(jì),過去 VLIW 通常只會在高端專業(yè)計(jì)算架構(gòu)才會出現(xiàn),比如說英特爾的 IA64,這種技術(shù)是基于一種非常長的指令組合,它把許多條指令進(jìn)行打包連接并批次處理,從而增加計(jì)算的速度。VLIW(超長指令字)體系結(jié)構(gòu)是美國 Multiflow 和 Cydrome 公司于 20 世紀(jì) 80 年代設(shè)計(jì)的體系結(jié)構(gòu)。
乍看之下,若以目前 NVIDIA 的技術(shù)來比較,其 GPU 架構(gòu)屬于 SIMD 技術(shù),但 Goya 架構(gòu)卻是基于 VLIW,似乎距離有點(diǎn)遙遠(yuǎn)?
不過 TPC 的計(jì)算單元包裹方式其實(shí)和 GPU 基于 ALU 叢集的 SM 塊也是類似的概念,而另外一個(gè) GPU 主流體系,也就是 AMD 的 GPU,也曾經(jīng)采用過 VLIW 的設(shè)計(jì)方式,過去 GPU 使用 VLIW 有其理論性能上的優(yōu)勢,尤其非常適合進(jìn)行大量的規(guī)則化數(shù)據(jù)的處理,但驅(qū)動非常難以設(shè)計(jì)優(yōu)化,尤其娛樂 GPU 要面對復(fù)雜的游戲引擎和圖形計(jì)算環(huán)境,更讓 AMD 過去的架構(gòu)很難在一開始與 NVIDIA 直接粗暴的計(jì)算方式在性能上相提并論,但 AMD 的 VLIW 架構(gòu)往往在經(jīng)過長時(shí)間的驅(qū)動更新之后能有著明顯贏過同世代對手 GPU 的實(shí)力,也因此 AMD 的GPU產(chǎn)品也常常被戲稱為戰(zhàn)未來架構(gòu)。
不過因?yàn)閮?yōu)化的難度高,后來 AMD 放棄 VLIW 轉(zhuǎn)而走 RISC 架構(gòu)。所以要說 Goya 比較像早期的 AMD GPU,而達(dá)芬奇架構(gòu)則類似于后期 AMD GPU 的概念,其實(shí)也說得通。
Goya 采用了 VLIW 方式,目的應(yīng)該與華為的達(dá)芬奇的作法類似,就是作為管理數(shù)據(jù)流與指令打包方式的優(yōu)化作法,目的都是為了要在個(gè)別應(yīng)用情境下有更高的性能表現(xiàn),而因?yàn)?AI 計(jì)算環(huán)境遠(yuǎn)比游戲應(yīng)用單純,因此優(yōu)化難度明顯較低。
而根據(jù) Habana 公司提供的測試數(shù)據(jù),基于其 Goya HL-1000 處理器的 PCIe 計(jì)算 卡可在 ResNet-50 推理基準(zhǔn)實(shí)現(xiàn)每秒 15000 張圖片的吞吐量,延遲時(shí)間為 1.3 毫秒,功耗僅為 100 瓦,我們以熟悉的麒麟 980 芯片的同樣測試項(xiàng)目來比較,該架構(gòu)的性能是每分鐘 4500 張,約為每秒 75 張,而麒麟 980 內(nèi)建 NPU 的峰值功耗推估約在 2W 左右,換算之下,Goya 計(jì)算卡的每瓦性能是 150 張,而麒麟 980 的 NPU 每瓦計(jì)算性能約 37.5 張,可見其架構(gòu)效率的優(yōu)勢。
當(dāng)然,由于架構(gòu)針對的應(yīng)用情境和內(nèi)建緩存、總線的規(guī)模都不同,這樣的比較并不精確,但稍微可看出 Goya 架構(gòu)的效率表現(xiàn)達(dá)到什么程度。對了,麒麟 980 是 7nm,而 Goya 計(jì)算卡則是 16nm。
根據(jù)官方表示,與如今數(shù)據(jù)中心部署的一般解決方案相比,Habana Labs 人工智能處理器的性能要高出一到三個(gè)數(shù)量級,若以 GPU 計(jì)算卡為比較基準(zhǔn),則可達(dá)到 3 倍的能效輸出。相當(dāng)令人熟悉的說法,是吧?
后起之秀強(qiáng)壓老架構(gòu)?
不要忘了,即便是 NVIDIA 最新的 Volta 和圖靈架構(gòu)中的 CUDA 核心,也就是 GPU 的基礎(chǔ)計(jì)算單元,雖然架構(gòu)效率有隨著時(shí)間進(jìn)行修改、提升,但多數(shù)集中在內(nèi)存子系統(tǒng)的強(qiáng)化,整體架構(gòu)和老舊的 Pascal 并沒有太大的不同,其在專業(yè)計(jì)算中所呈現(xiàn)出來的訓(xùn)練性能表現(xiàn)增長主要還是因?yàn)楣に嚨母倪M(jìn),使得 CUDA 數(shù)量和時(shí)鐘速度增長所帶來的結(jié)果。換言之,這些在 AI 計(jì)算的后起之秀用以作為比較基準(zhǔn)的,是個(gè)已經(jīng)有兩三年歷史的老架構(gòu)。
若理論效率能夠很好的轉(zhuǎn)換為實(shí)際表現(xiàn),那么現(xiàn)有的 AI 計(jì)算架構(gòu)應(yīng)該早就很快的被這些新的給取代,但實(shí)際上,NVIDIA 仍然在市場上擁有接近獨(dú)占的地位,即便其計(jì)算效率并不是最高。
另外,以架構(gòu)純粹的純?nèi)斯ぶ悄芗铀儆?jì)算架構(gòu)和 GPU 相提并論是否適當(dāng),其實(shí)也是值得探討的問題。
肩負(fù)多重任務(wù),GPU不只是GPU
前面也提到,GPU 過去依靠其龐大的計(jì)算單元能夠很好的處理機(jī)器學(xué)習(xí)工作,但因?yàn)?GPU 的主要功能還是繪圖計(jì)算,有相當(dāng)大比重的晶體管并非使用在計(jì)算工作上,為彌補(bǔ)整體計(jì)算架構(gòu)的效率,NVIDIA 也為其增加了 TensorCore 核心,彌補(bǔ)原本純粹 GPGPU 架構(gòu)針對推理工作的短板,該核心也能同時(shí)進(jìn)行訓(xùn)練加速工作。
以同樣晶體管規(guī)模的純粹訓(xùn)練或推理性能而言,TensorCore 遠(yuǎn)超過標(biāo)準(zhǔn) CUDA 單元,比如說 FP16 深度學(xué)習(xí)的性能,使用 TensorCore 的性能表現(xiàn)在理想情境下可達(dá)純粹 CUDA 的 3 倍以上。
那大家可能會好奇,為何 NVIDIA 不推出純粹使用 TensorCore 的芯片,以該架構(gòu)全面取代效率較低的 CUDA 單元?那要在同樣的芯片規(guī)模下取得和寒武紀(jì)等后起之秀類似或更好的性能其實(shí)不是難事。
但重點(diǎn)是有沒有意義。若不久之后系統(tǒng)對于純粹 AI 性能的要求更高了,而半導(dǎo)體設(shè)計(jì)和制造技術(shù)又遭遇瓶頸,或許 NVIDIA 可能會這么做,以純粹的 TensorCore 芯片來對抗競爭對手。但就目前而言,維持 GPU 架構(gòu)的延續(xù)對 NVIDIA 有更重要的戰(zhàn)略意義,畢竟專業(yè)計(jì)算雖然利潤高,但市場規(guī)模小,而娛樂繪圖市場規(guī)模大,且可應(yīng)用的空間廣,只要是包含視覺處理的工作,基本上都和 GPU 脫不了關(guān)系,對 NVIDIA 而言,是極為重要的現(xiàn)金來源。
另外,以單一架構(gòu)進(jìn)行量產(chǎn),可在芯片制造上取得較好的經(jīng)濟(jì)規(guī)模,對利潤率的提升有更好的幫助,而 NVIDIA 近年來的財(cái)務(wù)數(shù)字表現(xiàn)也證明了這個(gè)觀點(diǎn)。
而根據(jù) NVIDIA 方面的論點(diǎn),TensorCore 不只能在 AI 計(jì)算環(huán)境中發(fā)揮作用,未來也將肩負(fù)著游戲或虛擬環(huán)境中的 AI、物理模擬工作,對 NVIDIA 而言,任何硬件功能區(qū)塊的加入都不會是只有針對單一工作,而是要針對更廣,且適合未來應(yīng)用發(fā)展的的計(jì)算考慮。
當(dāng)然,F(xiàn)PGA 和 DSP 等不同類型的計(jì)算架構(gòu)也和 GPU 有類似的狀況,不過這二者不在本文的討論范圍中。
也因此,如果要把只能用于單一用途的架構(gòu)拿來和多功能的架構(gòu)相比,就好比拿同樣 1000cc 汽缸的摩托車和汽車比較,摩托車肯定在加速方面可以有很亮眼的表現(xiàn),可能更快到達(dá)目的地。但是汽車能用來承載更多乘客,也能載更多貨物,孰優(yōu)孰劣,端看應(yīng)用目的,其實(shí)沒有辦法很直觀的進(jìn)行比較。
而目前 GPU 在特定效能數(shù)字上的弱勢也不是沒有辦法解決,如果未來 NVIDIA 把針對不同應(yīng)用的 GPU 進(jìn)行更徹底的特化,比如說給專業(yè)計(jì)算的就配備更大的 TensorCore,給娛樂繪圖的就更大的 GPU 區(qū)塊,GPU 仍是共通的邏輯處理核心,但依照應(yīng)用而給予的晶體管分配比重各有不同,那么現(xiàn)在動輒號稱能效數(shù)倍于 GPU 的后起 AI 計(jì)算架構(gòu)能否維持優(yōu)勢就很難說了。
重點(diǎn)在于生態(tài)的養(yǎng)成
生態(tài)這兩個(gè)字已經(jīng)是老生常談,所有的新架構(gòu)在推出時(shí)都往往會在其行銷材料上掛上這兩個(gè)字,但實(shí)際上能做到的卻少之又少。
舉例來說,NVIDIA 當(dāng)初之所以能夠成功,主要還是在開發(fā)環(huán)境與教育訓(xùn)練的完備,當(dāng)初為了推動 CUDA 開發(fā)環(huán)境,NVIDIA 與許多行業(yè)、學(xué)校合作,并且把相關(guān)的開發(fā)環(huán)境和學(xué)校課程進(jìn)行結(jié)合,且同步舉辦多種競賽活動,不僅是炒作市場氣氛,也同時(shí)是在檢視其教育手段的成效如何。
但反觀目前國內(nèi)外的新創(chuàng) AI 架構(gòu)推動者,多半都是針對特定的應(yīng)用著眼,而非真正創(chuàng)造泛用架構(gòu),對于創(chuàng)造生態(tài)并沒有太多興趣,而有意愿打進(jìn)教育體系的更是少之又少,畢竟對這些架構(gòu)開發(fā)者而言,能顧好自己的目標(biāo)市場就好,要顧及更大的領(lǐng)域,其實(shí)力有未逮。
但如果是擁有龐大資本的 AI 方案公司,卻不進(jìn)行這些長遠(yuǎn)計(jì)劃,只求以性能表現(xiàn)來“彎道超車”,這樣的生態(tài)或許能拿到少數(shù)合作伙伴的支持,但能在市場上維持多久,其實(shí)也是令人存疑。
在這種產(chǎn)業(yè)背景下,華為所推動的“AI 開發(fā)者啟動計(jì)劃”在中國 AI 計(jì)算市場就顯得相當(dāng)特立獨(dú)行,該公司承諾將會投資 1.4 億美元來教育培訓(xùn) AI 人才,其實(shí)算是有意要仿效 NVIDIA 之前經(jīng)營生態(tài)的作法。該計(jì)劃將幫助華為與開發(fā)者、合作伙伴、大學(xué)和研究機(jī)構(gòu)合作打造更好的開發(fā)生態(tài)系統(tǒng),從而支援 AI 資源、平臺、課程和聯(lián)合解決方案。其次,華為也會提供資金和技術(shù)支持,提供測試平臺給開發(fā)者、合作伙伴。
金額雖然并不算特別大,且起步也有點(diǎn)晚,但其在建立生態(tài)上定下了相當(dāng)遠(yuǎn)大的目標(biāo):利用 3 年時(shí)間,發(fā)展 100 萬 AI 開發(fā)者及伙伴。
由華為正在推動的計(jì)劃可看出,在公布達(dá)芬奇架構(gòu)以及基于該架構(gòu)發(fā)展出來的昇騰方案后,打的就是長遠(yuǎn)的生態(tài)戰(zhàn)爭。
建立生態(tài)依靠的是長期的經(jīng)營與資源的投入,期間可能付出多回收少,但要是成功以技術(shù)和商業(yè)模式優(yōu)勢說服開發(fā)者以及相關(guān)供應(yīng)渠道,往后對相關(guān)市場經(jīng)營的黏著性將有立竿見影的效果。雖然現(xiàn)在要判斷達(dá)芬奇架構(gòu)以及昇騰方案的前景如何仍為時(shí)尚早,但其市場策略基本上已經(jīng)走到正確的道路上了。