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

  • 賬號:
    密碼:
    智動化 / 文章 /

    STM32 MCU最隹化的 STM32Cube.AI library
    [作者 意法半導體提供]   2022年03月25日 星期五 瀏覽人次: [6061]

    STM32Cube.AI是意法半導體人工智慧生態系統的STM32Cube擴充套件,可以自動轉換預訓練之神經網路及將產生的最隹化函式庫整合到開發者專案中,以進一步擴充STM32CubeMX的能力。更提供多種方法在PC及 STM32 開發板驗證神經網路模型,并測量 STM32裝置上的效能,無需使用者手動撰寫 C code。


    本文介紹STM32Cube.AI進階功能,涵蓋以下主題:


    - Runtime支援:Cube.AI與TensorFlow Lite


    - 量化支援


    - Graph flow及記憶體設定最隹化


    - Relocatable二進位模型支援


    Runtime支援:Cube.AI與TensorFlow Lite

    STM32Cube.AI支援2種針對不同應用需求的runtimeCube.AI和TensorFlow Lite。Cube.AI 為預設執行階段,是針對STM32高度最隹化的機器學習函式庫。TensorFlow Lite for Microcontroller由Google設計,用於微控制器及其他裝置上執行機器學習模型,只占用幾千位元組的記憶體空間。它被廣泛用在基於MCU的應用。STM32Cube.AI整合了一條特別路徑供STM32 IDE專案所用,并嵌入TensorFlow Lite for Microcontrollers執行階段 (TFLm)及其相關的TFLite模型。對於希??擁有一個跨專案通用框架的開發人員,這可視為預設的 Cube.AI runtime替代方案。



    圖一
    圖一

    雖然兩種runtime均為資源有限的MCU專案而設計,但Cube.AI更針對STM32的獨特架構進一步最隹化。因此,TensorFlow Lite更注重跨平臺移植的需求,而Cube.AI 則注重運算速度及記憶體占用要求更高的應用。


    以下圖表顯示相同的預訓練神經網路模型中,兩種runtime之間的效能比較。



    圖二
    圖二

    如表格所示,對於同一個模型,Cube.AI runtime相較TFLite runtime節省了大約20%的Flash,和約8%的RAM,執行速度幾??是TFLite runtime的2倍。


    對於TFLite模型,使用者可在STM32Cube.AI的網路設定中選擇 2 種runtime。



    圖三
    圖三

    量化支援

    量化是一種廣泛使用的最隹化技術,可將32位元的浮點數模型壓縮成更少位元的整數模型,進而?少儲存大小及runtime的記憶體占用峰值,并改善CPU/MCU的推論時間及功耗,而精度只會略降一些。量化後的模型可利用整數(而非浮點值)來執行部分或是全部的tensor。它是各種最隹化技術的重要組成部分,如:拓撲導向、feature map reduction、剪枝、weights compression等,可應用於像是MCU這類runtime資源有限的環境。


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


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


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


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



    圖四
    圖四

    下圖表顯示在 STM32 上部署量化模型相較原有浮點模型的優勢。FD-MobileNet用作基準測試模型,12 層、145k 叁數、24M MACC運算及輸入維度224x224x3。



    圖五
    圖五

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


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


    Graph flow及記憶體配置最隹化

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


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



    圖六
    圖六

    如下圖所示,壓縮功能可以在STM32Cube.AI網路設定中使用:


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



    圖七
    圖七

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


    Relocatable二進位模型支援

    Non-relocatable方法(或所謂的「靜態」方法)指定神經網路的 C檔被編譯後,與終端使用者應用的stack連結在一起。如下圖所示,所有物件(包括神經網路及使用者應用)根據不同資料類型連結到不同的區段。在此情況下,當使用者希??更新函數的特定部分,整個韌體都需要更新。



    圖八
    圖八

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


    產生的二進位物件是一個輕量plug-in,可從任何位址執行(與位置無關的程式),其資料可儲存在記憶體的任何地方(與位置無關的資料)。利用STM32Cube.AI簡單高效的AI relocatable runtime,可將其實體化并加以利用。復雜及消耗資源的ArmR CortexR -M MCU動態連結器不會嵌入STM32韌體,生成的物件是一個獨立實體,在runtime不需要外部symbols或函式。


    下圖左側是神經網路的relocatable二進位物件,該物件是獨立的,并將放置於終端使用者應用的單獨區域(右側部分)。它可由STM32Cube.AI的relocatable runtime實體化及動態連結。因此,使用者在更改AI模型時,只需更新此部分的binary。也可以進一步選擇產生神經網路 weights作為一個獨立的物件,以增加靈活性。



    圖九
    圖九

    如下圖所示,relocatable network可以在STM32Cube.AI的進階設定中啟用:



    圖十
    圖十

    最後,作為 意法半導體AI生態系統的核心工具,STM32Cube.AI提供眾多基本或進階功能,幫助使用者輕松建立高度最隹化和靈活的AI應用。


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

    主站蜘蛛池模板: 肇州县| 高阳县| 永兴县| 龙游县| 太湖县| 菏泽市| 清流县| 苏尼特右旗| 富顺县| 唐海县| 海淀区| 崇阳县| 永平县| 蒙城县| 清远市| 申扎县| 辽宁省| 邵武市| 衡水市| 鄯善县| 保康县| 安图县| 台山市| 花垣县| 丹凤县| 弥勒县| 全州县| 宝清县| 嵊泗县| 丽江市| 辛集市| 苍梧县| 紫金县| 张家港市| 化德县| 元阳县| 武清区| 惠水县| 永吉县| 通化县| 荥经县|