你知道嗎,世界第一大FPGA公司賽靈思,它的龍頭芯片,卻不是FPGA——2018年,賽靈思發(fā)布了一種名叫ACAP的芯片,隨即受到了全球科技界的密切關(guān)注。
很多人說(shuō),ACAP了開(kāi)啟FPGA芯片發(fā)展的新階段,也將會(huì)帶來(lái)大量人工智能時(shí)代的新機(jī)會(huì)。AMD剛剛花了490億美元收購(gòu)賽靈思,有很大一部分原因也是看中了這個(gè)芯片在數(shù)據(jù)中心這個(gè)大藍(lán)海里的廣闊前景。
那么這個(gè)名叫“自適應(yīng)計(jì)算加速平臺(tái)”的芯片,到底有哪些獨(dú)門(mén)絕技,它能不能撐得起新一代人工智能芯片的這面大旗,并且引領(lǐng)下一輪人工智能硬件的變革?今天這篇文章我們就來(lái)一探究竟。
從FPGA到ACAP
賽靈思在初次提出ACAP這個(gè)概念的時(shí)候,就在反復(fù)強(qiáng)調(diào)“ACAP并不是FPGA”。那么相比于FPGA,ACAP這個(gè)芯片到底有哪些特別重大的創(chuàng)新之處呢?我總結(jié)了三點(diǎn),分別是基于各種引擎的芯片架構(gòu)、專(zhuān)用的AI加速單元,以及首次在FPGA或者ACAP中出現(xiàn)的片上網(wǎng)絡(luò)。
整體來(lái)看,ACAP芯片是由很多個(gè)引擎組成的。比如FPGA中的“處理器系統(tǒng)(Processor Systems)”在A(yíng)CAP中被稱(chēng)為“標(biāo)量引擎(Scalar Engines)”;“可編程邏輯(Programmable Logic)”則是變成了“自適應(yīng)引擎(Adaptable Engines)”;再加上由AI引擎和DSP引擎組成的“智能引擎(Intelligent Engine)”,就構(gòu)成了ACAP的“三大引擎”。
這樣的命名方式充分體現(xiàn)了ACAP的異構(gòu)化這一特征:對(duì)于一個(gè)目標(biāo)應(yīng)用,這三種引擎會(huì)各自負(fù)責(zé)擅長(zhǎng)的運(yùn)算類(lèi)型,從而實(shí)現(xiàn)最佳的處理效果。
在這“三大引擎”中所包含的各種硬件資源中,其他的我們或多或少都在賽靈思的FPGA產(chǎn)品中見(jiàn)到過(guò),唯獨(dú)“智能引擎”中的“AI引擎”是ACAP特有的一個(gè)概念,咱們就從它開(kāi)始說(shuō)起。
AI引擎
對(duì)于機(jī)器學(xué)習(xí)、5G通信這樣計(jì)算密集、但又對(duì)時(shí)延等較為敏感的應(yīng)用,通用CPU的性能是遠(yuǎn)遠(yuǎn)不夠的。因此我們會(huì)設(shè)計(jì)專(zhuān)用的芯片來(lái)加速這些應(yīng)用,它們也叫做硬件加速器、或者領(lǐng)域?qū)S眉軜?gòu)(Domain Specific Architecture,DSA)。
假設(shè)我們手頭有一個(gè)深度學(xué)習(xí)加速器(Deep Learning Processing Unit,DPU)的IP,那么對(duì)于FPGA來(lái)說(shuō),我們會(huì)用到片上的可編程邏輯資源和DSP資源來(lái)物理上實(shí)現(xiàn)這個(gè)IP。
但是對(duì)于Versal ACAP來(lái)說(shuō),這個(gè)過(guò)程被大大簡(jiǎn)化了,我們主要用AI引擎就行。這樣做的好處有兩個(gè)方面:更高的算力和更低的功耗。
在算力方面——基于A(yíng)I引擎的實(shí)現(xiàn)方式的效率更高,這意味著單位面積的芯片對(duì)應(yīng)的計(jì)算能力更強(qiáng);這對(duì)于加速計(jì)算密集的應(yīng)用來(lái)說(shuō)無(wú)疑是個(gè)好消息;
在能耗方面——基于A(yíng)I引擎的實(shí)現(xiàn)方式對(duì)于可編程邏輯資源的依賴(lài)度更低,可以減少大約百分之五十的功耗。
AI引擎的基本組成單位是tile,它其實(shí)是由大量的tile組成的一個(gè)陣列。也就是說(shuō),我們可以把它看成是傳統(tǒng)FPGA加了AI buff的升級(jí)版。
每個(gè)tile里都有非常豐富的硬件資源,每個(gè)tile都有一個(gè)標(biāo)量處理單元、和一個(gè)矢量處理單元,它們能實(shí)現(xiàn)指令級(jí)并行和數(shù)據(jù)級(jí)地并行,這就為算力提供了保障。tile之間的互聯(lián),既可以通過(guò)上下左右四個(gè)方向直接連接,也可以通過(guò)可編程的AXI總線(xiàn)來(lái)實(shí)現(xiàn)。
AXI總線(xiàn)可以看成ACAP芯片上的高速公路,小模塊的互聯(lián)只是一方面,更重要的是它還能把AI引擎和其他的大模塊聯(lián)系起來(lái),包括芯片上的可編程邏輯資源,以及更高速的片上網(wǎng)絡(luò)。這樣一來(lái),整個(gè)芯片上的數(shù)據(jù)流動(dòng)就活了。我們可以把不同的任務(wù),合理的分配給不同的單元,從而實(shí)現(xiàn)整體加速效果的最優(yōu)化。
片上網(wǎng)絡(luò)NoC
和傳統(tǒng)FPGA相比,ACAP在架構(gòu)上的最大的變革,就是采用了片上網(wǎng)絡(luò)Network on Chip-NoC。如果前面說(shuō)的AXI總線(xiàn)是高速公路,那片上網(wǎng)絡(luò)就是高鐵。
芯片這個(gè)四四方方的結(jié)構(gòu)其實(shí)和地圖很像,芯片上有很多功能模塊,它們就像地圖上的一個(gè)個(gè)城市。高速公路可以把這些城市連起來(lái),但速度和運(yùn)力畢竟還是有限的。但如果有高速鐵路,就能把大量貨物以很快的速度從一個(gè)城市送到另外一個(gè)城市。
片上網(wǎng)絡(luò)就是這樣,它之所以叫網(wǎng)絡(luò),就是把我們?nèi)粘?a class="article-link" target="_blank" href="/tag/%E4%BA%92%E8%81%94%E7%BD%91/">互聯(lián)網(wǎng)的概念用在了芯片設(shè)計(jì)上,在芯片上搭建了一個(gè)傳輸數(shù)據(jù)的高速網(wǎng)絡(luò)。它把數(shù)據(jù)封裝成數(shù)據(jù)包的形式,然后在這個(gè)網(wǎng)絡(luò)上進(jìn)行路由、交換、通信。就像我們寄快遞一樣,自己開(kāi)車(chē)太慢了,把它打包裝箱,然后給快遞公司用高鐵很快就寄到了。
不僅如此,片上網(wǎng)絡(luò)還是個(gè)三維的結(jié)構(gòu),也就是鐵軌不是修在城市里面,而是用高架橋架在天上。不知道大家發(fā)現(xiàn)沒(méi)有,咱們國(guó)內(nèi)很大部分的高鐵都是這么建的,這樣不影響城市的正常交通,還能充分的利用土地面積。當(dāng)然我們這里的土地,就是芯片。
所以片上網(wǎng)絡(luò)能把數(shù)據(jù)的傳輸和數(shù)據(jù)的計(jì)算分離開(kāi),并且?guī)?lái)三個(gè)主要的好處,也就是能在有限的芯片面積上就能集成更多的邏輯單元,同時(shí)能保證數(shù)據(jù)傳輸的性能和吞吐量,也能緩解芯片布局布線(xiàn)的擁堵和壓力。
VCK5000:發(fā)揮ACAP性能的關(guān)鍵
有了芯片還遠(yuǎn)遠(yuǎn)不夠,萬(wàn)里長(zhǎng)征算是走了三分之一,接下來(lái)三分之一,就是高性能的硬件平臺(tái)。比如使用Versal ACAP芯片的賽靈思旗艦級(jí)加速卡VCK5000,就是被設(shè)計(jì)用來(lái)把ACAP的性能發(fā)揮到極致的硬件系統(tǒng)。它搭載了Versal AI Core系列的VC1902芯片,配備了大量的運(yùn)算單元來(lái)滿(mǎn)足數(shù)據(jù)中心應(yīng)用對(duì)算力的需求,比如400個(gè)AI引擎tile和1968個(gè)DSP引擎。
除了數(shù)據(jù)中心和機(jī)器學(xué)習(xí)應(yīng)用之外,VCK5000的目標(biāo)應(yīng)用還有5G、雷達(dá)等等,是一位全能型選手。那么它在實(shí)際任務(wù)中的表現(xiàn)如何呢?
GoogleNet和ResNet-50是圖像識(shí)別領(lǐng)域里的兩個(gè)比較常用的神經(jīng)網(wǎng)絡(luò)模型,而VCK5000加速卡處理這兩個(gè)模型的速度,分別達(dá)到了賽靈思前一代旗艦產(chǎn)品UltraScale plus產(chǎn)品的五倍和七倍,這是真正意義上的“把前浪拍死在沙灘上”了。
在5G通信應(yīng)用中,得益于之前介紹的AI引擎、片上網(wǎng)絡(luò)等架構(gòu)上的創(chuàng)新,VC1902仍然有著不俗的表現(xiàn):它的能耗比達(dá)到了友商基于10納米工藝的競(jìng)品的2.4倍。
Vitis:ACAP的靈魂
說(shuō)完了芯片的硬件,我們必須要說(shuō)一下開(kāi)發(fā)芯片的軟件,這也是我們芯片萬(wàn)里長(zhǎng)征的最后三分之一。像Versal ACAP這樣一個(gè)相對(duì)復(fù)雜的新異構(gòu)計(jì)算平臺(tái),如何充分的利用它的性能,并且將工作負(fù)載合理地劃分是很關(guān)鍵的。
這就好比一個(gè)很有領(lǐng)導(dǎo)力的人如果被安排到了技術(shù)崗,就無(wú)法很好的發(fā)揮自己的管理能力。反過(guò)來(lái)也一樣,并不是所有優(yōu)秀的工程師都是優(yōu)秀的領(lǐng)導(dǎo)者。所以需要把資源,合理安排到最適合的地方。
這個(gè)決策過(guò)程需要對(duì)目標(biāo)應(yīng)用和計(jì)算平臺(tái)兩邊的充分了解,交給軟件來(lái)完成顯然是最好的選擇。
對(duì)于這一點(diǎn),賽靈思給出了兩種方案:
如果你有過(guò)使用FPGA的經(jīng)歷的硬件開(kāi)發(fā)者,那么基于Vivado的那套傳統(tǒng)的開(kāi)發(fā)流程仍然是適用的,你可以像使用FPGA那樣去使用ACAP;
如果你是沒(méi)有任何硬件開(kāi)發(fā)背景的軟件開(kāi)發(fā)者,也別不用擔(dān)心,你同樣可以用Versal ACAP來(lái)加速你的應(yīng)用,方法就是使用Vitis軟件平臺(tái)。
Vitis能完成的工作可以分為軟件側(cè)和硬件側(cè)這兩部分:
在軟件方面,用戶(hù)提供的應(yīng)用被編譯生成可執(zhí)行文件;在硬件方面,根據(jù)Vitis library提供了大量高度優(yōu)化的加速器實(shí)現(xiàn)方案,應(yīng)用中可被加速的部分將被捕捉到、并通過(guò)Versal ACAP中的可編程邏輯和AI引擎等IP來(lái)實(shí)現(xiàn),最后生成板卡的啟動(dòng)文件。
對(duì)于開(kāi)發(fā)者來(lái)說(shuō),只需要把可執(zhí)行程序和啟動(dòng)文件拷貝到板卡的SD卡中,可執(zhí)行程序就能通過(guò)API調(diào)用硬件來(lái)實(shí)現(xiàn)對(duì)于應(yīng)用的加速。
所以從軟件開(kāi)發(fā)者的角度來(lái)說(shuō),整個(gè)開(kāi)發(fā)環(huán)境依然是非常友好的,因?yàn)榇蚪坏赖膶?duì)象仍然是C、C++、Python等高層次的語(yǔ)言。為一些熱門(mén)的應(yīng)用,賽靈思還進(jìn)一步完善了開(kāi)發(fā)工具,比如說(shuō)為AI推理打造的全棧式工具鏈Vitis AI。
通過(guò)Vitis AI,PyTorch、TensorFlow等主流的深度學(xué)習(xí)框架中的模型可以被高效地部署在Xilinx平臺(tái),實(shí)現(xiàn)良好的加速效果。
當(dāng)然,Vitis面向的硬件平臺(tái)并不只是Versal ACAP,之前上手過(guò)的Kria平臺(tái),就特別適合嵌入式應(yīng)用的快速開(kāi)發(fā)。
對(duì)于芯片公司來(lái)說(shuō),軟件反而是最重要的。只有構(gòu)建了良好的軟件生態(tài),才能真正提升產(chǎn)品的競(jìng)爭(zhēng)力,尤其是對(duì)于A(yíng)I加速這樣市場(chǎng)大、門(mén)檻低的應(yīng)用來(lái)說(shuō),只提供硬件是遠(yuǎn)遠(yuǎn)不夠的。
一個(gè)全能的軟件堆棧能讓用戶(hù)快速地上手,從而集中精力開(kāi)發(fā)自己的算法應(yīng)用,那硬件的競(jìng)爭(zhēng)力自然也就有了保障。
過(guò)去幾年里,英偉達(dá)取得的成功便是這一點(diǎn)的有力證明;而Vitis告訴我們,賽靈思也在朝著這個(gè)方向努力著。
結(jié)語(yǔ)
我們從硬件架構(gòu)、開(kāi)發(fā)流程以及應(yīng)用實(shí)例這幾個(gè)角度,簡(jiǎn)單地向大家介紹了賽靈思的Versal ACAP——第一代自適應(yīng)計(jì)算加速平臺(tái)。
在硬件方面,AI引擎、固化的片上網(wǎng)絡(luò)等一系列的架構(gòu)創(chuàng)新使得Versal ACAP比FPGA更為擅長(zhǎng)加速AI推理、無(wú)線(xiàn)5G等計(jì)算密集的應(yīng)用。在開(kāi)發(fā)流程上,Vitis軟件平臺(tái)大大降低了硬件開(kāi)發(fā)的難度,使得軟件開(kāi)發(fā)者也能夠輕松地用ACAP加速自己的應(yīng)用。
Versal ACAP的目標(biāo)市場(chǎng)非常廣泛,為不同的應(yīng)用類(lèi)型、場(chǎng)景準(zhǔn)備了不同的產(chǎn)品線(xiàn)。盡管還沒(méi)有大規(guī)模地走向市場(chǎng),但是在目前有限的對(duì)比中,Versal ACAP確實(shí)展現(xiàn)了不俗的實(shí)力。
ACAP能否幫助AMD在數(shù)據(jù)中心市場(chǎng)牢牢占據(jù)一席之地?現(xiàn)在回答這個(gè)問(wèn)題也許還太早了。但在競(jìng)爭(zhēng)逐漸白熱化的數(shù)據(jù)中心,ACAP必將掀起不小的水花。
(注:本文不代表老石任職單位的觀(guān)點(diǎn)。)