第2章:环境搭建——Ubuntu系统配置、CUDA与cuDNN安装、PyTorch环境配置、YOLOv8源码下载

环境搭建这件事,说难不难,说简单也真能卡住人好几天。我见过太多同学在群里问「为什么我训练到一半报CUDA错误」「为什么我的YOLOv8跑不起来」。说白了,大部分问题都出在环境配置上。这一章,我带你一步步把地基打牢。

本章核心目标:在Ubuntu系统上,从零搭建一套可用于YOLOv8训练和推理的深度学习环境。包括:系统基础配置、NVIDIA驱动与CUDA/cuDNN安装、PyTorch安装、YOLOv8源码下载与依赖安装。

2.1 为什么选择Ubuntu?

我个人习惯用Ubuntu做深度学习开发。原因很简单:生态好、坑少。Windows下装CUDA虽然也能搞定,但遇到奇怪的DLL缺失、路径冲突问题,排查起来真的很头疼。Ubuntu的包管理器和终端操作,对AI开发来说更顺手。

我建议你使用 Ubuntu 20.04 LTS 或 22.04 LTS。这两个版本对CUDA 11.x和12.x的支持都很成熟。如果你手头是Windows机器,可以用双系统或者WSL2。不过说实话,WSL2在GPU直通上偶尔会有小毛病,有条件的话还是推荐原生Ubuntu。

2.2 系统基础配置

装好Ubuntu后,别急着装CUDA。先把系统基础环境收拾干净。

2.2.1 更新软件源和系统

sudo apt update
sudo apt upgrade -y

这一步没什么技术含量,但很重要。我遇到过有人跳过这步,结果后面装包时各种依赖冲突,折腾了大半天。

2.2.2 安装基础开发工具

sudo apt install build-essential cmake git wget curl -y

build-essential 包含了gcc、g++等编译工具,后面编译一些Python包时会用到。git 用来拉取YOLOv8源码,wget 和 curl 用来下载文件。

2.2.3 安装Python环境

Ubuntu 20.04自带Python 3.8,够用。但我建议你装个 python3-pip 和 python3-venv,方便管理虚拟环境。

sudo apt install python3-pip python3-venv -y

我的习惯:每个项目单独建一个虚拟环境,避免包版本冲突。YOLOv8的依赖比较多,单独隔离出来最省心。

2.3 NVIDIA驱动与CUDA安装

这是整个环境搭建中最容易出问题的环节。我踩过的坑,不希望你再踩一遍。

2.3.1 检查显卡型号

先确认你的显卡是否支持CUDA。NVIDIA官网有支持列表,但最简单的方法是直接看型号:

lspci | grep -i nvidia

如果你看到类似 NVIDIA Corporation GA102 [GeForce RTX 3080] 这样的输出,说明显卡没问题。如果是老旧的GTX 700系列以下,可能不支持最新的CUDA版本。

2.3.2 安装NVIDIA驱动

有两种方式:用Ubuntu自带的 ubuntu-drivers 工具,或者去NVIDIA官网下载.run文件。我推荐前者,省事。

sudo ubuntu-drivers autoinstall

这条命令会自动检测你的显卡并安装推荐驱动。装完后重启:

sudo reboot

重启后验证驱动是否安装成功:

nvidia-smi

如果能看到类似下面的表格,说明驱动装好了:

字段 示例值
Driver Version 535.154.05
CUDA Version 12.2
GPU Name NVIDIA GeForce RTX 3080

注意:nvidia-smi 显示的CUDA Version是驱动支持的最高CUDA版本,不代表你已经安装了CUDA Toolkit。别搞混了。

2.3.3 安装CUDA Toolkit

去NVIDIA官网下载对应版本的CUDA Toolkit。我写这篇文章时,YOLOv8官方推荐CUDA 11.8或12.1。我个人习惯用 CUDA 11.8,因为兼容性更好,很多第三方库对它的支持最稳定。

下载.run文件后执行:

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。

安装完成后,配置环境变量。编辑 ~/.bashrc:

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

然后 source ~/.bashrc 使其生效。验证:

nvcc --version

如果看到CUDA版本号,说明安装成功。

2.3.4 安装cuDNN

cuDNN是NVIDIA的深度学习加速库。YOLOv8训练时,卷积操作会大量调用cuDNN,不装的话性能会差很多。

