人工智能芯片目前有兩種發(fā)展路徑:一種是延續(xù)傳統(tǒng)計(jì)算架構(gòu),加速硬件計(jì)算能力,主要以 3 種類型的芯片為代表,即 GPU、 FPGA、 ASIC,但CPU依舊發(fā)揮著不可替代的作用;另一種是顛覆經(jīng)典的馮·諾依曼計(jì)算架構(gòu),采用類腦神經(jīng)結(jié)構(gòu)來(lái)提升計(jì)算能力,以IBM TrueNorth 芯片為代表。
傳統(tǒng) CPU
計(jì)算機(jī)工業(yè)從1960年代早期開(kāi)始使用CPU這個(gè)術(shù)語(yǔ)。迄今為止,CPU從形態(tài)、設(shè)計(jì)到實(shí)現(xiàn)都已發(fā)生了巨大的變化,但是其基本工作原理卻一直沒(méi)有大的改變。 通常 CPU 由控制器和運(yùn)算器這兩個(gè)主要部件組成。 傳統(tǒng)的 CPU 內(nèi)部結(jié)構(gòu)圖如圖所示:
傳統(tǒng)CPU內(nèi)部結(jié)構(gòu)圖(ALU計(jì)算模塊)
從圖中我們可以看到:實(shí)質(zhì)上僅單獨(dú)的ALU模塊(邏輯運(yùn)算單元)是用來(lái)完成數(shù)據(jù)計(jì)算的,其他各個(gè)模塊的存在都是為了保證指令能夠一條接一條的有序執(zhí)行。這種通用性結(jié)構(gòu)對(duì)于傳統(tǒng)的編程計(jì)算模式非常適合,同時(shí)可以通過(guò)提升CPU主頻(提升單位時(shí)間內(nèi)執(zhí)行指令的條數(shù))來(lái)提升計(jì)算速度。 但對(duì)于深度學(xué)習(xí)中的并不需要太多的程序指令、 卻需要海量數(shù)據(jù)運(yùn)算的計(jì)算需求, 這種結(jié)構(gòu)就顯得有些力不從心。尤其是在功耗限制下, 無(wú)法通過(guò)無(wú)限制的提升 CPU 和內(nèi)存的工作頻率來(lái)加快指令執(zhí)行速度, 這種情況導(dǎo)致 CPU 系統(tǒng)的發(fā)展遇到不可逾越的瓶頸。
并行加速計(jì)算的GPU
GPU 作為最早從事并行加速計(jì)算的處理器,相比 CPU 速度快, 同時(shí)比其他加速器芯片編程靈活簡(jiǎn)單。
傳統(tǒng)的 CPU 之所以不適合人工智能算法的執(zhí)行,主要原因在于其計(jì)算指令遵循串行執(zhí)行的方式,沒(méi)能發(fā)揮出芯片的全部潛力。與之不同的是, GPU 具有高并行結(jié)構(gòu),在處理圖形數(shù)據(jù)和復(fù)雜算法方面擁有比 CPU 更高的效率。對(duì)比 GPU 和 CPU 在結(jié)構(gòu)上的差異, CPU大部分面積為控制器和寄存器,而 GPU 擁有更ALU(邏輯運(yùn)算單元)用于數(shù)據(jù)處理,這樣的結(jié)構(gòu)適合對(duì)密集型數(shù)據(jù)進(jìn)行并行處理, CPU 與 GPU 的結(jié)構(gòu)對(duì)比如圖 所示。
CPU及GPU結(jié)構(gòu)對(duì)比圖
程序在 GPU系統(tǒng)上的運(yùn)行速度相較于單核 CPU往往提升幾十倍乃至上千倍。隨著英偉達(dá)、 AMD 等公司不斷推進(jìn)其對(duì) GPU 大規(guī)模并行架構(gòu)的支持,面向通用計(jì)算的 GPU(即GPGPU,通用計(jì)算圖形處理器)已成為加速可并行應(yīng)用程序的重要手段,GPU 的發(fā)展歷程可分為 3 個(gè)階段:
第一代GPU(1999年以前),部分功能從CPU分離 , 實(shí)現(xiàn)硬件加速 , 以GE(GEOMETRY ENGINE)為代表,只能起到 3D 圖像處理的加速作用,不具有軟件編程特性。
第二代 GPU(1999-2005 年), 實(shí)現(xiàn)進(jìn)一步的硬件加速和有限的編程性。 1999年,英偉達(dá)發(fā)布了“專為執(zhí)行復(fù)雜的數(shù)學(xué)和幾何計(jì)算的” GeForce256 圖像處理芯片,將更多的晶體管用作執(zhí)行單元, 而不是像 CPU 那樣用作復(fù)雜的控制單元和緩存,將(TRANSFORM AND LIGHTING) 等功能從 CPU 分離出來(lái),實(shí)現(xiàn)了快速變換,這成為 GPU 真正出現(xiàn)的標(biāo)志。之后幾年, GPU 技術(shù)快速發(fā)展,運(yùn)算速度迅速超過(guò) CPU。 2001年英偉達(dá)和ATI 分別推出的GEFORCE3和RADEON 8500,圖形硬件的流水線被定義為流處理器,出現(xiàn)了頂點(diǎn)級(jí)可編程性,同時(shí)像素級(jí)也具有有限的編程性,但 GPU 的整體編程性仍然比較有限。
第三代 GPU(2006年以后), GPU實(shí)現(xiàn)方便的編程環(huán)境創(chuàng)建, 可以直接編寫(xiě)程序。 2006年英偉達(dá)與ATI分別推出了CUDA (Compute United Device Architecture,計(jì)算統(tǒng)一設(shè)備架構(gòu))編程環(huán)境和CTM(CLOSE TO THE METAL)編程環(huán)境, 使得 GPU 打破圖形語(yǔ)言的局限成為真正的并行數(shù)據(jù)處理超級(jí)加速器。
2008年,蘋(píng)果公司提出一個(gè)通用的并行計(jì)算編程平臺(tái) OPENCL(開(kāi)放運(yùn)算語(yǔ)言),與CUDA綁定在英偉達(dá)的顯卡上不同,OPENCL 和具體的計(jì)算設(shè)備無(wú)關(guān)。
GPU芯片的發(fā)展階段
目前, GPU 已經(jīng)發(fā)展到較為成熟的階段。谷歌、 FACEBOOK、微軟、 Twtter和百度等公司都在使用GPU 分析圖片、視頻和音頻文件,以改進(jìn)搜索和圖像標(biāo)簽等應(yīng)用功能。此外,很多汽車(chē)生產(chǎn)商也在使用GPU芯片發(fā)展無(wú)人駕駛。 不僅如此, GPU也被應(yīng)用于VR/AR 相關(guān)的產(chǎn)業(yè)。
但是 GPU也有一定的局限性。 深度學(xué)習(xí)算法分為訓(xùn)練和推斷兩部分, GPU 平臺(tái)在算法訓(xùn)練上非常高效。但在推斷中對(duì)于單項(xiàng)輸入進(jìn)行處理的時(shí)候,并行計(jì)算的優(yōu)勢(shì)不能完全發(fā)揮出來(lái)。
半定制化的FPGA
FPGA 是在 PAL、 GAL、 CPLD 等可編程器件基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。用戶可以通過(guò)燒入 FPGA 配置文件來(lái)定義這些門(mén)電路以及存儲(chǔ)器之間的連線。這種燒入不是一次性的,比如用戶可以把 FPGA 配置成一個(gè)微控制器 MCU,使用完畢后可以編輯配置文件把同一個(gè)FPGA 配置成一個(gè)音頻編解碼器。因此, 它既解決了定制電路靈活性的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)。
FPGA可同時(shí)進(jìn)行數(shù)據(jù)并行和任務(wù)并行計(jì)算,在處理特定應(yīng)用時(shí)有更加明顯的效率提升。對(duì)于某個(gè)特定運(yùn)算,通用 CPU可能需要多個(gè)時(shí)鐘周期,而 FPGA 可以通過(guò)編程重組電路,直接生成專用電路,僅消耗少量甚至一次時(shí)鐘周期就可完成運(yùn)算。
此外,由于 FPGA的靈活性,很多使用通用處理器或 ASIC難以實(shí)現(xiàn)的底層硬件控制操作技術(shù), 利用 FPGA 可以很方便的實(shí)現(xiàn)。這個(gè)特性為算法的功能實(shí)現(xiàn)和優(yōu)化留出了更大空間。同時(shí)FPGA 一次性成本(光刻掩模制作成本)遠(yuǎn)低于ASIC,在芯片需求還未成規(guī)模、深度學(xué)習(xí)算法暫未穩(wěn)定, 需要不斷迭代改進(jìn)的情況下,利用 FPGA 芯片具備可重構(gòu)的特性來(lái)實(shí)現(xiàn)半定制的人工智能芯片是最佳選擇之一。
功耗方面,從體系結(jié)構(gòu)而言, FPGA 也具有天生的優(yōu)勢(shì)。傳統(tǒng)的馮氏結(jié)構(gòu)中,執(zhí)行單元(如 CPU 核)執(zhí)行任意指令,都需要有指令存儲(chǔ)器、譯碼器、各種指令的運(yùn)算器及分支跳轉(zhuǎn)處理邏輯參與運(yùn)行, 而FPGA每個(gè)邏輯單元的功能在重編程(即燒入)時(shí)就已經(jīng)確定,不需要指令,無(wú)需共享內(nèi)存,從而可以極大的降低單位執(zhí)行的功耗,提高整體的能耗比。
由于 FPGA 具備靈活快速的特點(diǎn), 因此在眾多領(lǐng)域都有替代ASIC 的趨勢(shì)。 FPGA 在人工智能領(lǐng)域的應(yīng)用如圖所示。
FPGA 在人工智能領(lǐng)域的應(yīng)用
全定制化的ASIC
目前以深度學(xué)習(xí)為代表的人工智能計(jì)算需求,主要采用GPU、FPGA等已有的適合并行計(jì)算的通用芯片來(lái)實(shí)現(xiàn)加速。在產(chǎn)業(yè)應(yīng)用沒(méi)有大規(guī)模興起之時(shí),使用這類已有的通用芯片可以避免專門(mén)研發(fā)定制芯片(ASIC)的高投入和高風(fēng)險(xiǎn)。但是,由于這類通用芯片設(shè)計(jì)初衷并非專門(mén)針對(duì)深度學(xué)習(xí),因而天然存在性能、 功耗等方面的局限性。隨著人工智能應(yīng)用規(guī)模的擴(kuò)大,這類問(wèn)題日益突顯。
GPU作為圖像處理器, 設(shè)計(jì)初衷是為了應(yīng)對(duì)圖像處理中的大規(guī)模并行計(jì)算。因此,在應(yīng)用于深度學(xué)習(xí)算法時(shí),有三個(gè)方面的局限性:
第一:應(yīng)用過(guò)程中無(wú)法充分發(fā)揮并行計(jì)算優(yōu)勢(shì)。 深度學(xué)習(xí)包含訓(xùn)練和推斷兩個(gè)計(jì)算環(huán)節(jié), GPU 在深度學(xué)習(xí)算法訓(xùn)練上非常高效, 但對(duì)于單一輸入進(jìn)行推斷的場(chǎng)合, 并行度的優(yōu)勢(shì)不能完全發(fā)揮。
第二:無(wú)法靈活配置硬件結(jié)構(gòu)。 GPU 采用 SIMT 計(jì)算模式, 硬件結(jié)構(gòu)相對(duì)固定。 目前深度學(xué)習(xí)算法還未完全穩(wěn)定,若深度學(xué)習(xí)算法發(fā)生大的變化, GPU 無(wú)法像 FPGA 一樣可以靈活的配制硬件結(jié)構(gòu)。
第三:運(yùn)行深度學(xué)習(xí)算法能效低于FPGA。
盡管 FPGA 倍受看好,甚至新一代百度大腦也是基于 FPGA 平臺(tái)研發(fā),但其畢竟不是專門(mén)為了適用深度學(xué)習(xí)算法而研發(fā),實(shí)際應(yīng)用中也存在諸多局限:
第一:基本單元的計(jì)算能力有限。為了實(shí)現(xiàn)可重構(gòu)特性, FPGA 內(nèi)部有大量極細(xì)粒度的基本單元,但是每個(gè)單元的計(jì)算能力(主要依靠 LUT 查找表)都遠(yuǎn)遠(yuǎn)低于 CPU 和 GPU 中的 ALU 模塊。
第二:計(jì)算資源占比相對(duì)較低。 為實(shí)現(xiàn)可重構(gòu)特性, FPGA 內(nèi)部大量資源被用于可配置的片上路由與連線。
第三:速度和功耗相對(duì)專用定制芯片(ASIC)仍然存在不小差距。
第四,:FPGA 價(jià)格較為昂貴。在規(guī)模放量的情況下單塊 FPGA 的成本要遠(yuǎn)高于專用定制芯片。
因此,隨著人工智能算法和應(yīng)用技術(shù)的日益發(fā)展,以及人工智能專用芯片 ASIC產(chǎn)業(yè)環(huán)境的逐漸成熟, 全定制化人工智能 ASIC也逐步體現(xiàn)出自身的優(yōu)勢(shì),從事此類芯片研發(fā)與應(yīng)用的國(guó)內(nèi)外比較有代表性的公司如圖所示。
人工智能專用芯片研發(fā)情況一覽
深度學(xué)習(xí)算法穩(wěn)定后, AI 芯片可采用ASIC設(shè)計(jì)方法進(jìn)行全定制, 使性能、功耗和面積等指標(biāo)面向深度學(xué)習(xí)算法做到最優(yōu)。
類腦芯片
類腦芯片不采用經(jīng)典的馮·諾依曼架構(gòu), 而是基于神經(jīng)形態(tài)架構(gòu)設(shè)計(jì),以IBM Truenorth為代表。 IBM 研究人員將存儲(chǔ)單元作為突觸、計(jì)算單元作為神經(jīng)元、傳輸單元作為軸突搭建了神經(jīng)芯片的原型。
目前, Truenorth用三星 28nm功耗工藝技術(shù),由 54億個(gè)晶體管組成的芯片構(gòu)成的片上網(wǎng)絡(luò)有4096個(gè)神經(jīng)突觸核心,實(shí)時(shí)作業(yè)功耗僅為70mW。由于神經(jīng)突觸要求權(quán)重可變且要有記憶功能, IBM采用與CMOS工藝兼容的相變非易失存儲(chǔ)器(PCM)的技術(shù)實(shí)驗(yàn)性的實(shí)現(xiàn)了新型突觸,加快了商業(yè)化進(jìn)程。