邊緣推理處理器實現(xiàn)人工智能(AI)算法的設(shè)計人員不斷需要降低功耗和開發(fā)時間,即使處理需求不斷增加。現(xiàn)場可編程門陣列(FPGA)提供了速度和功率效率的有效組合,用于實現(xiàn)邊緣AI所需的神經(jīng)網(wǎng)絡(luò)(NN)推理引擎。但是,對于不熟悉FPGA的開發(fā)人員,常規(guī)的FPGA開發(fā)方法似乎很復(fù)雜,通常會導(dǎo)致開發(fā)人員轉(zhuǎn)向不太理想的解決方案。
本文介紹了Microchip Technology的一種簡單方法,該方法使開發(fā)人員可以繞過傳統(tǒng)的FPGA開發(fā),使用FPGA和軟件開發(fā)工具包(SDK)創(chuàng)建經(jīng)過訓(xùn)練的NN,或者使用基于FPGA的視頻工具包執(zhí)行智能嵌入式視覺應(yīng)用程序開發(fā)。
為什么要在邊緣使用AI?
邊緣計算為工業(yè)自動化,安全系統(tǒng),智能家居等各個領(lǐng)域的物聯(lián)網(wǎng)(IoT)應(yīng)用程序帶來了許多好處。在針對工廠的工業(yè)物聯(lián)網(wǎng)(IIoT)應(yīng)用程序中,邊緣計算可消除對基于云應(yīng)用程序的往返延遲,從而改善過程控制回路中的響應(yīng)時間。同樣,即使意外或有意斷開與云的連接,基于邊緣的安全系統(tǒng)或智能家庭門鎖也可以繼續(xù)運行。在許多情況下,在任何這些應(yīng)用程序中使用邊緣計算都可以通過減少產(chǎn)品對云資源的依賴來幫助降低總運營成本。隨著產(chǎn)品需求的增加,開發(fā)人員不必面對額外的昂貴云資源的意外需求,而是可以依靠產(chǎn)品內(nèi)置的本地處理功能來幫助維持更穩(wěn)定的運營支出。
機器學(xué)習(xí)(ML)推理模型的快速接受和需求的增加極大地增強了邊緣計算的重要性。對于開發(fā)人員,推理模型的本地處理有助于減少響應(yīng)延遲和基于云的推理所需的云資源成本。對于用戶而言,使用本地推理模型可以增強信心,即使偶爾出現(xiàn)網(wǎng)絡(luò)連接中斷或產(chǎn)品供應(yīng)商基于云的產(chǎn)品發(fā)生變化,其產(chǎn)品仍將繼續(xù)運行。此外,對安全性和隱私的關(guān)注會進(jìn)一步推動對本地處理和推理的需求,以限制通過公共Internet傳輸?shù)皆频拿舾?a target="_blank">信息的數(shù)量。
開發(fā)用于基于視覺的對象檢測的NN推理模型是一個多步驟過程,從模型訓(xùn)練開始,通常使用公開可用的標(biāo)記圖像或自定義標(biāo)記圖像在ML框架(例如TensorFlow)上執(zhí)行。由于處理需求,通常使用云或其他高性能計算平臺中的圖形處理單元(GPU)進(jìn)行模型訓(xùn)練。在完成訓(xùn)練之后,該模型將轉(zhuǎn)換為能夠在邊緣或霧計算資源上運行的推理模型,并將推理結(jié)果作為一組對象類概率提供(圖1)。
圖1:為邊緣AI實現(xiàn)推理模型位于多步驟過程的結(jié)尾,該過程需要使用可用或自定義訓(xùn)練數(shù)據(jù)在框架上對NN進(jìn)行訓(xùn)練和優(yōu)化。(圖片來源:Microchip Technology)
為什么推理模型在計算上具有挑戰(zhàn)性
盡管與訓(xùn)練過程中使用的模型相比,其大小和復(fù)雜度有所降低,但由于需要大量計算,因此NN推理模型仍然對通用處理器提出了計算難題。在其通用形式中,深度NN模型包括多層神經(jīng)元集合。在完全連接的網(wǎng)絡(luò)的每一層中,每個神經(jīng)元都需要計算每個輸入的乘積和相關(guān)的權(quán)重(圖2)。
圖2:使用NN進(jìn)行推理所需的計算數(shù)量可能會導(dǎo)致大量的計算工作。 (圖片來源:Microchip Technology)
圖2中未顯示激活函數(shù)所施加的額外計算要求,該函數(shù)通過將負(fù)值映射為零,將值映射為大于1到1以及類似的函數(shù)來修改每個神經(jīng)元的輸出。每個神經(jīng)元nij的激活函數(shù)的輸出用作下一層i + 1的輸入,以這種方式在每一層繼續(xù)。最終,NN模型的輸出層生成一個輸出向量,該輸出向量表示原始輸入向量(或矩陣)對應(yīng)于在監(jiān)督學(xué)習(xí)過程中使用的類(或標(biāo)簽)之一的概率。
有效的NN模型是使用比典型的通用NN拱形更大,更復(fù)雜的架構(gòu)構(gòu)建的。例如,用于圖像對象檢測的典型卷積神經(jīng)網(wǎng)絡(luò)(CNN)以分段方式應(yīng)用這些原理,跨輸入圖像的寬度,高度和顏色深度進(jìn)行掃描,以生成一系列特征圖,最終生成輸出預(yù)測矢量(圖3)。
圖3:用于圖像對象檢測的CNN涉及許多層的大量神經(jīng)元,對計算平臺提出了更高的要求。 (圖片來源:Aphex34 CC BY-SA 4.0)
使用FPGA加速NN
盡管在邊緣執(zhí)行推理模型的方法不斷涌現(xiàn),但幾乎沒有其他選擇可以提供在邊緣進(jìn)行實際高速推理所需的靈活性、性能和能效的最佳組合。在邊緣AI的現(xiàn)有替代方案中,F(xiàn)PGA尤其有效,因為它們可以提供基于硬件的高性能計算密集型操作,而消耗的功率卻相對較小。
盡管具有優(yōu)勢,但由于傳統(tǒng)的開發(fā)流程有時會繞開FPGA,而對于那些沒有豐富的FPGA經(jīng)驗的開發(fā)人員來說,這可能令人望而生畏。為了創(chuàng)建由NN框架生成的NN模型的有效FPGA實現(xiàn),開發(fā)人員需要了解將模型轉(zhuǎn)換為寄存器傳輸語言(RTL),綜合設(shè)計以及完成最終布局和布線物理設(shè)計的細(xì)微差別階段以產(chǎn)生優(yōu)化的實現(xiàn)(圖4)。
圖4:要在FPGA上實現(xiàn)NN模型,到目前為止,開發(fā)人員需要了解如何將其模型轉(zhuǎn)換為RTL并通過傳統(tǒng)的FPGA流程進(jìn)行工作。 (圖片來源:Microchip Technology)
憑借其PolarFire FPGA,專用軟件和相關(guān)的知識產(chǎn)權(quán)(IP),Microchip Technology提供了一種解決方案,可以在沒有FPGA經(jīng)驗的情況下廣泛地為開發(fā)人員提供高性能,低功耗的推理。
PolarFire FPGA采用先進(jìn)的非易失性處理技術(shù)制造,旨在最大程度地提高靈活性和性能,同時將功耗降至最低。除了用于通信和輸入/輸出(I / O)的大量高速接口外,它們還具有能夠使用軟IP內(nèi)核支持高級功能的深度FPGA結(jié)構(gòu),包括RISC-V處理器,高級存儲控制器和其他功能。標(biāo)準(zhǔn)接口子系統(tǒng)(圖5)。
圖5:Microchip Technology PolarFire架構(gòu)提供了一種深層結(jié)構(gòu),旨在支持高性能設(shè)計要求,包括計算密集型推理模型的實現(xiàn)。 (圖片來源:Microchip Technology)
PolarFire FPGA架構(gòu)提供了廣泛的邏輯元素和專用模塊集,由PolarFire FPGA系列的不同成員(包括MPF100T,MPF200T,MPF300T和MPF500T系列)以各種容量支持(表1)。
表1:PolarFire系列提供了多種FPGA架構(gòu)功能和容量。 (表來源:Digi-Key,基于Microchip Technology PolarFire數(shù)據(jù)表)
在推理加速令人關(guān)注的功能中,PolarFire架構(gòu)包括一個專用的數(shù)學(xué)模塊,該模塊提供了帶有預(yù)加器的18位×18位帶符號乘法累加函數(shù)(MAC)。內(nèi)置點積模式使用單個數(shù)學(xué)塊執(zhí)行兩個8位乘法運算,從而提供了一種機制,可以利用模型量化對精度的影響可以忽略不計。
除了加速數(shù)學(xué)運算之外,PolarFire架構(gòu)還有助于緩解在通用架構(gòu)上實現(xiàn)推理模型時遇到的內(nèi)存擁塞,例如用于存儲在NN算法執(zhí)行期間創(chuàng)建的中間結(jié)果的小型分布式內(nèi)存。此外,NN模型的權(quán)重和偏差值可以存儲在16位深度乘18位系數(shù)的只讀存儲器(ROM)中,該存儲器由位于數(shù)學(xué)塊附近的邏輯元素構(gòu)建而成。
結(jié)合其他PolarFire FPGA架構(gòu)功能,數(shù)學(xué)模塊為Microchip Techno提供了基礎(chǔ)的更高級別的CoreVectorBlox IP。這是一個靈活的NN引擎,能夠執(zhí)行不同類型的NN。連同一組控制寄存器,CoreVectorBlox IP包括三個主要功能塊:
單片機:一個簡單的RISC-V軟處理器,可從外部存儲讀取Microchip固件二進(jìn)制大對象(BLOB)和用戶特定的NN BLOB文件。它通過執(zhí)行BLOB固件中的指令來控制整個CoreVectorBlox操作。
矩陣處理器(MXP):一種軟處理器,包括八個32位算術(shù)邏輯單元(ALU),設(shè)計為使用元素張量運算對數(shù)據(jù)矢量執(zhí)行并行運算,包括加,減,異或,移位,mul,dotprod等,根據(jù)需要使用8位,16位和32位混合精度。
CNN加速器:使用二維數(shù)組的MAC函數(shù)加速MXP的操作,這些MAC函數(shù)使用數(shù)學(xué)塊實現(xiàn),并以8位精度運行。
完整的NN處理系統(tǒng)將結(jié)合CoreVectorBlox IP塊,內(nèi)存,內(nèi)存控制器和主機處理器,例如Microsoft RISC-V(Mi-V)軟件處理器內(nèi)核(圖6)。
圖6:CoreVectorBlox IP模塊與諸如Microchip的Mi-V RISC-V微控制器之類的主機處理器配合使用,以實現(xiàn)NN推理模型。 (圖片來源:Microchip Technology)
在視頻系統(tǒng)實現(xiàn)中,主機處理器將從系統(tǒng)閃存中加載固件和網(wǎng)絡(luò)BLOB,并將它們復(fù)制到DDR RAM中,以供CoreVectorBlox塊使用。當(dāng)視頻幀到達(dá)時,主處理器將它們寫入DDR RAM,并向CoreVectorBlox塊發(fā)送信號以開始處理圖像。在運行BLOB網(wǎng)絡(luò)中定義的推理模型后,CoreVectorBlox塊將包括圖像分類在內(nèi)的結(jié)果寫回到DDR RAM中,以供目標(biāo)應(yīng)用程序使用。
開發(fā)流程簡化了NN FPGA的實現(xiàn)
Microchip使開發(fā)人員免于在PolarFire FPGA上實現(xiàn)NN推理模型的復(fù)雜性。NN模型開發(fā)人員無需像傳統(tǒng)的FPGA流程那樣處理細(xì)節(jié),而是照常使用其NN框架,并將結(jié)果模型加載到Microchip Technology的VectorBlox加速器軟件開發(fā)套件(SDK)中。 SDK生成所需的文件集,包括正常FPGA開發(fā)流程所需的文件集以及前面提到的固件和網(wǎng)絡(luò)BLOB文件(圖7)。
圖7:VectorBlox Accelerator SDK管理在FPGA上實現(xiàn)NN模型的細(xì)節(jié),自動生成設(shè)計和運行基于FPGA的推理模型所需的文件。 (圖片來源:Microchip Technology)
由于VectorBlox Accelerator SDK流程將NN設(shè)計覆蓋在FPGA中實現(xiàn)的NN引擎,因此不同的NN可以在同一FPGA設(shè)計上運行,而無需重做FPGA設(shè)計綜合流程。開發(fā)人員可以為生成的系統(tǒng)創(chuàng)建C / C ++代碼,并能夠使用時間切片在系統(tǒng)中即時切換模型或同時運行模型。
VectorBlox Accelerator SDK融合了Microchip Technology Free FPGA設(shè)計套件,并具有用于NN推理模型開發(fā)的全面功能。除了模型優(yōu)化,量化和校準(zhǔn)服務(wù)外,SDK還提供了一個NN仿真器,使開發(fā)人員可以在將其用于FPGA硬件實現(xiàn)之前,使用相同的BLOB文件評估其模型(圖8)。
圖8:VectorBlox Accelerator SDK提供了一整套服務(wù),旨在優(yōu)化框架生成的推理模型的FPGA實現(xiàn)。 (圖片來源:Microchip Technology)
VectorBlox Accelerator SDK支持開放神經(jīng)網(wǎng)絡(luò)交換(ONNX)格式的模型,以及來自多個框架的模型,包括TensorFlow,Caffe,Chainer,PyTorch和MXNET。受支持的CNN架構(gòu)包括MNIST,MobileNet版本,ResNet-50,Tiny Yolo V2和Tiny Yolo V3。 Microchip正在努力擴展支持,以將大多數(shù)網(wǎng)絡(luò)納入預(yù)訓(xùn)練模型的開源OpenVINO工具包以及open model zoo中,包括Yolo V3,Yolo V4,RetinaNet和SSD-MobileNet等。
視頻套件演示了FPGA推理
為了幫助開發(fā)人員快速進(jìn)入智能嵌入式視覺應(yīng)用開發(fā),Microchip Technology提供了一個全面的示例應(yīng)用,旨在在該公司的MPF300-VIDEO-KIT PolarFire FPGA視頻和成像套件以及參考設(shè)計上運行。
該套件的電路板基于Microchip MPF300T PolarFire FPGA,結(jié)合了雙攝像頭傳感器,DDR4 RAM,閃存,電源管理和各種接口(圖9)。
圖9:MPF300-VIDEO-KIT PolarFire FPGA視頻、圖像套件和相關(guān)軟件為開發(fā)人員提供了快速入門,幫助他們在智能嵌入式視覺應(yīng)用中進(jìn)行基于FPGA的推理。 (圖片來源:Microchip Technology)
該套件隨附一個完整的Libero設(shè)計項目,用于生成固件和網(wǎng)絡(luò)BLOB文件。將BLOB文件編程到板載閃存中后,開發(fā)人員單擊Libero中的運行按鈕開始演示,該演示處理來自攝像頭傳感器的視頻圖像并在顯示屏上顯示推斷結(jié)果(圖10)。
圖10:Microchip Technology PolarFire FPGA視頻和成像套件演示了如何設(shè)計和使用基于Microchip CoreVectorBlox NN引擎構(gòu)建的智能嵌入式視覺系統(tǒng)的FPGA實現(xiàn)。 (圖片來源:Microchip Technology)
對于每個輸入視頻幀,基于FPGA的系統(tǒng)執(zhí)行以下步驟(步驟編號與圖10相關(guān)):
1、從相機加載框架
2、將幀存儲在RAM中
3、從RAM讀取幀
4、將原始圖像轉(zhuǎn)換為RGB,平面RGB,并將結(jié)果存儲在RAM中
5、Mi-V軟核RISC-V處理器啟動CoreVectorBlox引擎,該引擎從RAM檢索圖像,執(zhí)行推理,并將分類概率結(jié)果存儲回RAM
6、Mi-V使用結(jié)果創(chuàng)建帶有邊框,分類結(jié)果和其他元數(shù)據(jù)的覆蓋框架,并將該框架存儲在RAM中
7、原始幀與覆蓋幀融合并寫入HDMI顯示屏
該演示支持Tiny Yolo V3和MobileNet V2模型的加速,但是開發(fā)人員可以使用前面描述的方法運行其他SDK支持的模型,只需稍作更改即可將模型名稱和元數(shù)據(jù)添加到包含兩個默認(rèn)模型的現(xiàn)有列表中。
結(jié)論
諸如NN模型之類的AI算法通常會施加計算密集型工作負(fù)載,這些工作負(fù)載需要比通用處理器更強大的計算資源。盡管FPGA具備足夠的能力來滿足推理模型執(zhí)行的性能和低功耗要求,但傳統(tǒng)的FPGA開發(fā)方法似乎很復(fù)雜,常常使開發(fā)人員轉(zhuǎn)向次優(yōu)解決方案。
如圖所示,使用Microchip Technology的專用IP和軟件,沒有FPGA經(jīng)驗的開發(fā)人員也可以實施基于推理的設(shè)計,從而更好地滿足性能,功耗和設(shè)計進(jìn)度要求。
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1630文章
21802瀏覽量
606400 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4783瀏覽量
101239 -
人工智能
+關(guān)注
關(guān)注
1796文章
47791瀏覽量
240574
發(fā)布評論請先 登錄
相關(guān)推薦
評論