中圖分類號(hào):G434文獻(xiàn)標(biāo)識(shí)碼:A論文編號(hào):1674-2117(2025)13—0027-04
雖然神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要大量算力,但神經(jīng)網(wǎng)絡(luò)訓(xùn)練獲得的推理模型往往可以部署到資源受限的設(shè)備上,TinyML(TinyMachineLearning,即輕量化機(jī)器學(xué)習(xí))作為這一理念的杰出代表,在基礎(chǔ)教育場(chǎng)景中展現(xiàn)出了較為重要的意義:基于TinyML的系統(tǒng)能夠以小型開(kāi)源的電子開(kāi)發(fā)板為硬件載體,以較低成本實(shí)現(xiàn)多樣化的智能互動(dòng),使得機(jī)器學(xué)習(xí)模型以更靈活的方式進(jìn)入課堂,以TinyML形式部署的系統(tǒng)能夠讓優(yōu)質(zhì)教育資源以低成本形式惠及偏遠(yuǎn)地區(qū),縮小城鄉(xiāng)、區(qū)域間的教育資源差距;基于TinyML的系統(tǒng)可能成為學(xué)習(xí)者在實(shí)踐中初步體驗(yàn)微控制器編程、嵌入式系統(tǒng)開(kāi)發(fā)和人工智能相結(jié)合的平臺(tái),促進(jìn)了跨學(xué)科素養(yǎng)的培養(yǎng),通過(guò)融合計(jì)算機(jī)科學(xué)、電子工程、數(shù)學(xué)等多領(lǐng)域知識(shí),激發(fā)學(xué)生的創(chuàng)新思維與綜合應(yīng)用能力。值得一提的是,TinyML在實(shí)現(xiàn)這些教育價(jià)值的同時(shí),還具有顯著的低碳環(huán)保效益,基于神經(jīng)網(wǎng)絡(luò)的人工智能模型的訓(xùn)練和運(yùn)行需消耗較多能源,產(chǎn)生較高的碳排放,而TinyML可以將模型部署在資源受限的低功率邊緣設(shè)備上,其耗電量相比傳統(tǒng)設(shè)備大幅降低,并且,TinyML本地?cái)?shù)據(jù)處理方式無(wú)需將數(shù)據(jù)發(fā)送到服務(wù)器,減少了數(shù)據(jù)傳輸過(guò)程及服務(wù)器處理過(guò)程中的能耗與碳排放。
然而就當(dāng)前情況而言,對(duì)于一般的與人工智能相關(guān)的教學(xué)實(shí)驗(yàn)的組織來(lái)說(shuō),TinyML的部署仍然有較多困難,其中,軟、硬件環(huán)境兼容以及模型格式轉(zhuǎn)換等技術(shù)問(wèn)題較為突出。不同的硬件平臺(tái)和軟件框架之間可能存在兼容性問(wèn)題,導(dǎo)致模型無(wú)法正確運(yùn)行或性能下降。同時(shí),將訓(xùn)練好的模型轉(zhuǎn)換為適用于邊緣設(shè)備的特定結(jié)構(gòu),也常常需要專門(mén)的技術(shù)、工具及特殊的流程。
神經(jīng)網(wǎng)絡(luò)的輕量化對(duì)TinyML至關(guān)重要,它使模型能在資源受限設(shè)備上高效運(yùn)行,滿足低花分類機(jī)。這個(gè)分類機(jī)接受鳶尾花的花萼的長(zhǎng)度和寬度、花瓣的長(zhǎng)度和寬度這四個(gè)特征數(shù)據(jù),并給出鳶尾花種類的結(jié)果。用于訓(xùn)練的數(shù)據(jù)即知名的鳶尾花數(shù)據(jù)集。下面給出具體的構(gòu)造過(guò)程。
神經(jīng)網(wǎng)絡(luò)的搭建、訓(xùn)練和測(cè)試
在該神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成后,可以得到推理模型的數(shù)據(jù),一般來(lái)說(shuō),為了能夠讓模型運(yùn)行在其他設(shè)備上(如樹(shù)莓派、行空板等嵌入式設(shè)備),需要將推理模型轉(zhuǎn)換為ONNX格式的推理引擎。但也有更多小型邊緣設(shè)備不能直接運(yùn)行ONNX格式的推理引擎,這時(shí),就需要將推理模型轉(zhuǎn)換為更純粹的不依賴于特定庫(kù)的代碼。雖然目前已有較多此類轉(zhuǎn)換工具,但在使用上仍然有較高難度,本文推薦一種較為簡(jiǎn)單的方法,就是首先生成推理模型的權(quán)重和偏置數(shù)據(jù)列表,然后要求生成式人工智能不依賴神經(jīng)網(wǎng)絡(luò)相關(guān)的庫(kù),基于權(quán)重和偏置列表中的數(shù)據(jù)來(lái)生成一個(gè)推理程序。
功耗、快速響應(yīng)等需求。常見(jiàn)的將神經(jīng)網(wǎng)絡(luò)輕量化的方法有剪枝、量化、知識(shí)蒸餾等,簡(jiǎn)單來(lái)說(shuō),剪枝通過(guò)去除不必要或冗余的神經(jīng)元連接來(lái)控制模型大小和計(jì)算量,量化用較低比特?cái)?shù)表示數(shù)據(jù),知識(shí)蒸餾將復(fù)雜模型的知識(shí)傳遞給輕量模型。筆者將目光主要聚焦于較容易實(shí)現(xiàn)的量化的方法,已有實(shí)驗(yàn)證明,即便用低至8位的數(shù)據(jù)進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練,也能達(dá)到較好的效果2,但要對(duì)常用的開(kāi)源神經(jīng)網(wǎng)絡(luò)框架的訓(xùn)練數(shù)據(jù)進(jìn)行位數(shù)的設(shè)定,存在一定的技術(shù)門(mén)檻,由于將訓(xùn)練后得到的較高精度的數(shù)據(jù)進(jìn)行量化,操作相對(duì)簡(jiǎn)單,也能夠使得推理模型達(dá)到較好表現(xiàn),所以本文給出一種構(gòu)造可在低功率邊緣設(shè)備上運(yùn)行神經(jīng)網(wǎng)絡(luò)推理模型的過(guò)程,考慮到作為入門(mén)案例的簡(jiǎn)便性,初步目標(biāo)是構(gòu)造一個(gè)移動(dòng)的、不需要連接網(wǎng)絡(luò)就能運(yùn)行的基于神經(jīng)網(wǎng)絡(luò)的鳶尾
可以借助常用的神經(jīng)網(wǎng)絡(luò)框架,快速構(gòu)造神經(jīng)網(wǎng)絡(luò),對(duì)于簡(jiǎn)單的分類問(wèn)題,如鳶尾花分類,搭建三層的全連接網(wǎng)絡(luò)即可。相關(guān)代碼可借助生成式人工智能生成,如告知其需要生成的神經(jīng)網(wǎng)絡(luò)有4個(gè)輸入神經(jīng)元、20個(gè)隱藏層神經(jīng)元、3個(gè)輸出神經(jīng)元,并使用ReLU激活函數(shù)來(lái)降低計(jì)算負(fù)擔(dān)。生成式人工智能有非常大的概率能夠快速產(chǎn)生出可正常運(yùn)行的神經(jīng)網(wǎng)絡(luò)搭建、訓(xùn)練和測(cè)試的代碼。圖1顯示的是一種基于TensorFlow框架的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
圖2顯示了一種鳶尾花分類推理模型的權(quán)重和偏置數(shù)據(jù)列表,其中有四組列表,分別是:第1層神經(jīng)元(也即輸入層神經(jīng)元)的輸出權(quán)重、第1層神經(jīng)元的偏置值(也可以看成是第2層神經(jīng)元的激活閾值)、第2層神經(jīng)元(也即隱藏層神經(jīng)元)的輸出權(quán)重、第2層神經(jīng)元的偏置值(也可以看成是第3層神經(jīng)元,也即輸出層的激活閾值)。圖2顯示了這四個(gè)列表的結(jié)構(gòu),當(dāng)然,列表中的數(shù)據(jù)的具體值對(duì)讀者來(lái)說(shuō)并非是重要的,因?yàn)槊恳淮斡?xùn)練得到的數(shù)據(jù)都有可能不同。
假設(shè)最終的目標(biāo)是生成可以在MicroPython上運(yùn)行的推理模型,則必須要求生成式人工智能在生成代碼時(shí),放棄諸多人工智能及統(tǒng)計(jì)方面的庫(kù),而要將庫(kù)函數(shù)的功能轉(zhuǎn)換為更純的代碼(考慮到MicroPython內(nèi)置了math庫(kù),所以允許生成式人工智能使用這個(gè)庫(kù))。圖3是某生成式人工智能工具生成的推理代碼(限于篇幅,沒(méi)有顯示全部的權(quán)重和偏置數(shù)據(jù)),可以看出,實(shí)現(xiàn)一個(gè)全連接的神經(jīng)網(wǎng)絡(luò)推理,代碼還是相當(dāng)簡(jiǎn)單的(盡管如此,經(jīng)實(shí)際測(cè)試發(fā)現(xiàn),為了讓某些生成式人工智能工具了解使用者的意圖,仍然需要較細(xì)致地描述根據(jù)權(quán)重和偏置數(shù)據(jù)進(jìn)行推理預(yù)測(cè)的過(guò)程,否則就可能生成無(wú)法得到正確結(jié)果的代碼,對(duì)此,教師可在教學(xué)中預(yù)先提供關(guān)鍵的推理代碼,相信隨著人工智能技術(shù)的進(jìn)一步提升,不久以后這些就不再會(huì)成為阻礙)。
輕量級(jí)神經(jīng)網(wǎng)絡(luò)推理模型的量化
到現(xiàn)在為止,這個(gè)鳶尾花分類推理模型已經(jīng)能夠在很多支持MicroPython的邊緣設(shè)備上運(yùn)行了,然而,還需要考慮到條件更為嚴(yán)苛一些的情況,如邊緣設(shè)備的硬件的計(jì)算能力更弱,或者需要構(gòu)建某個(gè)解決更為復(fù)雜問(wèn)題的包含更多神經(jīng)元的推理模型。所以,有必要測(cè)試一下對(duì)權(quán)重和偏置數(shù)據(jù)進(jìn)行量化后,推理模型的表現(xiàn)。假設(shè)對(duì)所有數(shù)據(jù)四舍五入僅保留2位小數(shù)(如圖4),這樣就使得這個(gè)推理模型能夠在單精度的硬件設(shè)備上運(yùn)行,經(jīng)測(cè)試發(fā)現(xiàn),推理成功率仍然保持在驚人的 90% 以上。
某些設(shè)備可能并不默認(rèn)支持浮點(diǎn)數(shù),如低成本的FPGA芯片,這時(shí)候,也可以將數(shù)據(jù)由浮點(diǎn)數(shù)量化
將上述輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型部署到邊緣設(shè)備上,除了需要考慮設(shè)備的資源限制(如內(nèi)存和處理能力),還需要考慮另外一些關(guān)鍵要素,如應(yīng)用場(chǎng)景、用戶輸入輸出界面的設(shè)置、軟件開(kāi)發(fā)環(huán)境的限制等。
雖然說(shuō),電子開(kāi)發(fā)板可以借助物聯(lián)網(wǎng)接口或串口傳輸數(shù)據(jù),但在支持物聯(lián)網(wǎng)或串口傳輸數(shù)據(jù)的環(huán)境中,邊緣設(shè)備自行進(jìn)行推理運(yùn)算的真實(shí)性和必要性反而被削弱了,人們有時(shí)候希望邊緣設(shè)備具有不依賴外部設(shè)備的自主的實(shí)時(shí)響應(yīng)和智能決策能力,如長(zhǎng)期的無(wú)人的自然環(huán)境監(jiān)測(cè)設(shè)備、有一定醫(yī)療保健用途的可穿戴設(shè)備、惡劣電磁環(huán)境中的自動(dòng)化機(jī)械等。另外還需要考慮到,邊緣設(shè)備實(shí)現(xiàn)人工智能應(yīng)用,其數(shù)據(jù)處理能力是有限的,因此對(duì)人工智能的初學(xué)者來(lái)說(shuō),實(shí)現(xiàn)類似于可識(shí)別幾種特定聲音的簡(jiǎn)單語(yǔ)音助手、用多個(gè)光敏傳感器來(lái)分辨簡(jiǎn)單圖案的智能小車,或者鳶尾花分類這樣的玩具型任務(wù),都是較容易開(kāi)展落實(shí)的項(xiàng)目。
邊緣設(shè)備的輸入輸出界面通常是有限的,所以需要通過(guò)精巧的布局來(lái)充分利用電子開(kāi)發(fā)板板載操作界面。以圖6所示的掌控板為例,筆者用觸摸鍵P來(lái)更換鳶尾特征,按鈕A用于特征數(shù)值增加,按鈕B用于特征數(shù)值減少,觸摸鍵T用于觸發(fā)推理過(guò)程并顯示推理結(jié)果。由于顯示屏幕有限,將輸入和顯示的數(shù)據(jù)均以整數(shù)的形式顯示。
考慮到相當(dāng)多的初學(xué)者更習(xí)慣于圖形化積木式的編程環(huán)境,可以先按積木式的方式搭建用戶操作和顯示計(jì)算結(jié)果的框架,預(yù)留出進(jìn)行推理的函數(shù)接口,然后將積木式的代碼轉(zhuǎn)換成MicroPython代碼,并將封裝好的推理代碼粘貼到相應(yīng)函數(shù)中即可。
結(jié)語(yǔ)
在實(shí)際教學(xué)中,教師可以靈活地運(yùn)用以上輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理模型的構(gòu)造過(guò)程,既可以將最終成果作為交互體驗(yàn)的教具,也可以設(shè)置框架,讓學(xué)習(xí)者經(jīng)歷構(gòu)造這個(gè)裝置中的某幾個(gè)關(guān)鍵過(guò)程,或者將這個(gè)構(gòu)造過(guò)程作為某個(gè)自主的研究性學(xué)習(xí)的參考資料,學(xué)習(xí)者可在此基礎(chǔ)上進(jìn)行修改和擴(kuò)充,構(gòu)造出自己特有的人工智能應(yīng)用。
參考文獻(xiàn):
[1]高楊,曹杰,段鵬松.神經(jīng)網(wǎng)絡(luò)模型輕量化方法綜述[J].計(jì)算機(jī)科學(xué),2024,51(S01).11-21. [2JWangNChrandDetaTningeuraletwoksithitatigintmberJarxiv
[3]TimDettmers.8BitAppoximationsforParalelsminDeepLeaming[J].arxiv:151104561,2015.e