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