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版本。
以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'
如果能正常输出检测结果,说明整个环境通了。
~/.ultralytics/ 目录下。
2.4 知识体系总览
下面这张图把本章的环境准备流程串起来了。你可以把它当作一个检查清单:
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。万一哪天环境崩了,直接对照这个文件恢复,省得一个个版本去试。