前面总结了在本机上与谷歌colab上利用不同显卡对相同样本的检测结果,对比了二者推理耗时,最终发现借助tensorrt可以使推理时常缩减数倍,所以想着在更好的显卡上这个数值还能否再有所优化,因此本篇文章主要就如何在google colab上使用tensorrt做以说明。
在 google drive 新建笔记本并配置GPU
Colab的使用方法可以参见使用Google colab免费GPU训练模型攻略
创建好笔记本之后打开;
查看所分配得到的GPU资源
| 1 | !nvidia-smi | 

挂载云端硬盘
| 1 | from google.colab import drive | 
输入验证码后挂载成功。

切换工作目录
| 1 | import os | 
我的工作目录是谷歌硬盘下的Colab Notebooks下的TensorRT Colab Test文件夹
查看当前的CUDA版本
| 1 | !nvcc --version | 

查看Ubuntu版本
| 1 | !cat /etc/issue | 

查看Tensorflow版本
| 1 | import tensorflow as tf | 

现在我要换掉cuda cudnn 以及tensorflow的版本,所以先要卸载掉就版本。
卸载当前CUDA版本
| 1 | !sudo apt-get --purge remove cuda nvidia* libnvidia-* | 

安装CUDA 10.0
| 1 | !wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb | 

安装nvidia驱动
| 1 | !sudo apt-get -y install nvidia-driver-418 | 

安装CUDNN
| 1 | !sudo apt-get install -y \ | 

检查CUDA是否已经改变了版本
| 1 | !nvcc --version | 

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

安装依赖包
| 1 | !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 | 

验证是否安装成功
| 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 | !pip uninstall tensorflow | 
开始测试
| 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 | 


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