当前位置:   article > 正文

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

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
  1. tensorrt | 8.6.0.12-1+cuda12.0 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  2. tensorrt | 8.6.0.12-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  3. tensorrt | 8.5.3.1-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  4. tensorrt | 8.5.2.2-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  5. tensorrt | 8.5.2.2-1+cuda11.8 | file:/var/nv-tensorrt-local-repo-ubuntu2004-8.5.2-cuda-11.8 Packages
  6. tensorrt | 8.5.1.7-1+cuda11.8 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  7. tensorrt | 8.4.3.1-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  8. tensorrt | 8.4.2.4-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  9. tensorrt | 8.4.1.5-1+cuda11.6 | https://mirrors.aliyun.com/nvidia-cuda/ubuntu2004/x86_64 Packages
  10. 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源高于要装的版本,可能遇到如下的提示:

  1. The following packages have unmet dependencies:
  2. tensorrt : Depends: libnvinfer8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  3. Depends: libnvinfer-plugin8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  4. Depends: libnvparsers8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  5. Depends: libnvonnxparsers8 (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  6. Depends: libnvinfer-bin (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  7. Depends: libnvinfer-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  8. Depends: libnvinfer-plugin-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  9. Depends: libnvparsers-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  10. Depends: libnvonnxparsers-dev (= 8.5.2-1+cuda11.8) but 8.6.0.12-1+cuda12.0 is to be installed
  11. 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的版本的,这时候可以手动去将这些依赖安装好。比如:

  1. apt-get install libnvinfer8=8.5.2-1+cuda11.8
  2. apt-get install libnvinfer-plugin8=8.5.2-1+cuda11.8
  3. ...

这些依赖全部搞定之后,再安装tensorrt即可。

验证tensorrt的安装情况:

dpkg-query -W tensorrt

最后,trtexec命令的默认位置是:

/usr/src/tensorrt/bin

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

四.升级tensorrt

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/129820
推荐阅读
相关标签
  

闽ICP备14008679号