Windows+Anaconda配置TensorRT的教程,通过此教程配置完TensorRT后,可以在Anaconda的虚拟环境内使用TensorRT
本文环境为win10 +conda+cuda11.2
利用conda 创建一个虚拟环境yolov8,
conda create -n yolov8 python=3.9
安装CudaToolKit、安装CUDNN就不在叙述,
安装TensorRT
首先,前往官网下载TensorRT点击这里进行跳转,这一步需要注册为英伟达开发者用户,这里就不再过多介绍了,登录后会出现不同版本的tensorrt资源,如下图所示。
本文使用的是tensorrt版本为8,点击展开,根据系统版本以及cudatoolkit版本选择对应的资源,根据本文背景环境,选择的版本如下图所示:
配置TensorRT系统环境变量
下载完毕后,进行解压,并且进入lib子文件夹,如下图所示,将路径复制下来,例如,C:\Program Files\TensorRT-8.5.3.1\lib
可能出现的问题
import tensorrt时显示找不到nvinfer.dll或者nvparsers.dll等
解决办法:nvinfer.dll或者nvparsers.dll等dll文件时我们解压tensorrt压缩包时复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib文件夹下面的文件,因此只需要将这个文件夹地址添加到系统的环境变量Path中即可。
安装TensorRT依赖,进入刚才解压后的TensorRT文件夹内的python子目录,根据python版本选择好对用的whl文件,如下图所示,利用pip install进行安装(先激活虚拟环境)
pip install C:\Program Files\TensorRT-8.5.3.1\python\tensorrt-8.5.3.1-cp39-none-win_amd64.whl
安装完成后会出现successfully的字样,到这里tensorrt已经安装结束
安装Pycuda
pycuda依赖是封装好的cuda api接口,可以用来申请显存等操作。
前往下载合适的版本,点击这里跳转,如下图所示。
进入下载的位置,拼接好路径,例如:c:\users\admin\downloads\pycuda-2021.1+cuda115-cp38-cp38-win_amd64.whl
进入tensorrt虚拟环境后,输入以下指令安装pycuda
pip install c:\users\admin\downloads\pycuda-2021.1+cuda114-cp39-cp39-win_amd64.whll
安装完成后会提示successfully installed的信息
测试TensorRT 样例
tensorrt官方提供了可供测试的样例,进入刚才下载好的tensorrt文件夹下面的samples\python\目录下,这里我们选择一个手写数字识别的示例,如下图所示。
python sample.py
此时会进行训练,并且在训练结束后给出相应的预测结果,如下图所示,到此为止,tensorrt已经彻底安装完毕
可能会出现的问题:
Traceback (most recent call last):File "C:\Program Files\TensorRT-8.5.3.1\samples\python\network_api_pytorch_mnist\sample.py", line 33, in <module>import tensorrt as trtFile "C:\Users\16786\.conda\envs\yolov8\lib\site-packages\tensorrt\__init__.py", line 129, in <module>ctypes.CDLL(find_lib(lib))File "C:\Users\16786\.conda\envs\yolov8\lib\ctypes\__init__.py", line 382, in __init__self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\cublas64_11.dll' (or one of its dependencies). Try using the full path with constructor syntax.
这种情况具体原因应该是不兼容吧,
解决方法是将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin目录下的cublas64_12.dll 复制一份,然后命名为cublas64_11.dll即可,遇到其他类似的问题,依然是复制改名。
FileNotFoundError: Could not find module 'C:\Program Files\TensorRT-8.5.3.1\bin\cublas64_11.dll' (or one of its dependencies). Try using the full path with constructor syntax.
是因为Pycuda版本不对