3. 开发环境搭建:Ubuntu 22.04 + CUDA 12.1 + PyTorch 2.x + TensorRT 8.6 保姆级安装
环境搭建,说白了就是给模型训练和部署铺路。我见过太多同学在环境上卡一两天,最后发现是驱动版本不对。这一章,咱们一步不跳,把整个环境捋顺。
3.1 整体架构一览
先看一张图,搞清楚每个组件的位置。这样你装的时候心里有数,不会装完发现少了东西。
安装顺序必须从下往上:系统 → 驱动 → CUDA → cuDNN → PyTorch → TensorRT。跳步容易出问题,我吃过这个亏。
3.2 第一步:Ubuntu 22.04 系统安装
如果你已经有 Ubuntu 22.04 系统,直接跳到 3.3 节。没有的话,我建议用 U 盘做启动盘安装。
3.2.1 系统要求
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| CPU | Intel i7 / AMD Ryzen 7 以上 | Intel i5 / AMD Ryzen 5 |
| 内存 | 32 GB | 16 GB |
| 显卡 | NVIDIA RTX 4070 及以上 | NVIDIA GTX 1660 |
| 硬盘 | NVMe SSD 1 TB | SSD 256 GB |
| 网络 | 稳定外网(下载依赖) | 可访问 PyPI / GitHub |
3.2.2 安装要点
- 分区建议: / 分区 100 GB,/home 分区剩余全部。数据放 /home 下,重装系统不丢数据。
- 软件更新: 安装时勾选「为图形和 Wi-Fi 硬件安装第三方软件」。
- 语言: 选 English,避免终端路径出现中文乱码。
sudo apt update && sudo apt upgrade -y。把内核和基础库更新到最新,省得后面装驱动时报依赖错误。
3.3 第二步:NVIDIA 驱动安装
驱动是 GPU 和系统之间的翻译官。版本不对,CUDA 装上也白搭。
3.3.1 检查显卡型号
lspci | grep -i nvidia
如果输出为空,检查显卡是否插好,或者 BIOS 里是否禁用了独立显卡。
3.3.2 安装驱动(推荐方法)
我个人最推荐用 NVIDIA 官方 runfile 安装,干净可控。
- 去 NVIDIA 官网 下载对应显卡的驱动(Linux 64-bit .run 文件)。
- 禁用开源驱动 nouveau:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo reboot
- 重启后进入文本模式(Ctrl+Alt+F2),登录后:
sudo service gdm stop
chmod +x NVIDIA-Linux-*.run
sudo ./NVIDIA-Linux-*.run
- 安装完成后重启,用
nvidia-smi验证。
3.4 第三步:CUDA 12.1 安装
CUDA 是 NVIDIA 的并行计算平台。PyTorch 和 TensorRT 都依赖它。
3.4.1 下载与安装
去 NVIDIA 开发者网站下载 CUDA 12.1 runfile(local 版本)。
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run
安装时注意:不要勾选 Driver(驱动我们已经装好了),只选 CUDA Toolkit 和 CUDA Samples。
3.4.2 配置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
3.4.3 验证
nvcc --version
输出应显示 release 12.1。如果报错,检查 PATH 是否配置正确。
3.5 第四步:cuDNN 8.9 安装
cuDNN 是深度神经网络的加速库。TensorRT 需要它做卷积优化。
- 去 NVIDIA 官网下载 cuDNN 8.9 for CUDA 12.x(需要注册账号)。
- 下载
Local Installer for Linux x86_64 (Tar)。
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-12.1/include/
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2。输出应该显示 8.9.x。
3.6 第五步:PyTorch 2.x 安装
PyTorch 2.x 引入了 torch.compile,训练速度能提升 30%-50%。
3.6.1 创建虚拟环境
我习惯用 conda 管理环境,干净且好切换。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create -n yolov8 python=3.10 -y
conda activate yolov8
3.6.2 安装 PyTorch
去 PyTorch 官网选择对应配置。CUDA 12.1 对应命令:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
3.6.3 验证
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
输出应为 2.x.x 和 True。如果 False,检查 CUDA 和驱动。
pip install torch 默认安装,它会装 CPU 版本。一定要指定 --index-url 为 cu121 版本。
3.7 第六步:TensorRT 8.6 安装
TensorRT 是 NVIDIA 的推理优化引擎。YOLO 模型转成 TensorRT 后,推理速度能快 2-3 倍。
3.7.1 下载 TensorRT
去 NVIDIA 官网下载 TensorRT 8.6 GA for Linux x86_64 and CUDA 12.0 TAR package。
tar -xvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz
sudo mv TensorRT-8.6.1.6 /usr/local/
echo 'export LD_LIBRARY_PATH=/usr/local/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
3.7.2 安装 Python 包
cd /usr/local/TensorRT-8.6.1.6/python
pip install tensorrt-8.6.1-cp310-none-linux_x86_64.whl
3.7.3 验证
python -c "import tensorrt as trt; print(trt.__version__)"
输出应为 8.6.1。
ImportError: No module named tensorrt。
3.8 第七步:安装 YOLOv8 与验证全流程
环境搭好了,跑个 YOLOv8 验证一下。
pip install ultralytics
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
如果一切正常,你会看到检测结果图片。这说明:
- PyTorch 能调用 GPU
- YOLO 模型能正常推理
- 环境链路全部打通
3.9 常见问题与避坑指南
| 问题 | 原因 | 解决方案 |
|---|---|---|
nvidia-smi 报错 "No devices were found" |
驱动未正确安装或显卡被禁用 | 检查 BIOS 设置,重新安装驱动 |
torch.cuda.is_available() 返回 False |
PyTorch 版本与 CUDA 不匹配 | 卸载 PyTorch,用 --index-url 重新安装 |
TensorRT 导入报错 libnvinfer.so 找不到 |
LD_LIBRARY_PATH 未配置 | 检查环境变量,确保指向 TensorRT 的 lib 目录 |
| YOLO 训练时显存不足 | batch size 太大或模型太大 | 减小 batch size,或使用 --device 0 指定单卡 |