0%

利用Google Colab成功测试TensorRT指南一

前面总结了在本机上与谷歌colab上利用不同显卡对相同样本的检测结果,对比了二者推理耗时,最终发现借助tensorrt可以使推理时常缩减数倍,所以想着在更好的显卡上这个数值还能否再有所优化,因此本篇文章主要就如何在google colab上使用tensorrt做以说明。

利用Google Colab成功测试TensorRT指南一

利用Google Colab成功测试TensorRT指南二

在 google drive 新建笔记本并配置GPU

Colab的使用方法可以参见使用Google colab免费GPU训练模型攻略

创建好笔记本之后打开;

查看所分配得到的GPU资源

1
!nvidia-smi

挂载云端硬盘

1
2
from google.colab import drive
drive.mount('/content/gdrive')

输入验证码后挂载成功。

切换工作目录

1
2
3
import os
project_path = '/content/gdrive/My Drive/Colab Notebooks/TensorRT Colab Test'
os.chdir(project_path)

我的工作目录是谷歌硬盘下的Colab Notebooks下的TensorRT Colab Test文件夹

查看当前的CUDA版本

1
!nvcc --version

查看Ubuntu版本

1
!cat /etc/issue

查看Tensorflow版本

1
2
import tensorflow as tf
print(tf.__version__)

现在我要换掉cuda cudnn 以及tensorflow的版本,所以先要卸载掉就版本。

卸载当前CUDA版本

1
2
3
4
!sudo apt-get --purge remove cuda nvidia* libnvidia-*
!sudo dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 dpkg --purge
!sudo apt-get remove cuda-*
!sudo apt autoremove

安装CUDA 10.0

1
2
3
4
5
6
7
!wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
!sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
!sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
!sudo apt-get update
!wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
!sudo apt install -y ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
!sudo apt-get update

安装nvidia驱动

1
!sudo apt-get -y install nvidia-driver-418

安装CUDNN

1
2
3
4
!sudo apt-get install -y \
cuda-10-0 \
libcudnn7=7.6.2.24-1+cuda10.0 \
libcudnn7-dev=7.6.2.24-1+cuda10.0 --allow-change-held-packages

检查CUDA是否已经改变了版本

1
!nvcc --version

安装TensorRT

1
2
3
!sudo dpkg -i "nv-tensorrt-repo-ubuntu1804-cuda10.0-trt7.0.0.11-ga-20191216_1-1_amd64.deb"
!sudo apt-key add /var/nv-tensorrt-repo-cuda10.0-trt7.0.0.11-ga-20191216/7fa2af80.pub
!sudo apt-get update

这里的nv-tensorrt-repo-ubuntu1804-cuda10.0-trt7.0.0.11-ga-20191216_1-1_amd64.deb是在官网根据自己系统的环境下载下来然后从本地上传到谷歌硬盘的工作目录下

安装依赖包

1
2
3
4
5
!sudo apt-get install libnvinfer7=7.0.0-1+cuda10.0 libnvonnxparsers7=7.0.0-1+cuda10.0 libnvparsers7=7.0.0-1+cuda10.0 libnvinfer-plugin7=7.0.0-1+cuda10.0 libnvinfer-dev=7.0.0-1+cuda10.0 libnvonnxparsers-dev=7.0.0-1+cuda10.0 libnvparsers-dev=7.0.0-1+cuda10.0 libnvinfer-plugin-dev=7.0.0-1+cuda10.0 python-libnvinfer=7.0.0-1+cuda10.0 python3-libnvinfer=7.0.0-1+cuda10.0

!sudo apt-mark hold libnvinfer7 libnvonnxparsers7 libnvparsers7 libnvinfer-plugin7 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev python-libnvinfer python3-libnvinfer

!sudo apt-get install tensorrt

验证是否安装成功

1
!dpkg -l | grep TensorRT

开始测试,先看看samples/python/uff_ssd例子能不能运行

解压压缩包

1
!tar zxvf TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz

这里的TensorRT-7.0.0.11.Ubuntu-18.04.x86_64-gnu.cuda-10.0.cudnn7.6.tar.gz也是在官网下载后直接上传到网盘的。

1
!python uff_ssd/detect_objects.py

这里可能会遇到几个问题,特此说明解决办法如下

解决ModuleNotFoundError: No module named ‘pycuda’

1
!pip install pycuda

解决ModuleNotFoundError: No module named ‘graphsurgeon’

1
!pip install graphsurgeon-0.4.1-py2.py3-none-any.whl

解决ImportError: cannot import name ‘uff’

1
!pip install uff-0.6.5-py2.py3-none-any.whl

解决ImportError: cannot import name ‘NodeDef’

1
2
!pip uninstall tensorflow
!pip install tensorflow-gpu==1.14.0

开始测试

1
!python TensorRT-7.0.0.11/samples/python/uff_ssd/detect_objects.py TensorRT-7.0.0.11/samples/python/uff_ssd/images/image2.jpg

后面就是以批量图像测试对比推理耗时。

完整的笔记文档下载地址

tensorrt_colab_test.ipynb