深度學習部署技術


深度學習部署技術

Once-for-All: Train One Network and Specialize it for Efficient Deployment

論文地址:https://arxiv.org/abs/1908.09791

為了能最好地適應不同的硬件平台和效率約束(即部署方案),深度學習模型的有效部署需要專門的神經網絡。傳統方法有使用手動設計或者針對每種情況使用AutoML來搜索專門的神經網絡,它們的訓練成本隨着部署方案的數量線性增長。這里介紹一種將模型訓練與模型搜索分離的新方法,訓練一個支持多種網絡設置(深度,寬度,內核大小和分辨率)的once-for-all網絡,無需為每個場景訓練專門的模型。在給定部署方案的情況下,可以從once-for-all網絡中選擇專用子網,無需再次訓練,專用模型的訓練成本從0(N)減少到0(1)。

介紹

深度神經網絡(DNN)模型大小和計算成本的爆炸性增長給如何在不同硬件平台上有效地部署這些深度學習模型帶來了新的挑戰,因為它們必須滿足不同的效率約束,在不同的硬件資源(如片上存儲器大小和算術單元的數量等),不同的電池條件或工作負載下,最佳模型會也有很大不同。

考慮到不同的硬件平台和效率限制,研究人員要么設計專門用於移動設備的緊湊模型,要么通過壓縮加速現有模型以實現高效部署。但是,為每個部署方案設計專用的DNN耗費人力且計算成本高昂,因為無論是基於人工還是基於AutoML的方法都需要重復網絡設計過程並針對每種情況從頭開始重新訓練設計的網絡,隨着部署方案數量的增加,總成本呈線性增長,這使得它們無法處理大量硬件設備和高度動態的部署環境(不同的電池條件,不同的工作負載,不同的延遲要求等)。

針對此問題,這里介紹一種新的解決方案,設計一個可以直接部署在不同網絡配置下的once-for-all網絡,該網絡可以靈活地支持不同的深度,寬度,內核大小和分辨率的設置,無需重新訓練,僅通過選擇該網絡的一部分來執行推斷。once-for-all的簡單示例如圖1(左)所示,具體來說,就是將模型訓練階段和模型專門化階段分開。在模型訓練階段,訓練一個once-for-all網絡,從中可以生成具有不同網絡配置的各種子網絡;在模型專門化階段,為子網絡的子集構建准確率表和硬件效率(延遲或能量)表,准確率表可以在所有硬件平台之間共享。子網絡的權值不需要再次訓練直接來自once-for-all網絡,因此該過程速度快,計算效率高。在測試時,給定一個部署場景,只需要查詢准確率表和硬件延遲表就可以選擇一個專用的子網絡,而且成本可以忽略不計。因此,專用神經網絡網絡設計的成本從O(N)降低到O(1)(圖1中)。

在許多硬件平台(CPU、GPU、mCPU、mGPU、FPGA加速器)和效率約束條件下廣泛評估了OFA在ImageNet上的有效性。在所有部署方案下,OFA與SOTA硬件感知的NAS方法相比,持續提高ImageNet的准確性,同時將GPU小時數、美元數和二氧化碳排放量節省了幾個數量級。在ImageNet移動設置(小於6億Mac)上,OFA以5.95億Mac實現了新的SOTA 80.0%的top1精度(圖2)。據我們所知,這是SOTA ImageNet top1在移動設置下的精度首次達到80%。

訓練once-for-all網絡需要聯合優化權重以保持大量子網絡的准確性,子網絡共享權重,但它們不應該相互干擾。針對此問題,本文提出了用於once-for-all網絡的漸進收縮算法(progressive shrinking algorithm),即首先訓練具有最大深度,寬度和內核大小的神經網絡,然后逐步訓練網絡以支持較小的子網絡。這種逐步縮小方案對於防止較小的子網絡影響較大子網絡的精度至關重要。此外,逐步縮小還可以在大型子網絡的幫助下為小型子網絡提供良好的初始化和更好的監督,而不是從頭開始訓練它們。

 

圖1 左:支持多種網絡配置的once-for-all網絡。中:深度學習部署成本。右:精度-延遲表。

方法

問題定義

訓練支持多種網絡配置的once-for-all網絡的問題可以定義為下式:

 

