當前位置:
首頁 > 知識 > Intel發布神經網路壓縮庫Distiller:快速利用前沿演算法壓縮PyTorch模型

Intel發布神經網路壓縮庫Distiller:快速利用前沿演算法壓縮PyTorch模型

選自intel

作者:Neta Zmora

機器之心編譯

參與:思源

近日,Intel 開源了一個用於神經網路壓縮的開源 Python 軟體包 Distiller,它可以減少深度神經網路的內存佔用、加快推斷速度及節省能耗。Distiller 為 PyTorch 環境提供原型和分析壓縮演算法,例如產生稀疏性張量的方法和低精度運算等。

項目地址:https://github.com/NervanaSystems/distiller/

文檔地址:https://nervanasystems.github.io/distiller/index.html

深度學習正快速發展,它從輸入法到汽車已經應用到各種場景和設備當中。但它們所採用的深度神經網路在運算時間、計算力、內存和能耗上都有非常大的需求。很多開發者考慮到硬體和軟體的限制及實際應用的環境,而在演算法準確度、速度和功耗之間取得平衡。近日,Intel 人工智慧實驗室開源了 Neural Network Distiller,它是一個為神經網路壓縮演算法研究而設計的 Python 包。Intel 認為深度網路的壓縮可以成為促進更多的研究成果投入應用,並實現更優秀的功能。

深度網路壓縮

面向用戶的深度學習應用需要高度重視用戶體驗,因為互動式的應用通常對程序的響應時間非常敏感。谷歌的內部研究發現即使很小的服務響應延遲,它對用戶的影響也非常顯著。而隨著越來越多的應用由深度模型提供核心功能,不論我們將模型部署在雲端還是移動端,低延遲的推斷變得越來越重要。

減少計算資源和加快推斷速度的一種方法是從一開始就設計一種緊湊型的神經網路架構。例如 SqueezeNet 和 MobileNet 都旨在壓縮參數數量與計算量的情況下儘可能保留較高的準確度,而 Intel 人工智慧實驗室也在設計這種緊湊型的模型,即提出了一種用於深層 DNN 的無監督結構學習方法,以獲得緊湊的網路結構與高準確率。

而另一種降低計算力需求的方法直接從通用且性能優秀的深度網路架構開始,然後通過一些演算法過程將其轉換為更加短小精悍的網路,這種方法即神經網路壓縮。

神經網路壓縮是降低計算力、存儲空間、能耗、內存和推斷時間等需求的過程(至少其一),它同時還需要保持其推斷準確性不下降或在可接受的範圍內。通常這些資源是相互關聯的,減少一種資源的需求同時會降低其它資源的需求。此外,即使我們使用前面幾種緊湊的小模型,我們同樣可以使用壓縮演算法進一步減少計算資源的需求。

其實很多研究都表明深度神經網路存在著非常高的參數冗餘,雖然這些參數冗餘在收斂到更優解時是非常必要的,但在推斷過程中可以大量減少參數與計算量。總體而言,絕大多數壓縮方法在於將巨大的預訓練模型轉化為一個精簡的小模型,且常用的方法有低秩近似、神經元級別的剪枝、卷積核級別的剪枝、參數量化及知識蒸餾等。

例如在量化這一常見的壓縮演算法中,我們只需儲存 k 個聚類中心 c_j,而原權重矩陣只需要記錄各自聚類中心的索引就行。在韓松 ICLR 2016 的最佳論文中,他用如下一張圖非常形象地展示了量化的概念與過程。

如上所示權重矩陣的所有參數可以聚類為 4 個類別,不同的類別使用不同的顏色表示。上半部分的權重矩陣可以取聚類中心,並儲存在 centroids 向量中,隨後原來的權重矩陣只需要很少的空間儲存對應的索引。下半部是韓松等研究者利用反向傳播的梯度對當前 centroids 向量進行修正的過程。這種量化過程能大量降低內存的需求,因為我們不再需要儲存 FP64 或 FP32 的數據,而只需要儲存 INT8 或更少佔位的數據。

Distiller 簡介

Intel 主要根據以下特徵和工具構建了 Distiller:

集成了剪枝、正則化和量化演算法的框架

