從雲端的大數據(big data)處理到邊緣端的關鍵字識別和影像分析,人工智慧(AI)應用的爆炸式成長促使專家們前仆後繼地開發最佳架構,以加速機器學習(ML)演算法的處理。各式各樣的新興解決方案都凸顯了設計人員在選擇硬體平台之前,明確定義應用及其需求的重要性。

從很多方面來看,AI加速熱潮與1990年代末期和2000年代初的DSP淘金熱很類似;在那個時候,隨著有線和無線通訊起飛,市場上紛紛推出高性能DSP協同處理器(co-processor)以因應基頻處理的挑戰。與DSP協同處理器一樣,AI加速器的目標是找到最快速、最節能的方法來執行所需的運算任務。

神經網路處理背後的數學,涉及統計學、多元微積分(multivariable calculus)、線性代數、數值最佳化(numerical optimization)和機率等;雖然很複雜,也是高度可平行化的(parallelizable)。但事實上這是令人尷尬的可平行化──與分散式運算不同,在路徑的輸出被重組並產生輸出結果之前,很容易被分解為沒有分支(branches)或從屬關係(dependencies)的平行路徑。

在各種神經網路演算法中,卷積神經網路(CNN)特別擅長物件識別類任務——也就是從影像中過濾篩選出感興趣的物件。CNN以多維矩陣(multidimensional matrices)──即張量(tensor)──架構來理解資料,將超出第三個維度的每個維度都嵌入到子陣列中(如圖1),每個添加的維度稱為「階」(order),因此,五階張量會有五個維度。

EDNT181005_AIhardware_NT31P1

圖1:CNN以張量架構攝取資料,也就是可被視覺化為3D立方體的數字矩陣(資料集);每個陣列中還有一個子陣列,該數字定義了CNN的深度。
(圖片來源:Skymind)

與數學相關度不高 AI重點在於快速反覆運算

這種多維分層對於理解CNN所需之加速的本質很重要,卷積過程使用乘法在數學上將兩個函數「捲繞」(roll)在一起,因此廣泛使用乘加(multiply-accumulate,MAC)數學運算;舉例來說,在物件識別中,一個函數是源影像,另一個函數是用來識別特徵然後將其映射到特徵空間的篩檢程式(filter)。每個篩檢程式都要多次執行這種「捲繞」,以識別影像中的不同特徵,因此數學運算變得非常重複,且是令人尷尬(或令人愉悅)的可平行化。

為此,某些AI加速器的設計採用多個獨立的處理器核心(高達數百或上千個),與記憶體子系統一起整合在單晶片中,以減輕資料存取延遲並降低功耗。然而,由於業界已設計了繪圖處理器(GPU)來對影像處理功能進行高度平行處理,因此它們對於AI所需的這種神經網路處理也可以實現很好的加速。AI應用的多樣性和深度,特別是在語音控制、機器人、自動駕駛和大數據分析等方面,已經吸引了GPU供應商將重點轉移到AI處理硬體加速的開發。

然而AI硬體加速的問題,在於有如此多的資料,所需的準確性和回應時間又有如此大的差別,設計人員必須對於架構的選擇非常講究。例如資料中心是資料密集型的,其重點是盡可能快速處理資料,因此功耗並非特別敏感的因素——儘管能源效率有利於延長設備使用壽命,降低設施的整體能耗和冷卻成本,這是合理的考量。百度的昆侖(Kunlun)處理器耗電量為100W,但運算性能達到260 TOPS,就是一款特別適合資料中心應用的處理器。

接下來看另一個極端的案例。如關鍵字語音辨識這樣的任務需要與雲端連結,以使用自然語言識別來執行進一步的命令。現在這種任務在採用法國業者GreenWaves Technologies之GAP8處理器的電池供電邊緣裝置上就可以實現;該處理器是專為邊緣應用設計,強調超低功耗。

