近日,英特爾AI 實驗室推出了高性能的神經網絡壓縮工具Distiller,便捷地實現了更小更快更高效的神經網絡計算。Distiller目前在PyTorch中實現了一系列壓縮分析算法,包括稀疏引導算法和低精度近似算法。工具包主要由以下三個部分組成:
一套集成了剪枝、正則化與量化的算法;
一系列分析和評價壓縮表現的工具;
以及一系列前沿壓縮算法的實現樣例。
更小更快更節能
目前的絕大多數神經網絡都越來越深,其參數達到了百萬量級。如此龐大的模型即使在硬件加速的條件下也是十分消耗資源的計算密集型算法,即使只考慮推理階段也需要花費較多的時間。在某些低延時的場合,比如說自動駕駛和控制領域這樣的處理時間就會造成很多問題。同時在消費電子上較長的延時也會造成用戶體驗的下降。
大型模型同時也會消耗大量的內存,以及隨之而來的算力與能耗,這對于移動設備來說是十分重要的問題。同樣對于大型數據中心來說模型的能耗也是不同忽視的問題。同時考慮到存儲和傳輸的限制,神經網絡的壓縮具有十分重要的現實需求。在精度可以接受的條件下,壓縮的越小神經網絡需要的計算資源和帶寬就越少。由于深度神經網絡的權重矩陣具有稀疏性,通過正則化和剪枝以及量化過程可以很好的壓縮模型的體量。
稀疏的神經網絡模型表示可以被大幅度壓縮。目前很多神經網絡性能都受制于帶寬,這意味著它們的計算性能主要取決于可用的帶寬,帶寬不足的情況下硬件需要用更多的時間將數據輸入到計算單元中。全連接層、RNN和LSTM等典型的結構就受制于帶寬。如果能夠減小這些層所需要的帶寬就能大幅提高它們的速度。
通過修剪模型中的某些權重、核甚至是整個層實現減小帶寬提高速度的功能,但同時卻不影響算法最終精度的表現,也減小了功耗和延時。最后考慮到讀寫非片上存儲的能耗是片上存儲的兩個量級以上,如果較小的模型可以保存在片上存儲中,可以使性能得到質的飛躍,讓延時和能耗也隨之降低。所以同時稀疏或者壓縮表示時,可以有效提升算法的表現。
工具框架
Distiller目前的設計與PyTorch進行集成,其設計理念如下圖所示,PyTorch的訓練與Distiller進行交互。在distiller中包含了調度、算法和應用等主要模塊以及匯總、日志的輔助功能,在很多常見的科學計算包的基礎上利用jupyter實現交互功能,基于tensorboard實現模型和日志信息的展示。
算法
Distiller中集成了先進的剪枝和量化算法,幫助用戶有效的壓縮模型的體量。
剪枝算法主要分為了權重正則化、權重修剪、低精度等三種實現方式,7種具體的方法。
幅度剪枝利用閾值來將每一個權重進行二值化,小于閾值的權重將被設為0,不同的層可以設置不同的權值;
敏感度剪枝與閾值的方法類似,但使用了敏感因子s與這一層的權重分布標準差σ的乘積來作為閾值。越敏感的層(靠近輸入的)設置的s就越小;
level剪枝通過設置稀疏度來實現剪枝,這種方法相較于前面方法穩定,因為目標的稀疏程度與元素的賦值不相關。
自動梯度剪枝(AGP)
這種方法的稀疏度將會隨著初始稀疏和最終稀疏自適應的變化;
RNN剪枝
結構剪枝(通過移除整個核、濾波器甚至是整個特征圖來實現):包含了結構排序剪枝和對于較少激活特征圖的激活相關剪枝。
量化也是一類重要的壓縮算法,Distall中同時也集成了四種量化算法:
DoReFa-Net: Training Low Bitwidth Convolutional Neural Networks with Low Bitwidth Gradients
PACT: Parameterized Clipping Activation for Quantized Neural Networks
WRPN: Wide Reduced-Precision Networks
對稱線性量化
安 裝
如果想要使用這個工具的小伙伴,可以到git上下載
$ git clone https://github.com/NervanaSystems/distiller.git
$ cd distiller
然后利用你喜歡的工具創建一個python虛擬環境
$ python3 -m virtualenv env
激活環境并安裝對應的依賴包:
$ source env/bin/activate
$ pip3 install -r requirements.txt
注:這一版本依賴于CUDA8.0,會自動安裝PyTorch3.1
然后就可以愉快的使用了,可以通過運行下面的文件來熟悉工具的使用:
distiller/examples/classifier_compression/compress_classifier.py
#example
$ python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01
#對于cifar10壓縮
$ time python3 compress_classifier.py -a alexnet --lr 0.005 -p 50 ../../../data.imagenet -j 44 --epochs 90 --pretrained --compress=../sensitivity-pruning/alexnet.schedule_sensitivity.yaml
#利用yaml配置文件來運行
另外example下還有多個例子可以嘗試。
-
英特爾
+關注
關注
61文章
10197瀏覽量
174753 -
神經網絡
+關注
關注
42文章
4814瀏覽量
103708
原文標題:英特爾推出全新可便捷實現「更小更快更高效的神經網絡計算」的壓縮工具Distiller
文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
開售RK3576 高性能人工智能主板
英特爾推出具備高性能和能效的以太網解決方案

BU-67121W實驗室航空電子接口計算機North Hills
NVIDIA推出DRIVE AI安全檢測實驗室
英特爾推出全新英特爾銳炫B系列顯卡

英特爾聚焦AI座艙
Inflection AI攜手英特爾推出企業級AI系統
英特爾發布至強6性能核處理器
英特爾與百度共同為AI時代打造高性能基礎設施

英特爾攜手運營商伙伴,共探AI驅動通信網絡新未來

開箱即用,AISBench測試展示英特爾至強處理器的卓越推理性能

評論