环境准备:Ubuntu/Conda环境搭建、CUDA/cuDNN安装、PyTorch框架配置、YOLO源码下载
说实话,很多同学一上来就急着调模型、跑推理,结果环境没配好,折腾两天连个demo都跑不起来。我见过太多这样的案例了。环境准备这事儿,看着基础,但坑是真不少。今天咱们就把这套流程捋清楚,你跟着走一遍,后面30章基本不会因为环境问题卡壳。
本章核心目标:在一台干净的Ubuntu机器上,从零搭建一套能跑YOLOv8/v9/v10的深度学习环境。说白了就是:系统→驱动→CUDA→PyTorch→源码,一条龙搞定。
2.1 Ubuntu系统与Conda环境搭建
我个人习惯用Ubuntu 22.04 LTS,兼容性好,社区支持也最活跃。如果你用的是20.04,问题也不大,但注意内核版本别太老。
先确认系统版本:
lsb_release -a
uname -m # 确认是x86_64,ARM用户后面要注意
然后装Conda。我推荐Miniconda,轻量、干净,别装Anaconda全家桶,太臃肿了。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 一路yes,最后source ~/.bashrc
验证一下:
conda --version
conda info
小技巧:我习惯在.condarc里配一下国内镜像源,不然下载慢到怀疑人生。清华源或者中科大源都行,自己搜一下配置方法。
接下来创建YOLO专用环境。我建议Python版本锁定3.10,太新或太老都可能跟某些库打架。
conda create -n yolo_env python=3.10 -y
conda activate yolo_env
嗯,这里要注意:每次开新终端,记得先conda activate yolo_env。我曾经有个学生,配完环境忘了激活,在base里装了一堆包,最后版本全乱套了。
2.2 CUDA与cuDNN安装
这是整个环境里最容易出幺蛾子的环节。我建议先查一下你的显卡支持什么CUDA版本:
nvidia-smi
看右上角的CUDA Version,那是你的驱动支持的最高版本。比如显示12.4,那你装CUDA 12.x都没问题。
我个人习惯用runfile安装,干净可控。去NVIDIA官网下载对应版本:
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run
# 注意:不要装驱动,只选CUDA Toolkit
装完配置环境变量:
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
验证:
nvcc --version
然后装cuDNN。去NVIDIA官网下载对应CUDA版本的cuDNN,解压后复制到CUDA目录:
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
我曾经踩过的坑:cuDNN版本跟CUDA版本必须严格对应。有一次我图省事,随便下了个cuDNN,结果训练时loss直接nan,查了两天才发现是cuDNN不兼容。所以一定要去官网查兼容矩阵。
验证cuDNN:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
2.3 PyTorch框架配置
PyTorch安装其实是最简单的,但版本选择有讲究。我建议直接去PyTorch官网用命令行生成器,选对CUDA版本就行。
以CUDA 12.4为例:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
验证安装:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
如果输出True,恭喜你,环境基本成了。
为什么我推荐pip而不是conda?因为PyTorch的conda包有时候版本滞后,而且跟系统CUDA的绑定容易出问题。pip安装更直接,版本也最新。
这里有个常见问题:明明nvidia-smi显示CUDA 12.4,但PyTorch却说cuda is not available。为什么会这样?
大概率是PyTorch版本跟驱动不匹配。比如你装了CUDA 11.8的PyTorch,但驱动只支持12.x,那就不行。解决办法:要么升级驱动,要么降PyTorch版本。
2.4 YOLO源码下载与依赖安装
我推荐用Ultralytics的官方仓库,支持YOLOv8/v9/v10,社区活跃,文档也全。
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
-e参数是editable模式,方便你改源码调试。我习惯这么装,后面改模型结构或者加自定义层都方便。
装完验证:
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
如果能正常输出检测结果,说明环境全部就绪。
依赖清单速查表:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Ubuntu | 22.04 LTS | 20.04也可,注意内核 |
| Python | 3.10 | 兼容性最好 |
| CUDA | 12.x | 根据驱动版本选 |
| cuDNN | 8.9.x | 必须匹配CUDA |
| PyTorch | 2.x | 官网生成安装命令 |
| Ultralytics | 最新 | pip install -e . |
2.5 环境验证与常见问题排查
环境配完别急着跑,先做一轮完整验证:
- GPU驱动检查:
nvidia-smi能看到GPU信息 - CUDA可用性:
nvcc --version显示正确版本 - PyTorch GPU支持:
torch.cuda.is_available()返回True - YOLO推理测试:跑一张图片看结果
如果哪一步卡住了,别慌。我列几个常见问题:
问题1:torch.cuda.is_available()返回False
原因:PyTorch版本跟CUDA驱动不匹配
解决:卸载重装对应CUDA版本的PyTorch
问题2:YOLO推理报错ModuleNotFoundError: No module named 'ultralytics'
原因:没激活conda环境或者没装依赖
解决:conda activate yolo_env然后pip install -e .
问题3:训练时显存不足
原因:batch_size太大或者模型太大
解决:调小batch_size,或者换小模型如yolov8n
我曾经在一个项目里,客户服务器是Ubuntu 20.04,显卡是RTX 3090,驱动版本470,死活装不上CUDA 12.x。后来发现是驱动太老,升级到525就全通了。所以记住:驱动是一切的基础,先搞定驱动再谈别的。
环境配好之后,我建议你跑一个完整的训练+推理流程,确保所有组件协同工作。比如用yolov8n在COCO上训几个epoch,看看loss能不能正常下降。这一步虽然花点时间,但能帮你排除90%的潜在问题。
好了,环境准备就到这里。记住:配环境不是一次性的,后面换模型、换框架、换硬件都可能需要调整。但有了今天这套方法论,你至少知道从哪下手、怎么排查。