隨著人工智慧(AI)、神經網路(neural network)以及機器學習領域的快速發展,系統開發工程師致力於為系統增加更多智慧功能,未來發展不可限量。然而,運算需求會因不同應用而有所差異。對資料中心而言,神經網路主要用於執行影像辨識,例如「經訓練的」神經網路透過大量影像與分配輸入權重進行學習後,能夠正確辨識物體。如同人們獲取知識的過程,當接收到新資料時,人們能夠依據過去經驗進行推論,並做出決策,系統則必須將「推論技術」應用於神經網路,並針對新資料進行結果推論。

建立資料架構與分配推論所需的權重需要兆位元組(TB)級的資料與百萬兆次浮點運算(ExaFLOP/s)能力。因此,為滿足大量運算需求,資料中心常用的深度學習技術往往採用大型且高效能的繪圖處理器(GPU)。

對於欲將AI優勢擴展至網路邊緣(Edge)的設計工程師而言,採用高效能GPU的成本與功耗較高。在網路邊緣,採用浮點運算的深度學習技術部署資料中心實際上較不可行。設計工程師必須開發運算效率高的解決方案,除了滿足精確度目標,還要能符合消費性電子市場對裝置功耗、尺寸與成本的限制。儘管裝置已在資料中心經過訓練,一旦落實於網路邊緣應用,仍必須盡可能採用最少位元的運算來執行推論。

為了簡化運算流程,設計工程師會捨棄浮點運算,選擇採用定點運算,甚至是最基本的整數運算。設計工程師可透過改變訓練方式填補浮點到定點數值量化的差異,進一步開發可實現更快速訓練與高精度的解決方案,從而使定點/低精確度整數運算神經網路的效能提升至浮點運算神經網路的水準。為了建構最簡易的網路邊緣裝置,訓練必須實現加權與啟動1-bit資料的神經網路模型,此模型稱為「二進位神經網路」(binarized neural network;BNN)。

例如,萊迪思半導體(Lattice Semiconductor)與VectorBlox Computing的工程師共同開發的新元件,即利用該二進位神經網路模型的優勢——透過二進位方法最佳化神經網路的尺寸、成本、功耗與效能,大幅降低了記憶體需求,並使功效極大化。同時,搭配低功耗FPGA元件(如iCE40 UltraPlus),可提供具備充裕記憶體、邏輯與DSP資源的靈活平台。

開發團隊將上述全新概念稱為「微型二進位神經網路」(Tiny Binarized Neural Network;TinBiNN)。二進位神經網路無需使用乘法和除法運算,可降低對於記憶體的需求,而且僅使用加法和減法進行卷積運算。開發團隊將TinBiNN定義為使用少於5,400個4-input查閱資料表(LUT)資源的BiNN。本文重點討論使用少於5,000個4-input LUT的輕量型TinBiNN,以及搭配低功耗FPGA方案的優勢。

二進位神經網路

以卷積神經網路(CNN)為基礎的機器學習應用中,運算核心屬於卷積核心,為3×3視窗權重乘以輸入資料,然後總和成純量的結果。輸入數值、權重與結果通常使用浮點系統。即使硬體最佳化能夠支援窄定點數值,乘法仍佔據主導地位。

有關的最新發展如M. Courbariaux、Y. Bengio和J.-P. David等學者在《BinaryConnect: Training Deep Neural Networks with Binary Weights During Propagations》文中的介紹,使用二進位權重代表+1或-1,而無需使用乘法運算。這項研究使用浮點數值,於CIFAR 10影像辨識資料中實現8.3%的誤差率。

萊迪思和VectorBlox的開發工程師針對BinaryConnect方法進行三項改進:首先,將網路結構縮減了一半,其方式是將(2x128 C3)–MP2–(2x256C3)–MP2(2x512C3)–MP2–(2x1024FC)-10SFC的結構,簡化為(2x64C3)-MP2–(2x128C3)-MP2-(2x256C3)–MP2–(2x256FC)-10SFC。其中,C3是3×3 ReLU卷積層,MP2是2×2最大池化(max-pooling)層,而FC是完全互連層。

20180213_Lattice_TA31P1 圖1:全新的微型二進位網路實現10.8%誤差率和零誤報率

接著,開發工程師針對所有輸入資料採用8-bit符號定點數值,進一步最佳化網路。使用32-bit符號資料累加器防止溢位,然後在資料傳遞至下一層之前,透過飽和功能轉換為8-bit。新系統的誤差率達到了10.8%。而當神經網路的規模縮小至48-48-96-96-128-128和64-128-10,誤差率增加至11.5%。

20180213_Lattice_TA31P2 圖2:二進位CNN自訂向量指令集提高效能

