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