Once-for-all網絡的權重表示為,網絡配置為表示選擇方案,即從Once-for-all網絡的權重中選擇滿足網絡配置為的子網絡。在這項工作中,探索了卷積神經網絡的四個重要維度,即深度,寬度,內核大小和分辨率。總體目標是訓練以使每個支持的子網絡達到與使用相同網絡配置獨立訓練網絡相同的准確度。

訓練once-for-all網絡

漸進收縮算法。圖2是漸進收縮算法的一個示例,這種漸進收縮方案具有三個獨特的優勢。首先,它使once-for-all網絡更容易優化,因為每個子任務比完整任務簡單得多。其次,在大型模型的幫助下,小型模型更容易訓練。漸進式收縮能夠通過保持大型子網絡的最重要權重(圖5)為小型子網絡提供良好的初始化,並通過知識蒸餾提供更好的監控(圖2),這比從頭開始訓練小型子網絡更好。第三,逐步縮小給予共享權重的排序並防止較小的子網絡影響較大子網絡的性能。訓練細節如下:

彈性分辨率(Elastic Resolution)(圖2)。為了支持彈性分辨率,在訓練模型時為每批訓練數據采樣不同的圖像尺寸,這是通過修改數據加載器來實現的。

彈性內核大小(Elastic Kernel Size)(圖3)。在共享kernel權重時引入內核轉換矩陣(kernel transformation matrices),即在不同的block之間使用單獨的內核轉換矩陣,在每個block內,內核轉換矩陣在不同的channel之間共享。

彈性深度(Elastic Depth)(圖4)。保留前D個blocks並跳過最后的N個blocks,。因此,一個深度設置僅對應於block的一個組合。最后,在大型和小型模型之間共享前D個blocks的權重。

彈性寬度(ElasticWidth)(圖5)。引入一個通道排序操作來支持部分寬度。它根據channel的重要性重新組織channel,channel的重要性是根據信道權重的L1范數計算的。

知識蒸餾(Knowledge Distillation)(圖2)。在訓練once-for-all網絡時,使用訓練數據給出的hard labels和經過訓練的完整網絡給出的soft labels。

 圖2 漸進式收縮過程的示例。

 

圖3:彈性內核大小的內核轉換矩陣。

 

圖4:彈性深度訓練過程。

 

圖5:彈性寬度漸進收縮過程。

模型部署

在訓練了once-for-all網絡之后,下一階段是為給定的部署方案派生專用子網絡。目標是在優化精度的同時搜索滿足目標硬件平台上的效率(例如,等待時間,能量)約束的神經網絡。“once-for-all”方法將模型訓練與網絡搜索分離,在這項工作中提出了一個簡單的解決方案,即隨機抽樣子網絡子集並構建其精度表和延遲表。因此,給定目標硬件和延遲約束,可以直接查詢准確度表和相應的延遲表,以獲得表中的最佳子網。查詢表的成本可以忽略不計,從而避免了總成本的線性增長。

實驗

 實驗應用漸進式收縮算法來訓練ImageNet上的once-for-all網絡在不同延遲限制的各種硬件平台上(Samsung Note8,Google Pixel1,Pixel2,NVIDIA 1080Ti,2080Ti,V100 GPU和Intel Xeon CPU)。表1比較了獨立訓練模型與once-for-all網絡的top1精度。表2給出了了once-for-all和移動平台上支持硬件的最新NAS方法(三星Note8)之間的比較。表3總結了在不同延遲約束下移動平台上的結果。圖6顯示了其他六個硬件平台上的詳細結果。

 

表1在相同網絡配置下,獨立訓練模型和once-for-all網絡的top1精度。

 

表2 與三星Note8上最先進的硬件感知NAS方法的比較。

 

表3 不同延遲約束下三星Note8上的ImageNet精度結果。

 

 圖6 在移動設備、Intel CPU和GPU上的部署結果。

總結

本文提出了一種將模型訓練與網絡搜索分離的once-for-all的新方法,以便在大量部署方案下實現高效的深度學習。與以前針對每個部署方案設計和訓練神經網絡的方法不同,本文設計了一個支持不同網絡配置的once-for-all網絡。與傳統方法相比,大大降低了訓練成本(GPU小時數),並且為了防止不同大小的子網絡互相干擾,提出了一種漸進式收縮算法,與每個子網絡獨立訓練相比,能夠實現相同的精度水平。各種硬件平台和效率約束的實驗證明了該方法的有效性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM