毫無懸念地,神經(jīng)網(wǎng)絡(luò)和人工智能是目前最炙手可熱的科技辭藻,它們應(yīng)用廣泛,在各種你喜歡或者不喜歡的社交平臺上助力識別圖像,在智能音箱上實現(xiàn)語音識別, 在智能手機里擔(dān)任數(shù)字語音助理,神經(jīng)網(wǎng)絡(luò)比人類有更好的識別模式能力,這意味著它們現(xiàn)在可以幫助醫(yī)生識別癌癥,幫助農(nóng)民提升產(chǎn)量,并在人流中識別特定人物,不久,它們會很快應(yīng)用到注入安全攝像頭這樣的嵌入式設(shè)備中,并且通過臉部識別來解鎖手機,這樣的手機未來會越來越多。
然而訓(xùn)練神經(jīng)網(wǎng)絡(luò)需要強大的硬件,同時耗費大量的時間。此外在云端強大的服務(wù)器上運行的應(yīng)用不能簡單的就移植到移動設(shè)備上來,因為它們在計算能力和電池方面有限制。
幸運的是,在訓(xùn)練一個神經(jīng)網(wǎng)絡(luò),“離線的”和可以實時識別新對象的訓(xùn)練模型(稱為“推理”)之間是有區(qū)別的,例如,如果一個神經(jīng)網(wǎng)絡(luò)設(shè)計成用來識別過往的圖片,例如一只貓,那么就需要從數(shù)千張貓的圖像數(shù)據(jù)庫中了解到貓是什么樣的。 經(jīng)過適當(dāng)?shù)挠?xùn)練,當(dāng)你給一個有神經(jīng)網(wǎng)絡(luò)的設(shè)備展示貓先生的圖片時,它就能夠認(rèn)出貓,即使它以前沒有見過貓,這就是推理。
在PowerVR Series2NX NNA平臺上運行的實時推理Demo
因此當(dāng)電力和電池壽命受限時就如同移動設(shè)備,任何創(chuàng)建神經(jīng)網(wǎng)絡(luò)應(yīng)用的工程師都想以這種方式來訓(xùn)練它,盡可能地優(yōu)化推理階段,這主要是通過降低計算復(fù)雜度和帶寬來實現(xiàn)的,同時也可以大大節(jié)省功耗。
在今年年初舉辦的嵌入式視覺會議上,Imagination公司視覺和AI部門的首席研究工程師Paul Brasnett發(fā)表了演講,你可以在EVA網(wǎng)站上查看完整內(nèi)容,但你可能需要完成注冊流程。
那這是如何實現(xiàn)的呢?從本質(zhì)上講,優(yōu)化神經(jīng)網(wǎng)絡(luò)其實就是不斷剔除冗余,讓神經(jīng)網(wǎng)絡(luò)簡單、易于執(zhí)行。這與數(shù)字圖片從未壓縮狀態(tài)轉(zhuǎn)變?yōu)楦袷交鏙PG圖片一樣,在概念上是相似的,如果壓縮算法好,那么在圖片質(zhì)量上幾乎沒有明顯區(qū)別。從神經(jīng)網(wǎng)絡(luò)角度來看,圖片的質(zhì)量等同于推理精度,經(jīng)過合適的訓(xùn)練,優(yōu)化后的神經(jīng)網(wǎng)絡(luò)在尺寸和復(fù)雜度方面都會大大的降低,與此同時還能保證推理操作有較高的精度。
當(dāng)然并不是所有的網(wǎng)絡(luò)都是相同的,第一步則是選擇應(yīng)用適合的最好的神經(jīng)網(wǎng)絡(luò)模型,畢竟如果不是最合適的,即使再怎么優(yōu)化也不會幫助我們獲得正確結(jié)果。
消除,然后減少
假設(shè)你有適合自己類型最佳的神經(jīng)網(wǎng)絡(luò)模型,優(yōu)化過程包括兩個關(guān)鍵階段——消除,然后減少。
首先你想降低神經(jīng)網(wǎng)絡(luò)操作的次數(shù),然后你想進一步減少各種操作的計算成本。
在任何給定的網(wǎng)絡(luò)中都有兩種類型的數(shù)據(jù)貫穿整個網(wǎng)絡(luò),權(quán)重(系數(shù))和“激活”數(shù)據(jù)在任何時刻都可能被處理,因此我們需要的就是盡可能的消除權(quán)重和相關(guān)數(shù)據(jù)的依賴。權(quán)重系數(shù)表示神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)中識別特征的重要性,它將一張圖片劃分為不同的分層。因此如果權(quán)重系數(shù)被設(shè)置為零,那么這條數(shù)據(jù)通路就可以從卷積網(wǎng)絡(luò)中去掉,因此神經(jīng)網(wǎng)絡(luò)系統(tǒng)就可以運行得更快。類比我們進行的數(shù)字圖像壓縮其實就是刪除圖像中的冗余信息。
這個消除的處理過程需要使用兩項技術(shù):裁剪和正規(guī)化,然后降低剩下的計算成本,這也是需要量化操作來實現(xiàn)的。
網(wǎng)絡(luò)裁剪
裁剪網(wǎng)絡(luò)的目的是增加權(quán)重系數(shù)的稀疏程度,我們可以將其看作是移除連接數(shù)或者將權(quán)重設(shè)置為零——最終的效果都是一樣的。
為了成功的進行的裁剪,我們有必要從核心功能的角度出來移除對提升精度不顯著的權(quán)重參數(shù)。有兩種方法可以解決這個問題,雖然都可以實現(xiàn)相同的效果但是實現(xiàn)方法略有不同。第一種是如果權(quán)重的值低于某個閾值那么它將自動被設(shè)置為零,從而消除掉。第二種方法是將一小部分權(quán)重值設(shè)置為零。
這個階段的關(guān)鍵好處是一旦權(quán)重值被設(shè)置為零,那么就相當(dāng)于永遠消失了。
然而盡管裁剪是一個好的開始,但是它最終的影響也意味著降低你的任務(wù)系統(tǒng)的性能,我們需要做些什么來恢復(fù)性能,因此我們增加了額外的訓(xùn)練階段。
提煉和規(guī)范化
把知識從一個網(wǎng)絡(luò)轉(zhuǎn)移到另一個網(wǎng)絡(luò),這是通過“提煉”來完成的,我們有原始的“未壓縮的”浮點網(wǎng)絡(luò),它已經(jīng)被訓(xùn)練成用于一個給定任務(wù),我們將它與我們的裁剪的網(wǎng)絡(luò)進行比較 – 目的是讓裁剪網(wǎng)絡(luò)的“softmax”輸出更精準(zhǔn),與原網(wǎng)絡(luò)想匹配,通過不斷的裁剪和訓(xùn)練,提升網(wǎng)絡(luò)的精度。
我們也可以實現(xiàn)規(guī)范化,它可以說是深度神經(jīng)網(wǎng)絡(luò)(DNN)訓(xùn)練過程中一項關(guān)鍵工具,它是增加一項約束,是訓(xùn)練后的網(wǎng)絡(luò)遞歸到零。
如下圖所示,我們可以看到原始的權(quán)重參數(shù)值,經(jīng)過L1級規(guī)范化和進一步裁剪操作后,在觀察下兩者之間的對比。
在消除數(shù)據(jù)和數(shù)據(jù)相關(guān)操作之后,我們?nèi)绾尾拍芙档瓦@些數(shù)據(jù)的相關(guān)成本呢?
這主要是通過降低每種權(quán)重參數(shù)的位數(shù)來解決的,我們開始采用的是32位全精度浮點數(shù),我們可以自定義設(shè)置目標(biāo)位寬,并重新進行訓(xùn)練,量化處理后會隨機返回選擇的權(quán)重子集。這意味著隨著時間的推移,我們將權(quán)重值不斷的進行量化,使得網(wǎng)絡(luò)不斷的適應(yīng)這種情形,最終,我們會將權(quán)重值固定在最接近的量化值。
我們選擇的目標(biāo)位寬比32位要少,這樣會明顯降低每個推理操作的功耗,尤其如果你降低到4位,那么選擇的硬件平臺都會支持。
例如,我們最近推出了PowerVR Series2NX NNA,支持這種精簡的位寬,可以設(shè)置為4位甚至是不規(guī)則的5位,這區(qū)別于傳統(tǒng)的DSP和神經(jīng)網(wǎng)絡(luò)加速器。我們要注意到在神經(jīng)網(wǎng)絡(luò)加速器系統(tǒng)中數(shù)據(jù)是被打包和優(yōu)化后存儲在內(nèi)存中的,雖然內(nèi)部管道是高精度的,但是在每個處理分層上它也是支持可變的數(shù)據(jù)位寬,因此你可以真正的進行優(yōu)化訓(xùn)練實現(xiàn)最大的效率和精確度。
進行網(wǎng)絡(luò)訓(xùn)練時,開發(fā)者可以選擇量化到與權(quán)重相同的位寬深度,也可以高于或者低于權(quán)重的活躍精度,激活數(shù)據(jù)相比權(quán)重有更大的位寬明顯會帶來更好的效果。
從上圖我們可以看出當(dāng)將稀疏度提升到90%時,在進行訓(xùn)練是非常有效的,能夠確保保持前5的分類精度。
然后我們在觀察下權(quán)重從32位降低到5位的變化過程,下降到8位時雖然沒有進行重新訓(xùn)練也并沒有帶來較多的性能損失,當(dāng)再繼續(xù)降低時,如果我們想在嵌入式設(shè)備中使用時,那么進行重新訓(xùn)練給帶來很大的好處。
總結(jié)
從上文我們可以看出,優(yōu)化神經(jīng)網(wǎng)絡(luò)實現(xiàn)高效的推理并不是一件輕松的事情,但從降低帶寬和功耗角度來看,它會給我們帶來很多好處。PowerVR Series2NX NNA提供的流程工具將復(fù)雜的任務(wù)進行了精簡,提供一步處理過程快速構(gòu)建神經(jīng)網(wǎng)絡(luò)應(yīng)用原型,然而借助本文提到的優(yōu)化方法會讓我們充分利用選擇的硬件平臺,這對于移動和嵌入式平臺至關(guān)重要。
雖然我們可以使用GPU,但是專用的加速器比如Series2NX將能夠提供更高數(shù)量級性能,這也使其成為目前市場上僅有的神經(jīng)網(wǎng)絡(luò)加速器IP。它能夠滿足未來下一代AI和視覺應(yīng)用強大的性能需求,而且還可以移植到嵌入式平臺完全可以應(yīng)用到便攜設(shè)備上。
評論
查看更多