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:虽然也能装,但卸载麻烦,容易残留文件。
具体步骤:
- 去NVIDIA官网下载对应版本的deb包。
- 执行安装命令:
# 以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目录下。
步骤:
- 去NVIDIA官网下载对应CUDA版本的cuDNN(需要注册账号)。
- 解压并复制:
# 解压
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包更灵活,你可以随时切换版本。
步骤:
- 去NVIDIA官网下载对应CUDA版本的TensorRT tar包。
- 解压到指定目录:
# 解压
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/
- 配置环境变量:
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模型是否能正常推理。
好了,环境搭建这块就这些。你按着步骤来,基本不会出大问题。如果真卡住了,回头看看我写的避坑指南,大部分问题都能解决。
下一章,咱们开始正式进入量化感知训练的内容。