一、概括
TensorRT作為英偉達深度學習系列SDK的一部分,是一個高性能(HP)的深度學習推理優化器,可以為深度學習應用提供一個低延遲、高吞吐量的推理部署。基於TensorRT的應用推理性能上是只用CPU時的40多倍(版本TensorRT 7.0)。使用TensorRT,你可以優化現在幾乎所有主流深度學習框架(tensorflow、caffe、pytorch、mxnet等)。TensorRT建立在NVIDIA的並行編程模型CUDA的基礎上,使你能夠利用CUDA-X中的庫、開發工具和技術,為人工智能、自動機器、高性能計算和圖形優化所有深度學習框架的推理。為減少應用程序的延遲,TensorRT提供低精度INT8和FP16的部署。
二、優化機理
1、權重、激活精度校准:通過將模型量化為INT8,同時保持准確性,最大化吞吐量
2、層、張量融合:通過融合內核中的節點優化GPU內存和帶寬的使用
3、內核自動調整:基於目標GPU平台選擇最佳數據層和算法
4、動態張量內存:最小化內存占用並有效地重新使用張量的內存
5、多流執行:並行處理多個輸入流的可擴展設計
三、基於tensorflow的推理優化方式
TensorRT優化的模型必須是訓練好的,比如用TF框架訓練
1、使用tensorflow內置的TensorRT
參考 https://github.com/tensorflow/tensorrt
2、將計算圖轉換為UFF格式(網絡層的定義、權重、偏差等數據)
參考 https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#working_tf
四、安裝
參考 https://arleyzhang.github.io/articles/7f4b25ce/