介於中間的應用,如自動駕駛車輛中的攝影機,則需要盡可能接近即時反應,以識別交通號誌、其他車輛或行人,同時仍需要最小化功耗,特別是對於電動車來說;這種情況或許需要選擇第三種方案。雲端連結在此類應用中也很重要,如此才能即時更新所使用的模型和軟體,以確保持續提高準確度、反應時間和效率。

ASIC還不足以託付AI加速任務

正因為這是一個在軟、硬體方面都迅速發展,需要在技術上持續更新的領域,並不建議將AI神經網路(NN)加速器整合到ASIC或是系統級封裝(SiP)中——儘管這樣的整合具有低功耗、佔用空間小、成本低(大量時)和記憶體存取速度快等優點。加速器、模型和神經網路演算法的變動太大,其靈活性遠超過指令導向(instruction-driven)方法,只有像Nvidia這種擁有先進技術、資金雄厚的玩家才能夠負擔得起不斷在硬體,而在硬體上根據特定方法進行反覆運算。

這種硬體加速器開發工作的一個很好的例子,就是Nvidia在其Tesla V100 GPU中增加了640個Tensor核心,每個核心在一個時脈週期內可以執行64次浮點(FP)融合乘加(fused-multiply-add,FMA)運算,可為訓練和推理應用提供125 TFLOPS的運算性能。借助該架構,開發人員可以使用FP16和FP32累加的混合精度(mixed precision)進行深度學習訓練,運算速度比Nvidia自家上一代Pascal架構高3倍。

混合精度方法很重要,因為長期以來人們已經認識到,雖然高性能運算(HPC)需要使用32~256位元FP的精確運算,但深度神經網路(DNN)不需要這麼高的精度;這是因為經常用於訓練DNN的反向傳播演算法(back-propagation algorithm)對誤差具有很強的彈性,因此16位元半精度(FP16)對神經網路訓練就足夠了。

此外,儲存FP16資料比儲存FP32或FP64資料的記憶體效率更高,從而可以訓練和部署更多的網路,而且對許多網路來說,8位元整數運算(integer computation)就足夠了,對準確性不會有太大影響。

這種使用混合精度運算的能力在邊緣甚至會更實用,當資料登錄的來源是低精度、低動態範圍的感測器——例如溫度感測器、MEMS慣性感測器(IMU)和壓力感測器等——還有低解析度視訊時,開發人員可以折衷精度以取得低功耗。

AI架構的選擇利用霧運算從邊緣擴展至雲端

可擴充處理(scalable processing)的概念已經擴展到更廣泛的網路——利用霧運算(fog computing)概念,透過在網路上的最佳位置執行所需的處理,來彌補邊緣和雲端之間的能力差距;例如可以在本地物聯網(IoT)閘道器或更接近應用現場的本地端伺服器上進行神經網路影像處理,而不必在雲端進行。這樣做有三個明顯的優勢:一是能減少由於網路延遲造成的時延,二來可以更安全,此外還能為必須在雲端處理的資料釋出可用的網路頻寬;在更高的層面上,這種方法也通常更節能。

因此,許多設計師正在開發內建攝影機、影像預處理和神經網路AI訊號鏈(signal chains)功能的獨立產品,這些產品僅在相對較閉迴路(closed-loop)的運作中呈現輸出,例如已識別標誌(自駕車)或人臉(家用保全系統)。在更極端的案例中,例如設置在偏遠或難以到達之處,以電池或太陽能供電的裝置,可能需要長時間地進行這種處理。

EDNT181005_AIhardware_NT31P2

圖2:GreenWave的GAP8採用9個RISC-V處理器核心,針對網路邊緣智慧裝置上的低功耗AI處理進行了最佳化。
(圖片來源:GreenWaves Technologies)

為了幫助降低這種邊緣AI影像處理的功耗,GreenWaves Technologies的GAP8處理器整合了9個RISC-V核心;其中一個核心負責硬體和I/O控制功能,其餘8個核心則圍繞共用資料和指令記憶體形成一個叢集(如圖2)。這種結構形成了CNN推理引擎加速器,具備額外的RISC-V ISA指令來強化DSP類型的運算。

