深度學習工程實踐Tips(長期更新)

 

1. 訓練階段加速

        * 使用混合精度加速訓練

                   推薦使用NVIDIA的APEX進行訓練加速,在2060S顯卡上,大約可以獲得一倍的綜合速度提升(顯存使用減少,可以適當增加batchsize, 提高速度)。精度下降幾乎察覺不到。APEX保存和加載的模型參數仍然是float32類型的,所以不用擔心預訓練模型重用的問題。使用起來也十分簡單:https://nvidia.github.io/apex/

更多細節可以參考:https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html

                   直接使用FP16進行訓練,會產生很多問題,需要針對性的手動優化。很麻煩,不建議這麼做。

        * 平衡數據預處理的計算量

                     數據加載階段的提速也很重要。如果發現自己的顯存使用率較高,但GPU計算利用率一直不高(比如50%就算偏低了),然而此時CPU利用率標高,應該考慮是不是在數據加載階段卡脖子了。數據加載階段的圖像處理計算量和數據量都應該適當控制。儘量不要讓GPU計算閒置。也可將CPU做的圖像處理搬到GPU上。

參考更多內容:https://www.zhihu.com/question/356829360

2. 推理階段加速

          *  使用FP16進行計算

                      推理階段使用FP16進行計算,能夠明顯減少帶寬,並提高速度。在2060S顯卡上,大約可以獲得30%左右的速度提升。而推理精度損失幾乎難以察覺。pytorch中對數據和模型進行half()即可實現。

            * 使用TensorRT加速

                      使用NVIDIA的TensorRT進行模型轉換,可以獲得1~3倍的速度提升(具體看顯卡和模型)。詳情參考https://developer.nvidia.com/tensorrt

更多細節可以參考:https://docs.nvidia.com/deeplearning/sdk/#inference

(nvidia文檔很不錯,建議多看看,瞭解細節。顯卡雖貴,服務到位~)

3. 缺陷樣本自動生成

              * 相同的應用場景,建立缺陷樣本庫,獲取無缺陷樣本後進行缺陷融合,自動產生訓練樣本                      

4. 硬件方案選擇

            選擇顯卡也很重要:(TODO)

5. 數據增強

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