在 Ubuntu 上配置 TensorRT 8.0 环境需要仔细操作,因为它涉及到特定版本的 NVIDIA 驱动、CUDA Toolkit 和 cuDNN。TensorRT 8.0 是一个相对较旧的版本,所以你需要确保所有组件版本兼容。
核心步骤概览:
- 安装 NVIDIA 驱动:确保驱动版本与你想安装的 CUDA 版本兼容。
- 安装 CUDA Toolkit:TensorRT 8.0.x 通常与 CUDA 11.0, 11.1, 11.2, 11.3, 11.4 等版本兼容。强烈建议查阅 TensorRT 8.0.x 的官方 Release Notes 来确定精确的 CUDA 和 cuDNN 依赖版本。 (例如,TensorRT 8.0.3.4 支持 CUDA 11.0 到 11.4)
- 安装 cuDNN:需要与选择的 CUDA 版本兼容的版本。
- 下载并安装 TensorRT 8.0:从 NVIDIA 开发者网站下载。
- 安装 TensorRT Python API:通常通过 TensorRT 安装包中的
.whl
文件安装。 - 配置环境变量。
- (可选但推荐) 使用 Python 虚拟环境。
详细步骤:
假设:
- 你有一块 NVIDIA GPU。
- 你使用的是 Ubuntu (例如 18.04, 20.04。较新的 Ubuntu 版本可能对旧版 CUDA/TensorRT 支持不佳,有时需要降级或使用容器)。
- 我们将以 CUDA 11.3 和 cuDNN 8.2.x 为例,因为它们是 TensorRT 8.0.x 常用的组合。请务必根据你下载的 TensorRT 8.0.x 具体版本的 Release Notes 调整 CUDA 和 cuDNN 版本。
第 0 步:卸载旧的 NVIDIA 组件 (如果需要)
如果你之前安装过 NVIDIA 驱动、CUDA 等,并且想全新安装,可以先卸载:
sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"
sudo apt-get --purge remove "*nvidia*"
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*
然后重启系统:sudo reboot
第 1 步:安装 NVIDIA 驱动
- 检查推荐驱动:
ubuntu-drivers devices
- 安装推荐驱动 (或一个你知道与 CUDA 11.3 兼容的版本,例如 465.xx, 470.xx 或更高):
sudo ubuntu-drivers autoinstall # 或者指定版本,例如: sudo apt install nvidia-driver-470
- 重启系统:
sudo reboot
- 验证驱动安装:
你应该能看到 GPU 信息和驱动版本。记下右上角显示的 "CUDA Version"。这只是驱动支持的最高 CUDA 版本,不代表你已安装 CUDA Toolkit。nvidia-smi
第 2 步:安装 CUDA Toolkit 11.3
前往 NVIDIA CUDA Toolkit Archive: https://developer.nvidia.com/cuda-toolkit-archive
选择 "CUDA Toolkit 11.3.0" (或 11.3.1)。
选择你的系统:
- Operating System: Linux
- Architecture: x86_64
- Distribution: Ubuntu
- Version: (你的 Ubuntu 版本,如 20.04)
- Installer Type:
deb (local)
或runfile (local)
。deb (local)
通常更易于管理。
按照 NVIDIA 网站提供的指令安装。 对于
deb (local)
(以 Ubuntu 20.04 为例,CUDA 11.3.0):wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb sudo apt-key add /var/cuda-repo-ubuntu2004-11-3-local/7fa2af80.pub sudo apt-get update sudo apt-get -y install cuda-toolkit-11-3
注意:如果它尝试安装一个不兼容的驱动,你可能需要
sudo apt-get -y install cuda-toolkit-11-3 --no-install-recommends
然后手动确保驱动已正确安装。设置环境变量 (重要!): 将以下行添加到你的
~/.bashrc
(或~/.zshrc
) 文件末尾:echo 'export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc source ~/.bashrc
验证 CUDA 安装:
nvcc --version
你应该看到 CUDA 11.3 的版本信息。
nvidia-smi
确保驱动仍然正常工作。
第 3 步:安装 cuDNN 8.2.x for CUDA 11.x
- 前往 NVIDIA cuDNN Archive: https://developer.nvidia.com/rdp/cudnn-archive
- 你需要一个 NVIDIA Developer Program 账户 (免费注册)。
- 找到 "Download cuDNN v8.2.x for CUDA 11.x"。选择一个具体的版本,例如 "cuDNN v8.2.1 for CUDA 11.x"。
- 下载 "cuDNN Library for Linux (x86_64)" 的
.tgz
压缩包。例如cudnn-11.3-linux-x64-v8.2.1.32.tgz
。 - 安装 cuDNN:
# 假设下载到了 ~/Downloads 目录 cd ~/Downloads tar -xvf cudnn-11.3-linux-x64-v8.2.1.32.tgz # 解压,注意你的文件名可能不同 # 将文件复制到 CUDA Toolkit 目录 sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.3/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64 sudo chmod a+r /usr/local/cuda-11.3/include/cudnn*.h /usr/local/cuda-11.3/lib64/libcudnn*
- 验证 cuDNN (可选但推荐): 可以尝试编译和运行 cuDNN samples,或者在后续安装 PyTorch/TensorFlow 时验证。 一个简单的检查方法是看 PyTorch/TensorFlow 是否能识别 cuDNN 版本。
第 4 步:下载并安装 TensorRT 8.0.x
- 前往 NVIDIA TensorRT Archive: https://developer.nvidia.com/nvidia-tensorrt-8x-download (也需要 NVIDIA Developer 账户)
- 你可能需要向下滚动或在存档中查找旧版本。
- 找到 TensorRT 8.0.x 的某个版本 (例如 TensorRT 8.0.3.4 GA)。
- 同意条款,然后下载与你的 Ubuntu 版本、CUDA 版本、CPU 架构匹配的 TensorRT
tar.gz
包。 例如:TensorRT-8.0.3.4.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz
(文件名会明确指出它兼容的 CUDA 和 cuDNN 版本)。 - 安装 TensorRT:
# 假设下载到了 ~/Downloads 目录 cd ~/Downloads # 创建一个安装目录,例如 /opt/tensorrt8 sudo mkdir -p /opt/tensorrt8 sudo tar -xzvf TensorRT-8.0.3.4.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz -C /opt/tensorrt8 --strip-components=1 # 注意:--strip-components=1 是因为压缩包内通常有一个顶层目录 TensorRT-8.x.x.x
- 设置 TensorRT 环境变量:
将以下行添加到你的
~/.bashrc
(或~/.zshrc
):
(如果你没有 root 权限,可以将 TensorRT 解压到用户目录,例如echo 'export LD_LIBRARY_PATH=/opt/tensorrt8/lib:${LD_LIBRARY_PATH}' >> ~/.bashrc source ~/.bashrc
~/tensorrt8
,并相应修改LD_LIBRARY_PATH
)
第 5 步:(可选但强烈推荐) 设置 Python 虚拟环境
sudo apt update
sudo apt install python3-pip python3-venv -y
python3 -m venv ~/trt_env8
source ~/trt_env8/bin/activate
# 之后所有的 pip install 都会安装到这个环境中
# 完成后,使用 deactivate 命令退出虚拟环境
第 6 步:安装 TensorRT Python API 和依赖
激活虚拟环境 (如果使用了):
source ~/trt_env8/bin/activate
安装 Python 依赖:
pip install numpy pip install pycuda # (可选,但非常有用,特别是用于自定义插件或 CUDA 操作) pip install onnx # (如果你需要处理 ONNX 模型)
安装 TensorRT Python .whl 文件: TensorRT 的 Python bindings (
.whl
文件) 位于你解压的 TensorRT 目录中。 通常在python/
子目录下。你需要找到与你的 Python 版本匹配的.whl
文件。 TensorRT 8.0.x 可能支持 Python 3.6 - 3.9。cd /opt/tensorrt8/python # 查看可用的 whl 文件,例如: # tensorrt-8.0.3.4-cp38-none-linux_x86_64.whl (cp38 表示 CPython 3.8) # 选择与你虚拟环境或系统 Python 版本匹配的文件 pip install tensorrt-8.0.3.4-cp38-none-linux_x86_64.whl # 替换为你的 Python 版本对应的文件名 # TensorRT 8.x 可能还需要安装 graphsurgeon 和 onnx-graphsurgeon (如果包含在包内) # 检查 /opt/tensorrt8/graphsurgeon/ 目录 cd /opt/tensorrt8/graphsurgeon pip install graphsurgeon-0.4.5-py2.py3-none-any.whl # 文件名可能不同 # 检查 /opt/tensorrt8/onnx_graphsurgeon/ 目录 cd /opt/tensorrt8/onnx_graphsurgeon pip install onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl # 文件名可能不同
注意:如果你的 Python 版本是 3.7,就找
cp37
的whl
文件,以此类推。如果找不到完全匹配的,可能需要调整 Python 版本或寻找不同构建的 TensorRT。
第 7 步:验证 TensorRT Python 安装
在激活的 Python 环境中:
import tensorrt
print(tensorrt.__version__)
assert tensorrt.Builder(tensorrt.Logger())
如果能打印出版本号 (例如 8.0.3.4
) 并且 assert
语句没有报错,那么 Python API 基本安装成功。
第 8 步:验证 TensorRT C++ (可选)
TensorRT 包含一些示例,可以用来测试。
cd /opt/tensorrt8/samples/sampleOnnxMNIST
# 你可能需要先编译
make clean
make
# 运行 (需要下载 ONNX MNIST 模型)
# 或者更简单的是使用 trtexec
cd /opt/tensorrt8/bin
# 查看 trtexec 帮助
./trtexec --help
# 你可以尝试转换一个简单的 ONNX 模型 (如果已安装 ONNX 并且有一个模型)
# ./trtexec --onnx=/path/to/your/model.onnx --saveEngine=/path/to/save/engine.trt
重要注意事项和故障排除:
- 版本兼容性是关键! TensorRT 版本、CUDA 版本、cuDNN 版本、NVIDIA 驱动版本、Python 版本之间必须严格兼容。务必查阅 TensorRT 官方 Release Notes。
- 环境变量
LD_LIBRARY_PATH
和PATH
: 确保它们正确设置并指向了正确的 CUDA 和 TensorRT 库/可执行文件。source ~/.bashrc
之后,可以通过echo $LD_LIBRARY_PATH
和echo $PATH
来检查。 - 权限问题: 许多安装步骤需要
sudo
。 - 多个 CUDA/TensorRT 版本: 如果你系统上有多个版本,管理
LD_LIBRARY_PATH
和PATH
会变得复杂。虚拟环境对 Python 部分有帮助,但 C++ 库路径需要小心处理。 - NVIDIA 容器 (NGC): 如果你在兼容性方面遇到很多困难,或者想快速开始,可以考虑使用 NVIDIA NGC 提供的预配置 TensorRT 容器。这是最省事的方法。
# 例如 docker run --gpus all -it --rm nvcr.io/nvidia/tensorrt:21.09-py3 # 21.09 对应 TRT 8.0.3 # 查阅 NGC TensorRT 文档获取确切的标签和使用方法
- 日志和错误信息: 仔细阅读安装过程中的任何错误或警告信息。
这是一个复杂的过程,请耐心并仔细检查每一步。祝你好运!