本文概述演算法和架構方面的最新發展,並探討FPGA如何適應不斷變化的環境。
DNN加速部署因應環境變化
當今工業革命的核心是推出許多機器學習(ML)的演算法,尤其是深度神經網路(DNNs)(圖1)。其在電腦視覺與語音辨識領域取得令人印象深刻的成果,且越來越廣泛地應用在其他任務中。DNN首先會透過已標記的資料集進行訓練,後續應用的其中之一是將其他資料進行推論,這個推論的過程通常被稱為部署,即是本文的重點。

與DNN部署相關的大量運算和儲存需求需要加速。此外,根據不同的應用實例,可能會對準確度、成本、功耗、模型大小、傳輸量和延遲有不同的限制。擁有即時性且以安全為重點考量的應用,如AR、無人機控制、自動駕駛等,由於低延遲與資料傳輸量的需求,因此不適合使用雲端。
在雲端運算和ML即服務的環境下,資料中心為成功處理大量的資料,面臨不斷成長的傳輸需求,為能源效率與營運成本帶來更多像是如何降低最多營運費用等挑戰。與嵌入式場景相比,雖然雲端服務延遲不那麼重要,但其仍然會直接影響到互動式應用的使用者體驗,例如Jouppi等學者在雲端服務中,將互動式使用者體驗的回應時間限制為7毫秒。
由於上述這些挑戰,過去數年間不同DNN模型與加速器呈現極速的發展。考慮到應用需求的差異,目前DNN推論作業負載與硬體加速器架構領域的一大關鍵趨勢,為多樣性及快速演進發展。本文將概述演算法和架構的最新發展,並探討FPGA如何適應這種不斷變化的環境。
DNN趨向追求高效推論
DNN通常是由一個或多層建構的前饋運算圖,其中大型網路能夠包含數百到數千層;每一層皆由突觸互聯的神經元組成且都與權重相關。每個神經元運算其接受域的加權和,並且使用非線性激勵函數。電腦視覺通常使用卷積層,其接受域擴展到多個典型的二維特徵圖,這些特徵圖與多個典型的二維過濾器進行卷積,產生如圖2所示的運算虛擬碼結果。

機器學習框架(如PyTorch、TensorFlow和Caffe)都是基於這些運算圖展示,針對訓練與推論將硬體的運算進行排程與配置。
傳統意義上,機器學習研究的重點是如何提高模型精確度,並沒有特別考量推論的成本。這一點在像AlexNet與VGG這類較為陳舊的ImageNet獲獎網路中表現相當明顯,即便這些網路現在看來規模較大且過度參數化。然而,隨著機器學習和DNN進入實際應用,運算和記憶體需求成為其中一個主要的問題。上述問題激發最近一系列有關如何使DNN推論更有效的研究,同時精準度和運算的複雜度也會成為考量。
以下簡述為提高DNN效率而提出的幾種方法。在大多數情況下,這些方法可被認為是相互獨立且可以組合的,儘管部分DNN可能不太適合某些技術。
高效能拓撲結構
DNN的拓撲結構定義了其包含多少層、每層的類型和大小,以及各層之間的連接方式。一些拓撲結構由構造規則進行定義,該構造規則根據拓撲參數定義大小和層數。近期大量研究都提出DNN可透過緊湊的拓撲結構實現高精準度,例如透過少量的參數、少量的乘積累加(MAC)運算或兩者並用。
最近的範例包括MobileNets、
ShiftNet、ShuffleNet,和Deep Expander Networks,其通常具有可控制精準度與運算量之間權衡的拓撲參數。而FPGA在這方面可以提供獨特的優勢,因為新型運算單元(例如移位和隨機排列)幾乎不需要運算資源,可透過重新配置元件中的可編程設計互連來實現。
量化
DNN通常使用浮點運算進行訓練,但可以使用有限的數值,其通常可以直接量化到8位元(參考圖3),或者重新接受訓練以使用更少位元(訓練量化),進而得到量化神經網路(QNN)。量化方案可以是均勻或非均勻的,而根據網路的不同部分可以使用不同的量化方案。使用更少位元數需要更少的運算和記憶體,但可能會導致準確度降低。最近大量資料都提出更好的量化訓練技術。近期的方法如LQ-Nets,已經將浮點和4位元QNN之間的精準度差距縮小到1%以下。

