AI晶片發展的前世今生!

文:數學與人工智能

人工智能晶片的分類

 2.1 傳統CPU困局

 自20個世紀60年代早期開始,CPU(中央處理器)開始出現並使用在計算機工業中。 現如今,雖然CPU 在設計和實現上都發生了巨大變化 ,但是基於 馮 · 諾依曼架構的 CPU 基本工作原理卻一直沒有發 生很大變化。  馮 · 諾依曼架構分為中央 處理單元(CPU)和存儲器,CPU主要由控制器和運 算器兩大部件組成。 在工作時 ,CPU 每執行一條指令都需要從存儲器中讀取數據 ,根據指令對數據 進行相應的操作,因此CPU不僅負責數據運算,而且 需要執行存儲讀取 、指令分析 、分支跳轉等命令。 同 時可以通過提升單位時間內執行指令的條數 ,即主 頻 ,來提升計算速度。 但在人工智能深度學習領域 中程序指令相對較少 ,但對大數據的計算需求很大 , 需要進行海量的數據處理。 當用CPU 執行AI 算法時,CPU 將花費大量的時間在數據/指令的讀取分析上,在一定的功耗前提下,不能夠通過無限制的加快CPU 頻率和內存帶寬來達到指令執行速度無 限制的提升。 因此在這種情形下 ,傳統 CPU 結構缺點明顯 , 在人工智能芯片領域中的算力瓶頸問題很難解決 。

 2.2 人工智能晶片中的後CPU時代

