第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 环境搭建知识体系总览
下面这张图总结了本章的核心流程和组件关系,方便你对照检查自己的环境:
这张图从下往上展示了环境搭建的四个层次:系统层 → 驱动与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的完整环境,省去所有配置步骤。但作为学习,我还是建议你手动装一遍,这样才能真正理解底层原理。