第1章:环境搭建——CUDA与cuDNN安装、TensorRT安装、验证安装是否成功

各位同学,咱们正式开始。

做TensorRT开发,第一步不是写代码,而是搭环境。我见过太多人卡在这一步——装了半天,跑起来报错,最后发现是CUDA版本不对。说实话,环境搭好了,后面的事就顺了。

这一章,我带你把CUDA、cuDNN、TensorRT三个东西装明白。咱们分三步走:先装CUDA和cuDNN,再装TensorRT(三种方式都讲),最后验证一下到底装没装成。

1.1 CUDA与cuDNN安装

先说说CUDA。CUDA是NVIDIA的并行计算平台,说白了就是让GPU干活的底层工具。cuDNN是CUDA上的深度学习加速库,专门优化卷积、池化这些操作。

版本匹配很重要。我遇到过一位同学,装了CUDA 11.8,cuDNN却下了8.9的版本,结果编译死活过不去。后来查文档才发现,cuDNN 8.9要求CUDA 12.x。所以,装之前一定去NVIDIA官网查一下兼容性表。

CUDA版本 推荐cuDNN版本 TensorRT版本
11.8 8.6 / 8.7 8.5 / 8.6
12.0 8.9 8.6 / 10.0
12.4 9.0 10.3

安装步骤(以Ubuntu 22.04 + CUDA 12.4为例)

  1. 下载CUDA runfile:去NVIDIA官网选对应版本,下载.run文件。
  2. 安装CUDA
chmod +x cuda_12.4.0_550.54.14_linux.run
sudo ./cuda_12.4.0_550.54.14_linux.run --toolkit --silent --override

这里注意,--toolkit只装工具包,不装驱动。我建议你单独装驱动,别让CUDA安装包覆盖掉。

  1. 配置环境变量
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
  1. 验证CUDA
nvcc --version

看到版本号输出,就说明CUDA装好了。

  1. 安装cuDNN:下载tar包,解压后复制文件:
tar -xzvf cudnn-linux-x86_64-9.0.0.312_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-12.4/include/
sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda-12.4/lib64/
sudo chmod a+r /usr/local/cuda-12.4/include/cudnn*.h /usr/local/cuda-12.4/lib64/libcudnn*
  1. 验证cuDNN
cat /usr/local/cuda-12.4/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出类似:

#define CUDNN_MAJOR 9
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 0

嗯,到这里CUDA和cuDNN就装完了。

注意:如果你用的是conda环境,千万别用conda install cudnn。那个版本经常滞后,而且容易和系统CUDA冲突。我吃过这个亏,后来全改成手动装了。

1.2 TensorRT安装(deb/tar/rpm方式)

TensorRT的安装方式有三种:deb包、tar包、rpm包。我个人最推荐tar包,因为灵活,不污染系统。但如果你在服务器上部署,deb包更省事。

方式一:deb包安装(推荐新手)

os="ubuntu2204"
tag="10.3.0.26-1"
sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install tensorrt

装完后,可以用dpkg -l | grep TensorRT检查。

方式二:tar包安装(我最常用的方式)

tar -xzvf TensorRT-10.3.0.26.Linux.x86_64-gnu.cuda-12.4.tar.gz
export TRT_PATH=/path/to/TensorRT-10.3.0.26
export LD_LIBRARY_PATH=$TRT_PATH/lib:$LD_LIBRARY_PATH
export PATH=$TRT_PATH/bin:$PATH

注意,tar包不需要安装,解压后配置环境变量就能用。我习惯把它放在/opt目录下,方便多版本切换。

方式三:rpm包安装(适用于CentOS/RHEL)

sudo rpm -ivh nv-tensorrt-local-repo-rhel8-10.3.0.26-1.x86_64.rpm
sudo yum install tensorrt

三种方式选一种就行。我个人建议:开发机用tar包,生产环境用deb或rpm。

1.3 验证安装是否成功

装完了,怎么知道能不能用?我一般做三步验证。

第一步:检查TensorRT版本

trtexec --version

输出类似:

TensorRT version: 10.3.0.26

第二步:跑一个简单的模型转换

trtexec --onnx=model.onnx --saveEngine=model.engine --fp16

如果没报错,说明TensorRT能正常解析ONNX模型并生成引擎。

第三步:写一段Python代码验证

import tensorrt as trt
print(trt.__version__)
logger = trt.Logger(trt.Logger.WARNING)
builder = trt.Builder(logger)
print("TensorRT builder created successfully")

输出:

10.3.0.26
TensorRT builder created successfully
小技巧:如果你在Python中import tensorrt报错,多半是环境变量没配好。检查一下LD_LIBRARY_PATH是否指向了TensorRT的lib目录。

我曾经遇到一个情况:trtexec能跑,但Python调用失败。后来发现是Python的site-packages里没有tensorrt的wheel包。解决办法很简单:

pip install tensorrt==10.3.0.26

或者从tar包的python目录下安装:

pip install TensorRT-10.3.0.26/python/tensorrt-10.3.0.26-cp310-cp310-linux_x86_64.whl

嗯,到这里环境就全搭好了。下一章咱们开始讲ONNX模型导出,那才是真正动手的地方。

本章小结
  • CUDA和cuDNN版本必须匹配,先查兼容性表
  • TensorRT推荐tar包安装,灵活且易管理
  • 验证三步走:trtexec --version、模型转换、Python调用
  • 环境变量是坑,配好了能省很多事

好了,动手去装吧。有问题随时来问我。