探討了人工智能(AI)的普及給嵌入式設(shè)計(jì)人員帶來(lái)的新挑戰(zhàn)。在創(chuàng)建“邊緣機(jī)器學(xué)習(xí)(ML)”應(yīng)用時(shí),設(shè)計(jì)人員必須確保其能有效運(yùn)行,同時(shí)最大限度地降低處理器和存儲(chǔ)開(kāi)銷(xiāo),以及物聯(lián)網(wǎng)(IoT)設(shè)備的功耗。
從監(jiān)控和訪(fǎng)問(wèn)控制到智能工廠(chǎng)和預(yù)測(cè)性維護(hù),基于機(jī)器學(xué)習(xí)(ML)模型構(gòu)建的人工智能(AI)在工業(yè)物聯(lián)網(wǎng)邊緣處理應(yīng)用中已變得無(wú)處不在。隨著這種普及,支持AI的解決方案的構(gòu)建已經(jīng)變得“大眾化”——從數(shù)據(jù)科學(xué)家的專(zhuān)業(yè)領(lǐng)域轉(zhuǎn)為嵌入式系統(tǒng)設(shè)計(jì)人員也需要了解的領(lǐng)域。這種大眾化帶來(lái)的挑戰(zhàn)在于,設(shè)計(jì)人員并不一定具備定義要解決的問(wèn)題以及以最恰當(dāng)方式捕獲和組織數(shù)據(jù)的能力。此外,與消費(fèi)類(lèi)解決方案不同,工業(yè)AI實(shí)現(xiàn)的現(xiàn)有數(shù)據(jù)集很少,通常需要用戶(hù)從頭開(kāi)始創(chuàng)建自己的數(shù)據(jù)集。
融入主流
AI已經(jīng)融入主流,深度學(xué)習(xí)和機(jī)器學(xué)習(xí)(DL和ML)是我們現(xiàn)在習(xí)以為常的許多應(yīng)用的背后力量,這些應(yīng)用包括自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、預(yù)測(cè)性維護(hù)和數(shù)據(jù)挖掘。早期的AI實(shí)現(xiàn)是基于云或服務(wù)器的,需要大量的處理能力和存儲(chǔ)空間,以及AI/ML應(yīng)用與邊緣(終端)之間的高帶寬連接。盡管生成式AI應(yīng)用(如ChatGPT、DALL-E和Bard)仍然需要此類(lèi)設(shè)置,但近年來(lái)已經(jīng)出現(xiàn)了邊緣處理的AI,即在數(shù)據(jù)捕獲點(diǎn)實(shí)時(shí)處理數(shù)據(jù)。邊緣處理極大減少了對(duì)云的依賴(lài),使整體系統(tǒng)/應(yīng)用更快、需要更少的功耗并且成本更低。許多人認(rèn)為安全性得到了提高,但更準(zhǔn)確地說(shuō),主要的安全重點(diǎn)從保護(hù)云與終端之間的通信轉(zhuǎn)移到了使邊緣設(shè)備更安全。
邊緣的AI/ML可以在傳統(tǒng)的嵌入式系統(tǒng)上實(shí)現(xiàn),這些系統(tǒng)的設(shè)計(jì)人員可以使用強(qiáng)大的微處理器、圖形處理單元和豐富的存儲(chǔ)器器件,即類(lèi)似于PC的資源。然而,越來(lái)越多的商業(yè)和工業(yè)物聯(lián)網(wǎng)設(shè)備需要在邊緣具備AI/ML功能,這些設(shè)備通常硬件資源有限,而且在許多情況下由電池供電。
在資源和功耗受限的硬件上運(yùn)行的邊緣AI/ML的潛力催生了“TinyML”這一術(shù)語(yǔ)。實(shí)際用例涵蓋工業(yè)(如預(yù)測(cè)性維護(hù))、樓宇自動(dòng)化(環(huán)境監(jiān)控)、建筑施工(監(jiān)督人員安全)和安防等領(lǐng)域。
數(shù)據(jù)流
AI(及其子集ML)需要從數(shù)據(jù)捕獲/收集到模型部署的工作流程(見(jiàn)圖1)。對(duì)于TinyML而言,由于嵌入式系統(tǒng)資源有限,因此每個(gè)工作流程階段的優(yōu)化至關(guān)重要。
例如,TinyML的資源需求被認(rèn)為是1 MHz到400 MHz的處理速度、2 KB到512 KB的RAM和32 KB到2 MB的存儲(chǔ)空間(閃存)。此外,150 μW至23.5 mW的小功耗預(yù)算也常常帶來(lái)挑戰(zhàn)。
圖1——上圖為簡(jiǎn)化的AI工作流程。雖然圖中未顯示,但模型部署本身必須將數(shù)據(jù)反饋回流程中,甚至可能影響數(shù)據(jù)的收集。
此外,在將AI嵌入資源有限的嵌入式系統(tǒng)時(shí),還有更重要的考慮因素或權(quán)衡。模型是系統(tǒng)行為的關(guān)鍵,但設(shè)計(jì)人員經(jīng)常發(fā)現(xiàn)自己在模型質(zhì)量/精度(影響系統(tǒng)可靠性/依賴(lài)性和性能,主要是運(yùn)行速度和功耗)之間做出妥協(xié)。
另一個(gè)關(guān)鍵因素是決定使用哪種類(lèi)型的AI/ML。通常有三種算法可供使用:監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。
解決方案
即使是對(duì)AI和ML有良好理解的設(shè)計(jì)人員,可能也會(huì)在優(yōu)化AI/ML工作流程的每個(gè)階段并在模型精度與系統(tǒng)性能之間找到完美平衡方面遇到困難——那么缺乏以往經(jīng)驗(yàn)的嵌入式設(shè)計(jì)人員如何應(yīng)對(duì)這些挑戰(zhàn)呢?
首先,重要的是不要忽視一個(gè)事實(shí):如果模型小且AI任務(wù)僅限于解決簡(jiǎn)單問(wèn)題,那么部署在資源有限的物聯(lián)網(wǎng)設(shè)備上的模型將會(huì)更有效。
幸運(yùn)的是,ML(特別是TinyML)進(jìn)入嵌入式系統(tǒng)領(lǐng)域,帶來(lái)了新的(或增強(qiáng)的)集成開(kāi)發(fā)環(huán)境(IDE)、軟件工具、架構(gòu)和模型——其中許多都是開(kāi)源的。例如,TensorFlow? Lite for Microcontrollers(TF Lite Micro)是一個(gè)面向ML和AI的免費(fèi)開(kāi)源軟件庫(kù),它專(zhuān)為在只有幾KB存儲(chǔ)器的器件上實(shí)現(xiàn)ML而設(shè)計(jì)。此外,程序可以用開(kāi)源和免費(fèi)的Python語(yǔ)言編寫(xiě)。
關(guān)于IDE,Microchip的MPLAB? X就是此類(lèi)環(huán)境的一個(gè)示例。該IDE可與公司的MPLAB ML一起使用,MPLAB ML是專(zhuān)門(mén)開(kāi)發(fā)的MPLAB X插件,用于構(gòu)建優(yōu)化的AI物聯(lián)網(wǎng)傳感器識(shí)別代碼。MPLAB ML由AutoML提供支持,可將AI ML工作流程的每一步完全自動(dòng)化,無(wú)需重復(fù)、繁瑣和耗時(shí)的模型構(gòu)建。特征提取、訓(xùn)練、驗(yàn)證和測(cè)試確保滿(mǎn)足單片機(jī)和微處理器存儲(chǔ)器限制的優(yōu)化模型,使開(kāi)發(fā)人員能夠快速在基于Microchip Arm? Cortex?的32位MCU或MPU上創(chuàng)建和部署ML解決方案。
流程優(yōu)化
工作流程優(yōu)化任務(wù)可以通過(guò)使用現(xiàn)成的數(shù)據(jù)集和模型來(lái)簡(jiǎn)化。例如,如果一個(gè)支持ML的物聯(lián)網(wǎng)設(shè)備需要圖像識(shí)別,從現(xiàn)有的標(biāo)記靜態(tài)圖像和視頻片段數(shù)據(jù)集開(kāi)始進(jìn)行模型訓(xùn)練(測(cè)試和評(píng)估)是合理的;需要注意的是,監(jiān)督學(xué)習(xí)算法需要標(biāo)記數(shù)據(jù)。
許多圖像數(shù)據(jù)集已經(jīng)存在于計(jì)算機(jī)視覺(jué)應(yīng)用中。然而,由于它們是為基于PC、服務(wù)器或云的應(yīng)用設(shè)計(jì)的,通常都很大。例如,ImageNet包含超過(guò)1400萬(wàn)張標(biāo)注圖像。
根據(jù)ML應(yīng)用的不同,可能只需要少量子集;例如,有很多人但只有少量靜物的圖像。例如,如果在建筑工地使用支持ML的攝像頭,當(dāng)有不戴安全帽的人進(jìn)入其視野時(shí),它們可以立即發(fā)出報(bào)警。ML模型需要訓(xùn)練,但可能只需要少量戴或不戴安全帽的人的圖像。然而,對(duì)于帽子類(lèi)型,可能需要更大的數(shù)據(jù)集和足夠的數(shù)據(jù)集范圍,以考慮不同的光照條件等各種因素。
圖1中第1步到第3步的內(nèi)容分別是獲得正確的實(shí)時(shí)(數(shù)據(jù))輸入和數(shù)據(jù)集、準(zhǔn)備數(shù)據(jù)和訓(xùn)練模型。模型優(yōu)化(第4步)通常是壓縮,這有助于減少存儲(chǔ)器需求(處理期間的RAM和用于存儲(chǔ)的NVM)和處理延遲。
在處理方面,許多AI算法(如卷積神經(jīng)網(wǎng)絡(luò)(CNN))在處理復(fù)雜模型時(shí)會(huì)遇到困難。一種流行的壓縮技術(shù)是剪枝(見(jiàn)圖2),剪枝有四種類(lèi)型:權(quán)重剪枝、單元/神經(jīng)元剪枝和迭代剪枝。
圖2——剪枝減少了神經(jīng)網(wǎng)絡(luò)的密度。上圖中,某些神經(jīng)元之間的連接權(quán)重被設(shè)為零。但有時(shí)神經(jīng)元也可以被剪掉(圖中未顯示)。
量化是另一種流行的壓縮技術(shù)。量化是將高精度格式(如32位浮點(diǎn)(FP32))的數(shù)據(jù)轉(zhuǎn)換為低精度格式(如8位整數(shù)(INT8))的過(guò)程。量化模型(見(jiàn)圖3)的使用可以通過(guò)以下兩種方式之一納入機(jī)器訓(xùn)練。
訓(xùn)練后量化涉及使用FP32格式的模型,當(dāng)訓(xùn)練完成后,再進(jìn)行量化以便部署。例如,可以使用標(biāo)準(zhǔn)TensorFlow在PC上進(jìn)行初始模型訓(xùn)練和優(yōu)化。然后模型可以進(jìn)行量化,并通過(guò)TensorFlow Lite嵌入到物聯(lián)網(wǎng)設(shè)備中。
量化感知訓(xùn)練可仿真推斷時(shí)量化,創(chuàng)建一個(gè)模型供下游工具用于生成量化模型。
圖3——量化模型使用低精度,從而減少存儲(chǔ)器和存儲(chǔ)需求并提高能源效率,同時(shí)仍保留相同的形狀。
雖然量化很有用,但不應(yīng)過(guò)度使用,因?yàn)樗?lèi)似于通過(guò)使用較少的位表示顏色和/或使用較少的像素來(lái)壓縮數(shù)字圖像——即,會(huì)存在一個(gè)圖像變得難以解釋的點(diǎn)。
總結(jié)
正如我們?cè)陂_(kāi)頭所提到的,AI現(xiàn)在已經(jīng)深深融入嵌入式系統(tǒng)領(lǐng)域。然而,這種大眾化意味著以前不需要了解AI和ML的設(shè)計(jì)工程師正面臨將AI解決方案實(shí)現(xiàn)到其設(shè)計(jì)中的挑戰(zhàn)。
盡管創(chuàng)建ML應(yīng)用并充分利用有限硬件資源的挑戰(zhàn)可能令人望而卻步,但這對(duì)經(jīng)驗(yàn)豐富的嵌入式系統(tǒng)設(shè)計(jì)人員來(lái)說(shuō)并不是一個(gè)新挑戰(zhàn)。好消息是,工程社區(qū)內(nèi)有豐富的信息(和培訓(xùn)),以及像MPLAB X這樣的IDE、MPLAB ML這樣的模型構(gòu)建工具以及各種開(kāi)源數(shù)據(jù)集和模型。這種生態(tài)系統(tǒng)可幫助不同理解水平的工程師快速完成現(xiàn)在可以在16位甚至8位單片機(jī)上實(shí)現(xiàn)的AL和ML解決方案。