實際使用中的神經網絡壓縮

引起這篇綜述的緣由是論文《Neural Network Distiller: A Python Package ForDNN Compression Research》,這種實用工具會使我對這一充滿希望的方向充值一點希望。除了Distiller 以外,Nvidia的TensorRT也是實用中的網絡壓縮工具,一併來說一說。

Distiller

Distiller用Python編寫,旨在簡單,可擴展,可供專家和非專家使用,並可在各種情況下作爲庫重用。 

上圖描述了Distiller的高級體系結構。 Distiller的核心是DNN壓縮所需的算法構建塊的實現(例如修剪,量化和正則化)。 使用通常需要進行壓縮的軟件組件將它們組裝成壓縮方法:

  • 新的操作層,例如:截短的SVDa是線性層的分解替換,而Distiller LSTM用於對LSTM單元內部的量化進行精細控制
  • 層融合(例如批-範式摺疊)
  • 模型收縮 (“細化”)和擴展
  • 實用程序,例如激活統計信息,圖形數據相關性分析和模型摘要

對於涉及訓練或微調模型的壓縮方法,Distiller支持各種訓練技術,包括完整/部分數據集,單/多GPU,知識蒸餾和彩票假設(LTH)訓練。 壓縮調度組件負責交叉訓練和壓縮的交織,例如迭代修剪。

爲了加快開發速度,Distiller還提供了用於通用實用程序功能的API。 這些包括日誌和繪圖(例如每個參數的張量稀疏度); 檢查點(帶有特定於壓縮的元數據)和簡單的實驗工件管理; 數據加載(具有各種採樣器的全部/部分數據集); 特定於壓縮的命令行參數處理; 和可複製的執行。

壓縮調度

調度方法可以通過編程定義,也可以在YAML文件中指定。 使用YAML文件可以使用戶快速而輕鬆地更改壓縮算法,配置和計劃,而無需更改代碼-這特別適合需要快速實驗的環境。 調度方法定義了要使用的壓縮方法及其參數。 在某些情況下,可以按層或按層組覆蓋參數。 另外,配方定義何時應採用每種方法-開始時期,結束時期和頻率。

好吧,感覺這個東西寫的都是些沒用的,還是看github上的內容比較容易懂。

https://github.com/NervanaSystems/distiller

Distiller 功能

  • Automatic Compression
  • Weight pruning
  • Structured pruning
  • Control
  • Schedule
  • Regularization
  • Quantization
  • Knowledge distillation
  • Conditional computation
  • Low rank decomposition
  • Lottery Ticket Hypothesis training
  •  

 

TensorRT

參考TensorRT官網,https://developer.nvidia.com/tensorrt 。

NVIDIA TensorRT™是用於高性能深度學習推理的SDK。它包括深度學習推理優化器和運行時,可爲深度學習推理應用程序提供低延遲高吞吐量。在推理過程中,基於TensorRT的應用程序的運行速度比僅基於CPU的平臺快40倍。藉助TensorRT,您可以優化在所有主要框架中訓練的神經網絡模型,以高精度對低精度進行校準,最後部署到超大規模數據中心,嵌入式或汽車產品平臺。

TensorRT基於NVIDIA的並行編程模型CUDA構建,TensorRT爲深度學習推理應用程序的生產部署提供INT8FP16優化,例如視頻流,語音識別,推薦和自然語言處理。降低的精度推斷會顯着減少應用程序延遲,這是許多實時服務,自動和嵌入式應用程序所必需的。

您可以將訓練有素的模型從每個深度學習框架導入TensorRT。在應用優化之後,TensorRT選擇平臺特定的內核,以在數據中心,Jetson嵌入式平臺和NVIDIA DRIVE自動駕駛平臺上的Tesla GPU上最大化性能。

爲了在數據中心生產中使用AI模型,TensorRT Inference Server是一種容器化的微服務,可最大化GPU利用率並在節點上同時運行來自不同框架的多個模型。它利用Docker和Kubernetes無縫集成到DevOps架構中。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章