第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为例)
- 下载CUDA runfile:去NVIDIA官网选对应版本,下载.run文件。
- 安装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安装包覆盖掉。
- 配置环境变量:
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
- 验证CUDA:
nvcc --version
看到版本号输出,就说明CUDA装好了。
- 安装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*
- 验证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就装完了。
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
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调用
- 环境变量是坑,配好了能省很多事
好了,动手去装吧。有问题随时来问我。