ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用 deb 包的方式安装 TensorRT

2022-04-17 19:34:56  阅读:472  来源: 互联网

标签:TensorRT CUDA 版本 deb 安装 dpkg


使用 deb 包的方式安装 TensorRT

完成日期:2022 年 4 月 17 日
最后修改:----
此文使用 markdown 完成

写在前面

要在 ubuntu 下使用 TensorRT,可以选择下载 deb 包本地安装。和使用 pip wheel 不同,这种安装方式可以同时支持 python 和 C++ 的接口。这种方式会把 TensorRT 给安装到我们的操作系统里,和安装其他的一些包类似,也不用再配置一些环境变量之类的东西,但是这样的话就只能安装一个版本的 TensorRT,不可以多版本共存。如果想要同时能用不同的版本,要用 tar 包的方式安装。

需要的组件

  • 一块英伟达的 GPU(这不是废话吗 →_→)
  • 安装好 GPU 驱动
  • 安装好 CUDA

安装的 CUDA 版本要与 驱动和 TensorRT 保持一致,驱动可以直接打开“软件和更新”->“附加驱动”,里面选一个,建议不要用最新的,因为目前 TensorRT 8.2 支持到 CUDA 11.5,如果装的是 11.6 之类的(比如说我)后面会报错。如果出现类似下面这样的错误:

下列软件包有未满足的依赖关系:
 tensorrt : 依赖: libnvinfer5 (= 5.0.2-1+cuda9.0) 但是它将不会被安装
            依赖: libnvinfer-dev (= 5.0.2-1+cuda9.0) 但是它将不会被安装
            依赖: libnvinfer-samples (= 5.0.2-1+cuda9.0) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

那估计就是是 CUDA 版本的问题。这里错误说的是包之间不兼容,可能的原因有:

  • 没装驱动(没驱动当然找不到合适的包啦)
  • 没装 CUDA
  • TensorRT 版本选错了
  • 上一次安装错误的 TensorRT 没有被卸载干净

这里又有两个巨坑

  1. ubuntu 用“软件和更新”这个图形化的界面安装驱动的时候,不会自动安装 CUDA,所以安装 TensorRT 的时候一定会提示“有未满足的依赖关系”,即使是第一次安装,系统是完全干净的。所以有一些资料会说,安装驱动和 TensorRT 时都需要用 deb 包的方式安装。
  2. 如果碰到第一种情况,有些憨憨(比如我)可能会去换个版本安装,这时候一般的卸载方式是删不干净的,还会残留配置文件。于是乎,后面安装的版本和残留的配置文件又对不上,又会报错。

安装 CUDA

先说怎么安装 CUDA,它的版本要和驱动的一致。如果自己手动用命令行安装驱动,可以在装驱动的时候顺便把 CUDA 也一起装了。这里是官方的 CUDA 安装文档,没装的话,可以先用 nvidia-smi 命令来查询,会出来一个表格,右上角可以看到 CUDA 版本:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01   Driver Version: 470.103.01   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   52C    P5    N/A /  N/A |    158MiB /  4046MiB |      7%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

之后直接去下载安装就行,这里是英伟达 CUDA 下载页面,选择好自己的系统、版本等信息,建议最后一项选择“deb[local]”,先下载下来本地安装,英伟达的网络有时候也不咋地。这个页面默认提供的是最新版的 CUDA,如果要安装旧版本的,需要点击下方的“Archive of Previous CUDA Releases”页面,选择我们需要的版本。需要注意的是,这里会把 CUDA 安装在操作系统里,如果需要在 Conda 虚拟环境里使用 TensorRT,还是要在虚拟环境里重新安装一下 CUDA。

安装 TensorRT deb 包

安装 TensorRT 的过程很简单,直接按官方教程来就行了。先使用下面的命令解包:

sudo dpkg -i [之前下载好的 deb 包的名字]

再添加本地仓库的源秘钥,我们安装的时候会把刚刚解包好的目录作为一个本地源,从那里安装,就不是像一般用 apt 命令安装的时候一样,从网络源下载了。添加完成后可以从图形界面的 “软件和更新” -> “其他软件”里面看到,弄错了可以从这里删掉。

sudo apt-key add /var/[还是 deb 包的名字]/7fa2af80.pub

上面那个目录其实就是之前用 dpkg 命令解包出来,默认是放在 /var/ 路径下面,里面会有一个秘钥,添加它就行了。之后直接安装就行

sudo apt-get update  # 也可以先更新一下源信息
sudo apt-get install tensorrt

到这一步其实就已经安装完了,还有几个小组件可以一并装上:

sudo apt-get install python3-libnvinfer-dev  # 这玩意是用 python 接口推理用的,
                                             # 装之前要先装 numpy

pip install protobuf  # 这俩是配合 TensorFlow 使用的,有一些 TensorRT 例子会用到,
sudo apt-get install uff-converter-tf  # 不过貌似现在不太用 uff,一般用 onnx

pip numpy onnx  # 这俩是配合 onnx 模型使用的,有时候要使用官方的 TensorRT plugins, 
apt-get install onnx-graphsurgeon  # 就要用 onnx-graphsurgeon 去修改 onnx 图

验证安装

安装完成后,使用管道命令查询一下包列表,看看有没有安装成功:

dpkg -l | grep TensorRT

如果成功的话,会列出所有 TensorRT 相关的包,看起来像下面这样:

ii  graphsurgeon-tf          8.2.4-1+cuda11.4    amd64    GraphSurgeon for TensorRT package
ii  libnvinfer-bin           8.2.4-1+cuda11.4    amd64    TensorRT binaries
ii  libnvinfer-dev           8.2.4-1+cuda11.4    amd64    TensorRT development libraries and headers
ii  libnvinfer-doc           8.2.4-1+cuda11.4    all      TensorRT documentation
ii  libnvinfer-plugin-dev    8.2.4-1+cuda11.4    amd64    TensorRT plugin libraries
...
...

关于那两个巨坑

第 1 个坑说白了就是要在安装前,一定要先验证一下有没有装好 CUDA,可以用下面的命令查询一下:

dpkg -l | grep cuda  # 会像上面一样,列出所有 CUDA 相关的包

不要用 nvcc 命令去查询,系统只会提示没有安装好 nvidia-cuda-toolkit,我们只需要单独的 CUDA,实测装了 nvidia-cuda-toolkit 也没啥用,还是会提示找不到 CUDA
第 2 个巨坑就是 dpkg 命令的原因的。第一次安装失败后,会有残留的配置文件,会导致第二次安装失败,使用 dpkg --remove <软件包名> 命令卸载时,--remove 是不会删除配置文件,只有用 --purge命令才会删除相应的配置文件,用 dpkg -l 列出所安装的包时,前面的 ii 表示正常安装的包,如果是 re 开头的,就表示包已经被移除,但仍然还保留着它的配置文件,可以使用下面的命令来清理:

sudo dpkg -P <软件包名>  # -P 就是 --purge 的短选项形式,是一样的

总结

  • TensorRT 依赖有:显卡驱动、CUDA
  • pycuda 需要在安装 CUDA 后再安装
  • 安装失败的残留文件要清理掉,不然会出现冲突
  • 使用 dpkg -P <软件包名> 可以完全清理,包括配置文件

标签:TensorRT,CUDA,版本,deb,安装,dpkg
来源: https://www.cnblogs.com/asnelin/p/16102862.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有