當提起晶元時,人們首先想到的是Intel公司,因為這家公司生產的桌面端CPU實在是太出名了,以至於大家下意識的認為晶元就是它。做為AIoT產品的產品經理,當工程師提起晶元時,也許大家首先想到的是海思、高通、瑞芯微、全志、聯發科等公司。一旦工程師提起AI晶元,大部分產品經理就懵了,因為這裡面涉及到演算法AI+硬體晶元,兩個陌生的領域疊加在一起,直接是懵圈的平方。

AI晶元基礎知識

什麼是人工智慧,百度百科是這樣解釋的:

人工智慧 (Artificial Intelligence, AI)是研究或者開發用於模擬、延伸和擴展人類智能的理論、方法、技術及應用系統的一門科學技術。

對於人工智慧、機器學習、深度學習三者之間的關係,也是讓很多人摸不著頭腦,以為是同一個東西,只是叫法不同。實際上他們三者之間是包含與被包含的關係:

目前關於AI 晶元並沒有一個嚴格的定義。比較寬泛的定義是面向人工智慧應用的晶元都可以稱為AI 晶元。

AI 晶元主要包括三類:

  1. 經過軟硬體優化可以高效支持AI 應用的通用晶元,例如GPU,FPGA;

2. 專門為特定的 AI 產品或者服務而設計的晶元,稱之為ASIC(Application-Specific Integrated Circuit),主要是側重加速機器學習(尤其是神經網路、深度學習),這也是目前AI 晶元中最多的形式;

3. 受生物腦啟發設計的神經形態計算晶元,這類晶元不採用經典的馮·諾依曼架構,而是基於神經形態架構設計,以 IBM Truenorth為代表。

在AI應用還沒有得到市場驗證之前,通常使用已有的通用晶元進行並行加速計算,可以避免專門研發ASIC晶元的高投入和高風險。但是這類通用晶元設計初衷並非專門針對深度學習,因而存在性能、功耗等方面的侷限性。隨著人工智慧應用規模持續擴大,這類問題日益突顯,待深度學習演算法穩定後, AI 晶元可採用 ASIC 設計方法進行全定製, 使性能、功耗和麪積等指標面向深度學習演算法做到最優。

很多AI應用廠商經常宣稱自己做出了全球第一款XXX的SoC晶元,那麼SoC晶元又時什麼AI晶元呢?

從上圖不難發現,SoC就是ASIC晶元,只不過進行了細分。

A System-on-Chip (SoC) is a silicon chip that contains one or more processor cores -- microprocessors (MPUs) and/or microcontrollers (MCUs) and/or digital signal processors (DSPs) -- along with on-chip memory, hardware accelerator functions, peripheral functions, and (potentially) all sorts of other "stuff." One way to look at this is that if an ASIC contains one or more processor cores then its an SoC. Similarly, if an ASSP contains one or more processor cores then its an SoC.

如果將MPU、MCU、DSP、儲存系統(或片外存儲控制介面)、以及其他外圍器件集成在單一晶元上,那麼這類ASIC晶元就稱為片上系統SoC,也稱為系統級晶元。

ASSP和ASIC之間的唯一區別是:ASSP是更通用的設備,適用於多個系統,如獨立的USB介面晶元可以歸類為ASSP,而ASIC通常是客戶定製的,或是面向特定用途的產品。

AI晶元的關鍵特徵

  1. 新型的計算範式

AI 計算既不脫離傳統計算,也具有新的計算特質,如處理的內容往往是非結構化數據(視頻、圖片等)。處理的過程通常需要很大的計算量,基本的計算主要是線性代數運算(如張量處理),而控制流程則相對簡單。處理的過程參數量大。

2. 訓練和推斷

AI 系統通常涉及訓練(Training)和推斷(Inference)過程。簡單來說,訓 練過程是指在已有數據中學習,獲得某些能力的過程;而推斷過程則是指對新的數據,使用這些能力完成特定任務(比如分類、識別等)。

3. 大數據處理能力

人工智慧的發展高度依賴海量的數據。滿足高效能機器學習的數據處理要求是AI 晶元需要考慮的最重要因素。

4. 數據精度

低精度設計是AI 晶元的一個趨勢,在針對推斷的晶元中更加明顯。對一些應用來說,降低精度的設計不僅加速了機器學習演算法的推斷(也可能是訓練),甚至可能更符合神經形態計算的特徵。

5. 可重構的能力

針對特定領域(包括具有類似需求的多種應用)而不針對特定應用的設計,將是AI 晶元設計的一個指導原則,具有可重構能力的AI 晶元可以在更多應用中大顯身手,並且可以通過重新配置,適應新的AI 演算法、架構和任務。

