2. 环境准备

做剪枝,说白了就是跟模型和框架打交道。环境没搭好,后面全是坑。我见过不少同学在环境上折腾一整天,结果发现是CUDA版本不对——嗯,这种时间花得实在冤枉。

这一章,咱们就把地基打牢。我会带着你一步步把PyTorch、YOLOv11源码和所有依赖装好,最后跑个验证确保一切正常。

2.1 PyTorch环境搭建

我个人习惯用conda来管理环境,干净、隔离、好清理。你想想看,万一搞坏了,直接删掉重来,多省心。

推荐环境配置
  • Python 3.9 - 3.11(我推荐3.10,兼容性最好)
  • PyTorch ≥ 2.0.0(剪枝需要较新的算子支持)
  • CUDA 11.8 或 12.1(看你的显卡驱动)
  • GPU显存 ≥ 8GB(实测YOLOv11s剪枝训练需要)

先创建环境:

conda create -n yolov11_prune python=3.10 -y
conda activate yolov11_prune

然后装PyTorch。这里有个坑——千万别直接 pip install torch,那样装的是CPU版本。去PyTorch官网用那个命令生成器,选对CUDA版本。

我曾经踩过的坑: 有次图省事直接pip装,跑剪枝时torch.jit.script报错,查了半天发现是CPU版不支持某些算子。后来老老实实按官网命令重装,十分钟搞定。

以CUDA 11.8为例:

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

装完验证一下:

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

如果输出 True,说明GPU可用。如果输出 False,别慌——先检查驱动:

nvidia-smi

看右上角的CUDA Version,必须 ≥ 你装的PyTorch要求的版本。

2.2 YOLOv11源码下载与配置

YOLOv11官方源码在GitHub上。我个人建议用git clone,方便后续切分支、看提交记录。

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

注意,YOLOv11是Ultralytics统一框架的一部分,不是单独一个仓库。你下载下来会发现里面还有YOLOv8、YOLOv10的代码——别奇怪,它们共享核心模块。

然后安装依赖:

pip install -r requirements.txt

但说实话,这个requirements.txt装的是基础依赖。做剪枝的话,我们还需要额外装几个库:

库名 用途 安装命令
torch-pruning 结构化剪枝核心库 pip install torch-pruning
thop 计算FLOPs和参数量 pip install thop
onnx 导出剪枝后模型 pip install onnx onnxruntime
tensorboard 可视化训练曲线 pip install tensorboard
小技巧: 我习惯把所有依赖写到一个 requirements_prune.txt 里,下次重建环境直接 pip install -r requirements_prune.txt,省得一个个敲。

2.3 依赖库安装与验证

装完别急着跑。先验证一下核心库能不能正常导入:

python -c "
import torch
import torch_pruning as tp
import thop
import onnx
import ultralytics
print('PyTorch:', torch.__version__)
print('torch-pruning:', tp.__version__)
print('thop:', thop.__version__)
print('onnx:', onnx.__version__)
print('ultralytics:', ultralytics.__version__)
"

如果哪个报错,多半是版本冲突。我遇到过最典型的是 torch-pruning 和 torch 版本不匹配——torch-pruning 1.4.0 以上需要 PyTorch ≥ 2.0。

然后跑一个YOLOv11的快速验证:

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

如果能正常输出检测结果,说明整个环境通了。

注意: 第一次运行会自动下载模型权重,大概6MB。如果下载慢,可以手动去GitHub Releases下载放到 ~/.ultralytics/ 目录下。

2.4 知识体系总览

下面这张图把本章的环境准备流程串起来了。你可以把它当作一个检查清单:

环境准备知识体系 环境准备 PyTorch环境 YOLOv11源码 依赖库安装 conda环境 CUDA版本匹配 GPU可用性验证 nvidia-smi检查 git clone requirements.txt 模型权重下载 快速预测验证 torch-pruning thop onnx/onnxruntime tensorboard 验证命令: python -c "import torch,torch_pruning,thop,onnx,ultralytics; print('All OK')"

2.5 常见问题与避坑

最后,我把这些年遇到的环境问题整理了一下。你遇到了可以直接查:

问题 原因 解决方案
torch.cuda.is_available() 返回 False CUDA版本不匹配或驱动太旧 运行 nvidia-smi 查看驱动支持的CUDA版本,重装对应PyTorch
ImportError: No module named 'torch_pruning' 未安装或安装失败 pip install torch-pruning --upgrade
YOLOv11预测时卡住不动 模型权重下载超时 手动下载权重文件放到 ~/.ultralytics/
RuntimeError: CUDA out of memory 显存不足 换小模型(yolo11n)或降低batch size
AttributeError: module 'torch' has no attribute 'compile' PyTorch版本低于2.0 升级PyTorch到2.0以上
我的习惯: 每次搭完环境,我会把 pip freeze 的输出保存成 env_snapshot.txt。万一哪天环境崩了,直接对照这个文件恢复,省得一个个版本去试。