TensorRT8 meets Python(一)解决TensorRT8部署+升级的坑

一.前言

最近打算为希望在python项目中使用TensorRT模型推理的同学出一套博客。一方面python调用tensort的方式已成熟且简单灵活,另一方面可以与python强大的数据处理功能向结合。在这个过程中,又希望使用到trtexec命令行工具进行模型转换,所以需要在python环境和linux环境下都部署同版本的tensorrt。在这个过程中发现了很多坑,且网上教程很乱,因此记录下来提供给大家。

整体部署环境坑多,需要严格依据官方文档,先部署好cuda和显卡驱动:

官方文档

二.python环境

python环境整体简单,只需要在虚拟环境中执行安装:

pip install tensorrt

如果不知道安装什么版本可以先查看源里支持的版本:

pip install tensorrt==

基本源配置没问题,python环境安装应该很顺利。python环境如conda等,是完全独立的环境。为了和linux系统的tensorrt配合使用,最好保持版本一致。如果不需要trtexec功能,使用python代码进行模型的转换也是完全可以的,这样就只配置conda环境下的tensorrt即可。

三.ubuntu20.04 部署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之间的对应关系

新手容易没有设计好就开始装,装完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

需要将其加入到环境变量中,方便使用。

四.升级tensorrt

升级的操作和第三步是完全一样的,如果升级版本则无需手动卸载。如果降级,则需要手动清理依赖。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值