常规安装
这是两个参考资料:
tensorrt下载链接
tensorrt release
cuda安装tensorrt可能会出现的问题合集
修改你YOLOv5下的requirements.txt。把下面两行取消注释
onnx>=1.10.0 # ONNX export
onnx-simplifier>=0.4.1 # ONNX simplifier
nvidia-pyindex # TensorRT export
nvidia-tensorrt # TensorRT export
安装requirements.txt
pip install -r requirements.txt
还有运行下面那个指令安装tensorflow,顺便确认了你安装了onnx:
pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime-gpu openvino-dev tensorflow
最后使用官方的安装命令将tensorrt升级到最新版本。
python3 -m pip install --upgrade tensorrt
参考一下下面的图,这里举的例子是8.5.3的。如果你要安装8.5.3的tensorrt,在安装之前,至少请保证你现有的环境中的cuda、cudnn、tensorflow、onnx、pytorch均大于8.5.3的tensorrt的版本要求。
如果你此时可以使用tensorrt了,那么恭喜你可以结束了。
出现错误和解决错误
大地雷来了。
我此时报了一个错误:
[E] [TRT] CUDA initialization failure with error
一开始我觉得是cuda出问题了,运行了下面的代码测试一下,发现也都是True。
import torch
print(torch.cuda.is_available())
print(torch.backends.cudnn.enabled)
得出结论这是tensorrt版本问题(参考文章顶部的cuda安装tensorrt可能会出现的问题合集)
然后我将我下好的tensorrt卸载掉,使用官方的pip下载命令安装
python3 -m pip install --upgrade tensorrt
还是报了一样的错误。
那么就通过文章顶部的tensorrt下载链接和tensorrt release,舍弃新版本寻找合适的老版本。我这里选择的是tensorrt==8.5.3.1的版本。使用pip或者conda进行安装,两个有一个可以用就行,自行尝试:
conda install tensorrt==8.5.3.1
或
pip install tensorrt==8.5.3.1
我的tensorrt安装之旅结束了。
经验
上面讲的是我最后一次安装成功的过程。在这之前我碰到了很多问题:比如cudnn无法使用、cuda无法使用、cuda初始化失败等等问题。
如果你十分确定你的cuda版本和cudnn版本之间是绝对兼容没问题的,即之前的跑实验都能用。先重装你的pytorch试试看,如果也没有问题,那么问题应该就是在tensorrt的版本上了。千万不要轻易更换cudnn或者cuda。
很多教程都推荐使用tar的方式安装tensorrt,我主要是嫌弃麻烦,而且同样没办法避免版本问题。我感觉如果你使用的是conda虚拟环境的话,命令下载会是最优选择。
比如出现了下面的这种提示,我额外使用下面的代码检测也都没问题,返回都是True。
import torch
print(torch.cuda.is_available())
print(torch.backends.cudnn.enabled)
后来发现是我的代码开头里就加入了torch.backends.cudnn.enabled = False
导致cudnn无法使用。
Error Code 1: Cudnn (Could not initialize cudnn, please check cudnn installation.)
所以除了环境外,也要看一下是否是自己的代码出现了这种问题。