前面总结了在本机上与谷歌colab上利用不同显卡对相同样本的检测结果,对比了二者推理耗时,最终发现借助tensorrt可以使推理时常缩减数倍,所以想着在更好的显卡上这个数值还能否再有所优化,因此本篇文章主要就如何在google colab上使用tensorrt做以说明。
在 google drive 新建笔记本并配置GPU
Colab的使用方法可以参见使用Google colab免费GPU训练模型攻略
创建好笔记本之后打开;
查看所分配得到的GPU资源
!nvidia-smi
挂载云端硬盘
from google.colab import drive
drive.mount('/content/gdrive')
输入验证码后挂载成功。
切换工作目录
import os
project_path = '/content/gdrive/My Drive/Colab Notebooks/TensorRT Colab Test'
os.chdir(project_path)
我的工作目录是谷歌硬盘下的Colab Notebooks下的TensorRT Colab Test文件夹
查看当前的CUDA版本
!nvcc --version
查看Ubuntu版本
!cat /etc/issue
查看Tensorflow版本
import tensorflow as tf
print(tf.__version__)
现在我要换掉cuda cudnn 以及tensorflow的版本,所以先要卸载掉就版本。
卸载当前CUDA版本
!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
!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驱动
!sudo apt-get -y install nvidia-driver-418
安装CUDNN
!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是否已经改变了版本
!nvcc --version
安装TensorRT
!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是在官网根据自己系统的环境下载下来然后从本地上传到谷歌硬盘的工作目录下
安装依赖包
!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
验证是否安装成功
!dpkg -l | grep TensorRT
开始测试,先看看samples/python/uff_ssd例子能不能运行
解压压缩包
!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也是在官网下载后直接上传到网盘的。
!python uff_ssd/detect_objects.py
这里可能会遇到几个问题,特此说明解决办法如下
解决ModuleNotFoundError: No module named 'pycuda'
!pip install pycuda
解决ModuleNotFoundError: No module named 'graphsurgeon'
!pip install graphsurgeon-0.4.1-py2.py3-none-any.whl
解决ImportError: cannot import name 'uff'
!pip install uff-0.6.5-py2.py3-none-any.whl
解决ImportError: cannot import name 'NodeDef'
!pip uninstall tensorflow
!pip install tensorflow-gpu==1.14.0
开始测试
!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
后面就是以批量图像测试对比推理耗时。
貌似知乎不能放下载链接,所以大家可以去我的博客下载完整的笔记文档:
利用Google Colab成功测试TensorRT指南一bella722.github.io