Tensorrt筆記(二)
TensorRT是英偉達針對自家平台做的加速包,TensorRT主要做了這麼兩件事情,來提升模型的運行速度。
- 1、TensorRT支持INT8和FP16的計算。深度學習網絡在訓練時,通常使用 32 位或 16 位數據。TensorRT則在網絡的推理時選用不這麼高的精度,達到加速推斷的目的。
- 2、TensorRT對於網絡結構進行了重構,把一些能夠合並的運算合並在了一起,針對GPU的特性做了優化。現在大多數深度學習框架是沒有針對GPU做過性能優化的,而英偉達,GPU的生產者和搬運工,自然就推出了針對自己GPU的加速工具TensorRT。一個深度學習模型,在沒有優化的情況下,比如一個卷積層、一個偏置層和一個reload層,這三層是需要調用三次cuDNN對應的API,但實際上這三層的實現完全是可以合並到一起的,TensorRT會對一些可以合並網絡進行合並。我們通過一個典型的inception block來看一看這樣的合並運算。
TensorRT用來做模型的推理優化,也是有Python接口的,實際使用測試下來,python接口的模型推理速度C++基本差不多的。這裡較為詳細的記錄TensorRT python接口從環境的配置到模型的轉換,再到推理過程,還有模型的INT8量化,有時間的話也一並總結記錄了,筆者使用的版本是TensorRT7.0版本,此版本支持模型動態尺寸的前向推理,下面也會分為靜態推理和動態推理來介紹。
tensorRT的配置是很簡單的,官網注冊,填調查問卷,就可以下載了,筆者用的是TensorRT-7.0.0.1