5個可以讓你的模型在邊緣設備上高效推理的算法

5個可以讓你的模型在邊緣設備上高效推理的算法

5個可以讓你的模型在邊緣設備上高效推理的算法

5個可以讓你的模型在邊緣設備上高效推理的算法

文章發佈於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。

來源 | AI公園(id:AI_Paradise)

作者 | James Le

編譯 | ronghuaiyang

導讀:深度學習模型這麼大,這麼慢,如何在邊緣設備上部署使用?這裡有5個算法,你可以試試。

5個可以讓你的模型在邊緣設備上高效推理的算法

隨著深度學習的發展,神經網絡變得越來越大。例如,在ImageNet識別挑戰中,獲勝的模型在2012年到2015年間的大小增加了16倍。在短短一年的時間裡,百度的深度語音模型的訓練操作數增加了10倍。

一般來說,在嵌入式系統中深度學習有三個主要的挑戰:

1. 隨著模型尺寸的增大,模型在手機上的部署變得更加困難。如果模型超過100 MB,(一般來說)只有連接到Wi-Fi才能下載。

2. 訓練速度變得極其緩慢。例如,與ResNet101相比,原始的ResNet152的準確率提升不到1%,它需要在4個分佈式gpu上進行1.5周的訓練。

3. 如此龐大的模型也與能源效率鬥爭。例如,AlphaGo在圍棋中擊敗李世石(Lee Sedol),需要訓練1,920個cpu和280個gpu,用電成本約為3,000美元。

在這種情況下,在資源受限的設備上運行神經網絡需要來自數據工程和數據科學的聯合解決方案,這有時被稱為“算法和硬件協同設計”。

5個可以讓你的模型在邊緣設備上高效推理的算法

在本文中,我們只討論象限的左上角。最先進的推理算法是什麼?

01

神經網絡剪枝

與你所想的相反,剪枝與砍樹無關。在機器學習中,為了得到一個更小、更快的網絡,模型剪枝包括去除不重要的權重。

1989年,Yann Le Cun在他的論文“Optimal Brain Damage”中首次提出了模型剪枝。該思想是採取一個完全訓練的網絡,刪除修剪權值將導致最小化的目標函數增加。各參數的貢獻可用海森矩陣近似表示。一旦去除了不重要的權值,較小的網絡就可以再次訓練,這個過程可以重複幾次,直到網絡有一個令人滿意的大小和一個合理的性能。

從那時起,大量的剪枝技術的變化發展起來。Han等人,2015年,在“Learning both Weights and Connections for Efficient Neural Networks”中,引入了一個三步方法,由神經網絡的訓練,然後修剪低於選擇閾值的連接權值,最後再訓練稀疏網絡學習最後剩下的連接權重。

你可能想知道:如何確定剪枝閾值?好問題!卷積層和全連接層都可以修剪,然而,經驗表明,卷積層比全連接層對剪枝更敏感。因此,需要根據各層的靈敏度選擇閾值,如下圖所示,該圖取自Han等人的研究論文。

5個可以讓你的模型在邊緣設備上高效推理的算法

根據研究報告,在NVIDIA Titan X GPU上重新訓練修剪過的AlexNet需要173個小時。但再訓練時間不是一個關鍵問題,因為最終目標是讓較小的模型在資源有限的設備上快速運行。

在ImageNet上,該方法將AlexNet的參數數量減少了9倍(從6100萬個參數減少到670萬個),將VGG-16的參數數量減少了13倍(從1.38億個參數減少到1030萬個)。經過剪枝後,AlexNet和VGGNet的存儲需求大大降低,所有的權值都可以存儲在芯片上,而不是存儲在芯片外的DRAM上(訪問DRAM需要消耗大量的能量)。

02

深度壓縮

神經網絡既需要大量計算,又需要大量內存,因此很難在硬件資源有限的嵌入式系統上部署它們。為了解決這個限制,“Deep Compression“論文,來自Han等,介紹了一個3步走的pipeline:剪枝,訓練好模型的量化,霍夫曼編碼,在共同努力下,減少神經網絡的存儲需求35 - 49倍,但是不影響其準確性。

5個可以讓你的模型在邊緣設備上高效推理的算法

該方法首先通過只學習重要的連接來刪除網絡。接下來,該方法量化權重來執行權重共享。最後,該方法使用霍夫曼編碼。在前兩個步驟之後,作者對網絡進行再訓練,以調整剩餘的連接和量化中心。剪枝將連接的數量減少9到13倍。量化後將代表每個連接的比特數從32減少到5。

在ImageNet上,該方法將AlexNet所需的存儲空間減少了35倍(從240 MB減少到6.9 MB),並且沒有造成精度損失。該方法還將VGG-16預訓練模型的大小減少了49倍(從552 MB減少到11.3 MB),同時也沒有精度損失。

最後,這種深度壓縮算法有助於在移動應用程序中使用複雜的神經網絡,而移動應用程序的大小和下載帶寬都受到限制。在對CPU、GPU和移動GPU進行基準測試時,壓縮後的網絡具有3到4倍的分層加速和3到7倍的能效。

03

數據量化

