2017CS231n筆記_S15深度學習的方法和硬件

目錄

S15.0前言

S15.1Algorithms for Efficient Inference

S15.2Hardware for Efficient Inference

S15.3Algorithms for Efficient Training

S15.4Hardware for Efficient Training


S15.0前言

深度學習正在改變我們的生活,例如自動駕駛,機器翻譯,AlphaGo,智能機器人等。目前深度學習的趨勢是爲了實現更高的準確率,學習模型變得越來越大。大型深度模型就遇到了以下挑戰:

  1. 模型大小:深度模型越來越龐大,很難應用到手機設置上。並且要通過無線來更新模型。
  2. 速度:對於圖像分類任務來說,準確率越來越高,但模型的訓練時間也來越長。
  3. 能效:對於AlphaGo,每一局遊戲,會花費3000美元的電費;對於手機,消耗電池;對於數據中心,會增加TCO。越大的模型,會有更大的內存佔用,就會耗費更多的能量。

本節將會通過軟件硬件的共同設計來改進深度學習的效率。共分爲4個部分:算法-推斷;硬件-推斷;算法-訓練;硬件-訓練。


S15.1Algorithms for Efficient Inference

有助於模型進行有效地推斷方法有剪枝Pruning,權重共享Weight Sharing,哈夫曼編碼,量化Quantization,低秩近似Low Rank Approximation,Binary / Ternary Net和Winograd Transformation。下面對這些方法進行簡要描述。

剪枝Pruning:該方法步驟是:訓練權重;剪掉連接;再次訓練。該方法能在保證模型準確率不降的情況下,顯著減少模型的參數,甚至剪枝之後的模型分類等效果更好。相關論文"Deep Visual-Semantic Alignments for Generating Image Descriptions",[Han et al. NIPS’15]。

權重共享Weight Sharing:該方法過程如下圖所示,首先對權重進行聚類,然後生成Code Book,接着使用Code Book量化權重,最後重新訓練。量化之後,權重從連續值變爲離散值。可能之前權重佔用32 bit float,量化之後權重佔用2 bit unit,這能夠減少模型的內存佔用。相關論文[Han et al. ICLR’16]

哈夫曼編碼:對量化後的離散權重編碼,對於頻率高的權重,使用更少的bit來表示,對於頻率低的權重,使更多的bit來表示。

深度模型壓縮:使用剪枝,權重共享和哈夫曼編碼能夠對深度模型進行壓縮,如圖所示。能夠對模型進行有效壓縮。相關論文"SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size"。深度模型壓縮方法已經應用導工業上了。

量化Quantization:量化權重和激活值,方法是得到權重和激活值的統計值,選擇合適的基點位置進行調整。方法是,首先模型進行訓練,然後再量化,接着以float格式進行微調,最後轉化爲定點格式。相關論文"Going Deeper with Embedded FPGA Platform for Convolutional Neural Network","Trained Ternary Quantization"。

低秩近似Low Rank Approximation:實踐證明,可以將一個卷積層拆分成兩步卷積。前面一個卷積,後接一個1*1卷積。這像是把一個複雜問題分成兩個獨立的小問題。下圖給出對於卷積層的低矩秩近似過程。在沒有破壞準確性的情況下,速度提升到兩倍。相關論文"Efficient and Accurate Approximations of Nonlinear Convolutional Networks "。該方法也同樣適用於全連接層。相關論文"Tensorizing Neural Networks"。

Binary / Ternary Net:使用2個或3個權重來表示一個神經網絡,即使用一個二元權重或者三元權重(權重值只有-1,0,1)。在訓練時,使用完整的權重,在推斷時,使用三元權重,這樣做效率很高,同時使模型變得更小。相關論文"Tensorizing Neural Networks"。

Winograd Transformation:相關論文"Convolution OPTIMIZATION: Winograd","Fast Algorithms for Convolutional Neural Networks"。


S15.2Hardware for Efficient Inference

對於深度學習,進行有效推斷的硬件:Eyeriss-MIT-RS Dataflow,DaDiannao-CAS-eDRAM,TPU-Google-8-bit Integer,EIE-Stanford-Compression/Sparsity。這些硬件的共同目標是最小化內存訪問從而節省耗能。


S15.3Algorithms for Efficient Training

有助於模型進行有效地訓練方法有並行化,混合精度訓練,模型精餾和密-疏-密訓練。下面對這些方法進行簡要描述。

並行化Parallelization:並行化分爲數據並行,模型並行(將模型進行分離)等等。數據並行是指並行運行多個訓練樣本,但這個受批處理大小的限制。模型並行是指在多個處理器上的分割模型,可以按層,按映射區域的Conv層,按輸出激活的全連接層。相關論文"High Performance Hardware for Machine Learning"。

混合精度訓練Mixed Precision with FP16 and FP32:從32位浮點數到16位浮點數,可以節省4倍的能耗。在訓練時,在某些計算使用16位,某些計算使用32位。相關論文"Training with mixed precision"。

模型精餾Model Distillation:使用集成思想,將大型網絡GoogleNet,VGG,Resnet作爲老師模型,去指導更小的初級的神經網絡(學生模型),使它們可以表現出高級網絡的效果。

密-疏-密訓練(Dense-Sparse-Dense Training,DSD):這是對於深度神經網絡來說更好的正則化技術。如下圖所示。首先對網絡進行剪枝,減少權重數量,但仍然能保持預測精度。接着,復原和重新訓練標紅的權重,使得模型更強大。就像首先學習樹幹,然後逐漸增加葉子,全部一起學習。在ImageNet,該方法提高了1%-4%的準確率。相關論文"DSD: Dense-Sparse-Dense Training for Deep Neural Networks"。DSD模型網址https://songhan.github.io/DSD/


S15.4Hardware for Efficient Training

需要設計硬件來充分利用15.3所提到的算法。處理器的計算量和存儲帶寬是決定整體性能的兩大因素。不管哪個偏低,都會降低性能。還有一個因素是內部通訊。要達到好的性能,這三個因素要達到一定的平衡。訓練深度模型的硬件有:

  • CPUs:Intel Knights Landing (2016) ,Nvidia PASCAL GP100 (2016) 
  • GPUs:Nvidia Volta GV100 (2017)
  • TPU:Google Cloud TPU

未來:未來將有大量的AI應用,應用於智能社會,智能醫療,物聯網設備,智能零售,亞馬遜Go,智能家居等許多場景。這對硬件設計提出了很多挑戰,包括低延遲,隱私性,便攜性和低能耗。不希望電池消耗過快。


 

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