首先說明,這個是 20200314 的帖子,可能各位大大看到的時候,情況已經發生了變化,各位做參考就好了。
前面是拉拉雜雜的,可以直接到後面的安裝
其實安裝 tersorRT 其實比較簡單,但是要將 tensorRT 和 pytorch 安裝在一個盒子裏面,就尷尬了。
應該在實際的運行環境,不需要這樣做,因爲按照官方介紹 tensorRT 是做運用環境下的部署,運行環境建議大家直接使用 tensorRT 的c++版本,
雖然tensorRT 有python接口,但是是以來 pycuda 做的,pycuda 使用 pip 安裝的話,目前只支持到 cuda 9.2。而且python版本的支持最高也在3.7。 [官方介紹的pip安裝,後面在git上找到一個pycuda的項目,但是清楚不是一個項目。]
這樣就尷尬了,我本地環境必須選擇cuda9.2, tensorRT 官方提供的cuda運行環境是 9.0,10.0,10.2。無賴之舉,我這裏選擇的是 9.0 版本,還好做了兼容,沒有出幺蛾子。
然後就是pytorch的安裝了,官方提供了 9.2,10.1 兩個版本,國內鏡像只有10.0 的版本。這也是一個尷尬的地方, 我只有在官方下載,但是不知道是圍牆還是啥原因,導致我下載一直終端,低速。
我準備了兩個方案,一個是繼續低速下載,一個是在git上clone源碼。
後者肯定事情很多,所幸最後下載下來了安裝包,阿里雲 的服務器90kb左右,下載了兩小時,不想吐嘈,後面我把安裝包放在百度雲盤上,供大家下載。
所以總算是折騰好了,
$ python sample.py
Train Epoch: 1 [0/60000 (0%)] Loss: 2.331818
Train Epoch: 1 [6400/60000 (11%)] Loss: 0.535740
Train Epoch: 1 [12800/60000 (21%)] Loss: 0.219056
Train Epoch: 1 [19200/60000 (32%)] Loss: 0.200655
Train Epoch: 1 [25600/60000 (43%)] Loss: 0.244704
Train Epoch: 1 [32000/60000 (53%)] Loss: 0.103675
Train Epoch: 1 [38400/60000 (64%)] Loss: 0.049943
Train Epoch: 1 [44800/60000 (75%)] Loss: 0.281713
Train Epoch: 1 [51200/60000 (85%)] Loss: 0.141263
Train Epoch: 1 [57600/60000 (96%)] Loss: 0.103202
Test set: Average loss: 0.0798, Accuracy: 9757/10000 (98%)
Train Epoch: 2 [0/60000 (0%)] Loss: 0.115055
Train Epoch: 2 [6400/60000 (11%)] Loss: 0.126034
Train Epoch: 2 [12800/60000 (21%)] Loss: 0.131155
Train Epoch: 2 [19200/60000 (32%)] Loss: 0.162195
Train Epoch: 2 [25600/60000 (43%)] Loss: 0.130584
Train Epoch: 2 [32000/60000 (53%)] Loss: 0.048080
Train Epoch: 2 [38400/60000 (64%)] Loss: 0.013106
Train Epoch: 2 [44800/60000 (75%)] Loss: 0.044821
Train Epoch: 2 [51200/60000 (85%)] Loss: 0.045674
Train Epoch: 2 [57600/60000 (96%)] Loss: 0.073772
Test set: Average loss: 0.0580, Accuracy: 9813/10000 (98%)
Output Before Engine Refit
[TensorRT] WARNING: Current optimization profile is: 0. Please ensure there are no enqueued operations pending in this context prior to switching profiles
Test Case: 0
Prediction: 1
Output After Engine Refit
[TensorRT] WARNING: Current optimization profile is: 0. Please ensure there are no enqueued operations pending in this context prior to switching profiles
Test Case: 4
Prediction: 4
這是 TensorRT-7.0.0.11/samples/python/engine_refit_mnist 這個樣例代碼,有兩個警告,先不管了,等熟悉一下 tensorRT 運用,再來處理。
安裝:
我的系統 ubuntu 16.04。
各個安裝包版本:
-
cuda - 9.2
大家可以根據自己情況,按照官方提示進行下載安裝。 -
cudnn - 7
按照官方提示進行下載基於cuda-9.2的版本進行安裝。 -
python - 3.7
我python使用的 anaconda 進行管理的,所以不用影響系統環境,比較方便的虛擬一個環境進行管理。$ conda create -n trt $ conda activate trt $ conda install pip $ conda install python=3.7
-
pycuda - 2019.1.2
$ conda activate trt $ pip install 'pycuda>=2019.1.1'
-
tensorRT - 7.0.0.11 基於 cuda-9.0 python3.7
根據自己的環境,官方下載對應版本。然後根據自己的操作系統參考文檔即可。 -
pytorch - 1.4.0+cu92 百度雲盤 - [提取碼: a5tn]
官方提供的安裝方式:$ conda activate trt $ pip install torch==1.4.0+cu92 torchvision==0.5.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html
我下載的時候網絡不太穩定,所以通過下載工具下載,然後再安裝的。
$ pip install torch-1.4.0+cu92-cp37-cp37m-linux_x86_64.whl $ pip install torchvision-0.5.0+cu92-cp37-cp37m-linux_x86_64.whl
如果有疑問,歡迎大家提問。
–
參考:
- nvidia 官網: tensorrt-developer-guide
- nvidia 官網: tensorrt-install-guide
- pytorch 官網
- ONNX源碼安裝