6. 開發工具

就像傳統的CPU 需要編譯工具的支持, AI 晶元也需要軟體工具鏈的支持,才能將不同的機器學習任務和神經網路轉換為可以在AI 晶元上高效執行的指令代碼,如NVIDIA GPU 通過CUDA 工具獲得成功。

AI晶元的技術挑戰

很多技術創新都是需求驅動和技術瓶頸同時存在的情況下產生的,AI 晶元和它背後的各種技術也不例外。首先是巨大需求,一方面體現在AI 應用的需求,需求的驅動要求能夠提供更加高效地處理AI 運算的硬體,另一方面在目前的技術框架下遇到一些瓶頸,特別是馮·諾伊曼瓶頸和CMOS 工藝和器件瓶頸。

提高AI 晶元性能和能效的關鍵之一在於支持高效的數據訪問。如圖所示,在傳統馮·諾伊曼體系結構中,數據從處理單元外的存儲器提取,處理完之後在寫回存儲器。在AI 晶元實現中,基於馮·諾伊曼體系結構,提供運算能力相對是比較簡單易行的,但由於運算部件和存儲部件存在速度差異,當運算能力達到一定程度,由於訪問存儲器的速度無法跟上運算部件消耗數據的速度,再增加運算部件也無法得到充分利用,即形成所謂的馮·諾伊曼「瓶頸」,或「內存牆」問題,是長期困擾計算機體系結構的難題。目前常見的方法是利用高速緩存(Cache)等層次化存儲技術盡量緩解運算和存儲的速度差異。

目前針對AI而提出的硬體架構創新都是在和這個問題做鬥爭。概括來說,在架構層面解決這一問題的基本思路有:

1)減少訪問存儲器的數量,比如減少神經網路的存儲需求(參數數量,數據精度,中間結果)、數據壓縮和以運算換存儲等;

2)降低訪問存儲器的代價,盡量拉近存儲設備和運算單元的「距離」,甚至直接在存儲設備中進行運算。

人工智慧,特別是機器學習的發展將需要更加強有力的,超過每秒百億次( 10^{18} ) 運算能力的計算系統,而構建這些系統的基礎是CMOS 技術的晶元,CMOS 工藝能夠不斷提高系統性能主要得益於集成尺寸的縮小。由於基礎物理原理限制和經濟的原因,持續提高集成密度將變得越來越困難。目前CMOS 器件的橫向尺寸接近幾納米,層厚度只有幾個原子層,這會導致顯著的電流泄漏,降低工藝尺寸縮小的效果。此外這些納米級晶體管的能量消耗非常高,很難實現密集封裝。

在計算架構和器件層面,我們需要一種新的方法來打破目前的困境。大腦可以看作一個可以處理大量(通常是模糊的)信息,且具有超高密度、錯誤恢復能力和高能效的計算模型。神經元和大腦突觸的能量消耗比最先進的CMOS 器件還低幾個數量級。近年來,可以存儲模擬數值的非易失性存儲器發展迅猛,它可以同時具有存儲和處理數據能力,可以破解傳統計算體系結構的一些基本限制,有望實現類腦突觸功能。

AI晶元設計趨勢

  1. 雲端訓練和推斷:大存儲、高性能、可伸縮

存儲的需求(容量和訪問速度)越來越高,處理能力推向每秒千萬億次(Peta FLOPS),並支持靈活伸縮和部署。隨著AI 應用的爆發,對推斷計算的需求會越來越多,一個訓練好的演算法會不斷復用。推斷和訓練相比有其特殊性,更強調吞吐率、能效和實時性,未來在雲端很可能會有專門針對推斷的ASIC 晶元(如Google 的第一代TPU ),提供更好的能耗效率並實現更低的延時。

2. 邊緣設備:把效率推向極致。

相對雲端應用,邊緣設備的應用需求和場景約束要複雜很多,針對不同的情況可能需要專門的架構設計。拋開需求的複雜性,目前的邊緣設備主要是執行「推斷」。在這個目標下,AI 晶元最重要的就是提高「推斷」效率。目前,衡量AI 晶元實現效率的一個重要指標是能耗效率——TOPs/W,這也成為很多技術創新競爭的焦點。未來,越來越多的邊緣設備將需要具備一定的「學習」能力,能夠根據收集到的新數據在本地訓練、優化和更新模型。這也會對邊緣設備以及整個AI 實現系統提出一些新的要求。最後,在邊緣設備中的AI 晶元往往是SoC 形式的產品,AI 部分只是實現功能的一個環節,而最終要通過完整的晶元功能來體現硬體的效率。這種情況下,需要從整個系統的角度考慮架構的優化。因此,終端設備AI 晶元往往呈現為一個異構系統,專門的AI 加速器和CPU,GPU,ISP,DSP 等其它部件協同工作以達到最佳的效率。