FPGA內部的可編程邏輯可提供獨特的功能,能夠以非常精細的位元度對運算單元的資源進行客製化,進而提供精確的位數來滿足應用需求。因此,此應用能夠發揮潛力來降低運算與記憶體的硬體成本。
剪枝(Pruning)
神經網路的一部分可以被修剪掉而不會對準確度產生任何重大影響,對於某些層來說,準確度最高可達90%(圖4)。剪枝技術在如何選擇修剪部分(例如透過權值幅度或二階導數),以及在選擇以何種精度執行修剪(例如單個突觸、相鄰突觸群或用於卷積的整體特徵圖)有所不同。修剪單個突觸會導致不規則的結構,而這些結構只能透過專用硬體來進行有效處理。雖然人們通常選擇較粗精度的修剪方法,但是精細度的修剪方法更進一步提供可與FPGA搭配使用的效能擴展性,進而縮減記憶體子系統,在提供運算引擎所需支援的同時,有效儲存稀疏表示(Sparse Representations)。

層間融合與分解
數學等價或近似可以用來減少DNN層的運算和記憶體需求。例如,批次的標準化操作可以融合到前面的線性轉換層(卷積或全連接層)中。卷積可以用深度可分離濾波器(Filter)來近似表示基於奇異值分解的全連接層。
其他技術則可以使用知識蒸餾(Knowledge Distillation)使高效能模型的訓練變得更加容易。Hoffer 等學者提出將DNN的最終分類層固定到Hadamard矩陣上的方法,該矩陣具有+1/-1的固定模式值,並證明此方法對幾個ImageNet網路的分類精準度沒有影響。
精度/運算之間損益比較實測
神經網路是函數近似器,高品質的近似器(Approximators)比低品質的成本更高。其中,在確定將多少記憶體和運算資源用於執行推論(使用神經網路),以及所得推論的品質(例如網路對未見輸入影像的類別進行預測時的準確性)之間,需要作出權衡。雖然難以確定資源與精度之間的確切關係,但是透過對具有不同運算要求的神經網路進行訓練並觀察所得準確度,能夠以過往經驗探究其設計空間。
圖5呈現的是設計空間探索的一種結果。(圖中兩軸上的數值越低結果則越理想。)使用不同的量化方案來生成具有不同運算成本(x軸表示為在整體運算中將使用多少FPGA LUT和DSP片的大略數值)和準確度(y軸)的網路。紅線是柏拉圖邊界(Pareto Frontier)與設計點,這些設計點在運算成本和準確度方面都是同類中最好的。在這種情況下,較低準確度的深度網路(ResNet-50,具有2位元權重和8位元激勵)的運算成本與誤率較低,優於較高精度的淺層網路(ResNet-18,具有8位權重和8位激勵)。

深入推論加速器架構研析發展趨勢
如前所述,神經網路對運算與記憶體的要求可能非常高。例如使用像ResNet-50這類熱門的DNN對每個單獨的輸入影像進行分類需要77億次運算。然而,從優勢來看,本質上DNN的高度平行化,可以加以利用。因此,各種形式的客製硬體架構正在演進發展,以實現這些演算法的部署。
DNN的推論運算包含多個平行級別,如圖6所示。這些平行級別可歸納如下:
・連續層之間的粗精度拓撲平行與平行分支,例如在GoogLeNet或DNN整合中所發現的。
・層內的神經元和突觸平行,例如多個輸入/輸出特徵圖(IFM/OFM)通道及卷積層中的畫素。
・當分別查看權重和激勵的各個位元時,運算內部的位元層級平行級別。

推論加速器架構前景可期
在為這些運算和記憶體高度密集型演算法優化硬體架構時,會出現以下問題:
・如何進行最佳迴圈轉換和展開,以實現資料重複使用和運算效率最大化與記憶體瓶頸最小化?
・如何在技術節點縮小導致收益有限的情況下提供效能可擴展性?
・如何實現即時回應、功耗限制,以便在耗能較高的嵌入式應用場景中進行部署?
除了標準的CPU以外,特殊應用硬體架構正試圖針對特定的應用限制進行優化,包括GPU、FPGA和AI ASIC。微軟創造了「DNN處理單元」這一術語,也可簡稱為DPU,作為這些客製架構的總稱。圖7描述了通DPU架構,其中典型的「痛點」以黑點標示。

