TensorRT 笔记 - 在 Conda 虚拟环境中安装

完成时间:2022 年 2 月 24 日

最后修改:---

为什么要写这篇博客(此部分可以跳过)

  因为一些原因,要用到 TensorRT 对训练好的模型进行推理加速,官网的文档全英文看得累啊,想找找现成的中文文档看看。搜了一圈,要么安装的版本都太老了,要么直接上来就一顿操作猛如虎,也不说为什么要这么做,写的也不是很全。安装过程中我也碰到了各种奇奇怪怪的坑,我已经掉进去了一次,坑里有我一个就够了 -_-|||

  因为主要用的是 Python,所以这里是在 Ubuntu 20.04 LTS 上的 Anaconda 虚拟环境里安装 TensorRT 的 Python API,如果有时间,还是推荐直接看一手的官方文档

什么是 TensorRT

  TensorRT 是英伟达推出的一个工具,可以用来加速网络模型的推理。一般的使用过程是从 TensorFlow 或 Pytorch 等的模型,转换为 ONNX 格式的模型,再生成 TensorRT 的模型。ONNX 是微软联合 Facebook 开发的一种通用的模型格式,可以作为中间的桥梁,让其他的深度学习框架也能读取我们已经训练好的模型。

安装的环境

  TensorRT 官网介绍了许多种安装方式,Windows 下用的是 zip 包的方式,linux 下就有很多种了,可以使用 tar 包安装,这种方式可以多版本共存。这里使用的是 pip wheel 的安装方式,目前只支持 linux 系统。Ubuntu 系统还可以使用 deb 包的方式安装,但只能同时安装一个版本,不同版本间不能共存,这种方式也有一堆的坑 → _→

操作系统是 Ubuntu 20.04 LTS,安装的 TensorRT 版本是 8.2。TensorRT 支持 Python API 和 C++ API,使用 deb 或 tar 包的方式两种 API 接口都会被包括。

必要的组件

  首先,最重要的是要有一块英伟达的显卡,而且正确的安装了驱动。没驱动和没显卡貌似在 TensorRT 看来都是一样的,安装时会提示找不到合适的版本。因为是在 Anaconda 的虚拟环境中安装,这里我们不需要在系统上安装 CUDA,conda 会自动在虚拟环境中安装一个 CUDA 包,这个包只是完整 CUDA 库的一个子集。

  Ubuntu 下安装英伟达的显卡驱动很方便,直接打开一个芯片图案的程序 Additional Drivers,在里面把开源驱动切换成英伟达的驱动就好了。旧版本的 Ubuntu 需要重启,似乎是要给内核里写点东西,可以根据说明操作。

开始安装

  目前 pip wheel 的方式只支持 Python 3.6 - 3.9,CUDA 11.x,因为我们不是在系统的 Python 里安装,CUDA 版本暂时不用管。安装前需要先确认 setuptools 和 pip 已经安装,可以用 conda 的 list 命令列出特定的包:

1 conda list -f pip
2 conda list -f setuptools

   官方文档上是先使用命令  python3 -m pip install --upgrade setuptools pip  升级它们,但有时候可能升级失败,导致 pip 先被卸载,但新版本没能安装成功,后面使用 pip 时就会提示 "pip-script.py is not present",这个时候要重新安装 pip,可以使用 easy_install 或 conda 命令安装:

1 easy_install pip

  之后需要安装 nvidia-pyindex 包,这其实是一个 pip 源,用来连接英伟达的服务器下载我们需要的各种包。所以如果安装的时候,pip 下载很慢也只能等着,只能从英伟达的服务器下载,pip 换源也没用。安装 nvidia-pyindex 包用下面这条命令:

1 pip install nvidia-pyindex

  安装装好之后,就可以开始安装 TensorRT 了。使用下面的命令:

1 pip install --upgrade nvidia-tensorrt

  这条命令会安装或者更新已有的 TensorRT,同时会自动下载安装 CUDA 和 cuDNN,它们是 TensorRT 的依赖包。因为安装的时候没有指定版本号,这里默认都会安装最新的版本,CUDA 的版本可能比我们实际支持的版本更高。在终端输入  nvidia-smi 可以查看显卡状态,上面会显示支持的 CUDA 版本。使用 deb 方式安装时,要在系统里安装 CUDA,要和这里的版本号一致,安装在虚拟环境里时就不需要了。

  安装的时候如果出现下面的错误信息,说明没用被正确的安装,除了可能是 Python 版本不对外,也有可能是驱动没装上

1 This package can be installed as:
2 ```
3 $ pip install nvidia-pyindex
4 $ pip install nvidia-tensorrt
5 ```

  装好后,可以测试一下:

1 python3
2 >>> import tensorrt
3 >>> print(tensorrt.__version__)
4 >>> assert tensorrt.Builder(tensorrt.Logger())

  如果安装正确,print() 函数会打印出 TensorRT 的版本,后面的 assert 命令不会有任何输出。

总结

  使用 pip wheel 安装 TensorRT 算是最简单的一种方式了,目前只支持 linux 系统和 Python 3.6 - 3.9 的版本,只需要正确的安装了显卡驱动程序就可以,其他的依赖包都会自动安装。英伟达官方提供了许多的例子,如果需要运行它们,还要安装 onnx 或 pycuda 等组件,因为虚拟环境里的 CUDA 可能不是完整的包,不支持 nvcc,就需要在系统里安装完整的 CUDA,并且要求 pycuda 在它之后再安装,不然 pycuda 无法找到 CUDA API。

posted @ 2022-02-24 01:05  Asnelin  阅读(6853)  评论(0编辑  收藏  举报