李實(shí)
對(duì)國(guó)內(nèi)的高科技企業(yè)而言,在集成電路產(chǎn)品上發(fā)力已經(jīng)不是什么新聞了。作為這類企業(yè)代表之一的百度,近年來(lái)也在自研處理器的道路上越走越快。2020年9月15日,“萬(wàn)物智能——百度世界2020大會(huì)”上,百度宣布了昆侖1 Al處理器已經(jīng)量產(chǎn)的消息,那么這款名為昆侖1的Al處理器在性能和架構(gòu)上的情況究竟是怎么樣的呢?我們就和你一起來(lái)了解這些內(nèi)容。
百度在云計(jì)算和人工智能方面有深入的研究,并持續(xù)進(jìn)行較高的產(chǎn)業(yè)投入。2018年,百度宣布將研發(fā)自家首款A(yù)I芯片,代號(hào)“昆侖”。2019年12月,百度宣布選擇三星作為代工伙伴,準(zhǔn)備量產(chǎn)昆侖芯片。在2020年的“百度世界2020”大會(huì)上,百度宣布昆侖1芯片已經(jīng)量產(chǎn),正在研發(fā)昆侖2芯片,其中昆侖1芯片已經(jīng)在百度搜索以及云計(jì)算用戶上部署了2萬(wàn)片,預(yù)研的昆侖2芯片計(jì)劃采用7nm工藝,性能將達(dá)到昆侖1的3倍以上,計(jì)劃2021年上半年量產(chǎn)。一路走來(lái),百度的昆侖芯片從紙面到實(shí)際,從0到2萬(wàn)片,那么,百度昆侖芯片有哪些值得關(guān)注的地方呢?
從Al開(kāi)始百度研發(fā)AI芯片的開(kāi)始
百度在AI芯片方面的投入是從關(guān)注AI的多元化應(yīng)用和多元化場(chǎng)景開(kāi)始的。百度認(rèn)為在之前的大型機(jī)和小型機(jī)時(shí)代,人們可以用定制處理器解決問(wèn)題。在個(gè)人電腦時(shí)代,x86是絕對(duì)的主流。在移動(dòng)計(jì)算時(shí)代,ARM和x86在一定程度上和諧共存。但是現(xiàn)在的時(shí)代應(yīng)用場(chǎng)景更多、更為復(fù)雜,尤其是AI計(jì)算的出現(xiàn),需要大量的算力,而傳統(tǒng)的CPU和GPU完成AI類型的計(jì)算都存在效能或者速度上的問(wèn)題。因此,在這種情況下,面對(duì)海量數(shù)據(jù)的AI計(jì)算,百度決定開(kāi)發(fā)專門(mén)的AI通用處理器。
回顧歷史來(lái)看的話,百度在201 0年甚至更早就切入了處理器研發(fā)領(lǐng)域。在2010年,百度推出了FPGA平臺(tái)上的AI芯片,計(jì)算能力為300GFLOPS,并在2011年小規(guī)模部署。2014年的時(shí)候,百度推出了計(jì)算效能為1TFLOPS的芯片并在2016年提升至2TFLOPS。
百度為AI通用芯片的開(kāi)發(fā)設(shè)定了三個(gè)目標(biāo),那就是面向主流市場(chǎng)、開(kāi)拓新市場(chǎng),同時(shí)盡可能支持更多的AI應(yīng)用程序和場(chǎng)景。這就意味著百度的AI通用處理器不光是一個(gè)芯片,還要提供相應(yīng)的軟件和編譯器等環(huán)境。百度認(rèn)為這種通用AI芯片面臨的挑戰(zhàn)包括大量的內(nèi)存和計(jì)算的訪問(wèn)模式需要支持,包括主流計(jì)算框架內(nèi)數(shù)千種不同的算法、混合了張量、矢量和標(biāo)量的計(jì)算模式以及對(duì)內(nèi)存的順序和隨機(jī)訪問(wèn)等。另外,一款長(zhǎng)壽的AI通用處理器還要考慮到算法和應(yīng)用隨著時(shí)間快速變化,以及開(kāi)發(fā)人員對(duì)硬件和軟件環(huán)境的熟悉程度等。
鑒于此,百度也提出了一系列的解決方案,致力于提供一個(gè)通用的、具有靈活的、可編程性相當(dāng)優(yōu)秀的同時(shí)也是高性能的AI處理器產(chǎn)品。
昆侖K200芯片百度Al計(jì)算的一小步
本次發(fā)布的昆侖芯片的型號(hào)分別是昆侖K100和昆侖K200,兩者架構(gòu)相同,但是前者K100性能和功耗等只有后者K200的一半,本文以百度昆侖K200為例進(jìn)行介紹。百度昆侖K200整體架構(gòu)采用了百度之前研發(fā)的XPU架構(gòu),支持INT 4、INT 8、INT 16以及FP32、FP16等不同格式的數(shù)據(jù)計(jì)算。其計(jì)算性能在INT 8數(shù)據(jù)格式下?lián)碛?56TOPS,在INT/FP 16下縮減至64TOPS,在INT/FP32格式下縮減至16TOPS。另外,芯片通過(guò)HBM和2.5D封裝技術(shù)包含了16GB、512GB的本地存儲(chǔ)。制造工藝方面采用三星14nm工藝,TDP功耗為150W,外部接口支持PCle 4.0 x8規(guī)范。
百度的XPU架構(gòu)也是AI計(jì)算業(yè)界的老面孔了,在2017年就已經(jīng)發(fā)布上線。不過(guò)當(dāng)時(shí)百度和賽靈思一起合作,采用了FPGA的方式實(shí)現(xiàn)。百度當(dāng)時(shí)選擇FPGA的原因主要是看中了FPGA本身的高效率和可編程性,百度宣稱XPU則關(guān)注計(jì)算密集型、基于規(guī)則的多樣化計(jì)算任務(wù),希望提高效率和性能,并帶來(lái)類似CPU的靈活性,因此FPGA是比較合適的平臺(tái)。
在架構(gòu)設(shè)計(jì)方面,XPU采用的是眾多微核心、搭配定制邏輯以及可以根據(jù)應(yīng)用程序配置計(jì)算資源的方式。在一個(gè)XPU核心中,一個(gè)擁有多接口的內(nèi)存控制器( Multi-PortMC)位于處理器核心位置,周圍掛接了包括DDR4內(nèi)存、DMA總線在內(nèi)的各種數(shù)據(jù)存儲(chǔ)和傳輸設(shè)備,其主要計(jì)算單元是眾多微核心( Tiny Cores),另外還有可定制的邏輯單元(Customized logic)。眾多的微核心能夠?qū)崿F(xiàn)基于指令集的可編程性,并且沒(méi)有Os、緩存、域或者特定的ISA約束,能夠靈活的服務(wù)于各種不同的計(jì)算負(fù)荷。在定制邏輯方面,整個(gè)邏輯是硬件可重構(gòu)的,這也是FPGA的鮮明特性之一。此外,百度還提到XPU可以根據(jù)不同的計(jì)算任務(wù)對(duì)計(jì)算核心和邏輯核心的比例進(jìn)行重新定義,這樣能夠在不同的任務(wù)中都獲得較高的效能。
在XPU的微核心部分,百度將32個(gè)微核心定義為1個(gè)核心簇(Core Cluster),核心簇的數(shù)量多少取決于芯片的計(jì)算規(guī)模要求。每個(gè)核心簇通過(guò)雙向256bit的帶寬和多接口內(nèi)存控制器聯(lián)系。核心簇內(nèi),除了計(jì)算核心(被稱為Core)外,還包含了一個(gè)特殊功能加速單元和所有核心共享的32KB緩存。百度特別提到,32個(gè)計(jì)算核心的數(shù)據(jù)都已經(jīng)本地化并且多核心共享,這樣更加方便控制和布線。
進(jìn)一步深入每個(gè)計(jì)算核心也就是Core的話,百度宣稱Core采用了類似MIPS的指令設(shè)計(jì),擁有4級(jí)流水線,分別是前端的BTH/Fetch/l_buf,以及decode Q、decode/RF后,進(jìn)入issue Q,然后進(jìn)入ALU/load/store進(jìn)行計(jì)算或者存取處理,隨后交由WB Q進(jìn)行結(jié)果處理。整個(gè)流水線級(jí)數(shù)短、延遲低。另外,每個(gè)Core還配備了16或者32KB的私有臨時(shí)緩存,用于暫存數(shù)據(jù),提高效能。
在新的昆侖K200上,百度還是采用了之前在FPGA上使用成熟的XPU架構(gòu),但是將其升級(jí)到了XPU v2版本。百度宣稱XPU v2版本的設(shè)計(jì)思想和之前的產(chǎn)品是一致的,但是ASIC化后整體性能更為強(qiáng)大。百度還給出了一個(gè)簡(jiǎn)單的架構(gòu)圖,下面本文簡(jiǎn)單解析—下。
XPU v2核心內(nèi)部包含計(jì)算單元、PCIe總線控制器、HMB控制器和相關(guān)連接總線。一個(gè)XPU v2核心內(nèi)部有2個(gè)計(jì)算單元,分別是Compute Unit 0和Compute Unit1。繼續(xù)深入的話,每個(gè)計(jì)算單元內(nèi)部包含了4個(gè)XPU-SDNN核心和4個(gè)XUP-Cluster核心,還有一個(gè)16MB緩存。所謂SDNN,是指“spacedisplacement neural network”,也就是空間位移神經(jīng)網(wǎng)絡(luò),這種神經(jīng)網(wǎng)絡(luò)算法通常用于圖形圖像的查找,或者在一個(gè)大型圖像中查找關(guān)鍵內(nèi)容,由于其計(jì)算過(guò)程涉及空間上的位置改變,因此又被稱為空間位移神經(jīng)網(wǎng)絡(luò)。百度特別提到,XPU-SDNN可以進(jìn)行軟件定義,針對(duì)張量和矢量計(jì)算而設(shè)計(jì)。另外則是XPU-Cluster,針對(duì)標(biāo)量和矢量計(jì)算設(shè)計(jì),采用的是常見(jiàn)的SIMD指令,每一個(gè)XPU-Cluster中擁有前文提到的16個(gè)微核心。在數(shù)據(jù)存儲(chǔ)方面,每個(gè)HBM控制器對(duì)應(yīng)1個(gè)計(jì)算單元,提供8GB的HBM存儲(chǔ)空間和256GB/s的數(shù)據(jù)帶寬。
除了硬件架構(gòu)外,昆侖K200在軟件上也做出了一些優(yōu)化。昆侖K200支持不同的框架協(xié)議,包括Tensorflow、Pytorch、國(guó)產(chǎn)自主的Paddle Paddle等,還提供了名為XPU ClC++的編程語(yǔ)言,用于用戶操作編程并給出新的操作。另外,在庫(kù)文件方面,百度提供了專用于昆侖K200的深度學(xué)習(xí)庫(kù),支持深度學(xué)習(xí)中常用的各種API等。在整個(gè)軟件架構(gòu)方面,百度給出的簡(jiǎn)圖顯示,硬件之上百度設(shè)計(jì)了昆侖驅(qū)動(dòng),再向上則是昆侖runtime/complier文件,再向上則分為庫(kù)文件、用戶自用Kernel以及圖像編譯器,最頂層則是應(yīng)用程序、框架文件和開(kāi)發(fā)人員界面等。
目前,昆侖K200的軟件生態(tài)已經(jīng)有了一定的基礎(chǔ)。昆侖K200芯片目前能夠全面支持語(yǔ)音、圖像、NLP模型以及自定義模型等,即使是百度之外,也有了約10個(gè)客戶在使用或者部署,整體表現(xiàn)還是不錯(cuò)的。性能比拼勝過(guò)英偉達(dá)T4
最后則是喜聞樂(lè)見(jiàn)的性能對(duì)比測(cè)試。百度昆侖K200選擇的競(jìng)爭(zhēng)對(duì)手是英偉達(dá)T4。根據(jù)百度的數(shù)據(jù)來(lái)看,昆侖K200在百度設(shè)定的測(cè)試場(chǎng)景下,均以較大幅度領(lǐng)先英偉達(dá)T4,包括專注于目標(biāo)檢測(cè)算法的YoIoV3,以及常用于自然語(yǔ)言處理的BERT,還有用于搜索的真實(shí)引擎模型,以及用于目標(biāo)檢測(cè)和像素級(jí)分割的Mask R-CNN等,可以說(shuō)基本涵蓋了百度這類用戶在日常生活中所需要的AI操作。百度還宣稱,目前昆侖K200已經(jīng)在線上部署,只要用戶通過(guò)百度云申請(qǐng)就可以調(diào)用昆侖K200了。另外值得一提的是,2019年12月,百度宣布正在配合飛騰處理器進(jìn)行產(chǎn)品適配,將配合飛騰處理器形成國(guó)內(nèi)自主可控的AI加速平臺(tái),這也是國(guó)內(nèi)AI加速設(shè)備國(guó)產(chǎn)化方面比較重要的成就了。
最后,本文依舊照例來(lái)對(duì)百度昆侖K200的產(chǎn)品進(jìn)行一些總結(jié)。從整個(gè)昆侖K200的發(fā)展歷史、架構(gòu)設(shè)計(jì)以及百度對(duì)其性能的相關(guān)介紹來(lái)看,昆侖K200還是達(dá)到了百度之前確立的設(shè)計(jì)目標(biāo)的,那就是成為一款通用的、具有靈活的、可編程性相當(dāng)優(yōu)秀的同時(shí)也是高性能的AI處理器,其在百度各類測(cè)試和應(yīng)用中也體現(xiàn)出了比較好的效果。但是,昆侖K200還有巨大的改進(jìn)空間和提升空間,比如相比英偉達(dá)最先進(jìn)的A100,昆侖K200在工藝、規(guī)模、計(jì)算能力、計(jì)算功能、數(shù)據(jù)格式支持、軟件支持等方面差距還比較遠(yuǎn),尤其是對(duì)諸如目前流行的BF類型的數(shù)據(jù)格式、混合精度支持、對(duì)稀疏性計(jì)算的支持等,都尚未在這款產(chǎn)品中有所體現(xiàn)。當(dāng)然作為一款2018年開(kāi)始研發(fā)、2020年大規(guī)模量產(chǎn)的產(chǎn)品,又是企業(yè)首款A(yù)SIC類型的芯片來(lái)說(shuō),的確沒(méi)有必要太過(guò)苛責(zé),但是我們依舊希望百度在下一代昆侖芯片中能夠做出更大的突破和更多的技術(shù)創(chuàng)新。根據(jù)百度的消息,下一代昆侖芯片將具有高速片間互聯(lián)功能,能夠大大降低數(shù)據(jù)傳輸延遲,并且還擁有從云推理、云計(jì)算到邊緣計(jì)算的多款細(xì)分型號(hào),有望覆蓋更多、更大的市場(chǎng),值得用戶和業(yè)界期待。