3. 軟體定義晶元。

在AI 計算中,晶元是承載計算功能的基礎部件,軟體是實現AI 的核心。這裡的軟體即是為了實現不同目標的AI 任務,所需要的AI 演算法。對於複雜的AI 任務,甚至需要將多種不同類型的AI 演算法組合在一起。即使是同一類型的AI 演算法,也會因為具體任務的計算精度、性能和能效等需求不同,具有不同計算參數。因此,AI 晶元必須具備一個重要特性:能夠實時動態改變功能,滿足軟體不斷變化的計算需求,即「軟體定義晶元」。

AI晶元發展現狀

從2015 年開始,AI 晶元的相關研發逐漸成為學術界和工業界研發的熱點。到目前為止,在雲端和終端已經有很多專門為 AI 應用設計的晶元和硬體系統。同時,針對目標應用是「 訓練」還是「推斷」,可以把AI 晶元的目標領域分成4 個象限,如圖所示:

1.雲端AI計算

在雲端,通用GPU,特別是NVIDIA 系列GPU 晶元,被廣泛應用於深度神經網路訓練和推理。與CPU 相比,擁有數千個計算內核的GPU 可以實現10-100 倍的吞吐量。面向雲端AI 應用,很多公司開始嘗試設計專用晶元以達到更高的效率,其中最著名的例子是Google TPU,可以支持搜索查詢、翻譯等應用,也是Alpha Go 的幕後英雄。此外,FPGA 在雲端的推斷也逐漸在應用中佔有一席之地。一方面,FPGA 可以支持大規模並行的硬體設計,和GPU 相比可以降低推斷的延時和功耗。另一方面,FPGA 可以很好地支持不同的數值精度,非常適合低精度推斷的實現。進一步地,FPGA 的可編程能力也使它可以相對更快地支持新的演算法和應用。

2.邊緣AI計算

隨著人工智慧應用生態的爆發,越來越多的AI 應用開始在端設備上開發和部署。對於某些應用,由於各種原因(如延遲,帶寬和隱私問題),必須在邊緣節點上執行推斷。比如,自動駕駛汽車的推斷就不能交由雲端完成,如果出現網路延時,則會發生災難性後果。再比如,大型城市動輒百萬的高清攝像頭,其人臉識別如果全交由雲端完成,高清錄像的數據傳輸會讓通信網路不堪重負。

3.雲和端的結合

總的來說,雲端AI 處理主要強調精度、處理能力、內存容量和帶寬,同時追求低延時和低功耗;邊緣設備中的AI 處理則主要關注功耗、響應時間、體積、成本和隱私安全等問題。目前雲和邊緣設備在各種AI 應用中往往是配合工作。最普遍的方式是在雲端訓練神經網路,然後在雲端(由邊緣設備採集數據)或者邊緣設備進行推斷。隨著邊緣設備能力的不斷增強,越來越多的計算工作負載將在邊緣設備上執行,甚至可能會有訓練或者學習的功能在邊緣設備上執行。另一方面,雲的邊界也逐漸向數據的源頭推進,未來很可能在傳統的終端設備和雲端設備直接出現更多的邊緣設備,它們會把AI處理分佈在各種網路設備(比如5G 的基站)中,讓數據盡量實現本地處理。

AI晶元選型策略

當我們面對一個全新的 AI 晶元時,可以從以下幾個方面進行評估:

1、適用領域

這個 AI 晶元是屬於雲端還是終端,完成什麼工作,是否滿足需求。

2、體系架構

它是一個 SoC,還是一個專門的 NPU?這個晶元能夠獨立工作,還是需要其他的硬體設備來共同完成一項工作。

3、計算能力

AI 晶元必然是要進行 AI 處理,速度怎麼樣,能夠達到多少,不同模型的演算法對算力的要求也不一樣,對晶元本身的設計也不一樣。

4、價格和功耗

產品預算是多少,在滿足需求的條件下,該晶元成本與產品總成本的關係。功耗跟應用場景有關,用在終端設備,還是雲端,功耗完全不一樣。

參考資料:

  1. ASIC, ASSP, SoC, FPGA – Whats the Difference?

2. 清華大學AI晶元白皮書


推薦閱讀:
相關文章