第2章 环境准备:NVIDIA驱动安装、CUDA与cuDNN版本匹配、TensorRT安装方式
说实话,很多同学刚开始接触TensorRT时,最容易栽跟头的不是模型优化本身,而是环境搭建。我见过太多人花了一整天装环境,最后发现驱动和CUDA版本对不上,或者TensorRT装完了跑不起来。嗯,这一章咱们就把这些坑一个个填平。
2.1 NVIDIA驱动安装——别小看这一步
驱动是GPU和系统之间的桥梁。没有它,CUDA根本没法工作。我个人习惯是,装系统后第一件事就是装驱动。
怎么装?我推荐两种方式:
- 方式一: 从NVIDIA官网下载.run文件。简单直接,适合有图形界面的系统。
- 方式二: 用系统包管理器。Ubuntu下可以这样:
# 先查一下推荐版本
ubuntu-drivers devices
# 然后安装推荐驱动
sudo apt install nvidia-driver-550
装完后重启,用 nvidia-smi 验证。如果能看到GPU信息,说明驱动装好了。我曾经遇到过装完驱动后黑屏的情况,后来发现是Secure Boot没关。嗯,这个坑大家注意一下。
2.2 CUDA与cuDNN版本匹配——核心中的核心
驱动装好了,接下来是CUDA。这里有个关键点:CUDA版本和驱动版本必须匹配。你想想看,驱动是底层,CUDA是上层,上层依赖下层,版本对不上肯定报错。
| CUDA版本 | 最低驱动版本 | 推荐驱动版本 |
|---|---|---|
| CUDA 12.x | ≥ 525.60.13 | ≥ 535.xx |
| CUDA 11.8 | ≥ 520.61.05 | ≥ 525.xx |
| CUDA 11.7 | ≥ 515.43.04 | ≥ 520.xx |
我个人建议用CUDA 11.8或12.1,这两个版本对TensorRT的支持最稳定。装CUDA很简单,去官网下载runfile或者deb包都行。我习惯用runfile,因为可以指定安装路径,方便多版本共存。
# 下载CUDA 11.8 runfile
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
装完后别忘了配环境变量:
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
然后cuDNN。说白了,cuDNN是CUDA的深度学习加速库。版本必须和CUDA严格对应。比如CUDA 11.8就用cuDNN 8.9.x。下载需要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*
nvcc --version 检查CUDA版本,用 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR 检查cuDNN版本。
2.3 TensorRT安装方式——三种方法任你选
TensorRT的安装方式有三种:deb包、rpm包、tar包。我三种都用过,说说各自的优缺点。
2.3.1 deb包安装(推荐Ubuntu用户)
最简单,一键安装。但版本选择少,而且只能装到系统目录。
# 下载deb包
wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Ubuntu-22.04.x86_64-gnu.cuda-11.8.tar.gz
# 安装
sudo dpkg -i tensorrt-*.deb
# 安装依赖
sudo apt-get install -f
2.3.2 rpm包安装(CentOS/RHEL用户)
和deb类似,但用rpm命令。我个人不太常用,因为现在用CentOS的越来越少了。
2.3.3 tar包安装(最灵活,我推荐)
为什么推荐tar包?因为你可以解压到任意目录,想用哪个版本就用哪个版本。而且不影响系统其他软件。
# 下载tar包
wget https://developer.nvidia.com/downloads/compute/machine-learning/tensorrt/secure/8.6.1/tars/TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz
# 解压
tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz
# 配置环境变量
export TRT_ROOT=/path/to/TensorRT-8.6.1.6
export LD_LIBRARY_PATH=$TRT_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TRT_ROOT/bin:$PATH
LD_LIBRARY_PATH 里,否则运行时找不到库。
2.4 验证安装是否成功——别急着跑模型
装完了,怎么知道对不对?我一般做三步验证:
- 检查trtexec工具: 在终端输入
trtexec --version,如果能显示版本号,说明TensorRT核心装好了。 - 运行官方示例: TensorRT包里自带了一些示例,比如
sample_mnist。进入$TRT_ROOT/samples/sample_mnist目录,编译运行一下。 - Python接口验证: 如果你要用Python,记得装tensorrt的Python包:
# 进入TensorRT的Python目录
cd $TRT_ROOT/python
pip install tensorrt-*-cp39-none-linux_x86_64.whl
# 验证
python -c "import tensorrt as trt; print(trt.__version__)"
如果这三步都过了,恭喜你,环境准备完成。我曾经遇到过一个情况,所有验证都通过了,但跑模型时就是报错。后来发现是Python的numpy版本太旧。嗯,所以建议大家用虚拟环境,避免依赖冲突。
好了,环境准备就到这里。下一章咱们开始真正搭建TensorRT加速引擎。到时候我会手把手带你写第一个trtexec命令,把模型转成TensorRT的engine文件。准备好了吗?