蕭簫 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號 QbitAI
一頓操作后,需要實(shí)時(shí)模糊背景的視頻,看起來流暢了不少:
實(shí)時(shí)目標(biāo)檢測的延遲也更低了。
這是谷歌特意為移動(dòng)設(shè)備和Web端開發(fā)的一系列新工具,可以在幾乎不影響AI模型推理準(zhǔn)確性的同時(shí),“修剪”模型大小,以提升模型推理速度。
最好的情況下,能將AI模型的推理速度提升2倍,模型大小“縮水”一半。
這是怎么做到的?
“抽掉”部分網(wǎng)絡(luò)權(quán)重
這一過程,利用了AI、機(jī)器學(xué)習(xí)模型的稀疏性。
稀疏性,指在神經(jīng)網(wǎng)絡(luò)模型中,可以將部分網(wǎng)絡(luò)的權(quán)重設(shè)置為0,以加快推理速度。
它的實(shí)現(xiàn)過程,有點(diǎn)像是玩只抽走積木的疊疊樂游戲。
用戶要在保證模型不會(huì)“坍塌”的同時(shí),抽走部分參數(shù)(將參數(shù)設(shè)置為0)。
這是因?yàn)椋珹I模型在進(jìn)行推理任務(wù)時(shí),往往涉及大量矩陣乘法運(yùn)算。
如果能在不影響推理結(jié)果的同時(shí),將矩陣中的部分參數(shù)設(shè)置成0,就能極大地加快矩陣運(yùn)算速度,縮短推理時(shí)間。
目前,許多移動(dòng)端的輕量級神經(jīng)網(wǎng)絡(luò)架構(gòu),如MobileNet和EfficientNetLite,主要由深度可分離卷積和1×1卷積組成。
其中1×1卷積耗費(fèi)的推理時(shí)間最多,占總計(jì)算量的65%以上。
在MobileNet中,1×1卷積的計(jì)算量甚至占模型總推理時(shí)間的85%。
因此,1×1卷積層成為了稀疏化的最優(yōu)選擇。
TensofFlow Lite可用
此前,這種利用稀疏性加速推理的方法,應(yīng)用范圍并不廣泛。
一個(gè)原因,是神經(jīng)網(wǎng)絡(luò)本身難以解釋,導(dǎo)致稀疏化的過程也不好解釋,以至于缺乏稀疏化的工具。
另一個(gè)原因,則是相應(yīng)設(shè)備如手機(jī),缺乏對稀疏化操作的支持。
現(xiàn)在,谷歌特意為移動(dòng)設(shè)備和Web端,發(fā)布了一系列針對TensorFlow Lite、和XNNPACK浮點(diǎn)加速庫的稀疏化新工具。
利用這些稀疏化工具,神經(jīng)網(wǎng)絡(luò)就能變得更高效,用戶也能快速上手。
其中,XNNPACK庫包含了能檢測模型是否稀疏的方法,TF Lite工具包中則包含基于幅度的修剪、或RigL等讓模型“縮水”的方法。
整體稀疏化的過程如下:
首先,從原始模型開始訓(xùn)練,在過程中逐漸將網(wǎng)絡(luò)中的部分權(quán)重設(shè)置為0,即“修剪”模型。
然后,通過適當(dāng)增加訓(xùn)練時(shí)間,提升模型準(zhǔn)確度(不會(huì)比修剪前的模型差太多)。
最后,獲得的稀疏AI推理模型,可以以壓縮格式有效存儲(chǔ),比原始模型要更小。
這個(gè)工具支持一系列感知算法模型,包括MediaPipe的手部跟蹤模型,以及Google Meet中的背景替換模型:
當(dāng)然,除了谷歌自帶的AI模型以外,這些稀疏化工具也可以用在自己設(shè)計(jì)的AI模型中。
具體效果如何呢?
推理速度快2倍
下圖是原始模型和稀疏模型的對比。
其中,藍(lán)色和黃色,分別對應(yīng)原始模型的32幀/秒、和16幀/秒的模型大小,紅色和綠色則是稀疏模型對應(yīng)的大小。
從圖中可以看見,經(jīng)過“修剪”的AI模型,無論是“手部跟蹤”、還是“背景替換”,模型大小都降低了接近一半以上。
而且,隨著稀疏程度的提高,推理時(shí)間也幾乎呈直線下降趨勢。
但也要注意,不能一味地稀疏化模型,因?yàn)楫?dāng)模型的稀疏化程度高于70%的時(shí)候,模型的精度就會(huì)出現(xiàn)明顯的下降。
因此,模型的實(shí)際稀疏效果,還是會(huì)和理論上有所出入。
在實(shí)際應(yīng)用上,Google Meet推理時(shí)間只降低了30%,但也已經(jīng)非常不錯(cuò)了。
還在發(fā)愁自己的AI模型太大,在移動(dòng)設(shè)備中運(yùn)行效果不好的小伙伴,可以試著將自己的模型“縮縮水”了~