4、TensorRT开发环境搭建:CUDA、cuDNN、TensorRT的版本匹配与安装、验证安装是否成功。

说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多同学卡在这一步,一卡就是好几天。你想想看,版本不对、路径配错、权限不够……随便一个都能让你怀疑人生。

今天我就把压箱底的经验掏出来,带你把这套环境捋顺了。咱们的目标很明确:装完就能跑,跑完不出错。

4.1 版本匹配:别瞎装,先看这张表

我个人习惯,装任何东西之前,先看官方文档的兼容性矩阵。CUDA、cuDNN、TensorRT这三个东西,版本必须严格对应。差一个版本号,可能就编译不过去。

我整理了一份常用的版本匹配表,你直接照着来就行:

CUDA 版本 cuDNN 版本 TensorRT 版本 备注
11.8 8.9.x 8.6.x / 8.5.x 目前最稳的组合,我项目里一直在用
12.1 8.9.x 8.6.x / 10.0.x 新卡推荐,支持更多新特性
12.4 9.1.x 10.3.x 最新版,但生态还不够成熟
⚠️ 避坑指南:

我曾经因为图省事,把CUDA 11.8和cuDNN 9.0混着装,结果跑模型时直接报“CUDNN_STATUS_NOT_INITIALIZED”。查了两天才发现是版本不匹配。所以,千万别自己乱搭配。

4.2 CUDA 安装:别用runfile,用deb包

CUDA的安装方式有好几种。我个人强烈建议用 deb (local) 包,而不是runfile。为什么?

  • deb包:安装简单,卸载也干净。apt remove 就完事了。
  • runfile:虽然也能装,但卸载麻烦,容易残留文件。

具体步骤:

  1. 去NVIDIA官网下载对应版本的deb包。
  2. 执行安装命令:
# 以CUDA 11.8为例
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

💡 小技巧:安装完成后,记得把CUDA路径加到 ~/.bashrc 里:

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

然后 source ~/.bashrc 让它生效。

4.3 cuDNN 安装:其实就是复制粘贴

cuDNN的安装比CUDA简单多了。说白了,就是把下载好的文件解压,然后复制到CUDA目录下。

步骤:

  1. 去NVIDIA官网下载对应CUDA版本的cuDNN(需要注册账号)。
  2. 解压并复制:
# 解压
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz

# 复制到CUDA目录
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.8/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64 
sudo chmod a+r /usr/local/cuda-11.8/include/cudnn*.h /usr/local/cuda-11.8/lib64/libcudnn*

✅ 验证cuDNN是否装好:

cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

如果能看到版本号,比如 #define CUDNN_MAJOR 8,那就说明装对了。

4.4 TensorRT 安装:tar包最省心

TensorRT的安装,我推荐用 tar包。deb包虽然也能用,但tar包更灵活,你可以随时切换版本。

步骤:

  1. 去NVIDIA官网下载对应CUDA版本的TensorRT tar包。
  2. 解压到指定目录:
# 解压
tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz

# 移动到 /opt 目录(个人习惯)
sudo mv TensorRT-8.6.1.6 /opt/
  1. 配置环境变量:
export LD_LIBRARY_PATH=/opt/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH
export PATH=/opt/TensorRT-8.6.1.6/bin:$PATH

⚠️ 注意:TensorRT的Python包需要单独安装。在 /opt/TensorRT-8.6.1.6/python 目录下,找到对应Python版本的whl文件,用pip安装:

pip install /opt/TensorRT-8.6.1.6/python/tensorrt-8.6.1-cp38-none-linux_x86_64.whl

4.5 验证安装:跑个demo试试

装完别急着走,一定要验证一下。我习惯用TensorRT自带的 trtexec 工具来测试。

# 测试TensorRT是否正常工作
trtexec --version

# 如果能看到版本信息,比如:
# TensorRT version: 8.6.1

然后,跑一个简单的模型转换:

# 将ONNX模型转为TensorRT引擎
trtexec --onnx=resnet50.onnx --saveEngine=resnet50.engine --fp16

如果没报错,并且生成了 resnet50.engine 文件,那就说明环境完全OK了。

💡 我的经验:第一次跑 trtexec 时,可能会遇到 libnvinfer.so 找不到的问题。别慌,八成是环境变量没配好。检查一下 LD_LIBRARY_PATH 是否包含了TensorRT的lib目录。

4.6 常见问题与解决

嗯,这里我把几个高频问题列出来,你遇到了直接对号入座:

  • 问题1:nvcc -V 显示版本不对
    原因:多个CUDA版本冲突。检查 /usr/local/cuda 软链接指向的是哪个版本。
  • 问题2:import tensorrt 报错
    原因:Python包版本与CUDA不匹配。重新安装对应版本的whl文件。
  • 问题3:trtexec 报错 “failed to create engine”
    原因:ONNX模型本身有问题,或者显存不足。先用 onnxruntime 验证一下ONNX模型是否能正常推理。

好了,环境搭建这块就这些。你按着步骤来,基本不会出大问题。如果真卡住了,回头看看我写的避坑指南,大部分问题都能解决。

下一章,咱们开始正式进入量化感知训练的内容。