2. 训练环境配置:GPU驱动与CUDA安装、PyTorch环境搭建、Ultralytics库安装与验证

说实话,环境配置这一步,看着简单,但坑是真不少。我见过太多同学在群里问「为什么我训练跑不起来」,最后发现是CUDA版本没对上。所以这一章,咱们把每一步都走踏实了。

2.1 硬件与软件的前置检查

动手之前,先确认你的机器够不够格。我个人习惯列个清单,一项项打勾:

组件 最低要求 推荐配置
GPU NVIDIA GTX 1060 (6GB) NVIDIA RTX 3060 或更高
显存 6 GB 12 GB 以上
操作系统 Ubuntu 20.04 / Windows 10 Ubuntu 22.04 / Windows 11
Python 3.8 3.10 - 3.12
磁盘空间 20 GB 50 GB (SSD)

嗯,这里要注意:显存是硬门槛。YOLOv8 训练一张 640x640 的图,batch size 设为 16,大概吃掉 8GB 显存。你想想看,如果只有 6GB,那就得把 batch size 降到 8 甚至 4,训练时间直接翻倍。

2.2 GPU驱动与CUDA安装

说白了,CUDA 就是 NVIDIA 给咱们深度学习准备的「加速器」。没有它,GPU 就是个摆设。

2.2.1 检查现有驱动

先看看你机器上有没有驱动。打开终端(Windows 用 cmd 或 PowerShell),敲:

nvidia-smi

如果能看到 GPU 型号、驱动版本、CUDA 版本,说明驱动已经装好了。我曾经遇到一台机器,nvidia-smi 能跑,但 PyTorch 就是检测不到 GPU。后来发现是驱动版本太老,只支持 CUDA 10.2,而 PyTorch 要的是 11.8。所以这里有个关键点:驱动版本必须 >= 你安装的 CUDA 版本所要求的最低驱动。

我的经验: 驱动版本尽量装新一点的。比如驱动 545 或 550,能兼容 CUDA 11.8 到 12.x。省得以后升级 PyTorch 时又要重装驱动。

2.2.2 安装CUDA

去 NVIDIA 官网下载 CUDA Toolkit。我个人推荐 CUDA 11.8,因为 PyTorch 2.x 对它的支持最稳定。安装步骤很简单:

  1. 下载对应系统的 runfile(Linux)或 exe(Windows)
  2. Linux 下执行 sudo sh cuda_11.8.0_xxx.run
  3. 安装时 不要 勾选驱动(如果你已经装好了)
  4. 配置环境变量:export PATH=/usr/local/cuda-11.8/bin:$PATH
  5. 验证:nvcc --version
避坑指南: 我曾经在 Ubuntu 上同时装了 CUDA 11.8 和 12.1,结果 nvcc 指向了旧版本,但 PyTorch 检测到的是新版本。训练时莫名其妙报错。后来我统一用软链接 /usr/local/cuda 指向一个版本,才解决问题。

2.3 PyTorch环境搭建

我习惯用 conda 管理环境,干净、隔离、好卸载。你想想看,如果直接在 base 环境里装,哪天搞崩了,整个 Python 都得重装。

2.3.1 创建虚拟环境

conda create -n yolov8 python=3.10
conda activate yolov8

2.3.2 安装PyTorch

去 PyTorch 官网,选你的配置。比如 CUDA 11.8 就用:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

装完之后,一定要验证 GPU 是否可用。敲下面几行:

python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

如果输出 True 和你的 GPU 型号,恭喜,环境搭好了。如果输出 False,别慌。我遇到过的情况是:PyTorch 版本和 CUDA 版本不匹配。比如你装了 CUDA 12.1,但 pip 装的是 cu118 版本,那肯定认不出来。

核心原则: PyTorch 的 CUDA 版本必须 <= 你安装的 CUDA 版本。比如 CUDA 11.8 的 PyTorch 可以在 CUDA 12.1 的驱动上跑,但反过来不行。

2.4 Ultralytics库安装与验证

Ultralytics 是 YOLOv8 的官方库,封装得很好。安装就一句话:

pip install ultralytics

它会自动把依赖(opencv-python、matplotlib、pandas 等)都装上。我个人建议装完之后,跑一个简单的验证脚本:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8n.pt')

# 跑一次推理
results = model('https://ultralytics.com/images/bus.jpg')

# 打印检测结果
for r in results:
    print(r.boxes)

如果能看到 bounding box 的坐标和置信度,说明整个环境都通了。我第一次跑这个脚本时,等了大概 10 秒才出结果——因为它在下载模型权重。第二次就快多了。

小技巧: 如果网络慢,可以手动下载 yolov8n.pt 放到当前目录,这样脚本就不会卡在下载上了。

2.5 知识体系总览

下面这张图,把整个环境配置的流程串起来了。你跟着箭头走,基本不会出错。

训练环境配置流程 硬件检查 GPU驱动安装 CUDA Toolkit PyTorch环境 Ultralytics库 运行验证 关键检查点 • nvidia-smi 确认驱动 • nvcc --version 确认CUDA • torch.cuda.is_available() 常见问题 • 驱动版本太老 • CUDA与PyTorch不匹配 • 环境变量未配置

2.6 常见问题速查表

最后,我把这些年踩过的坑整理成一张表。你遇到问题,先来这里找找答案。

问题现象 可能原因 解决方案
nvidia-smi 找不到命令 驱动未安装或未加入PATH 重装驱动,或手动添加 /usr/bin 到PATH
torch.cuda.is_available() 返回 False PyTorch CUDA版本与驱动不匹配 用 pip list | grep torch 查看版本,重新安装对应CUDA版本
训练时显存不足 batch size 太大 / 图片分辨率太高 降低 batch size,或使用 --half 开启混合精度
Ultralytics 导入报错 依赖库版本冲突 新建 conda 环境,重新 pip install ultralytics
模型下载超时 网络问题 手动下载 .pt 文件,放到项目根目录

环境配置这块,说白了就是「版本对齐」四个字。驱动、CUDA、PyTorch、Ultralytics,它们之间有一个隐形的版本锁链。只要链子不断,后面训练就顺了。嗯,咱们这一章就到这儿,接下来就可以真正开始调参了。