架構可以大致按照運算操作的基本類型、記憶體頻寬、平行級別、專業化程度和既有的準確度支援進行分類。雖然GPU最初是專注於遊戲和繪圖處理,並逐漸應用於高效能運算,但之後也越來越關注AI領域,並且將訓練加速作為其業界標準。
GPU被認為是向量SIMD處理器,如透過NVIDIA Volta系列中引入張量核(Tensor Core)和定點整數運算,為深度學習進行越來越大幅的客製化,尤其是採用NVIDIA最新Turing架構的INT4和INT8。DPU的ASIC解決方案旨在實現硬體成本最小化,並盡可能提升效能,例如Google的張量處理單元(TPU)。如前所述,TPU專門針對張量而不僅只是向量進行運算,並且為了充分發揮量化的優勢,還擁有客製記憶體架構與算數運算。除了TPU以外,越來越多公司正在打造客製硬體,包括Arm、Intel收購的Nervana、MobilEye和Movidius,以及GraphCore、Cerebras、Groq和Wave Computing等眾多新創企業。綜上所述,業界環境正在迅速發生變化。
FPGA在高效DNN的優勢
DNN的多樣性還展現在前面提到的各個平行級別上。因此,對於固定的硬體架構,如果以固定方式傳輸固定數量的平行運算元素,執行DNN的效率就會受到限制。例如,如果為了利用輸入特徵圖和輸出特徵圖(IFM-OFM)平行而建構固定的架構,那麼對於深度可分離卷積來說,可能會降低其利用率。特別是考慮到用來創建高效DNN的技術在快速發展,靈活應變能力是在不斷變化的DNN推斷環境中保持高效率的關鍵。
在這種情況下,業界廠商如賽靈思(Xillinx)FPGA的主要特色在於提供的運算和記憶體資源具有靈活應變能力,並能實現大規模細精度平行。該元件支援多種DPU架構,這些架構能夠充分發揮多個平行級別的優勢,並根據特定DNN拓撲結構的要求和應用根據設計限制進行客製。
在FPGA上運作的Soft DPU可以支援上述配置,並且能為每個特定的神經網路客製顯式記憶體管理及算數運算。
圖8、圖9和圖10提供Soft DPU範例呈現出其架構的多樣性。每種架構的主要特色如下:
對於特定的QNN,FINN可生成客製DPU,其中每一層都有專屬硬體,並採用晶片上通道連接到下一層,但會受到元件尺寸的限制。這樣可以為每一層客製精確度與運算資源,進而實現高效能的設計。層間資料流平行有助於實現低延遲與高傳輸量。FINN是可利用的開源程式碼。


xDNN是一種具有固定精度的脈動陣列可編程設計堆疊架構。該陣列的規則結構支援高度的效能優化。其提供的工具流能夠將任何DNN應用到該架構,無需生成新的位元流或具備FPGA專業技術,即可將xDNN用於評估。

BISMO是位元串列矩陣乘法的可編程設計堆疊,其透過序列化位精度維度但平行化其他維度,提供一個固定的架構,不但可以利用運作時的可變精度,同時仍然能夠提供高效能。精度更高的層需要更多的時脈週期(Clock Cycle)來執行,而BISMO為一款開源程式碼。
在摩爾定律終結的驅動下,賽靈思使用的AI架構由具有客製指令集的軟體可編程設計AI引擎組成。此外,基於NoC的互連,在布建資源方面更進一步提升靈活性,這對於提高元件利用率來說至關重要。再者,除了神經網路本身,FPGA還可以提供感測器融合和靈活的I/O;FPGA不僅能夠增加電腦視覺的預處理和後處理,還可以為線上智慧提供整合所需的其他功能,使元件適用於使用者的應用環境。
FPGA架構更迭因應各種挑戰
越來越多的應用採用機器學習演算法,為傳統運算架構帶來巨大的運算負擔。半導體產業透過許多代號為DPU的創新架構來因應挑戰。
其中,FPGA可以發揮關鍵作用,在調整運算架構方面提供高度的靈活性,因此不僅適用於一般的機器學習任務,還適用於特定的神經網路拓撲結構。可編程設計元件可以提供客製演算法,實現儲存和運算資源最小化,進而提供進一步的效能擴展性或針對嚴格的延遲要求進行最佳化。最後,FPGA可以在I/O和感測器融合與電腦視覺的預處理和後方面提供高度的靈活性,有利於滿足客戶需求
(本文由賽靈思提供)