第三章 环境搭建与工具链:CUDA、cuDNN、PyTorch、TensorRT、DeepStream配置
好,咱们直接进入正题。
环境搭建这事儿,说难不难,说简单也真能折腾死人。我见过太多同学在配置环境上花了两三天,最后发现是CUDA版本和PyTorch没对齐。嗯,这节课我就把我在多个安防项目里踩过的坑、总结的经验,一次性给你讲透。
3.1 CUDA:GPU计算的基石
CUDA是NVIDIA的并行计算平台。说白了,就是让GPU干CPU的活,而且干得更快。
版本选择
我个人习惯是:选新不选旧,但别追最新。比如现在CUDA 12.x已经出了,但我建议你用CUDA 11.8或12.1。为什么?因为PyTorch和TensorRT对这些版本的兼容性最好。
安装步骤
- 去NVIDIA官网下载对应系统的runfile或deb包
- 安装前先卸载旧版本:
sudo apt-get purge nvidia* - 安装命令示例:
sudo sh cuda_11.8.0_520.61.05_linux.run - 配置环境变量,加到
~/.bashrc里
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
装完后跑一下 nvcc --version,看到版本号就说明成了。
3.2 cuDNN:深度学习的加速器
cuDNN是NVIDIA针对深度学习优化的库。它专门加速卷积、池化、归一化这些操作。你想想看,YOLO里全是卷积,没有cuDNN的话,推理速度至少慢3-5倍。
安装要点
- 需要注册NVIDIA开发者账号才能下载
- 版本必须和CUDA匹配。比如CUDA 11.8对应cuDNN 8.9.x
- 安装其实就是把文件拷贝到CUDA目录下
# 解压后执行
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
chmod a+r。
3.3 PyTorch:模型训练与推理的框架
PyTorch现在已经是深度学习的事实标准了。YOLOv5、v8、v10都是用PyTorch训练的。
安装命令
我建议用pip安装,别用conda。为什么?因为pip的包更新更快,而且不容易出现依赖冲突。
# CUDA 11.8版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.1版本
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
验证安装
import torch
print(torch.__version__)
print(torch.cuda.is_available()) # 应该返回True
print(torch.cuda.get_device_name(0)) # 显示你的GPU型号
🔑 关键点: 如果 torch.cuda.is_available() 返回False,99%是CUDA版本和PyTorch版本不匹配。别慌,卸载重装对应版本就好。
3.4 TensorRT:推理加速的利器
TensorRT是NVIDIA的推理优化引擎。它能把PyTorch模型转成TensorRT引擎,推理速度提升2-5倍。在安防场景里,这意味着同样的GPU能多跑几路视频流。
安装方式
有两种方式:
- deb包安装:适合Ubuntu系统,一键安装
- tar包安装:适合自定义路径,我比较喜欢这种方式
# tar包安装示例
tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz
sudo mv TensorRT-8.6.1.6 /usr/local/
# 配置环境变量
export LD_LIBRARY_PATH=/usr/local/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH
# 安装Python包
pip install /usr/local/TensorRT-8.6.1.6/python/tensorrt-8.6.1-cp39-none-linux_x86_64.whl
3.5 DeepStream:安防监控的完整Pipeline
DeepStream是NVIDIA推出的视频分析SDK。它把解码、预处理、推理、后处理、编码整个流程都封装好了。你只需要写一个配置文件,就能跑起一个完整的安防监控系统。
安装步骤
- 先装好CUDA、cuDNN、TensorRT
- 安装GStreamer依赖:
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-tools - 下载DeepStream SDK,运行安装脚本
sudo ./deepstream-6.3_6.3.0-1_amd64.deb
# 或者用tar包
tar -xvf deepstream_sdk_v6.3.0_x86_64.tbz2
cd deepstream_sdk_v6.3.0
sudo ./install.sh
验证安装
cd /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app
deepstream-app -c source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
如果能看到视频画面,说明环境搭好了。
3.6 版本兼容性速查表
这是我整理的一份兼容性表,你直接照着配就行:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| CUDA | 11.8 | 稳定,兼容性好 |
| cuDNN | 8.9.7 | 对应CUDA 11.x |
| PyTorch | 2.1.0 | 支持CUDA 11.8/12.1 |
| TensorRT | 8.6.1 | 对应CUDA 11.8 |
| DeepStream | 6.3 | 依赖TensorRT 8.6 |
3.7 常见问题与避坑指南
- 问题1:PyTorch检测不到GPU
原因:CUDA版本和PyTorch不匹配。解决方案:卸载PyTorch,安装对应CUDA版本的包。 - 问题2:TensorRT报错"Failed to create engine"
原因:模型输入尺寸和TensorRT配置不一致。解决方案:检查onnx模型的输入shape,确保和配置文件匹配。 - 问题3:DeepStream启动后黑屏
原因:显示环境变量没配好。解决方案:设置export DISPLAY=:0,或者用nvidia-smi检查GPU状态。
📌 总结一下: 环境搭建的核心就四个字——版本对齐。CUDA、cuDNN、PyTorch、TensorRT、DeepStream,这五个东西的版本必须互相兼容。我建议你每次搭建环境前,先去NVIDIA官网查一下兼容性矩阵,或者直接照着我上面的表来配。
好了,环境搭好之后,下一章咱们就开始真正跑YOLO模型了。到时候你会觉得,前面这些折腾都是值得的。