赞
踩
最近打算为希望在python项目中使用TensorRT模型推理的同学出一套博客。一方面python调用tensort的方式已成熟且简单灵活,另一方面可以与python强大的数据处理功能向结合。在这个过程中,又希望使用到trtexec命令行工具进行模型转换,所以需要在python环境和linux环境下都部署同版本的tensorrt。在这个过程中发现了很多坑,且网上教程很乱,因此记录下来提供给大家。
整体部署环境坑多,需要严格依据官方文档,先部署好cuda和显卡驱动:
python环境整体简单,只需要在虚拟环境中执行安装:
pip install tensorrt
如果不知道安装什么版本可以先查看源里支持的版本:
pip install tensorrt==
基本源配置没问题,python环境安装应该很顺利。python环境如conda等,是完全独立的环境。为了和linux系统的tensorrt配合使用,最好保持版本一致。如果不需要trtexec功能,使用python代码进行模型的转换也是完全可以的,这样就只配置conda环境下的tensorrt即可。
ubuntu上部署tensorrt一定要看清楚版本之间的对应关系。
从显卡的驱动到cuda的版本再到tensorrt的版本,都是有对应关系的。最坑爹的是tensorrt依赖于系统环境和cuda版本等,不同环境下转换的模型之间很难通用。所以需要先完全设计好。否则可能出现想部署的tensorrt版本高于cuda支持的最大版本,或者是依赖的cuda的版本高于driver支持的最大cuda版本。
nvidia-smi
这条命令显示的第一行,展示了驱动支持的cuda最高版本。类似如下:
NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4
也就是cuda最高版本支持11.4,希望使用tensorrt8的小伙伴需要至少安装cuda11以上。使用cuda10.1、10.2等常见版本无法兼容tensorrt8。而cuda11至少需要450以上的显卡驱动,显卡驱动装的太低,未来升级tensorrt比较麻烦。下面的链接查询cuda和驱动之间的关系。
新手容易没有设计好就开始装,装完cuda、cudnn、驱动、tensorrt一大堆,发现版本不适配。卸载不干净,最后凉凉,所以一定要注意安装之前的依赖匹配。
按照官网安装,走正常的流程完成安装。可以通过下载deb包,或者直接从apt源安装。使用下面的命令查看支持apt安装的tensorrt版本。通过dpkg -i *.deb方式安装的包,会在里面显示在本地。没有安装的会显示在源的位置。
apt-cache madison tensorrt
- tensorrt | 8.6.0.12-1+cuda12.0 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.6.0.12-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.5.3.1-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.5.2.2-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.5.2.2-1+cuda11.8 | file:/var/nv-tensorrt-local-repo-ubuntu2004-8.5.2-cuda-11.8 Packages
- tensorrt | 8.5.1.7-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.4.3.1-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.4.2.4-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.4.1.5-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
- tensorrt | 8.2.5.1-1+cuda11.4 | file:/var/nv-tensorrt-repo-ubuntu2004-cuda11.4-trt8.2.5.1-ga-20220505 Packages
使用如下命令安装具体的版本,比如要装8.5.2 GA2 cuda11.8的版本:
apt-get install tensorrt=8.5.2.2-1+cuda11.8
如果之前安装过tensorrt其他版本,但失败了,也会残留一些包,需要手动卸载干净。如果apt源高于要装的版本,可能遇到如下的提示:
- The following packages have unmet dependencies:
- tensorrt : Depends: libnvinfer8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvinfer-plugin8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvparsers8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvonnxparsers8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvinfer-bin (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvinfer-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvinfer-plugin-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvparsers-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvonnxparsers-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
- Depends: libnvinfer-samples (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
以上面的为例,说明我要安装的tensorrt,需要依赖一大堆的libnv*的软件。但是这些软件从apt源去寻找,默认是8.6.0的版本的,这时候可以手动去将这些依赖安装好。比如:
- apt-get install libnvinfer8=8.5.2-1+cuda11.8
- apt-get install libnvinfer-plugin8=8.5.2-1+cuda11.8
- ...
这些依赖全部搞定之后,再安装tensorrt即可。
验证tensorrt的安装情况:
dpkg-query -W tensorrt
最后,trtexec命令的默认位置是:
/usr/src/tensorrt/bin
需要将其加入到环境变量中,方便使用。
升级的操作和第三步是完全一样的,如果升级版本则无需手动卸载。如果降级,则需要手动清理依赖。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。