分析和評估壓縮性能的一組工具

當前最優壓縮演算法的示例實現

剪枝和正則化是兩種可以令深度網路參數張量產生稀疏性的方法,其中稀疏性度量的是參數張量中有多少數值精確為 0。稀疏張量可以更緊湊地儲存在內存中,並且可以減少執行 DNN 運算所需要的計算量和能耗。量化是另一種減少 DNN 中數據精度的方法,它同樣會減少內存、能耗和計算力需求。Distiller 為量化、剪枝(結構化剪枝和細粒度剪枝)和誘導稀疏性的正則化等方法提供了越來越多的當前最優演算法,並支持訓練更快、更緊湊和更節能的模型。

為了幫助研究者更專註於它們的任務,Intel 嘗試提供一些大多數研究者都需要了解的壓縮演算法,並同時提供了高級和底層函數以方便使用。例如:

剪枝方法在深度網路經過訓練後,動態地從卷積網路層級移除卷積核與通道。Distiller 將在目標層配置中執行這些變化,並且同時對網路的參數張量做剪枝。此外,Distiller 還將分析模型中的數據依賴性,並在需要時修改依賴層。

Distiller 可以自動對模型執行量化操作,即使用量化後的層級副本替代具體的層級類型。這將節省手動轉換每一個浮點模型為低精度形式的工作,並允許我們專註於開發量化方法,且在多種模型中擴展和測試它。

Intel 已經通過 Jupyter Notebook 介紹並展示如何從網路模型和壓縮過程中訪問統計信息。例如,如果我們希望移除一些卷積核,那麼可以運行用於濾波器剪枝敏感性分析的模塊,並得到類似以下的結果:

Jupyter Notebook 地址:https://nervanasystems.github.io/distiller/jupyter/index.html

Distiller 的統計數據可導出為 Pandas DataFrames,它可用於數據選擇(索引和截取等)和可視化。

Distiller 還展示了一些示例應用,並使用量化和剪枝等方法壓縮圖像分類網路和語言模型。Distiller 還實現了一些神經網路壓縮的前沿研究論文,它們也可以作為我們嘗試新方法的模板。此外,我們也可以在官方 PyTorch 深度預訓練模型上使用這些壓縮演算法,以降低計算資源的需求。

Distiller 壓縮示例:https://nervanasystems.github.io/distiller/model_zoo/index.html

這只是個開始

Distiller 是一個用於壓縮演算法研究的庫,它致力於幫助科學家和工程師訓練並部署 DL 的解決方案、幫助發布研究論文以及促進演算法更新與創新。Intel 目前也在添加更多的演算法、特徵和應用領域,如果讀者對於研究並實現 DNN 壓縮演算法很感興趣,也可以幫助改進並提升 Distiller 庫。最後,Distiller 非常歡迎新的想法與深度網路壓縮演算法,同時也希望開發者能多發現該庫的 Bug。

[1] Forrest N. Iandola, Song Han, Matthew W. Moskewicz, Khalid Ashraf, William J. Dally and Kurt Keutzer. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and

[2] Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto and Hartwig Adam. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. (_https://arxiv.org/abs/1704.04861_).

[3] Michael Zhu and Suyog Gupta,「To prune, or not to prune: exploring the efficacy of pruning for model compression」, 2017 NIPS Workshop on Machine Learning of Phones and other Consumer Devices (_https://arxiv.org/pdf/1710.01878.pdf_)

[4] Sharan Narang, Gregory Diamos, Shubho Sengupta, and Erich Elsen. (2017).「Exploring Sparsity in Recurrent Neural Networks.」(_https://arxiv.org/abs/1704.05119_)

[5] Raanan Y. Yehezkel Rohekar, Guy Koren, Shami Nisimov and Gal Novik.「Unsupervised Deep Structure Learning by Recursive Independence Testing.」, 2017 NIPS Workshop on Bayesian Deep Learning (_http://bayesiandeeplearning.org/2017/papers/18.pdf_).

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

Feature Tools:可自動構造機器學習特徵的Python庫
實時評估世界盃球員的正確姿勢:FAIR今日開源DensePose

TAG:機器之心 |