配x 中止項目-該項目將不再由英特爾維護。該項目已被確定為已知的安全逃逸。英特爾停止了對該項目的開發和貢獻,包括但不限於維護,錯誤修復,新版本或更新。英特爾不再接受此項目的補丁。

Distiller是用於神經網絡壓縮研究的開源Python軟件包。
網絡壓縮可以減少神經網絡的內存足跡,提高其推理速度並節省能量。 Distiller提供了一種用於原型製作和分析壓縮算法的pytorch環境,例如誘導稀疏的方法和低精度算術。
這些說明將有助於在本地機器上啟動並運行蒸餾器。
克隆Github的蒸餾器代碼存儲庫:
$ git clone https://github.com/IntelLabs/distiller.git
隨後的文檔的其余文檔假設您將存儲庫克隆到一個名為distiller目錄。
我們建議使用Python虛擬環境,但這當然取決於您。在虛擬環境中使用蒸餾器沒有什麼特別的,但是我們提供一些說明,以實現完整性。
在創建虛擬環境之前,請確保您位於目錄distiller中。創建環境後,您應該看到一個名為distiller/env的目錄。
如果您沒有安裝Virtualenv,則可以在此處找到安裝說明。
要創建環境,請執行:
$ python3 -m virtualenv env
這創建了一個命名為env的子目錄,其中存儲了Python虛擬環境,並配置了當前的Shell將其用作默認的Python環境。
如果您喜歡使用venv ,請首先安裝它:
$ sudo apt-get install python3-venv
然後創建環境:
$ python3 -m venv env
與Virtualenv一樣,這將創建一個名為distiller/env的目錄。
venv和virtualenv的環境激活和停用命令是相同的。
!注意:在進行依賴項軟件包的安裝之前,請確保激活環境:
$ source env/bin/activate
最後,使用pip3安裝蒸餾器軟件包及其依賴項:
$ cd distiller
$ pip3 install -e .
這將在“開發模式”中安裝蒸餾器,這意味著代碼中所做的任何更改都會反映在環境中,而無需重新運行安裝命令(因此,從GIT存儲庫中提取更改後,無需重新安裝)。
筆記:
使用pytorch 1.3.1的默認安裝進行了測試,該安裝使用CUDA 10.1。我們使用Torchvision版本0.4.2。這些包含在Distiller的requirements.txt中。 txt,並在安裝上述釀酒廠包裝時將自動安裝。
如果您在環境中不使用CUDA 10.1,請參閱Pytorch網站以安裝Pytorch 1.3.1和Torchvision 0.4.2的兼容構建。
蒸餾器附帶示例應用程序和涵蓋一系列模型類型的教程:
| 型號類型 | 稀疏 | 訓練後量化 | 量化感知培訓 | 自動壓縮(AMC) | 知識蒸餾 |
|---|---|---|---|---|---|
| 圖像分類 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 單詞級語言模型 | ✅ | ✅ | |||
| 翻譯(GNMT) | ✅ | ||||
| 推薦系統(NCF) | ✅ | ||||
| 對象檢測 | ✅ |
前往示例目錄以獲取更多詳細信息。
除示例外,其他參考的資源:
以下是使用蒸餾器的圖像分類樣本的簡單示例,顯示了一些蒸餾器的功能。
以下將調用CIFAR10數據集上名為“ SimpleNet”網絡的僅培訓(無壓縮)。這大致基於Torchvision的示例Imagenet培訓應用程序,因此,如果您使用該應用程序,則應該熟悉。在此示例中,我們沒有調用任何壓縮機制:我們只是訓練,因為修剪後進行微調,訓練是必不可少的部分。
請注意,您第一次執行此命令時,CIFAR10代碼將被下載到您的計算機上,這可能需要一些時間 - 請讓下載過程繼續完成。
通往CIFAR10數據集的路徑是任意的,但是在我們的示例中,我們將數據集放置在與Distiller( ../../../data.cifar10
首先,更改為示例目錄,然後調用應用程序:
$ cd distiller/examples/classifier_compression
$ python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01
您可以使用張板後端查看訓練進度(在下面的圖中,我們顯示了幾個具有不同LR值的培訓課程)。對於壓縮會話,我們添加了激活和參數稀疏水平以及正則化損失的追踪。

我們已在GIT存儲庫中包含了一些RESNET20型號的檢查點,我們已經使用了32位浮子訓練。讓我們加載我們已經通過渠道組套索正則訓練的模型的檢查站。
借助以下命令行參數,示例應用程序加載模型( --resume )並打印有關模型權重( --summary=sparsity )的統計信息。如果您想加載先前修剪的模型,以檢查權重稀疏統計信息,這將很有用。請注意,當您恢復存儲的檢查點時,您仍然需要告訴應用程序檢查點使用的網絡體系結構( -a=resnet20_cifar ):
$ python3 compress_classifier.py --resume=../ssl/checkpoints/checkpoint_trained_ch_regularized_dense.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=sparsity

您應該看到一個文本表,詳細介紹了參數張量的各種稀疏性。第一列是參數名稱,其次是其形狀,密集模型中的非零元素(NNZ)的數量以及稀疏模型。下一組列顯示了列的,行,頻道,內核,濾波器和元素的稀數線。
包裝它是元素絕對值的標準示例,平均值和均值。
在“壓縮見解”筆記本中,我們使用matplotlib繪製此摘要的條形圖,這確實顯示了非令人印象深刻的足跡壓縮。

儘管內存足跡壓縮非常低,但該模型實際上節省了MAC的26.6%。
$ python3 compress_classifier.py --resume=../ssl/checkpoints/checkpoint_trained_channel_regularized_resnet20_finetuned.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=compute

此示例對CIFAR10進行RESNET20的8位量化。我們已將其包含在GIT存儲庫中的RESNET20模型的檢查點,我們已經使用了32位浮子訓練,因此我們將使用此模型並對其進行量化:
$ python3 compress_classifier.py -a resnet20_cifar ../../../data.cifar10 --resume ../ssl/checkpoints/checkpoint_trained_dense.pth.tar --quantize-eval --evaluate
上面的命令行將保存一個名為quantized_checkpoint.pth.tar的檢查點。在此處查看更多示例。
此處描述了蒸餾器隨附的一組筆記本,這也解釋了安裝Jupyter筆記本服務器的步驟。
安裝和運行服務器後,查看筆記本涵蓋修剪靈敏度分析。
靈敏度分析是一個漫長的過程,該筆記本電腦加載了CSV文件,這些文件是幾個靈敏度分析的輸出。

我們目前對測試的重量輕巧,這是一個將不勝感激的領域。
測試有兩種類型:系統測試和單位測試。調用單位測試:
$ cd distiller/tests
$ pytest
我們將CIFAR10用於系統測試,因為它的尺寸可以更快地進行測試。為了調用系統測試,您需要為您已經下載的CIFAR10數據集提供一條路徑。另外,您可以調用full_flow_tests.py ,而無需指定CIFAR10數據集的位置,然後讓測試下載數據集(僅適用於第一個調用)。請注意--cifar1o-path默認為當前目錄。
系統測試並不短,如果測試需要下載數據集,則更長的時間。
$ cd distiller/tests
$ python full_flow_tests.py --cifar10-path=<some_path>
腳本以狀態0退出,如果所有測試成功,則否則狀態1。
通過執行:安裝MKDOC和所需軟件包:
$ pip3 install -r doc-requirements.txt
構建項目文檔運行:
$ cd distiller/docs-src
$ mkdocs build --clean
這將創建一個名為“站點”的文件夾,其中包含文檔網站。打開蒸餾器/文檔/site/index.html查看文檔主頁。
我們使用SEMVER進行版本控制。有關可用的版本,請參見此存儲庫上的標籤。
該項目已根據Apache許可證2.0的許可 - 有關詳細信息,請參見許可證。
Degirum修剪模型 - 一個包含修剪模型和相關信息的存儲庫。
Torchfi -Torchfi是用於研究目的的Pytorch之上的斷層注入框架。
HSI -Toolbox-高光譜CNN壓縮和頻帶選擇
Brunno F. Goldstein,Sudarshan Srinivasan,Dipankar Das,Kunal Banerjee,Leandro Santiago,Victor C. Ferreira,Alexandre S. Nery,Sandip Kundu,Felipe Mg Franca。
壓縮深度學習模型的可靠性評估,
在IEEE第11屆拉丁美洲電路與系統研討會(LASCAS),聖何塞,哥斯達黎加,2020年,第1-5頁。
Pascal Bacchus,Robert Stewart,Ekaterina Komendantskaya。
用於量化FPGA的神經網絡的準確性,訓練時間和硬件效率折衷,
在應用可重構計算中。體系結構,工具和應用程序。弧2020。計算機科學的講義,第12083卷。
Indranil Chakraborty,Mustafa Fayez Ali,Dong Eun Kim,Aayush Ankit,Kaushik Roy。
Geniex:一種使用神經網絡模仿XBAR的非理想性的廣義方法,
Arxiv:2003.06902,2020。
Ahmed T. Elthakeb,Prannoy Pilligundla,Fatemehsadat Mireshghallah,Tarek Elgindi,Charles-Alban Deledalle,Hadi Esmaeilzadeh。
通過正弦適應性正則化對神經網絡的基於梯度的深度量化,
Arxiv:2003.00146,2020。
Ziqing Yang,Yiming Cui,Zhipeng Chen,Wanxiang Che,Ting Liu,Shijin Wang,Guoping Hu。
Textbrewer:一種用於自然語言處理的開源知識蒸餾工具包,
Arxiv:2002.12620,2020。
亞歷山大·科茲洛夫(Alexander Kozlov),伊万·拉扎雷維奇(Ivan Lazarevich),瓦西里·香波夫(Vasily Shamporov),尼古拉·萊亞略斯金(Nikolay Lyalyushkin),尤里·戈爾巴喬夫(Yury Gorbachev)。
快速模型推斷的神經網絡壓縮框架,
Arxiv:2002.08679,2020。
Moran Shkolnik,Brian Chmiel,Ron Banner,Gil Shomron,Yuri Nahshan,Alex Bronstein,Uri Weiser。
強大的量化:一個統治所有這些的模型,
ARXIV:2002.07686,2020。
穆罕默德·阿卜杜拉·哈尼夫(Muhammad Abdullah Hanif),穆罕默德·沙菲克(Muhammad Shafique)。
Salvagednn:通過通過顯著驅動的故障映射來挽救具有永久性故障的深神經網絡加速器,
皇家學會的哲學交易A:數學,物理和工程科學售價378,第2164期,2019年。
https://doi.org/10.1098/rsta.2019.0164
Meiqi Wang,Jianqiao MO,Jun Lin,Zhongfeng Wang,Li du。
Dynexit:深層殘留網絡的動態早期策略,
在IEEE國際信號處理系統(SIP)中,2019年。
Vinu Joseph,Saurav Muralidharan,Animesh Garg,Michael Garland,Ganesh Gopalakrishnan。
一種可編程的模型壓縮方法,
ARXIV:1911.02497,2019
代碼
Hui Guan,Lin Ning,Zhen Lin,Xipeng Shen,Huiyang Zhou,Seung-Hwan Lim。
CNN的本地零空間內存保護,
在神經信息處理系統會議上(神經),2019年。
ARXIV:1910.14479,2019
代碼
Hossein Baktash,Emanuele Natale,Laurent Viennot。
神經網絡壓縮的比較研究,
ARXIV:1910.11144,2019。
Maxim Zemlyanikin,Alexander Smorkalov,Tatiana Khanova,Anna Petrovicheva,Grigory Serebryakov。
512KIB RAM就足夠了!現場攝像機的面部識別DNN在MCU上,
在IEEE國際計算機視覺會議(ICCV)中,2019年。
Ziheng Wang,Jeremy Wohlwend,Tao Lei。
大型語言模型的結構化修剪,
ARXIV:1910.04732,2019。
Soroush Ghodrati,Hardik Sharma,Sean Kinzer,Amir Yazdanbakhsh,Kambiz Samadi,Nam Sung Kim,Doug Burger,Hadi Esmaeilzadeh。
深層神經網絡的混合信號電荷加速度通過交織的位分為分區的算術,
Arxiv:1906.11915,2019。
吉爾·謝姆隆(Gil Shomron),塔爾·霍洛維茨(Tal Horowitz),烏里·威瑟(Uri Weiser)。
SMT-SA:收縮陣列中的同時多線程,
在IEEE計算機架構信(CAL)中,2019年。
上學高,鄭鄧和亨黃。
跨域模型通過結構重量共享壓縮,
在IEEE計算機視覺和模式識別會議(CVPR)中,2019年,第8973-8982頁。
Moin Nadeem,Wei Fang,Brian Xu,Mitra Mohtarami,James Glass。
fakta:自動端到端事實檢查系統,
在計算語言學協會北美分會(NAACL),2019年。
Ahmed T. Elthakeb,Prannoy Pilligundla,Hadi Esmaeilzadeh。
SINREQ:低位寬度量化訓練的廣義正弦正則化,
ARXIV:1905.01416,2019。代碼
Goncharenko A.,Denisov A.,Alyamkin S.,Terentev E.
可訓練的神經網絡量化閾值,
在:Rojas I.,Joya G.,Catala A.(eds)計算智能講義的進步計算機科學中,第11507卷。 Springer,Cham。國際人工神經網絡的工作會議(IWANN 2019)。
Ahmed T. Elthakeb,Prannoy Pilligundla,Hadi Esmaeilzadeh。
分裂和征服:利用中間特徵表示來量化神經網絡的培訓,
ARXIV:1906.06033,2019
Ritchie Zhao,Yuwei Hu,Jordan Dotzel,Christopher de Sa,Zhiru Zhang。
改進神經網絡量化而不使用離群通道分裂的重新培訓,
ARXIV:1901.09504,2019
代碼
Angad S. Rekhi,Brian Zimmer,Nikola Nedovic,Ningxi Liu,Rangharajan Venkatesan,Miaorong Wang,Brucek Khailany,William J. Dally,C。 ThomasGray。
用於深度學習推斷的模擬/混合信號硬件錯誤建模,
Nvidia Research,2019年。
Norio Nakata。
用於診斷醫學成像的人工智能的最新技術發展,
《日本放射學雜誌》,2019年2月,第37卷,第2期,第103-108頁。
Alexander Goncharenko,Andrey Denisov,Sergey Alyamkin,Evgeny Terentev。
均勻神經網絡量化的快速可調閾值,
ARXIV:1812.07872,2018
如果您使用蒸餾器進行工作,請使用以下引用:
@article{nzmora2019distiller,
author = {Neta Zmora and
Guy Jacob and
Lev Zlotnik and
Bar Elharar and
Gal Novik},
title = {Neural Network Distiller: A Python Package For DNN Compression Research},
month = {October},
year = {2019},
url = {https://arxiv.org/abs/1910.12232}
}
任何已發表的工作都建立在許多其他人的工作之上,並且信用屬於這裡的太多人。
用於研究目的的參考代碼發布。它不是官方的英特爾產品,質量和支持的水平可能不會如官方產品所預期的那樣。計劃將其他算法和功能添加到庫中。受到開放源代碼和研究社區的反饋和貢獻。