Administrator
发布于 2025-06-21 / 4 阅读
0
0

Python Ubuntu 如何配置 TensorRT 8.0环境

在 Ubuntu 上配置 TensorRT 8.0 环境需要仔细操作,因为它涉及到特定版本的 NVIDIA 驱动、CUDA Toolkit 和 cuDNN。TensorRT 8.0 是一个相对较旧的版本,所以你需要确保所有组件版本兼容。

核心步骤概览:

  1. 安装 NVIDIA 驱动:确保驱动版本与你想安装的 CUDA 版本兼容。
  2. 安装 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)
  3. 安装 cuDNN:需要与选择的 CUDA 版本兼容的版本。
  4. 下载并安装 TensorRT 8.0:从 NVIDIA 开发者网站下载。
  5. 安装 TensorRT Python API:通常通过 TensorRT 安装包中的 .whl 文件安装。
  6. 配置环境变量
  7. (可选但推荐) 使用 Python 虚拟环境。

详细步骤:

假设:

  • 你有一块 NVIDIA GPU。
  • 你使用的是 Ubuntu (例如 18.04, 20.04。较新的 Ubuntu 版本可能对旧版 CUDA/TensorRT 支持不佳,有时需要降级或使用容器)。
  • 我们将以 CUDA 11.3cuDNN 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 驱动

  1. 检查推荐驱动:
    ubuntu-drivers devices
    
  2. 安装推荐驱动 (或一个你知道与 CUDA 11.3 兼容的版本,例如 465.xx, 470.xx 或更高):
    sudo ubuntu-drivers autoinstall
    # 或者指定版本,例如: sudo apt install nvidia-driver-470
    
  3. 重启系统:
    sudo reboot
    
  4. 验证驱动安装:
    nvidia-smi
    
    你应该能看到 GPU 信息和驱动版本。记下右上角显示的 "CUDA Version"。这只是驱动支持的最高 CUDA 版本,不代表你已安装 CUDA Toolkit。

第 2 步:安装 CUDA Toolkit 11.3

  1. 前往 NVIDIA CUDA Toolkit Archive: https://developer.nvidia.com/cuda-toolkit-archive

  2. 选择 "CUDA Toolkit 11.3.0" (或 11.3.1)。

  3. 选择你的系统:

    • Operating System: Linux
    • Architecture: x86_64
    • Distribution: Ubuntu
    • Version: (你的 Ubuntu 版本,如 20.04)
    • Installer Type: deb (local)runfile (local)deb (local) 通常更易于管理。
  4. 按照 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 然后手动确保驱动已正确安装。

  5. 设置环境变量 (重要!): 将以下行添加到你的 ~/.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
    
  6. 验证 CUDA 安装:

    nvcc --version
    

    你应该看到 CUDA 11.3 的版本信息。

    nvidia-smi
    

    确保驱动仍然正常工作。


第 3 步:安装 cuDNN 8.2.x for CUDA 11.x

  1. 前往 NVIDIA cuDNN Archive: https://developer.nvidia.com/rdp/cudnn-archive
    • 你需要一个 NVIDIA Developer Program 账户 (免费注册)。
  2. 找到 "Download cuDNN v8.2.x for CUDA 11.x"。选择一个具体的版本,例如 "cuDNN v8.2.1 for CUDA 11.x"。
  3. 下载 "cuDNN Library for Linux (x86_64)" 的 .tgz 压缩包。例如 cudnn-11.3-linux-x64-v8.2.1.32.tgz
  4. 安装 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*
    
  5. 验证 cuDNN (可选但推荐): 可以尝试编译和运行 cuDNN samples,或者在后续安装 PyTorch/TensorFlow 时验证。 一个简单的检查方法是看 PyTorch/TensorFlow 是否能识别 cuDNN 版本。

第 4 步:下载并安装 TensorRT 8.0.x

  1. 前往 NVIDIA TensorRT Archive: https://developer.nvidia.com/nvidia-tensorrt-8x-download (也需要 NVIDIA Developer 账户)
    • 你可能需要向下滚动或在存档中查找旧版本。
  2. 找到 TensorRT 8.0.x 的某个版本 (例如 TensorRT 8.0.3.4 GA)。
  3. 同意条款,然后下载与你的 Ubuntu 版本、CUDA 版本、CPU 架构匹配的 TensorRT tar.gz 包。 例如:TensorRT-8.0.3.4.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz (文件名会明确指出它兼容的 CUDA 和 cuDNN 版本)。
  4. 安装 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
    
  5. 设置 TensorRT 环境变量: 将以下行添加到你的 ~/.bashrc (或 ~/.zshrc):
    echo 'export LD_LIBRARY_PATH=/opt/tensorrt8/lib:${LD_LIBRARY_PATH}' >> ~/.bashrc
    source ~/.bashrc
    
    (如果你没有 root 权限,可以将 TensorRT 解压到用户目录,例如 ~/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 和依赖

  1. 激活虚拟环境 (如果使用了):

    source ~/trt_env8/bin/activate
    
  2. 安装 Python 依赖:

    pip install numpy
    pip install pycuda # (可选,但非常有用,特别是用于自定义插件或 CUDA 操作)
    pip install onnx # (如果你需要处理 ONNX 模型)
    
  3. 安装 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,就找 cp37whl 文件,以此类推。如果找不到完全匹配的,可能需要调整 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_PATHPATH 确保它们正确设置并指向了正确的 CUDA 和 TensorRT 库/可执行文件。source ~/.bashrc 之后,可以通过 echo $LD_LIBRARY_PATHecho $PATH 来检查。
  • 权限问题: 许多安装步骤需要 sudo
  • 多个 CUDA/TensorRT 版本: 如果你系统上有多个版本,管理 LD_LIBRARY_PATHPATH 会变得复杂。虚拟环境对 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 文档获取确切的标签和使用方法
    
  • 日志和错误信息: 仔细阅读安装过程中的任何错误或警告信息。

这是一个复杂的过程,请耐心并仔细检查每一步。祝你好运!


评论