<li id="wkceg"></li>
<rt id="wkceg"><delect id="wkceg"></delect></rt>
<bdo id="wkceg"></bdo>
<strike id="wkceg"><acronym id="wkceg"></acronym></strike>

  • 帳號(hào):
    密碼:
    智動(dòng)化 / 文章 /

    STM32 MCU最佳化的 STM32Cube.AI library
    [作者 意法半導(dǎo)體提供]   2022年03月25日 星期五 瀏覽人次: [6060]

    STM32Cube.AI是意法半導(dǎo)體人工智慧生態(tài)系統(tǒng)的STM32Cube擴(kuò)充套件,可以自動(dòng)轉(zhuǎn)換預(yù)訓(xùn)練之神經(jīng)網(wǎng)路及將產(chǎn)生的最佳化函式庫整合到開發(fā)者專案中,以進(jìn)一步擴(kuò)充STM32CubeMX的能力。更提供多種方法在PC及 STM32 開發(fā)板驗(yàn)證神經(jīng)網(wǎng)路模型,並測量 STM32裝置上的效能,無需使用者手動(dòng)撰寫 C code。


    本文介紹STM32Cube.AI進(jìn)階功能,涵蓋以下主題:


    - Runtime支援:Cube.AI與TensorFlow Lite


    - 量化支援


    - Graph flow及記憶體設(shè)定最佳化


    - Relocatable二進(jìn)位模型支援


    Runtime支援:Cube.AI與TensorFlow Lite

    STM32Cube.AI支援2種針對(duì)不同應(yīng)用需求的runtime—Cube.AI和TensorFlow Lite。Cube.AI 為預(yù)設(shè)執(zhí)行階段,是針對(duì)STM32高度最佳化的機(jī)器學(xué)習(xí)函式庫。TensorFlow Lite for Microcontroller由Google設(shè)計(jì),用於微控制器及其他裝置上執(zhí)行機(jī)器學(xué)習(xí)模型,只佔(zhàn)用幾千位元組的記憶體空間。它被廣泛用在基於MCU的應(yīng)用。STM32Cube.AI整合了一條特別路徑供STM32 IDE專案所用,並嵌入TensorFlow Lite for Microcontrollers執(zhí)行階段 (TFLm)及其相關(guān)的TFLite模型。對(duì)於希望擁有一個(gè)跨專案通用框架的開發(fā)人員,這可視為預(yù)設(shè)的 Cube.AI runtime替代方案。



    圖一
    圖一

    雖然兩種runtime均為資源有限的MCU專案而設(shè)計(jì),但Cube.AI更針對(duì)STM32的獨(dú)特架構(gòu)進(jìn)一步最佳化。因此,TensorFlow Lite更注重跨平臺(tái)移植的需求,而Cube.AI 則注重運(yùn)算速度及記憶體佔(zhàn)用要求更高的應(yīng)用。


    以下圖表顯示相同的預(yù)訓(xùn)練神經(jīng)網(wǎng)路模型中,兩種runtime之間的效能比較。



    圖二
    圖二

    如表格所示,對(duì)於同一個(gè)模型,Cube.AI runtime相較TFLite runtime節(jié)省了大約20%的Flash,和約8%的RAM,執(zhí)行速度幾乎是TFLite runtime的2倍。


    對(duì)於TFLite模型,使用者可在STM32Cube.AI的網(wǎng)路設(shè)定中選擇 2 種runtime。



    圖三
    圖三

    量化支援

    量化是一種廣泛使用的最佳化技術(shù),可將32位元的浮點(diǎn)數(shù)模型壓縮成更少位元的整數(shù)模型,進(jìn)而?少儲(chǔ)存大小及runtime的記憶體佔(zhàn)用峰值,並改善CPU/MCU的推論時(shí)間及功耗,而精度只會(huì)略降一些。量化後的模型可利用整數(shù)(而非浮點(diǎn)值)來執(zhí)行部分或是全部的tensor。它是各種最佳化技術(shù)的重要組成部分,如:拓?fù)鋵?dǎo)向、feature map reduction、剪枝、weights compression等,可應(yīng)用於像是MCU這類runtime資源有限的環(huán)境。


    另外兩種經(jīng)典的量化方法:post-training quantization(PTQ)以及quantization aware training(QAT)。PTQ相對(duì)容易進(jìn)行,它容許使用有限的代表性資料集對(duì)預(yù)訓(xùn)練模型進(jìn)行量化。而QAT則是在訓(xùn)練過程中完成,模型精度通常更好。


    STM32Cube.AI以 2種方式直接或間接支援這2種量化方法:


    - 首先,可部署經(jīng)由PTQ或是QAT量化的TensorFlow Lite模型。在此情況下,量化由 TensorFlow Lite框架執(zhí)行,主要是通過「TFLite converter」程式匯出TensorFlow Lite檔案。


    - 其次,命令行介面(CLI)亦整合了一個(gè)內(nèi)部PTQ程序,針對(duì)預(yù)訓(xùn)練的Keras模型提供不同的量化計(jì)劃。與採用「TFLite converter」程式的訓(xùn)練後量化相比,此內(nèi)部程序提供更多量化計(jì)劃,在執(zhí)行時(shí)間及精度方面提供不同的選擇。



    圖四
    圖四

    下圖表顯示在 STM32 上部署量化模型相較原有浮點(diǎn)模型的優(yōu)勢。FD-MobileNet用作基準(zhǔn)測試模型,12 層、145k 參數(shù)、24M MACC運(yùn)算及輸入維度224x224x3。



    圖五
    圖五

    從表中可見,量化模型可節(jié)省約4倍的Flash和RAM,執(zhí)行速度快約3倍,而精度僅降低 0.7%。


    如果已安裝X-Cube-AI軟體套件,使用者可以在此路徑找到使用Cube.AI CLI進(jìn)行量化的教學(xué):C:\Users\username\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\7.1.0\Documentation\quantization.html. 文末亦附有「Quantize a MNIST model」範(fàn)例。


    Graph flow及記憶體配置最佳化

    除了量化技術(shù)外,STM32Cube.AI更追求使用其C Code產(chǎn)生器之最佳化引擎,針對(duì)推論時(shí)間最佳化記憶體使用(RAM和ROM)。它基於不需要資料集的方式,意味著壓縮及最佳化演算法無需訓(xùn)練、驗(yàn)證或測試資料集。


    第一種方法是weigh/bias壓縮,當(dāng)中應(yīng)用 k-means 聚類演算法。此壓縮算法只適用於dense 層(完全連接層)。此方法的優(yōu)勢是獲得快速的壓縮過程,但結(jié)果並非無損,全域精度可能會(huì)受影響。為此,STM32Cube.AI提供了Validation process作為改善措施,以評(píng)估壓縮過程中所造成的誤差。



    圖六
    圖六

    如下圖所示,壓縮功能可以在STM32Cube.AI網(wǎng)路設(shè)定中使用:


    第二種方法是運(yùn)算融合。將各層合併,再以最佳化資料的位置及相關(guān)的運(yùn)算核心。有些層(例如「Dropout」、「Reshape」)在轉(zhuǎn)換或最佳化的過程中被移除,有些層(例如非線性及卷積層後的「Pooling」)則融入前一層。轉(zhuǎn)換後網(wǎng)路的層數(shù)通常低於原始網(wǎng)路,更減少記憶體中的資料傳輸量。



    圖七
    圖七

    最後一種方法為最佳化activation memory。定義了一個(gè) R/W 區(qū)塊,用於儲(chǔ)存暫時(shí)隱藏層的值(activation運(yùn)算子的輸出)。它可被視為推論函數(shù)所用的scratch buffer。Activation memory可以在不同層上被重複使用。因此,activation buffer的大小由兩個(gè)連續(xù)層的最大記憶體需求所定義。


    Relocatable二進(jìn)位模型支援

    Non-relocatable方法(或所謂的「靜態(tài)」方法)指定神經(jīng)網(wǎng)路的 C檔被編譯後,與終端使用者應(yīng)用的stack連結(jié)在一起。如下圖所示,所有物件(包括神經(jīng)網(wǎng)路及使用者應(yīng)用)根據(jù)不同資料類型連結(jié)到不同的區(qū)段。在此情況下,當(dāng)使用者希望更新函數(shù)的特定部分,整個(gè)韌體都需要更新。



    圖八
    圖八

    相對(duì)地,relocatable二進(jìn)位模型指定一個(gè)二進(jìn)位物件,該物件可在STM32記憶體子系統(tǒng)內(nèi)任何地方安裝和執(zhí)行。它包含被編譯後的神經(jīng)網(wǎng)路 C檔,亦包括所需的forward kernel函式以及weights。主要目的是提供更靈活的更新 AI應(yīng)用方式,即無需重新產(chǎn)生和燒錄整個(gè)韌體。


    產(chǎn)生的二進(jìn)位物件是一個(gè)輕量plug-in,可從任何位址執(zhí)行(與位置無關(guān)的程式),其資料可儲(chǔ)存在記憶體的任何地方(與位置無關(guān)的資料)。利用STM32Cube.AI簡單高效的AI relocatable runtime,可將其實(shí)體化並加以利用。複雜及消耗資源的ArmR CortexR -M MCU動(dòng)態(tài)連結(jié)器不會(huì)嵌入STM32韌體,生成的物件是一個(gè)獨(dú)立實(shí)體,在runtime不需要外部symbols或函式。


    下圖左側(cè)是神經(jīng)網(wǎng)路的relocatable二進(jìn)位物件,該物件是獨(dú)立的,並將放置於終端使用者應(yīng)用的單獨(dú)區(qū)域(右側(cè)部分)。它可由STM32Cube.AI的relocatable runtime實(shí)體化及動(dòng)態(tài)連結(jié)。因此,使用者在更改AI模型時(shí),只需更新此部分的binary。也可以進(jìn)一步選擇產(chǎn)生神經(jīng)網(wǎng)路 weights作為一個(gè)獨(dú)立的物件,以增加靈活性。



    圖九
    圖九

    如下圖所示,relocatable network可以在STM32Cube.AI的進(jìn)階設(shè)定中啟用:



    圖十
    圖十

    最後,作為 意法半導(dǎo)體AI生態(tài)系統(tǒng)的核心工具,STM32Cube.AI提供眾多基本或進(jìn)階功能,幫助使用者輕鬆建立高度最佳化和靈活的AI應(yīng)用。


    相關(guān)文章
    ? SiC MOSFET:意法半導(dǎo)體克服產(chǎn)業(yè)挑戰(zhàn)的顛覆性技術(shù)
    ? 意法半導(dǎo)體的邊緣AI永續(xù)發(fā)展策略:超越MEMS迎接真正挑戰(zhàn)
    ? Crank Storyboard:跨越微控制器與微處理器的橋樑
    ? 嵌入式系統(tǒng)的創(chuàng)新:RTOS與MCU的協(xié)同運(yùn)作
    ? STM32MP25系列MPU加速邊緣AI應(yīng)用發(fā)展 開啟嵌入式智慧新時(shí)代
    comments powered by Disqus
      相關(guān)新聞
    » Discovery《臺(tái)灣無比精采:AI 科技島》即將首播 外宣臺(tái)灣科技實(shí)力
    » 應(yīng)材攜手全球45個(gè)非營利組織扎根STEAM教育 賦能新世代人才科技創(chuàng)造力
    » 工研院 VLSI TSA國際研討會(huì)登場 聚焦高效能運(yùn)算、矽光子、量子計(jì)算
    » 經(jīng)濟(jì)部與顯示業(yè)瞄準(zhǔn)先進(jìn)封裝需求 首創(chuàng)面板級(jí)全濕式解決方案
    » SEMI:2025年全球晶圓廠設(shè)備投資破千億 晶背供電、2nm技術(shù)可望量產(chǎn)
      相關(guān)產(chǎn)品
    » 意法半導(dǎo)體三相馬達(dá)驅(qū)動(dòng)器整合評(píng)估板加速強(qiáng)化性能
    » 意法半導(dǎo)體新款750W馬達(dá)驅(qū)動(dòng)參考板適用於家用和工業(yè)設(shè)備
    » 意法半導(dǎo)體新車規(guī)單晶片同步降壓轉(zhuǎn)換器讓應(yīng)用設(shè)計(jì)更彈性化
    » 意法半導(dǎo)體新款車規(guī)直流馬達(dá)預(yù)驅(qū)動(dòng)器可簡化EMI優(yōu)化設(shè)計(jì)
    » 意法半導(dǎo)體新開發(fā)板協(xié)助工業(yè)和消費(fèi)性電子廠商加速雙馬達(dá)設(shè)計(jì)

    ?
    刊登廣告 新聞信箱 讀者信箱 著作權(quán)聲明 隱私權(quán)聲明 本站介紹

    Copyright ©1999-2025 遠(yuǎn)播資訊股份有限公司版權(quán)所有 Powered by O3
    地址:臺(tái)北數(shù)位產(chǎn)業(yè)園區(qū)(digiBlock Taipei) 103臺(tái)北市大同區(qū)承德路三段287-2號(hào)A棟204室
    電話 (02)2585-5526 #0 轉(zhuǎn)接至總機(jī) / E-Mail: webmaster@hope.com.tw
    主站蜘蛛池模板: 唐河县| 荔浦县| 阳东县| 永定县| 五家渠市| 逊克县| 米脂县| 恭城| 大同县| 清苑县| 泾阳县| 奉化市| 岚皋县| 建瓯市| 久治县| 兴化市| 炎陵县| 东方市| 武功县| 石渠县| 太保市| 吕梁市| 突泉县| 福海县| 清镇市| 禄丰县| 新余市| 华池县| 凤阳县| 孝义市| 开原市| 大厂| 突泉县| 安徽省| 孟村| 双江| 贵南县| 宣汉县| 昌宁县| 绵阳市| 福安市|