TensorRT安裝及使用教程

參考:https://arleyzhang.github.io/articles/7f4b25ce/

1 什麼是TensorRT
一般的深度學習項目,訓練時爲了加快速度,會使用多GPU分佈式訓練。但在部署推理時,爲了降低成本,往往使用單個GPU機器甚至嵌入式平臺(比如 NVIDIA Jetson)進行部署,部署端也要有與訓練時相同的深度學習環境,如caffe,TensorFlow等。由於訓練的網絡模型可能會很大(比如,inception,resnet等),參數很多,而且部署端的機器性能存在差異,就會導致推理速度慢,延遲高。這對於那些高實時性的應用場合是致命的,比如自動駕駛要求實時目標檢測,目標追蹤等。所以爲了提高部署推理的速度,出現了很多輕量級神經網絡,比如squeezenet,mobilenet,shufflenet等。基本做法都是基於現有的經典模型提出一種新的模型結構,然後用這些改造過的模型重新訓練,再重新部署。

而tensorRT 則是對訓練好的模型進行優化。 tensorRT就只是 推理優化器。當你的網絡訓練完之後,可以將訓練模型文件直接丟進tensorRT中,而不再需要依賴深度學習框架(Caffe,TensorFlow等),如下:

 

可以認爲tensorRT是一個只有前向傳播的深度學習框架,這個框架可以將 Caffe,TensorFlow的網絡模型解析,然後與tensorRT中對應的層進行一一映射,把其他框架的模型統一全部 轉換到tensorRT中,然後在tensorRT中可以針對NVIDIA自家GPU實施優化策略,並進行部署加速。

如果想了解更多關於tensorrt的介紹,可參考官網介紹

2 TensorRT安裝
tensorrt的安裝方式很簡單,只需要注意一些環境的依賴關係就可以,截止目前tensorrt最新版本是5.0.4,參考官網安裝教程,這裏簡單總結一下步驟

2.1 環境確認
確認CUDA版本是9.0或者10.0,可通過運行nvcc -V指令來查看CUDA,如果不是9.0以上,則需要先把CUDA版本更新一下nn
cudnn版本是7.3.1,如果不滿足要求,按照《Linux之cudnn升級方法》進行升級
需安裝有tensorflow,uff模塊需要
2.2 安裝pycuda
如果要使用python接口的tensorrt,則需要安裝pycuda

pip install 'pycuda>=2017.1.1'
2.3 下載安裝包
進入下載鏈接
點擊Download Now(需要登錄英偉達賬號,沒有的註冊一個)
選擇下載的版本(最新TensorRT5)
完成問卷調查
選擇同意協議
根據自己的系統版本和CUDA版本,選擇安裝包,如圖所示(如果是完整安裝,建議選擇Tar File Install Packages,這樣可以自行選擇安裝位置)


2.4 安裝指令
#在home下新建文件夾,命名爲tensorrt_tar,然後將下載的壓縮文件拷貝進來解壓
tar xzvf TensorRT-5.0.2.6.Ubuntu-16.04.4.x86_64-gnu.cuda-9.0.cudnn7.3.tar
 
#解壓得到TensorRT-5.0.2.6的文件夾,將裏邊的lib絕對路徑添加到環境變量中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lthpc/tensorrt_tar/TensorRT-5.0.2.6/lib
 
#安裝TensorRT
cd TensorRT-5.0.2.6/python
#if python2
sudo pip2 install tensorrt-5.0.2.6-py2.py3-none-any.whl
#if python3
sudo pip3 install tensorrt-5.0.2.6-py2.py3-none-any.whl
 
#安裝UFF
cd TensorRT-5.0.2.6/uff
#if python2
sudo pip2 install uff-0.5.5-py2.py3-none-any.whl
#if python3
sudo pip3 install uff-0.5.5-py2.py3-none-any.whl
 
#安裝graphsurgeon
cd TensorRT-5.0.2.6/graphsurgeon
#if python2
sudo pip2 install graphsurgeon-0.3.2-py2.py3-none-any.whl
#if python3
sudo pip3 install graphsurgeon-0.3.2-py2.py3-none-any.whl
2.5 環境測試
運行python測試,導入模塊不報錯就表明安裝正確

安裝後會在/usr/src目錄下生成一個tensorrt文件夾,裏面包含bin,data,python,samples四個文件夾,samples文件夾中是官方例程的源碼;data,python文件中存放官方例程用到的資源文件,比如caffemodel文件,TensorFlow模型文件,一些圖片等;bin文件夾用於存放編譯後的二進制文件。

3 使用流程
在/TensoRT-5.0.2.6/samples/python文件夾下有很多python的例子,我們以第一個end_to_end_tensorflow_mnist的例子爲例,描述tensorrt的使用流程,在README.md文件裏也說得很明白了

3.1 安裝依賴
需要安裝好numpy、Pillow、pycuda、tensorflow等環境,如果都有可以跳過

3.2 生成pb文件
mkdir models
python model.py
運行model.py後,會下載數據mnist.npz,並開始訓練,完成後在models文件夾下生成lenet5.pb文件,如果自己已經訓練得到pb文件,上述過程可以跳過

3.3 格式轉化
要將tensorflow的pb文件轉化爲uff格式的文件,首先找到convert_to_uff文件,看自己用的是哪個版本的python,如果是python3,則在/usr/lib/python3.5/dist-packages/uff/bin文件夾下,如果是python2,則在/usr/lib/python2.7/dist-packages/uff/bin文件夾下

我們在終端中進入end_to_end_tensorflow_mnist,運行以下指令

python3.5 /usr/lib/python3.5/dist-packages/uff/bin/convert_to_uff.py --input_file models/lenet5.pb
則會在models文件夾中生成lenet5.uff文件

需要注意的是:該轉化過程只支持在x86平臺上實現,如果想在TX2等嵌入式平臺上使用tensorrt,需要先在x86平臺上將pb模型轉化爲uff文件,然後再拷貝到TX2上使用

3.4 運行文件
運行sample.py文件,得到如下輸出,表明可完整的使用tensorrt


4 使用自己的模型
前邊3步相當於是環境的配置,當然還不夠,我們需要的是可以轉化並運行我們自己的模型,達到加速的效果,因此接下來對相關的工作進行總結,具體轉換參考《TX2之TensorRT加速TensorFlow目標檢測模型》


--------------------- 
作者:ZONG_XP 
來源:CSDN 
原文:https://blog.csdn.net/zong596568821xp/article/details/86077553 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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