基於 CPU 的算力問題 ,近年來人工智能芯片領域的科學家們進行了富有成果的廣泛研究 ,主要集 中在 AI 晶片目前的兩種發展方向。 一個方向是繼續延續經典的馮· 諾依曼計算架構,以加速計算能力為發展目標,主要分為並行加速計算的GPU(圖形處理單元)、半定制化的FPGA(現場可編程門陣列)、 全定制化的ASIC(專用集成電路)。 另一個方向就是 顛覆傳統的馮 · 諾依曼計算架構 ,採用基於類腦神經 結構的神經擬態晶片來解決算力問題。 下面將對這 兩個方向的人工智能芯片特點進行詳細描述。

 2.2.1 按架構分類

 (1)圖 形 處 理 單 元(graphics processing unit ,GPU)。  GPU 是相對較早的加速計算處理器 ,具 有速度快、晶片編程靈活簡單等特點。 由於傳統CPU 的計算指令遵循串行執行方式 ,不能發揮出芯片的全部潛力 ,而 GPU 具有高並行結構 ,在處理圖形 數據和復雜算法方面擁有比 CPU 更高的效率。 在結構上,CPU 主要由控制器和寄存器組成,而GPU 則擁有更多的邏輯運算單元(arithmetic logic unit,ALU) 用於數據處理,這樣的結構更適合對密集型數據進行並行處理,程序在 GPU 系統上的運行速度相較於單核CPU 往往提升幾十倍乃至上千倍。 同時 ,GPU擁有了更加強大的浮點運算能力 ,可以緩解深度學 習算法的訓練難題,釋放人工智能的潛能。 但是GPU 也有一定的局限性。 深度學習算法分為訓練和 推斷兩部分 ,GPU 平台在算法訓練上非常高效。 但 在推斷中對於單項輸入進行處理的時候 ,並行計算 的優勢不能完全發揮出來 。

 (2)現場可編程門陣列(field programmable gate array ,FPGA )。  FPGA 是 在 PAL 、GAL 、CPLD 等 可 編 程器件基礎上進一步發展的產物。 其基本原理是在FPGA 芯片內集成大量的基本門電路以及存儲器 ,用 戶可以通過更新FPGA配置文件(即燒入)來定義這 些門電路以及存儲器之間的連線。 這種燒入不是一 次性的,因此,它既解決了定制電路靈活性的不足, 又克服了原有可編程器件門電路數有限的缺點。 與GPU 不同 ,FPGA 同時擁有進行數據並行和任務並行 計算的能力 ,適用於以硬件流水線方式處理一條數 據 ,且整數運算性能更高 ,因此常用於深度學習算法 中的推斷階段。 不過 FPGA 通過硬件的配置實現軟 件算法 ,因此在實現複雜算法方面有一定的難度 。

 將FPGA和CPU對比可以發現兩個特點,一是FPGA沒有內存和控制所帶來的存儲和讀取部分,速度更快,二是FPGA沒有讀取指令操作,所以功耗更低。 劣勢是價格比較高,編程複雜,整體運算能力不是很高。 功耗方面 ,從體系結構而言 ,FPGA 也具有天生 的優勢。 傳統的馮氏結構中,執行單元(如CPU核) 執行任意指令,都需要有指令存儲器、譯碼器、各種指令的運算器及分支跳轉處理邏輯參與運行,而FPGA每個邏輯單元的 功能在重編程(即燒入)時就已經確定,不需要指令,無需共享內存,從而可以極大地降低單位執行的功耗,提高整體的能耗比。  FPGA最值得注意的例子可能是 CNP ,它進一步改 進並重命名為 NeuFlow ,後來改編為 nn-X 。 這些設計可以實現 10~100 KM/s 操作(GOPS),功率僅 為10W以下。

 (3)專用集成電路(application-specific integrated circuit,ASIC)。 目前以深度學習為代表的人工智能 計算需求,主要採用GPU、FPGA等已有的適合併行 計算的通用晶片來實現加速。 在產業應用沒有大規 模興起之時 ,使用這類 GPU 、FPGA 已有的通用晶片 可以避免專門研發定制芯片( ASIC )的高投入和高風 險。 但是,由於這類通用芯片設計初衷並非專門針 對深度學習 ,因而天然存在性能 、功耗等方面的局限 性。 隨著人工智能應用規模的擴大 ,這類問題日益 突顯。

 GPU 作為圖像處理器 ,設計初衷是為了應對圖像 處理中的大規模並行計算。 因此 ,在應用於深度學習 算法時無法充分發揮並行計算優勢。 深度學習包含 訓練和推斷兩個計算環節 ,GPU 在深度學習算法訓練 上非常高效 ,但對於單一輸入進行推斷的場合 ,並行 度的優勢不能完全發揮。 其次,GPU採用SIMT計算 模式 ,硬件結構相對固定 ,無法靈活配置硬件結構 。 此外,運行深度學習算法能效低於FPGA。

 雖然FPGA 倍受看好,但其畢竟不是專門為了適用深度學習算法而研發,實際應用中為了實現可重構特性,FPGA 內部有大量極細粒度的基本單元,但是每個單元的計算能力都遠低 於CPU 和GPU 中的ALU 模塊;其次,為實現可重構特性,FPGA 內部大量資源被用於可配置的片上路由與連線,因此計算資源佔比相對較低;再​​者,速度和功耗 相對專用定制晶片(ASIC)仍然存在不小差距;而且FPGA價格較為昂貴,在規模放量的情況下單塊FPGA的成本要遠高於專用定制晶片。

 因此 ,隨著人工智能算法和應用技術的日益發 展,以及人工智能專用晶片ASIC產業環境的逐漸成 熟 ,全定制化人工智能 ASIC 也逐步體現出自身的優 勢。  ASIC是專用定制芯片,定制的特性有助於提高ASIC 的性能功耗比 ,缺點是電路設計需要定制 ,相 對開發週期長 ,功能難以擴展。 但在功耗 、可靠性 、 集成度等方面都有優勢 ,尤其在要求高性能 、低功耗 的移動應用端體現明顯。 比如穀歌的 TPU、寒武紀 的 GPU ,地平線的 BPU 都屬於 ASIC 晶片 。

 (4)神經擬態芯片(類腦芯片)。 在人工智能晶片中,傳統的馮·諾依曼架構存在著“馮·諾依曼瓶 頸”,它降低了系統的整體效率和性能。 為了從 根本上克服這個問題 ,神經形態計算近年來已成為 基於馮 · 諾依曼系統的這些傳統計算架構的最有吸 引力的替代方案。 術語“神經形態計算”首先由Mead 在 1990 年提出 ,它是一種受大腦認知功能 啟發的新計算範式。 與傳統的 CPU / GPU 不同 ,生 物腦(例如哺乳動物的大腦)能夠以高效率和低功 耗在小區域中並行處理大量信息。 因此 ,神經形態 計算的最終目標是開發神經形態硬件加速器 ,模擬 高效生物信息處理,以彌合網絡和真實大腦之間的 效率差距,這被認為是下一代人工智能的主要驅 動力。

 神經擬態晶片不採用經典的馮· 諾依曼架構,而是基於神經形態架構設計,是模擬生物神經網絡的計算機制,如果將神經元和突觸權重視為大腦的“處理器”和“記憶 ”,它們會分佈在整個神經皮層。 神經擬態計算從結構層面去逼近大腦,其研究工作可分為兩個層次,一是神經網絡層面,與之相應的是神經擬態架構和處理器,以IBM Truenorth 為代表,這種芯片把定制化 的數字處理內核當作神經元,把內存作為突觸。

 其邏輯結構與傳統馮·諾依曼結構不同:內存、CPU和通信部件完全集成在一起,因此信 息的處理在本地進行 ,克服了傳統計算機內存與CPU 之間的速度瓶頸問題。 同時神經元之間可以方便快捷地相互溝通,只要接收到其他神經元發過來的脈衝(動作電位),這些神經元就會同時做動作;二是神經元與神經突觸層面,與之相應的 是元器件層面的創新。 如 IBM 蘇黎世研究中心宣布製造出世界 上首個人造納米尺度的隨機相變神經元,可實現高 速無監督學習 。

 當前 ,最先進的神經擬態芯片仍然遠離人類大 腦的規模(1010個神經元,每個神經元有103~104個突 觸),至多達到104 倍,如表1所示。 為了達到在人腦 中規模,應將多個神經擬態芯片集成在電路板或背 板上 ,以構成超大規模計算系統。 神經擬態晶片的設計目的不再僅僅局限於加速深度學習算法,而是在芯片基本結構甚至器件層面上改變設計,希望能夠開發出新的類腦計算機體系結構,比如採用憶阻器和ReRAM 等新 器件來提高存儲密度。 這類芯片 技術尚未完全成熟 ,離大規模應用還有很長的距離 , 但是長期來看類腦芯片有可能會帶來計算機體系結構的革命 。