GAP8是為網路邊緣的智慧裝置量身打造,在功耗僅幾十毫瓦(mW)的情況下可實現8GOPS運算,或者在1mW時可實現200 MOPS運算;它完全可以用C/C++語言來編程,最小待機電流為70nA。

AI處理器架構比一比:RISC-V vs. Arm

RISC-V開放性硬體架構在一開始遭到質疑,因為那需要一個忠實穩固的使用者社群,以提供一系列豐富的支援工具和軟體;而隨著該架構透過各種測試晶片和硬體實作吸引更多開發者加入,那些質疑也逐漸消退。RISC-V吸引人之處在於它正成為Arm處理器的強勁對手,特別是在超低功耗、低成本應用上;只要談到低成本就會錙銖必較,因此免費方案總是會感覺比需要支付授權費的方案更好。

不過雖然RISC-V架構的GAP8可以節能並且針對邊緣神經網路處理進行了高度最佳化,從系統開發的角度來看仍然需要考慮周邊功能,例如攝影機感測器本身和網路通訊介面,以及是採用有線還是無線技術等;依據系統通訊和處理影像的次數頻率,這些功能佔用的功耗比例可能較高。根據GreenWaves的說法,GAP8若採用3.6Wh的電池供電,能以每3分鐘分類一張QVGA影像的頻率持續工作長達10年;但該數字並未考量整體系統中其他因素的影響。

GreenWaves將其GAP8處理器與採用Arm Cortex-M7核心、運作頻率216MHz的意法半導體(ST)處理器STM32 F7進行了直接比較(圖3);兩者以CIFAR-10資料集的影像進行訓練,權重量化為8位元定點(fixed point)。

EDNT181005_AIhardware_NT31P3

圖3:GreenWaves Technologies的GAP8與ST的STM32 F7處理器性能比較。
(圖片來源:GreenWaves Technologies)

雖然GAP8因為擁有八核心架構而呈現更高效率,並能以較低時脈速率與更少的週期實現推理,Arm架構也不遑多讓──Arm已經發表了針對行動裝置和其他相鄰、網路邊緣應用的機器學習(ML)處理器,其應用場景包括AR/VR、醫療、消費性電子產品以及無人機等;該架構採用固定功能引擎(fixed-function engines)來執行CNN層,並採用可程式化層(programmable layer)引擎來執行非卷積層以及實現所選基元(primitive)和運算子(operator),參考圖4。

EDNT181005_AIhardware_NT31P4

圖4:Arm的ML處理器設計用於CNN類型固定功能以及可程式化層引擎的低功耗邊緣處理。
(圖片來源:Arm)

有趣的是,ML處理器是以高度可擴充架構為基礎,因此同一處理器和工具可用於開發從物聯網到、嵌入式工業和交通,到網路處理和伺服器等各種應用,運算性能要求從20 MOPS到70 TOPS以上不等。

如果開發團隊希望從雲端往下擴充,或從邊緣往上擴充,那麼這種可擴充性比較適合之前討論的霧運算概念。此外該處理器本身與主流神經網路學習框架緊密整合,例如Google的TensorFlow和TensorFlow Lite,以及Caffe和Caffe 2;它還針對Arm Cortex CPU和Arm Mali GPU進行了最佳化。

在異質處理體系架構中部署AI

透過ML處理器,Arm還強調了異質(heterogenous)方法對AI應用之神經網路的重要性,但僅限於其CPU和GPU的狹窄範圍內。從更廣泛的角度來看,英特爾(Intel)的OpenVINO (Visual Inference & Neural Network Optimization,視覺推理和神經網路最佳化)工具套件可以實現異質混合架構的開發,包括CPU、GPU與FPGA,當然還有英特爾自家的Movidius視覺處理器(VPU)和基於Atom的影像處理器(IPU)。利用通用API以及針對OpenCV和OpenVX最佳化的呼叫(call),英特爾聲稱其深度學習性能可以提高19倍。

異質方法對於針對AI的神經網路處理既有好處又不可或缺...

...繼續閱讀請連結EDN Taiwan網站