第二項改進是為二進位神經網路建置硬體加速器。開發工程師使用加速器作為ORCA RISC-V軟處理器中的算數邏輯單元(ALU)。RISC-V軟處理器具備RV32IM指令集的高效率優勢,讓開發工程師能以更少資源進行更多運算。在此情況下,開發工程師使用一組自訂輕量型向量擴展(LVE)指令增強ORCA處理器。透過從RISC-V ALU傳輸矩陣資料,LVE減少或消除了迴圈、記憶體存取以及位址產生成本,從而提高了矩陣運算的效率。將CNN加速器作為自訂向量指令(CVI)(見圖2)增加至LVE,能夠進一步提升運算效率。

20180213_Lattice_TA31P3 圖3:該系統基於iCE40 UltraPlus行動開發平台所建構

第三項改進是在超低功耗FPGA(以iCE40 UltraPlus為例)中實現增強的RISC-V處理器。為了在網路邊緣執行推論任務,設計工程師需要能夠提供高度平行架構的解決方案,以超低功耗實現每秒大量運算。對於期望透過語音或影像辨識技術為網路邊緣應用增加更多智慧功能的設計工程師而言,iCE40 UltraPlus FPGA提供連接影像感測器所需的靈活I/O,以及豐富的邏輯資源,可縮減和處理所擷取的影像資料。iCE40 UltraPlus還具備8個DSP模組,能支援較複雜的演算法,而單晶片記憶體可在低功耗狀態下緩衝資料。LVE直接運行於128kB暫存RAM上,該暫存器RAM提供三倍超頻,可在每個CPU時脈週期內進行兩次讀取與一次寫入。二進位權重即儲存於內部RAM中,若正在進行任何LVE操作,DMA引擎可以高效地將這些數值轉移至暫存器,而不必佔用CPU時脈週期。

開發工程師使用iCE40 UltraPlus行動開發平台,針對FPGA元件的關鍵互連功能進行評估,快速實現原型設計和測試。概念驗證展示可幫助工程師快速開發驅動程式和介面等解決方案。該平台可提供速率高達108Mbps的1個MIPI DSI介面、4個麥克風橋接以及多個感測器。在此平台上,FPGA可透過板載SPI快閃記憶體或USB埠進行編程。

開發團隊採用Omnivision OVM7692 RGB攝影機(640x480畫素),並使用RGB565在硬體層將影像壓縮至40x30畫素。DMA用於將RGBA8888畫素寫入暫存器。軟體對RGBA8888畫素進行解交錯,並將結果輸入至尺寸為40x34的單獨R8、G8和B8畫素平面,其中僅32x32畫素的資料具有重要性。

開發工程師創建人臉辨識器,採用更新的CIFAR-10資料集,針對10-category分類器進行訓練,在CIFAR-100中以重複的「人」影像取代「鹿」的影像。為了提高效能,開發團隊進一步縮小網路結構,並使用175,000個臉部和非臉部影像的專用資料庫,為全新的1-category分類器進行訓練。這個專用資料庫涵蓋各種人臉影像,包括各種年齡、種族、是否戴眼鏡、帽子和太陽眼鏡等資訊。

低誤差率與低功耗

初步分析結果十分良好。在開發平台上,10-category分類器執行時間為1,315ms。這款小尺寸CPU的工作頻率為24MHz,使用iCE40 UltraPlus 5K元件中5,280個4-input LUT中的4,895個。同時,也使用了FPGA中8個16x16 DSP模組的其中4個,30個4kb(0.5kB)BRAM的其中26個以及全部4個32kB SPRAM。ORCA RISC-V上的加速器提升了73倍卷積層運行效率,LVE則提升8倍密集層運行效率。最終整體結果為提升了71倍整體速度。

1-category分類器執行時間為230ms,誤差為0.4%,功耗為21.8mW。低功耗版本設計運行速率為1f/s,而功耗僅4.4mW。上述兩個分類器的誤差率主要歸因於訓練,並未導致精準度降低。儘管低功耗影像感測器能以1-2mW的功耗實現上述畫面更新速率,但在分析中並不包括影像感測器的功耗。

潛在應用

基於TinBiNN神經網路的小尺寸、低功耗解決方案可於網路邊緣實現各類應用。例如,智慧門鈴可透過嵌入式AI功能自動進入待機模式,直到感應到有人出現;智慧電視在沒有觀眾觀看的情況下自動關機。相同地,智慧安全攝影機使用嵌入式人工智慧功能,只在出現入侵者時才發送警報,能夠減少或避免狗、貓等其他動物經過而出現於攝影機前的錯誤回報。

搭載臉部辨識的行動裝置和平板電腦需要使用者在進行臉部辨識前喚醒裝置。 該解決方案讓這一類裝置能夠在低功耗的狀況下持續偵測人臉,再喚醒高功耗應用處理器執行深度辨識任務。

總結

將AI優勢擴展至網路邊緣同時具有挑戰與機會。如本文所示,透過FPGA和RISC-V處理器為裝置建構AI功能,取代以雲端為基礎的資源,能夠大幅降低功耗,同時縮短反應時間。同時,本地資料儲存和處理不僅提高安全性,更節省寶貴的頻寬。透過將AI整合至元件中,即使在網路關閉以節省功耗的情況下,設計工程師也能實現即時工作的智慧功能。