2.2.2 按功能分類

 根據機器學習算法步驟 ,可分為訓練(training)和推斷( inference )兩個環節 。 訓練環節通常需要通過大量的數據輸入,訓練出一個複雜的深度神經網絡模型。 訓練過程由於涉 及海量的訓練數據和復雜的深度神經網絡結構 ,運 算量巨大 ,需要龐大的計算規模 ,對於處理器的計算 能力 、精度 、可擴展性等性能要求很高。 目前市場上通常使用英偉達的 GPU 集群來完成 ,Google 的TPU2.0/3.0 也支持訓練環節的深度網絡加速 。

 推斷環節是指利用訓練好的模型 ,使用新的數 據去“推斷”出各種結論。 這個環節的計算量相對訓 練環節少很多 ,但仍然會涉及到大量的矩陣運算 。 在推斷環節中 ,除了使用 CPU 或 GPU 進行運算外 ,FPGA 以及 ASIC 均能發揮重大作用。 表 2 是 4 種技 術架構的芯片在人工智能係統開發上的對比 。

2.2.3 按應用場景分類

 主要分為用於服務器端(雲端)和用於移動端( 終 端 )兩 大 類 。

 服務器端:在深度學習的訓練階段,由於數據量及運算量巨大,單一處理器幾乎不可能獨立完成1 個模型的訓練過程,因此,負責AI 算法的芯片採用的是高性能計算的技術路線, 一方面要支持盡可能多的網絡結構以保證算法的正確率和泛化能力;另一方面必須支持浮點數運算;而且為了能夠提升性能必須支持陣列式結構(即可以把多塊晶片片組成一個計算 陣列以加速運算)。 在推斷階段,由於訓練出來的深度神經 網絡模型仍非常複雜 ,推斷過程仍然屬於計算密集型 和存儲密集型 ,可以選擇部署在服務器端 。

 移 動 端( 手 機 、智 能 家 居 、無 人 車 等 ):移 動 端 AI晶片在設計思路上與服務器端 AI 晶片有著本質的 區別。 首先,必須保證很高的計算能效;其次,在高 級輔助駕駛 ADAS 等設備對實時性要求很高的場 合 ,推斷過程必須在設備本身完成 ,因此要求移動端 設備具備足夠的推斷能力。 而某些場合還會有低功 耗 、低延遲 、低成本的要求 ,從而導致移動端的 AI 晶 片多種多樣 。