X-CUBE-AI是意法半導(dǎo)體(簡(jiǎn)稱ST)STM32生態(tài)系統(tǒng)中的AI擴(kuò)充套件,可自動(dòng)轉(zhuǎn)換預(yù)先訓(xùn)練好的AI模型,並在使用者的專案中產(chǎn)生STM32優(yōu)化函式庫(kù)。
最新版本的X-CUBE-AI v7.1.0主要有三項(xiàng)更新:
? 支援入門級(jí)STM32 MCU;
? 支援最新AI架構(gòu);
? 改善使用者體驗(yàn)和效能調(diào)校。
ST持續(xù)提升STM32 AI生態(tài)系統(tǒng)的效能,且提供更多簡(jiǎn)單、易用的介面,並強(qiáng)化更多類神經(jīng)網(wǎng)路中的運(yùn)算,而且最重要的一點(diǎn)是:免費(fèi)。
在介紹X-CUBE-AI v7.1.0的三大更新之前,先了解一下X-CUBE-AI的主要用途。
X-CUBE-AI擴(kuò)充套件是什麼?
X-CUBE-AI擴(kuò)充套件又稱為「STM32Cube.AI」,其具備優(yōu)化區(qū)塊,並可為STM32 裝置產(chǎn)生在準(zhǔn)確度、記憶體佔(zhàn)用空間和電源效率都最合適的模型。
模型拓?fù)鋬?yōu)化器-Graph optimizer
自動(dòng)透過(guò)簡(jiǎn)化 AI graph 以及量化運(yùn)算等方式,使AI模型能在目標(biāo)STM32硬體上獲得最佳的運(yùn)行效能。其中包含多種如graph rewrite、operator fusion、constant folding等的量化運(yùn)算技術(shù)。
量化器
X-CUBE-AI擴(kuò)充套件也支援FP32和Int8預(yù)先訓(xùn)練好的模型。開(kāi)發(fā)人員可匯入經(jīng)量化的類神經(jīng)網(wǎng)路,使其相容於STM32嵌入式架構(gòu),同時(shí)採(cǎi)用如文件詳述的post-training quantization流程來(lái)維持準(zhǔn)確度。在下一版本中,Int1、Int2和Int3也將納入支援。一旦成功匯入模型,即可在PC和目標(biāo)STM32硬體上驗(yàn)證AI模型。
記憶體優(yōu)化器
記憶體優(yōu)化器是一項(xiàng)先進(jìn)的記憶體管理工具,遵循嵌入式設(shè)計(jì)限制優(yōu)化的記憶體配置,能達(dá)到最佳效能,而其智慧方式能在內(nèi)部及外部資源間均衡配置記憶體,使其保有建立模型專屬記憶體的可能性,讓開(kāi)發(fā)者能輕鬆更新模型。
最新版X-CUBE-AI v7.1.0將提供三項(xiàng)主要更新功能。
1.支援入門級(jí)STM32 MCU
為使邊緣裝置發(fā)揮全方位AI效能,X-CUBE-AI v7.1.0全面支援STM32 Arm Cortex-M0和 Arm Cortex-M0+的功能。今後,使用者將可在最小型的STM32微控制器中實(shí)作類神經(jīng)網(wǎng)路。
開(kāi)發(fā)人員不僅能在下列產(chǎn)品組合中找到各式用途的晶片, 甚至還能擁有具備AI功能的晶片。STM32適用範(fàn)圍甚廣,從極低功耗、高效能系列MCU,一路涵蓋至MPU。此外,如無(wú)線MCU等不同用途的晶片亦適用於AI應(yīng)用。
2.支援最新AI架構(gòu)
最新版本的X-CUBE-AI v7.1.0為廣泛運(yùn)用的深度學(xué)習(xí)架構(gòu)帶來(lái)諸多功能,如Keras與 TensorFlow? Lite,並將TFLite執(zhí)行階段升級(jí)至2.7.0,而ONNX 升級(jí)至1.9。
Keras是透過(guò)Tensorflow backend獲得支援,而受支援的運(yùn)算子可處理多種經(jīng)典拓?fù)洌苓m用於行動(dòng)裝置或IoT資源受限的環(huán)境。例如:SqueezeNet、MobileNet V1、Inception和 SSD-MobileNet v1等。而X-CUBE-AI v7.1.0最高能支援到TF Keras 2.7.0。
Tensorflow Lite格式適用在行動(dòng)平臺(tái)上部署類神經(jīng)網(wǎng)路模型。X-CUBE-AI可匯入並轉(zhuǎn)換成採(cǎi)用flatbuffer技術(shù)的tflite檔案。其也可處理多項(xiàng)運(yùn)算子,包含量化模型和經(jīng)由quantization aware training或post-training quantization產(chǎn)生的運(yùn)算子。
X-CUBE-AI也支援其他可匯出為ONNX標(biāo)準(zhǔn)格式的架構(gòu),如PyTorch、Microsoft Cognitive Toolkit、MATLAB等。
對(duì)於各種不同的AI框架,ST僅支援部分神經(jīng)層及神經(jīng)層參數(shù),其取決於網(wǎng)路C API的expressive power及專用toolbox的parser。
ST所提供之STM32Cube.AI runtime可達(dá)到最佳AI 應(yīng)用程式執(zhí)行效能,開(kāi)發(fā)人員仍可選取 TensorFlow? Lite runtime作為替代方案,以在多個(gè)專案間發(fā)揮優(yōu)勢(shì),但TensorFlow Lite runtime對(duì)STM32優(yōu)化程度較低,可能會(huì)降低效能。
除深度學(xué)習(xí)架構(gòu)以外,X-CUBE-AI亦可轉(zhuǎn)換到知名開(kāi)放原始碼函式庫(kù),以及完備之Python機(jī)器學(xué)習(xí)架構(gòu)「Scikit-learn」 中的機(jī)器學(xué)習(xí)演算法,如隨機(jī)森林、支援向量機(jī)(Support Vector Machine,SVM)、k-means分群以及k-nearest neighbors(k-NN)演算法。開(kāi)發(fā)人員可以建立多種監(jiān)督式或非監(jiān)督式機(jī)器學(xué)習(xí)演算法,並利用簡(jiǎn)單有效的工具進(jìn)行資料分析。
X-CUBE-AI v7.1.0不直接支援Scikit-learn的機(jī)器學(xué)習(xí)演算法或XGBoost套件。在訓(xùn)練步驟完成後,這些演算法應(yīng)轉(zhuǎn)換成ONNX格式以供部署及匯入,通常會(huì)使用skl2onnx公用程式,但亦可使用其他具有ONNX匯出工具的機(jī)器學(xué)習(xí)架構(gòu)。不過(guò),ONNX-ML模型匯入X-CUBE-AI的作業(yè)大致已採(cǎi)scikit-learn v0.23.1、skl2onnx v1.10.3和XGBoost v1.5.1進(jìn)行測(cè)試。
3.改善使用者體驗(yàn)和效能調(diào)校
X-CUBE-AI v7.1.0推出多重堆積支援功能,開(kāi)發(fā)人員只需點(diǎn)擊幾下按鍵,即可將不同的額外負(fù)載調(diào)配到分散式記憶體的區(qū)段上。
在使用外部記憶體的支援下,開(kāi)發(fā)人員可以輕易將weights劃分至不同的記憶體區(qū)域。一旦模型儲(chǔ)存於多重陣列,即可映射內(nèi)部快閃記憶體中的部分weights,並將剩餘之記憶體分配於外部。此工具可讓開(kāi)發(fā)人員依模型要求和應(yīng)用程式佔(zhàn)用空間來(lái)使用non-contiguous的快閃記憶體區(qū)塊。
圖形使用者介面亦可提供全方位的視圖,完整顯示所產(chǎn)生編碼中使用的緩衝區(qū)。選取模型後,開(kāi)發(fā)人員即可查看視覺(jué)化的統(tǒng)計(jì)數(shù)據(jù),以瞭解整個(gè)系統(tǒng)的複雜度和佔(zhàn)用空間。其可展示模型中的每個(gè)神經(jīng)層,使開(kāi)發(fā)人員輕易辨別出關(guān)鍵層。
此工具有助於開(kāi)發(fā)人員加快速度,並能更快在PC上驗(yàn)證模型以完成基準(zhǔn)評(píng)測(cè),以及在目標(biāo) STM32裝置上量測(cè)最終效能。驗(yàn)證流程的最後將會(huì)產(chǎn)生比較表格,彙總原型及STM32模型之間的準(zhǔn)確度和誤差。X-CUBE-AI也會(huì)提供一份報(bào)告顯示各層複雜度,以及在執(zhí)行期間所測(cè)得的推算時(shí)間。
X-CUBE-AI僅是ST廣泛生態(tài)系的其中一環(huán),其旨在讓STM32使用者充分發(fā)揮人工智慧的效益。X-CUBE-AI則是確保長(zhǎng)期支援及高品質(zhì)開(kāi)發(fā)的可靠度。每次推出重大新版本,最新 AI 架構(gòu)相容性均會(huì)定期更新。