ST在AI應用領域提供了很多工具,在ST Edge AI Suite套件中,其中有一款EDGE AI DEVELOPER CLOUD。打開鏈接如下:https://stm32ai.st.com/st-edge-ai-developer-cloud/
一、概要
STM32Cube.AI開發者雲(STM32CubeAI-DC)是一個免費的在線平台和服務,可為基於Arm®Cortex®‑M處理器的STM32微控制器創建、優化、基準測試和生成人工智慧(AI)。它基於STM32Cube.AI核心技術。
STM32Cube.AI開發者雲的優勢和特點包括:
- 在線圖形用戶界面(無需安裝),可使用STMicroelectronics外部網用戶憑證訪問。
- 網絡優化和可視化,提供在STM32目標上運行所需的RAM和閃存大小。
- 量化工具,將浮點模型轉換為整數模型。
- 基準測試服務,利用STMicroelectronics託管的板卡農場,包括各種STM32板,以便選擇最合適的硬體。
- 代碼生成器,包括網絡C代碼,並可選生成完整的STM32項目。
- STM32模型庫:
- 易於訪問模型選擇、訓練腳本和關鍵模型指標,直接用於基準測試。
- 從用戶模型生成應用代碼,並提供“入門”代碼示例。
- 使用Python腳本(REST API)的機器學習(ML)工作流自動化服務。
- 支持所有X-CUBE-AI功能,例如:
- 原生支持多種深度學習框架,如Keras和TensorFlow Lite,以及支持可以導出到ONNX標準格式的框架,如PyTorch、MATLAB®等。
- 支持Keras網絡和TensorFlow Lite量化網絡的8位量化。
- 支持多種內置scikit-learn模型,如孤立森林、支持向量機(SVM)、K均值等。
- 可以通過將權重存儲在外部閃存中以及將激活緩衝區存儲在外部RAM中來使用更大的網絡。
- 在不同STM32微控制器系列之間易於移植。
- 用戶友好的許可條款。
二、登入
要開始使用該工具,請訪問STM32Cube.AI開發者雲的主頁,網址為 https://stm32ai-cs.st.com/。如下所示的歡迎頁面應該會出現:
當頁面完全加載後,點擊“立即開始”("START NOW")按鈕。這將把用戶重定向到登錄頁面,如下所示:
如果用戶擁有myST賬戶,他們可以輸入憑證並點擊“登錄”("Login")按鈕。如果他們當前沒有賬戶,可以通過點擊“創建賬戶”("Create Account")按鈕並填寫所需的表單來創建一個。賬戶創建是完全免費的。
三、創建一個項目
1. 成功登錄後,用戶將被引導至主頁面。該頁面展示了三個主要區域,如下所示:
2. 上傳模型
在第一區域,可以通過點擊“上傳”按鈕並從文件瀏覽器中選擇文件,或者直接將文件拖放到該區域來上傳任何預訓練的AI模型。
3. 從STM32模型庫導入
第二個區域顯示了一系列預訓練的AI模型,這些模型可以作為各種用例的起點。目前包括五個類別:
- 手勢識別
- 圖像分類
- 人體活動識別
- 音頻事件檢測
- 物體檢測
這些模型來自STM32模型庫。要創建新項目,請點擊所需模型旁邊的“導入”按鈕。
窗體頂端
窗體底端
4. 使用已保存的模型第三個區域作為工作區,包含用戶之前在STM32Cube.AI開發者雲中分析和基準測試的所有AI模型。
5. 啟動項目這篇文章使用了來自模型庫的一個.h5 模型,該模型是使用 TensorFlow Keras API 創建的。要使用這個模型,請按照以下步驟操作:
a)在模型庫的模型列表中向下滾動,找到“MOBILENET_V2_0.35_128_IMAGE_CLASSIFICATION_PERSON.H5” 模型。找到後,選擇其旁邊的 “導入” 按鈕。
現在,該模型出現在工作區中。
b)按下 “Play” 按鈕以計算 Netron 圖。當分析完成後,點擊 “Netron” 圖標以打開一個彈出窗口,在 Netron 中顯示模型架構。此視圖允許觀察模型的所有層和組件。要退出此視圖,請點擊位於右上角的 “Cross” 按鈕。
c)點擊 “Start” 按鈕以創建一個新的項目。
項目創建完成後,頂部欄中有五個操作項變為可用狀態。
“Optimize”:使用不同的選項優化模型。
“Quantize”:使用訓練後量化對浮點模型進行量化。
“Benchmark”:在我們的開發板農場中的不同 STM32 開發板上對人工智慧模型進行基準測試。
“Results”:查看、分析和比較不同基準測試運行生成的結果。
“Generate”:為經過優化和基準測試的模型生成目標 MCU 系列和開發板的代碼和項目。
本頁面的以下章節提供了有關這些操作項的更多詳細信息。
此部分還顯示了當前所選模型的詳細信息。這包括相關信息,例如輸入和輸出形狀、類型以及乘加累積運算(MACC)次數等數據。
四、優化
在 “優化” 部分,使用平衡優化選項進行默認優化。這會啟用 “use activation buffer for input buffer” 和 “use activation for output buffer”。你可以修改默認設置,然後點擊 “Optimize” 以觀察其影響。
A)優化選項
有三種不同的選項可用於優化人工智慧模型:
在 RAM 大小和推理時間之間取得平衡:這種方法試圖在最小 RAM 和最短推理時間之間找到折衷方案。
針對 RAM 大小進行優化:這種方法旨在優化 RAM 大小。
針對推理時間進行優化:這種方法旨在優化推理時間
B)將激活緩衝區用於輸入 / 輸出緩衝區。
當這些選項被啟用時,這表明 “激活” 緩衝區也被用於處理輸入 / 輸出緩衝區。這會影響內存,但不會影響推理時間。根據輸入 / 輸出數據的大小,“激活” 緩衝區可能會更大,但總體上小於激活緩衝區與輸入 / 輸出緩衝區之和。
C)啟動優化
要啟動優化過程,請選擇所需的選項並點擊 “Optimize” 按鈕。在優化運行時,用戶可以監視終端,終端會提供有關優化運行的詳細信息。任何錯誤都會在此處顯示。
可以通過選擇不同的選項啟動多次優化,從而允許用戶選擇最適合其需求的選項。在每次優化操作後,終端會以乘加累積運算MACC次數、閃存大小和 RAM 大小的形式顯示報告的數字。
當所有優化都已完成時,用戶可以選擇最適合他們需求的選項。這個例子使用了平衡方法。從這裡,用戶可以繼續進行下一個操作項。如果他們正在使用浮點模型,下一步是量化。然而,如果他們正在使用量化模型,他們可以跳過量化並直接進行基準測試。
要開始量化步驟,請點擊 “Go to quantize” 按鈕。
要跳過量化步驟並直接進行基準測試,請點擊 “Go to benchmark” 按鈕。
五、量化
此面板可用於從 Keras 浮點模型創建量化模型(8 位整數格式)。量化是一種優化技術,用於通過減小模型權重的大小(存儲尺寸更小且在運行時內存峰值使用更少)來壓縮 32 位浮點模型,提高 CPU/MCU 的使用率和延遲(包括功耗),但可能會降低精度。量化模型在具有整數而不是浮點值的張量上執行部分或全部操作。
量化服務使用由 TFLiteConverter 提供的 TensorFlow 訓練後量化接口。從三個受支持的選項中選擇任何輸入或輸出類型,包括 int8、無符號 int8 或 float32。為防止在量化過程中精度損失,建議用戶提供他們的訓練數據集或其中的一部分。這可以以.npz 文件的形式提供。如果未提供量化文件,則將使用隨機數據進行量化,並且所得的量化模型僅可用於基準測試以獲得所需的閃存和 RAM 大小以及推理時間,但不會計算精度。
一旦提供了數據集的.npz 文件,點擊 “啟動量化” 按鈕以開始量化過程。此演示在沒有數據集的情況下進行量化,而是使用隨機數。
當量化過程完成後,量化模型將在下面列出。點擊 “Optimize selected quantized model” 按鈕以優化所選量化模型,並將結果與浮點模型進行比較。
在優化過程中,終端會像上面描述的前一步一樣顯示輸出。
在量化模型優化後,“History of optimization results” 表會顯示結果。在這個例子中,應該觀察到從優化中閃存和 RAM 大小都減少了大約 70%:
一旦對量化結果滿意,點擊 “Go to benchmark” 按鈕,這將把用戶帶到模型基準測試步驟。
六、基準測試
“基準測試” 面板顯示當前所選模型以及當前用於優化的參數,如下圖所示。
基準測試服務允許用戶在多個 STM32 開發板上遠程運行選定的人工智慧模型,並獲得內部或外部閃存和 RAM 的使用情況以及推理時間。這些 STM32 開發板託管在 ST 公司的場所,被稱為 “board farm”,並且可以通過等待隊列進行訪問。該面板列出了一些基本的開發板信息,包括 CPU 類型和頻率,以及內部和外部存儲器的大小。
要在給定的開發板上啟動基準測試,請點擊該開發板旁邊的 “Start Benchmark” 按鈕。這將啟動基準測試過程。本文中的示例使用 STM32H735G-DK 開發板。
在基準測試過程中,用戶可以實時觀察進度條和當前狀態。會創建一個用於系統性能應用的項目。該工具使用人工智慧模型的 C 代碼構建項目,並對開發板農場中的一個實際物理開發板進行編程。它在開發板上運行應用程序,並為用戶提供內存占用和推理時間。
當基準測試完成時,測量得到的推理時間會顯示在開發板旁邊,如下圖所示。
要獲取關於每層使用的資源的更多詳細信息,點擊 “三個點” 圖標並選擇 “顯示每層詳細信息” 選項。會出現一個帶有相應條形圖的對話框。
條形圖以字節為單位顯示每一層的大小。用戶可以通過點擊 “切換餅圖 / 條形圖” 按鈕在條形圖和餅圖之間切換。條形圖顯示實際大小,而餅圖顯示分布情況。
用戶可以對執行時間執行相同的操作。條形圖以毫秒為單位顯示在每一層上花費的時間,而餅圖顯示每一層的執行時間分布。要關閉此視圖,點擊對話框外部的任意位置。
該工具允許用戶同時在多個開發板上啟動基準測試。他們可以通過按下所有的 “開始基準測試” 按鈕在所有開發板上啟動基準測試。這會對所有開發板重複該過程,並在每個開發板旁邊報告推理時間。
當所有基準測試運行完成後,用戶可以進入 “結果” 步驟。
七、結果
“結果” 頁面顯示了在 STM32Cube.AI 開發者雲中進行的所有基準測試的表格,這對於比較所有基準測試非常有用。用戶可以通過點擊 “使用此配置生成” 按鈕直接選擇一個基準測試進行代碼生成。
此演示使用 STM32H735G-DK 開發板,它提供了最小的推理時間。
八、生成
“生成” 頁面提供了各種滿足不同需求的輸出。這些包括更新現有項目、創建新的 STM32CubeMX 項目、生成包含所有源文件的 STM32CubeIDE 項目,或者下載編譯後的固件以在用戶自己的開發板上估計推理時間。
當用戶到達 “生成” 步驟時,他們會看到當前所選模型的相同標題和當前參數。如果來自基準測試或結果步驟,目標開發板已經被選中。否則,用戶需要篩選 CPU 類型或 STM32 系列以選擇他們的目標 STM32 開發板。
在此之後,用戶有四個生成選項可供選擇:
下載 C 代碼;
下載 STM32CubeMX 的 ioc 文件;
下載 STM32CubeIDE 項目;
下載固件。
評論