然而AI應用種類各異,各有千秋。不同的應用領域要求的AI技術也不盡相同。目前最受關注的應用類別當屬嵌入式視覺。這一領域的AI使用所謂的卷積神經網路(CNN),試圖類比人眼的運作方式。在本文中,將探討電腦視覺(Computer Vision)應用與其他許多相關概念。
網路終端AI的要求
AI涉及創造一個工作流程的訓練模型,然後該模型在某個應用中對現實世界的情況進行推理。因此,AI應用有兩個主要的階段:訓練和推理。
訓練是在開發過程中完成的,通常在雲端進行。推理作為一項持續進行的活動,則是透過部署的設備完成。因為推理涉及的運算問題相對複雜,目前大部分都是在雲端進行,但是做決策的時間通常都十分有限。向雲端傳輸資料然後等待雲端做出決策非常耗時,等到做出決策,可能為時已晚,而在終端做決策則能節省寶貴的幾秒鐘時間。
這種即時控制的需求適用於需要快速做出決策的諸多領域。例如人員偵測相關應用,包括:智慧家庭電器、智慧音訊/影視消費性電子產品、智慧門鈴、自動販賣機、安全攝影機、智慧門等。其他即時線上的應用包括:智慧音箱、零售店攝影機、無人機、收費站攝影機、機器視覺、汽車後裝市場攝影機等。
在快速決策需求的推動下,目前將推理過程從雲端轉移到「網路終端」的訴求非常強烈,即在設備上收集資料然後根據AI決策採取行動。這將解決雲端不可避免的延遲問題。在地化推理還有兩個好處:第一個就是隱私安全。資料從雲端來回傳輸以及儲存在雲端,容易被入侵和盜取。但如果資料從未到達設備以外的地方,出現問題的機率就小得多。
另一個好處與網路頻寬有關。將視訊傳送到雲端進行即時處理會占用大量的頻寬。而在地做決策則能省下這部分頻寬,並將其用於其他要求較高的任務。此外,這類設備通常都是使用電池供電,如果是電源直接供電,兩者都有散熱限制,而對設備的持續使用造成限制。而與雲端通訊的設備則需要管理自身功耗的散熱問題。AI模型演化速度極快。在訓練始末,模型的大小會有極大差異,並且在進入開發階段以前,可能無法有效估算所需運算平台的大小。此外,訓練過程發生的細微改變都會對整個模型造成重大影響,增加了變數,這些也使得網路終端設備硬體大小的估計變得極為困難。
在為特定設備優化模型的過程中,始終伴隨著權衡。這意味著模型在不同的設備中可能以不同的方式運行。最後,網路終端中的設備通常非常小,也限制了AI推理設備的大小。
由此總結出以下關於網路終端推理的幾點重點要求:
用於網路終端AI推理的引擎必須:
.功耗低
.靈活
.可擴展
.尺寸小
已有廠商開發出完全具備以上四個特徵的推理引擎。包含硬體平台、軟體IP、神經網路編譯器、開發模組和開發資源,能夠迅速開發理想中的設計。
推理引擎的選擇
將推理引擎構建到網路終端設備中涉及兩個方面:開發承載模型運行的硬體平台以及開發模型本身。理論上來說,模型可以在許多不同的架構上運行。但若要在網路終端,尤其是在即時線上的應用中運行模型,選擇就變少了,因為要考慮到之前提到的功耗、靈活性和擴充性等要求。
設計AI模型的最常見做法就是使用處理器,可能是GPU或者DSP,也有可能是微控制器。但是網路終端設備上的處理器可能就連實現簡單的模型也無法處理。這樣的設備可能只有低階的微控制器(MCU)。而使用較大的處理器可能會違反設備的功耗和成本要求,因此對於此類設備而言,AI似乎難以實現。
這正是低功耗FPGA發揮作用的地方。與強化處理器來處理演算法的方式不同,低功耗FPGA可以作為MCU的副處理器(圖1),處理MCU無法解決的複雜任務之餘,將功耗保持在要求範圍內。由於低功耗FPGA能夠進行DSP運算,並能提供低階MCU不具備的運算能力。
ASICs和特定應用標準產品(ASSP)對於更為成熟、大批量銷售的AI模型而言,採用ASIC或ASSP或許是可行之道。但是由於工作負載較大,這些元件在即時線上應用中的功耗太大。在此情況下,低功耗FPGA可以充當副處理器(圖2),處理包括喚醒關鍵字的喚醒程序或粗略識別某些影片圖像(如識別與人形相似的物體),然後才喚醒ASIC或ASSP,識別更多語音或者確定影像中的目標確實是一個人(或甚至可以識別特定的人)。FPGA處理即時線上的部分,這部分的功耗至關重要。然而並非所有的FPGA都能勝任這一角色,因為絕大多數FPGA功耗仍然太高。
低功耗FPGA可以作為單獨運行的、完整的AI引擎(圖3),FPGA中的DSP在這裡起了關鍵作用。即便網路終端設備沒有其他的運算資源,也可以在不超出功耗、成本或電路板尺寸預算的情況下添加AI功能。此外它們還擁有支援快速演進演算法所需的靈活性和可擴充性。
低功耗FPGA構建推理引擎
設計AI推理模型的硬體需要不斷平衡所需資源數量與效能和功率要求,萊迪思的ECP5和UltraPlus產品系列能實現這類要求。ECP5系列有三種不同規格的元件,能夠運行一到八個推理引擎。其整合的的嵌入式記憶體從1Mb到3.7Mb不等。功耗最高僅為1W,尺寸也只有100mm2。相較之下,UltraPlus系列的功耗水準約為ECP5系列的千分之一,僅為1mW。占用的電路板面積為5.5mm2,包括最多八個乘法器和最多1Mb的嵌入式記憶體。
萊迪思還提供可在這些元件上運行的CNN IP以及可用於ECP5系列的CNN加速器(圖4),與可用於UltraPlus系列的輕量化CNN加速器(圖5)。
最後,還可以在開發模組(圖6)上運行並測試這些演示,兩個模組分別對應這兩種產品系列。Himax HM01B0 UPduino Shield採用了一片UltraPlus FPGA,尺寸為22×50mm2。嵌入式視覺開發套件採用了一片ECP5 FPGA,尺寸為80×80mm2。有了FPGA、軟IP和其他處理資料所需的硬體部分,就可以使用設計工具進行編譯,而生成位流,在每次上電後對目標設備中的FPGA進行配置。3
在FPGA上構建推理模型
創建推理模型與創建底層運行平台大不相同。它更抽象,涉及更多運算,且不涉及RTL設計。這一過程主要有兩個步驟:創建抽象模型,然後根據所選平台優化模型的實現。模型訓練在專門為此過程設計的框架(圖7)中進行。最流行的兩個框架是Caffe和TensorFlow,但不限於此。
CNN由很多層構成—卷積層,還有池化層和全連接層,每一層都有由前一層的結果饋送的節點。每個結果都在每個節點處加權重,權重多少則由訓練過程決定。訓練框架輸出的權重通常是浮點數。這是權重最為精確的體現,然而大多數網路終端設備不具備浮點運算功能。這時需要針對特定平台對抽象模型進行優化,這項工作由神經網路編譯器負責。編譯器可以實現載入和查看從某個CNN框架下載的原始模型。可以運行效能分析,這對模型優化最關鍵的量化工作至關重要。
由於無法處理浮點數,因此需要將它們轉換為整數。對浮點數四捨五入也就意味著精度會降低。問題是,什麼樣的整數精度才能滿足想要的精度?通常使用的最高精度為16位元,但是權重和輸入可以表示為較小的整數。1位元的設計實際是在一位整數域中進行訓練以保持精度。顯然,更小的資料單元意味著效能更高、硬體尺寸更小以及功耗更低。但是,精度太低就無法準確地推斷視野中的物體。
神經網路編譯器能創建代表模型的指令流,然後可以類比或直接測試這些指令,而判斷在效能、功耗和精度之間是否達到了適度的平衡。測試的標準通常是看一組測試圖像(與訓練圖像不同)中正確處理的圖像百分比。通常可以透過優化模型來優化運行,包括去掉一些節點以減少資源消耗,然後重新訓練模型。這一設計環節可以微調精度,同時保證能在有限的資源下順利運行。
人臉辨識與人員偵測
在以下兩個不同的視覺案例中,將看到權衡是如何發揮作用的。第一個應用是人臉辨識;第二個是人員偵測。將指出不同FPGA之間存在的資源差異如何影響到相對應的應用效能和功耗。兩個示例的輸入都源自同一個攝影機,兩者都在相同的底層引擎架構中運行。在UltraPlus設計實例中(圖8),圖像的尺寸縮小後通過八個乘法器進行處理,利用了內部記億體並使用了LED指示燈。
ECP5系列資源更多,提供了一個計算能力更強的平台(圖9)。攝影機捕捉的圖像在發送到CNN之前在圖像訊號處理器(ISP)中進行預處理。處理結果與原始圖像在標記引擎上比對,而將文本或注釋覆蓋在原始圖像上。並可以使用一系列圖表來衡量兩種應用的效能、功耗和占用面積情況。對於每個應用,兩組示例分別表示:一組輸入較少,一組輸入較多。圖10表示了人臉辨識應用的結果,兩組分別採用了32×32輸入和90×90輸入的情況。
左側的軸代表處理一張圖片需要的週期數量以及這些週期的分配情況。右側的軸代表在各元件(黑線)上實現的每秒幀數(fps)。最後,每種情況下還標注了功耗和占用面積。左側的32×32輸入示例中,最下方部分代表卷積層上運行的週期。在四個示例中,UltraPlus的乘法器數量最少;其他三片ECP5 FPGA的乘法器數量依次遞增。隨著乘法器數量的增加,卷積層所需的週期數減少。
90×90輸入的示例位於右側,得到的結果完全不同。在每個直條圖的底部有大面積的區域。這是由於設計更為複雜,使用了除元件內部儲存空間以外的更多記憶體。由於需要占用外部DRAM,效能就有所損失。需要注意的是,這種設計無法使用較小的UltraPlus元件。人員偵測應用的情況類似。兩組分別採用了64×64輸入和128×128輸入的情況(圖11)。
同樣,較多的乘法器會減少卷積層的負擔,而依賴DRAM則會影響效能。表1總結了各類情形下的效能。它包括了對圖像中最小可識別物件或特徵的度量,用視野範圍的百分比表示。在這裡使用更多輸入能夠為較小的目標提供更多解析度。
低功耗FPGA可實現要求低功耗、具有靈活性和可擴充性的網路終端AI推理設計。並提供成功部署AI演算法所需的關鍵要素,包括:神經網路編譯器、神經引擎軟IP、Diamond設計軟體、開發板與參考設計等。