去NVIDIA官网下载cuDNN(需要注册账号)。选择对应CUDA 11.8的版本。下载后解压并复制文件:

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*

验证cuDNN版本:

cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

避坑指南:我曾经因为cuDNN版本和CUDA不匹配,训练时出现 cuDNN error: CUDNN_STATUS_NOT_INITIALIZED。排查了半天才发现是版本问题。所以一定要严格对照NVIDIA官网的兼容性表格。

2.4 PyTorch环境配置

CUDA和cuDNN装好后,接下来装PyTorch。这一步相对简单,但要注意版本匹配。

2.4.1 创建虚拟环境

python3 -m venv yolov8_env
source yolov8_env/bin/activate

激活后,终端前面会出现 (yolov8_env) 字样,说明你已经在虚拟环境里了。

2.4.2 安装PyTorch

去PyTorch官网选择对应CUDA版本的安装命令。对于CUDA 11.8:

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

安装完成后验证:

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

如果输出 True,说明PyTorch能正常调用GPU。如果输出 False,检查CUDA环境变量是否配置正确。

组件 推荐版本 说明
PyTorch 2.0.1+cu118 与CUDA 11.8匹配
torchvision 0.15.2+cu118 与PyTorch版本对应
torchaudio 2.0.2+cu118 可选,YOLOv8不依赖

2.5 YOLOv8源码下载与依赖安装

环境搭好了,终于可以拉取YOLOv8的代码了。

2.5.1 克隆源码

git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics

YOLOv8的官方仓库叫 ultralytics,里面包含了YOLOv8的完整实现。我个人建议拉取最新的release版本,而不是main分支,因为main分支可能包含未稳定测试的代码。

git checkout v8.0.0  # 或者更新的稳定版本

2.5.2 安装依赖

YOLOv8的依赖都写在 requirements.txt 里:

pip install -r requirements.txt

这里会安装opencv-python、matplotlib、pandas、tqdm等常用库。如果网络慢,可以用国内镜像源:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2.5.3 验证安装

运行一个简单的推理测试,看看环境是否通顺:

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

如果能看到检测结果输出,说明整个环境搭建成功了。

注意:第一次运行时会自动下载预训练权重文件(约6MB),确保网络畅通。如果下载失败,可以手动下载放到 ~/.cache/ultralytics/ 目录下。

2.6 环境搭建知识体系总览

下面这张图总结了本章的核心流程和组件关系,方便你对照检查自己的环境:

YOLOv8 环境搭建知识体系 Ubuntu 20.04/22.04 LTS 系统 基础工具:build-essential, git, wget, cmake | Python 3.8 + venv NVIDIA 驱动 + CUDA 11.8 + cuDNN 8.9 nvidia-smi 验证驱动 | nvcc --version 验证CUDA | cuDNN版本匹配 PyTorch 2.0.1 + torchvision 0.15.2 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 YOLOv8 源码 + 依赖安装 git clone + pip install -r requirements.txt + yolo predict 验证 验证命令 torch.cuda.is_available()

这张图从下往上展示了环境搭建的四个层次:系统层 → 驱动与CUDA层 → PyTorch层 → YOLOv8应用层。每一层都依赖下一层正确安装。如果你在后续使用中遇到问题,可以按这个层次结构从下往上排查。

2.7 常见问题与排查

环境搭建过程中,有几个高频问题我单独拎出来说一下:

  • nvidia-smi 报错 "NVIDIA-SMI has failed":驱动没装好或者内核模块没加载。试试 sudo modprobe nvidia,不行就重装驱动。
  • nvcc 命令找不到:CUDA Toolkit没装或者PATH没配置。检查 /usr/local/cuda-11.8/bin 是否存在,重新 source ~/.bashrc。
  • PyTorch 显示 CUDA not available:PyTorch版本和CUDA版本不匹配。用 pip list | grep torch 查看版本,确认是cu118版本。
  • pip install 超时:换国内镜像源,或者用 --default-timeout=100 增加超时时间。

我的经验:如果你实在搞不定,最简单的办法是用NVIDIA官方提供的 PyTorch Docker镜像。一条命令就能拉取包含CUDA、cuDNN、PyTorch的完整环境,省去所有配置步骤。但作为学习,我还是建议你手动装一遍,这样才能真正理解底层原理。