想要玩邊緣智慧(Edge Artificial Intelligence, Edge AI)前我們首先要先認識什么是類神經網絡(Neural Network, NN)、深度學習(Deep Learning, DL)及為什么需要使用AI芯片,而AI芯片又有那些常見分類及未來可能發展方向。接下來就逐一為大家介紹不同類型的AI芯片用途及優缺點。
1. 什么是神經網絡?
人工智能自1950年發展至今已經過多次起伏,從最簡單的「符號邏輯」開始,歷經「專家系統」、「機器學習」、「數據采礦」等多個時期。直到2012年Alex Krizhevsky和其導師Geoffrey Hinton推出基于類神經網絡擴展出來的「卷積神經網絡」(Convolutional Neural Network, CNN) 「AlexNet」,以超出第二名10%正確率的優異成績贏得ImageNet大賽后,「深度學習」(DeepLearning, DL) 架構正式開啟新一波的AI浪朝。
此后持續衍生出各種不同的網絡架構,如能處理像聲音、文章、感測信號這類和時間相關的「循環神經網絡」(Recurrent Neural Network, RNN) ,或者能自動生成影像、風格轉移(StyleTransfer)的「生成對抗網絡」(Generative Adversarial Network, GAN) 等一系列網絡架構。
這些網絡(或稱模型)都有一個特色,就是有大量的神經元(Neural)、神經連結權重(Weights)、層數(Layers)及復雜的網絡結構(Network Architecture)。而其中最主要的運算方式就是矩陣(Matrix)計算,若再拆解成更小元素,即為 y = a * x + b ,又可稱為「乘積累加運算」(Multiply–accumulate, MAC) 。
一個小型模型少則數千個神經元、數萬個權重值,多則可能數十萬個神經元、數十億個權重值。以常見手寫數字(0-9)辨識小型CNN模型LeNet5為例(如Fig.1所示),它約有6萬多個權重,當模型推論(Inference)一次得到答案時,約需經過42萬多次MAC運算。而像大型的VGG16模型則有1.38億個權重,推論一次則約有150多億次MAC計算。
一般來說模型的初始權重值通常都不太理想,所以根據推論后得到的答案,必須再反向修正所有權重值,使其更接近正確答案。但通常一次是很難到位的,所以要反復修正直到難以再調整出更接近正確答案為止,而這個過程就稱為「模型訓練」(Model Training) 。
通常這樣修正的次數會隨著數據集(Dataset)的大小、權重的數量及網絡結構的復雜度,可能少則要幾千次,多則要幾萬次、甚至更多次數才能收斂到滿意的結果。由此得知訓練模型所需的計算量有多么巨量了。
Fig. 1 手寫數字辨識LeNet-5卷積神經網絡模型及卷積、矩陣乘法示意圖。
2. AI芯片類型
為了解決如此龐大且性質單一的計算量,于是就有了硬件加速計算的需求,通常會將此類硬件稱呼為「AI芯片」(AI Chip) 或者「深度學習加速器」(Deep Learning Accelerator, DLA) 或者稱為 「神經網絡處理單元」(NeuralNetwork Processing Unit, NPU) 。
在AI芯片領域中主要分為訓練用及推論用。前者重點在效能,所以功耗及成本就不太計較。而后者會依不同應用場合會有高效能、高推論精度、低功耗、低內存空間、低成本等不同需求。尤其在Edge AI上更強調低功耗、低記體體空間及低成本需求,而效能表現通常就只能遷就不同硬件表現。
近幾年手機成長迅速,有很多芯片為了整體表現,因此整合了很多功能在同一顆芯片上稱為SoC (System on Chip),包含CPU, DSP, GPU, NPU及像影音編譯碼的功能等。而FPGA的開發板也有反過來不過全部都自己設計,而把常用的CPU, DSP, AISC等整合進來,讓使用者能更專心開發自己所需的特殊功能,包含AI等應用。
2.1 中央處理單元(CPU)
不論是像Arduino、小型IoT裝置使用的單芯片(Micro-controller / Micro Controll Unit, MCU),如STM,Microchip, ESP32, Pi Pico, Arm Cortex-M, RISC-V等,或者是像樹莓派、手機使用的微處理器(MicroProcessing Unit, MPU),如Arm Cortex-A系列、Qualcomm Snapdragon系列等,甚至是桌機、筆電常用的主芯片,如Intel, AMD x86系列等,都會有負責運算的中央處理單元(Central Processing Unit, CPU)。
CPU可運行各種形式的AI模型,不限矩陣運算類型,彈性極高,但一次只能執行一道運算指令,如一個乘法或一個加法或一個乘加指令,效能極低。若搭配單指令流多數據流(Single Instruction Multiple Data, SIMD)指令集,如INTEL的AVX、ARM的NEON、RISC-V的P擴充指令集,則可將32/64/128/256/512bit拆分成8/16/32 bit的運算,如此便能提高4~64倍的運算效能。另外亦可透過提高工作頻率頻率(MHz)或增加核心數來增加指令周期。
在MCU / MPU尚未有MAC及SIMD指令集前,當遇到需要對數字聲音或影像進行時間域轉頻率域計算如快速傅立葉變換(Fast Fourier Transform, FFT),常會遇到大量定點數或浮點數的的矩陣計算,此時就需要專用數字信號處理器(Digital Signal Processor, DSP)來加速計算。
此類處理器在AI專用芯片未出現前,亦有很多被拿來當成浮點數矩陣加速計算使用,如Qualcomm Hexagon, Tensilica Xtensa, Arc EM9D等系列。它在開發上彈性頗高,價格居中,但僅適用于矩陣計算類的應用,在MCU / MPU開始加入MAC、SIMD指令集及GPU技術大量普及后,逐漸被取代,目前大多只有少數獨立存在,大多依附于中大型微處理器中,或者整合至小型MCU芯片中代替NPU的工作。
2.3 圖形處理器(GPU)
圖形處理器(Graphics Processing Unit, GPU)是用于處理計算機上數字繪圖用的專用芯片,而其中最主要的功能就是在處理矩陣運算,因此它能將CPU一次只能處理一個MAC的計算變成一次處理數百到數萬個MAC來加速運算,同時可以分散CPU的計算負荷。早期有些科學家發現其特性,因此開發出GPGPU (General Purpose computing on Graphics Processing Units)函式庫來加速科學運算。
2012年AlexNet透過GPU來加速訓練深度學習模型,從此開啟GPU即為AI芯片代名詞的時代。目前主流GPU供貨商包括Nvidia (GeForce, Quadro, Tesla, Tegra系列) , Intel (內顯HD, Iris及外顯Arc系列), Arm(Mali系列)等。
由于GPU原本是用于計算機繪圖,有大量電路、處理時間、耗能是用來處理繪圖程序,因此后續許多AI芯片的設計理念就是保留計算部份而去除繪圖處理部份,來提升芯片面積的有效率。目前使用GPU開發的彈性尚佳,但不適用于非大量矩陣計算的模型及算法。
另外為了容納更高的計算平行度,一次能處理更多的乘加運算,因此芯片的制程也隨之越來越小(從數百nm到數nm)、晶體數量和芯片單價也越來越高,較適合大模型訓練及高速推論用。
2.4 現場可程序化邏輯門陣列(FPGA)
一般開發如影像分類、聲音辨識、對象偵測、影像分割等AI專用型應用甚至是MCU / MPU等通用型應用芯片前,為確保投入像臺積電等晶圓代工廠生產前沒有電路及計算功能的問題,通常除了會使用軟件進行仿真分析外,亦會使用FPGA (Field Programmable Gate Array)來進行硬件驗證。常見的供貨商有Xilinx(已被AMD收購)、Altera(已被Intel收購)、Lattice等。
FPGA除了可以驗證IC的功能外,另外由于其超高彈性,所以可以排列組合出超過CPU / DSP / GPU 功能的應用,且可以用最精簡的電路來設計,以達到最低功耗、最高執行效能。但此類型的開發非常困難,需要非常專業的工程師才有辦法設計,且需配合相當多的硅智財(Semiconductor intellectual property core,簡稱IP),因此大型FPGA的單價及開發成本是非常高的。
當使用FPGA驗證后,就可以將特殊應用集成電路(Application Specific Integrated Circuit, ASIC)送到晶圓廠及封裝廠加工了。完成后的芯片就可獨立運作,優點是可大量生產讓單價大幅降低,能滿足市場需求,同時擁有極高的執行效能和最低的功耗。但缺點是沒有任何修改彈性,萬一設計功能有瑕疵時就有可能需要全部報廢。因此當沒有明確市場及需求量時,通常會使用如CPU或GPU或CPU+NPU等通用型解決方案來取代。
2.6 神經網絡處理器(NPU, DLA)
「神經網絡處理單元」 (Neural Network Processing Unit, NPU) 或稱「深度學習加速器」(Deep Learning Accelerator, DLA) 是專門用于處理深度學習神經網絡運算的特殊應用集成電路(ASIC)。它較接近GPU的用法,所以可以一次處理很多的乘加運算(MAC)。但因為只負責乘加計算,無法處理大量數據搬移及邏輯性計算,所以通常必須搭配CPU使用。
大多數的AI芯片都是屬于這一類型,使用上較有彈性,可適合各式新模型的變化。不過由于NPU的軟硬接口規格無法統一,因此在開發上能支持的AI框架(如TensorFlow, TensorFolw Lite, TensoFlow Lite for Micro, PyTorch等)或IDE(如JupyterNotebook, Arduino, OpenMV, 各廠商MCU專屬IDE等)就有很大不同,選用前需考慮自身工程能力。
另外根據不同應用,小型NPU主要用于推論,可以放到MCU / MPU 或手機中,如Intel (Movidius) Myriad, Arm Ethos U55, Google Coral等,大型NPU則可以放到桌機、云端服務器中,如Nvidia GTX / Tesla / A100, Google TPU等。
Fig. 2 不同類型AI芯片主要差異。
3. AI芯片最新趨勢
目前AI應用越來越強大,模型權重數量已從數萬個(如LeNet-5)激增到近一千多億個(如GPT3),傳統NPU、TPU及FPGA的速度已不夠快,功耗也大的驚人,因此近來開始有廠商在開發新的解決方案,企圖以更接近人腦運行方式或者減少在計算時權重大量搬移問題,甚至使用光子進行計算來進行改善。以下就簡單介紹幾種常見方案,如Fig. 3所示。
(1) 可重構型(Coarse GrainReconfigurable Architecture, CGRA):
可依不同需求以軟件重構位寬度、MAC算子結構、矩陣計算結構、混合精度計算等。主要代表廠商如下:
?耐能(Kneron)
?Wave Computing
?清微智能
?云天勵飛
?燧原科技
(2) 類腦芯片(Neuromophic神經型態):
主要模擬人類大腦神經脈沖計算方式。有以下幾種方式及代表廠商:
?數位式:IBM TrueNorth, Intel Loihi, SpiNNaker
?模擬式:Neurogrid, BrainScales, ROLLS
?新材料式:Memristor
(3) 內存內記算(Compute inMemory, CIM)(也稱為存算一體、存內計算):
主要將內存和計算單元整合在一起,減少計算時海量存儲器搬移浪費的時間。主要括下列幾種技術:
?靜態(晶體管式)隨機存取內存SRAM (揮發性內存)
?磁阻式隨機存取內存MRAM (非揮發性內存)
?可變電阻式隨機存取內存RRAM (非揮發性內存)
(4) 光子芯片:
主要以光子代替電子,以提升指令周期。代表廠商包括:
?Lightmatter
?曦智(Lightelligence)
小結
歷經近十多年的發展,AI加速芯片不論是在云端服務器所需要的大型模型訓練或是模型高速推論,或者邊緣裝置所需小而美、高性價比的推論單元,都已有長足的進步。相信隨著半導體技術的提升,未來Edge AI能運行的模型大小、復雜度及所需的功耗都能有更棒的表現,能適用的AI應用也會更加寬廣。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
18928瀏覽量
227262 -
神經網絡
+關注
關注
42文章
4717瀏覽量
100020 -
人工智能
+關注
關注
1787文章
46062瀏覽量
235080 -
機器學習
+關注
關注
66文章
8306瀏覽量
131848 -
AI芯片
+關注
關注
17文章
1828瀏覽量
34668
原文標題:AI芯片發展歷史及最新趨勢
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論