▼點(diǎn)擊下方名片,關(guān)注公眾號,獲取更多精彩內(nèi)容▼
這里是《賀老師講嵌入式AI》,我是《嵌入式AI:讓單片機(jī)學(xué)會思考》課程主理人,專注AI在MCU上的落地實(shí)踐。
關(guān)注公眾號后,回復(fù)【嵌入式AI】,可以免費(fèi)獲取更多賀老師準(zhǔn)備的專業(yè)資料。

如果任務(wù)是開放式對話、知識問答和代碼生成,模型需要容納大量語言規(guī)律與世界知識,參數(shù)規(guī)模當(dāng)然重要。MCU 上的模型通常只負(fù)責(zé)一個邊界明確的判斷,例如從一秒聲音中判斷是否出現(xiàn)目標(biāo)詞、從一段 IMU 波形中判斷動作類別、從低分辨率圖像中判斷是否有人。任務(wù)空間已經(jīng)縮小,模型沒有必要保存百科全書。
神經(jīng)網(wǎng)絡(luò)參數(shù)主要是權(quán)重和偏置。一個包含 20,000 個權(quán)重的 INT8 模型,裸權(quán)重約占 20KB;如果使用 FP32,同一組權(quán)重約占 80KB。這個數(shù)字首先回答的是“模型權(quán)重需要多少 Flash 或外部存儲”,并不能直接回答推理是否快、RAM 是否夠,更不能回答模型在現(xiàn)場是否有用。
FP32 權(quán)重存儲約等于:參數(shù)量 × 4 Bytes |
真正做 MCU 部署時,至少要把四個量拆開看。參數(shù)量決定權(quán)重存儲;MACC 或算子執(zhí)行次數(shù)影響推理延遲與能耗;中間特征圖的峰值決定激活內(nèi)存;現(xiàn)場誤報、漏報和拒識能力決定產(chǎn)品價值。四者有關(guān)聯(lián),卻不能互相替代。

圖 1:參數(shù)量只覆蓋模型評估中的一個維度
舉個容易忽略的情況:卷積網(wǎng)絡(luò)的同一組卷積核會在整張?zhí)卣鲌D上反復(fù)滑動,因此參數(shù)量可以不大,計算次數(shù)卻不一定少;反過來,全連接層可能擁有大量權(quán)重,但只執(zhí)行一次矩陣乘法。只看模型文件大小,就像只看代碼文件行數(shù)判斷程序?qū)崟r性,結(jié)論很容易跑偏。
嵌入式領(lǐng)域本來就大量使用“小而專”的算法。一個 PID 控制器只有幾個核心系數(shù),CRC 依靠固定多項(xiàng)式完成差錯檢測,幾十階 FIR 濾波器也只有幾十個系數(shù)。沒人會因?yàn)橄禂?shù)少就認(rèn)定它們沒有工程價值。模型參數(shù)同樣是為特定映射服務(wù),數(shù)量必須和任務(wù)復(fù)雜度一起討論。
TinyML 的前提不是“把一個大模型硬壓進(jìn) MCU”,而是先把問題收窄。以關(guān)鍵詞檢測為例,系統(tǒng)并不需要理解整句話,更不需要回答問題。麥克風(fēng)連續(xù)采樣后,前端把波形切成固定窗口,再轉(zhuǎn)換成頻譜或 MFCC 特征;模型只需區(qū)分少量目標(biāo)詞、背景噪聲和未知聲音。輸入結(jié)構(gòu)、時間范圍和輸出類別都受到約束,所需模型容量自然遠(yuǎn)小于語音識別或語言模型。

圖 2:小模型負(fù)責(zé)有限模式識別,數(shù)據(jù)質(zhì)量與決策邏輯仍由完整系統(tǒng)承擔(dān)
這不是降低標(biāo)準(zhǔn),而是重新定義任務(wù)。MLCommons 的 MLPerf Tiny 基準(zhǔn)目前就包含關(guān)鍵詞檢測、視覺喚醒、低分辨率圖像分類、異常檢測和流式喚醒詞等任務(wù),并分別規(guī)定準(zhǔn)確率、AUC、誤報與漏報目標(biāo)。它衡量的是單次推理延遲、模型質(zhì)量以及可選的能耗,而不是舉辦“誰的參數(shù)更多”比賽。關(guān)鍵詞檢測的質(zhì)量門檻是 90% Top-1,視覺喚醒是 80% Top-1,異常檢測使用 0.85 AUC;流式喚醒詞進(jìn)一步直接限制誤報與漏報數(shù)量。
這里還有一個關(guān)鍵點(diǎn):小模型并不是獨(dú)自完成全部功能。傳感器、模擬前端、采樣時鐘、窗口切分和特征提取先把原始世界壓縮成穩(wěn)定輸入;模型完成規(guī)則難以寫清的模式判別;UNKNOWN 拒識、連續(xù)幀確認(rèn)和狀態(tài)機(jī)再把概率輸出變成可靠事件。模型可以很小,但系統(tǒng)工程不能縮水。
因此,“20KB 模型能不能用”沒有統(tǒng)一答案。20KB 模型用于開放式語音理解,大概率不夠;用于區(qū)分三種穩(wěn)定的振動模式、兩個目標(biāo)詞或有限姿態(tài),可能已經(jīng)足夠。問題的核心不是參數(shù)絕對值,而是模型容量是否覆蓋目標(biāo)任務(wù)的變化范圍。
質(zhì)疑小模型并非完全沒有道理。模型在演示數(shù)據(jù)上得到很高準(zhǔn)確率,卻沒有覆蓋不同人員、不同設(shè)備、安裝誤差、環(huán)境噪聲和未知類別,這種模型再大也未必可靠;模型容量明顯不足,訓(xùn)練集和驗(yàn)證集同時欠擬合,增加有效特征或適度擴(kuò)大網(wǎng)絡(luò)才有意義;任務(wù)本身需要開放世界理解、細(xì)粒度視覺識別或長時序推理,MCU 級小模型也不應(yīng)被強(qiáng)行包裝成萬能方案。
判斷一個小模型是否有用,建議先停止?fàn)幷搮?shù)量,直接做下面這組驗(yàn)收:測試集是否按人員、設(shè)備或批次隔離;每小時誤報多少次、關(guān)鍵事件漏報多少次;未見過的輸入能否拒識;量化后精度下降多少;峰值 RAM、Flash、推理時間和平均功耗是否滿足預(yù)算;模型輸出經(jīng)過多少幀確認(rèn)、狀態(tài)機(jī)和安全約束才會觸發(fā)動作。
規(guī)則已經(jīng)能夠穩(wěn)定解決的問題,也沒有必要為了使用 AI 而增加模型。TinyML 最適合的區(qū)域,是輸入存在穩(wěn)定統(tǒng)計規(guī)律、手工閾值難以覆蓋全部邊界、任務(wù)輸出有限、現(xiàn)場又需要低延遲與低功耗的那一段。它不是縮小版 ChatGPT,而是一種可以被編譯、測試、計時和驗(yàn)收的專用判斷函數(shù)。
所以,下次再有人問“參數(shù)這么少,靠譜嗎”,可以先反問一句:我們討論的是參數(shù)數(shù)量,還是它在真實(shí)設(shè)備上每小時錯幾次?后一個問題,才真正決定這個模型能不能進(jìn)入產(chǎn)品。

END