3. YOLOv8 环境搭建:GPU驱动与CUDA安装、PyTorch环境配置、YOLOv8源码下载与依赖安装
环境搭建这件事,说白了就是给模型训练和推理铺好路。很多同学一上来就急着跑代码,结果卡在驱动版本不对、CUDA 不兼容这些坑里。我这些年部署过的工业现场,少说有几十条产线了,每次换新设备第一件事就是捋一遍环境。今天咱们就把这套流程拆开揉碎了讲清楚。
本章核心目标:在一台裸机(Ubuntu 20.04/22.04)上,从零搭建一套能跑 YOLOv8 训练和推理的完整环境。包括 GPU 驱动、CUDA 工具包、PyTorch 以及 YOLOv8 源码。
3.1 硬件与系统准备
先看看你手头的设备。工业场景里最常见的是 NVIDIA 的显卡,从 GTX 1060 到 RTX 4090,甚至 A100 我都见过。我个人习惯先确认显卡型号,再决定装哪个版本的驱动。
用这条命令查显卡信息:
lspci | grep -i nvidia
或者更直观的:
nvidia-smi # 如果已经装了驱动
系统我推荐 Ubuntu 20.04 或 22.04 LTS。为什么?因为工业现场追求稳定,LTS 版本生命周期长,驱动和 CUDA 的支持也最全。我曾经在 CentOS 7 上折腾过三天,最后还是切回 Ubuntu 了——有些依赖在 CentOS 上就是缺包,浪费时间。
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04 LTS | 64位,桌面版或服务器版均可 |
| GPU | NVIDIA 显卡(计算能力 ≥ 6.0) | GTX 10系列及以上 |
| 内存 | ≥ 16 GB | 训练时显存不够会爆 |
| 磁盘 | ≥ 50 GB 空闲 | SSD 优先,数据集大了很占空间 |
3.2 GPU 驱动安装
驱动是地基。地基没打好,后面全是白搭。
我推荐用 NVIDIA 官方 runfile 或者 Ubuntu 的 apt 源。两种方式我都用过,说下区别:
- apt 安装:简单,但版本可能不是最新的。适合不想折腾的同学。
- runfile 安装:可控性高,可以指定版本。适合有特殊需求的场景。
我个人习惯用 apt,因为工业现场不需要追新,稳定第一。
先卸载旧驱动(如果有的话):
sudo apt purge nvidia-*
sudo apt autoremove
然后添加官方 PPA 源:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
查看可用驱动版本:
ubuntu-drivers devices
你会看到类似这样的输出:
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-545 - distro non-free
driver : nvidia-driver-550 - third-party non-free
选一个推荐版本安装:
sudo apt install nvidia-driver-535
装完重启:
sudo reboot
重启后验证:
nvidia-smi
小技巧:如果 nvidia-smi 报错说找不到命令,大概率是驱动没装成功。检查一下是否禁用了 Secure Boot,有些主板开了 Secure Boot 会导致驱动模块加载失败。
3.3 CUDA 工具包安装
驱动装好了,接下来是 CUDA。注意:驱动和 CUDA 是两个东西。驱动是让系统认识显卡,CUDA 是让程序能用显卡算东西。
YOLOv8 官方推荐 CUDA 11.8 或 12.1。我建议装 CUDA 11.8,因为 PyTorch 对它的支持最成熟。我在项目里踩过 CUDA 12.x 的坑——有些第三方库还没适配,编译报错能让你怀疑人生。
去 NVIDIA 官网下载 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
安装时注意:
- 不要勾选 Driver(因为我们已经装过了)
- 只选 CUDA Toolkit 和 CUDA Samples
装完后配置环境变量:
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证:
nvcc --version
注意:nvidia-smi 显示的 CUDA 版本是驱动支持的最高版本,不代表你实际安装的 CUDA 版本。用 nvcc --version 看到的才是真正的 CUDA 工具包版本。我曾经被这个坑过,查了半天才发现两个版本不一致。
3.4 cuDNN 安装(可选但推荐)
cuDNN 是 NVIDIA 针对深度学习优化的加速库。YOLOv8 不强制要求,但装上能提速 10%-20%。
去 NVIDIA 官网下载 cuDNN for CUDA 11.x,然后:
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz
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*
验证:
cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
3.5 PyTorch 环境配置
我建议用 conda 管理环境。为什么?因为工业项目往往需要多个环境,不同项目依赖不同版本的 PyTorch,用 conda 隔离最省心。
先装 Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
创建 YOLOv8 专用环境:
conda create -n yolov8 python=3.10 -y
conda activate yolov8
安装 PyTorch。去 PyTorch 官网找对应 CUDA 11.8 的命令:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
验证 PyTorch 能否调用 GPU:
python -c "import torch; print(torch.cuda.is_available())"
如果输出 True,恭喜你,环境通了。
常见问题:输出 False 怎么办?先检查 CUDA 版本是否匹配,再检查 PyTorch 版本。我曾经遇到一次,是因为 pip 默认装了 CPU 版的 PyTorch,重新指定 cu118 索引就好了。
3.6 YOLOv8 源码下载与依赖安装
环境搭好了,终于可以拉代码了。
YOLOv8 官方仓库在 GitHub 上,直接用 git 克隆:
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
安装依赖:
pip install -r requirements.txt
看一眼 requirements.txt 里都有什么:
| 依赖包 | 作用 | 备注 |
|---|---|---|
| torch | 深度学习框架 | 前面已装 |
| torchvision | 图像处理工具 | 前面已装 |
| numpy | 数值计算 | 基础库 |
| opencv-python | 图像读写与预处理 | 工业场景必备 |
| matplotlib | 可视化 | 调试时用 |
| pyyaml | 配置文件解析 | YOLOv8 用 yaml 配置 |
| tqdm | 进度条 | 训练时看进度 |
| seaborn | 统计图表 | 画混淆矩阵用 |
安装完成后,跑个简单的推理测试:
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
如果能看到检测结果,说明整个环境搭建成功了。
我的习惯:每次搭完环境,我都会跑一遍这个测试命令。不是为了看结果,而是为了确认整个链路——驱动、CUDA、PyTorch、YOLOv8——全部通顺。这一步省不了,否则后面训练到一半报错,排查起来更痛苦。
3.7 环境验证与常见问题
最后,我把整个环境搭建的流程画成一张图,方便你对照检查:
这张图把整个流程串起来了。你按步骤走,每一步做完都验证一下,基本不会出大问题。
最后提醒一句:工业现场的环境往往比开发机复杂。我遇到过客户服务器上同时装了多个 CUDA 版本,导致 PyTorch 加载错库的情况。建议用 conda 环境隔离,每个项目一个环境,互不干扰。这是最稳妥的做法。