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