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