近年來,基於卷積神經網絡的方法在大量的應用中取得了巨大的成功,是計算機視覺中應用最廣泛的架構之一。然而,基於cnn的方法是計算密集型和資源消耗的,因此很難集成到嵌入式系統中,如智能手機、智能眼鏡和機器人。FGPA是一種很有前途的CNNs加速平臺,但是有限的帶寬和片上內存大小限制了CNNs FPGA加速器的性能。

清華大學研究人員的論文"Going Deeper with Embedded FPGA Platform for CNN"提出了一種用於ImageNet大規模圖像分類的CNN嵌入式FPGA加速器設計方案。作者通過經驗證明,在當前最先進的CNN模型的架構中,卷積層是以計算為中心的,而全連接層是以內存為中心的。因此,他們提出了一種動態精確數據量化方法(如下圖所示)來幫助提高帶寬和資源利用率。

5個可以讓你的模型在邊緣設備上高效推理的算法

在該數據量化流中,任意兩個定點數之間的分數長度對於不同的層和特徵映射集是動態的,而對於同一層則是靜態的,以最小化每一層的截斷誤差。

1. 權值量化階段的目標是找到一層權值的最優分數長度。在此階段,首先分析各層權值的動態範圍。然後,初始化分數長度以避免數據溢出。

2. 數據量化階段的目的是為兩層之間的一組特徵映射找到最優的分數長度。該階段採用貪心算法對定點CNN模型和浮點CNN模型的中間數據進行逐層比較,以減少精度損失。

他們的結果(在進一步分析了不同的神經網絡結構的不同策略之後)表明,動態精度量化比靜態精度量化更有利。使用動態精確量化,他們可以使用更短的操作表示,同時仍然可以達到相當的精度。

04

低秩估計

卷積神經網絡的另一個問題是其昂貴的測試時間評估,這使得該模型在現實系統中不切實際。例如,一個雲服務需要每秒處理數千個新請求,手機、平板電腦等移動設備大多隻有cpu或低端gpu,一些識別任務,如物體檢測,即使在高端GPU上,處理單個圖像仍然很耗時。因此,加快CNNs測試時間的計算具有重要的現實意義。

微軟亞洲研究院的"Efficient and Accurate Approximations of Nonlinear Convolutional Networks"論文提出了一種加速非線性卷積神經網絡的方法。該方法以最小化非線性響應的重構誤差為基礎,採用低秩約束來減少計算量。為了解決具有挑戰性的約束優化問題,作者將其分解為兩個可行的子問題並迭代求解。然後,他們提出了最小化非對稱重構誤差的方法,有效地減少了多個近似層的累積誤差。

5個可以讓你的模型在邊緣設備上高效推理的算法

從左看,作者用W'和P替換原來的層W。實際上是d '濾波器的大小是k×k×c 。

這些濾波器產生一個d '維的特徵圖。在此特徵圖中,d-by-d '矩陣P可以通過1×1×d '實現。因此,P對應一個卷積層,它具有1×1的空間支持,將d '維特徵映射到d維特徵。

他們將這種低秩近似應用於為ImageNet訓練的大型網絡,並得出訓練加速比增加了4倍的結論。事實上,與AlexNet相比,他們的加速模型執行的推斷相對較快,但準確性提高了4.7%。

05

訓練後的3值量化

另一種可以解決移動設備上有限功率預算下的大型神經網絡模型部署問題的算法是訓練後三值量化,它可以將神經網絡中的權值精度降低到三元值。該方法精度下降很小,甚至可以提高部分模型在CIFAR-10和ImageNet上的精度。在本文中,AlexNet模型是從零開始訓練的,這意味著它與訓練一個正常的、全精度的模型一樣容易。

5個可以讓你的模型在邊緣設備上高效推理的算法

訓練後的量化方法既可以學習三元的值,又可以學習三個值的分配,如上圖所示。首先,作者通過將每個權值除以最大權值,將全精度權值規範化為[-1,+1]範圍。

接下來,通過閾值化將中間全分辨率權重量化為{- 1,0,+1}。閾值因子t是一個超參數,為了減少搜索空間,它在所有層中都是相同的。

最後,他們通過反向傳播兩個梯度(短線)進行訓練後量化:將gradient1傳播到全分辨率權值,將gradient2傳播到尺度係數。前者可以學習三元的值,後者可以學習三元值的分配。

他們在CIFAR-10上的實驗表明,用這種經過訓練的量化方法得到的三元模型分別比全精度的ResNet32、ResNet44、ResNet56模型的性能好0.04%、0.16%和0.36%。在ImageNet上,他們的模型比全精度的AlexNet模型的精度高0.3%,比之前的三元模型的精度高3%。

06

總結

我希望本文能幫助你認識到你正在使用的深度學習庫背後使用了多少優化。這裡介紹的這5種算法允許從業者和研究人員更有效地執行模型推斷。

5個可以讓你的模型在邊緣設備上高效推理的算法

5個可以讓你的模型在邊緣設備上高效推理的算法

星標我,每天多一點智慧

5個可以讓你的模型在邊緣設備上高效推理的算法


分享到:


相關文章: