第2章:环境搭建与工具链准备
做模型量化,说白了就是跟一堆工具链打交道。我见过太多人算法写得飞起,结果卡在环境配置上,一搞就是两三天。这一章咱们就把这些基础打牢,后面跑起来才顺畅。
本章目标:搭建一套完整的YOLOv11量化开发环境,涵盖Python、PyTorch、ONNX Runtime、TensorRT以及CUDA生态。全部验证通过后,你就能直接上手后续的量化实验。
2.1 Python环境配置
我个人习惯用 Miniconda 来管理环境,比Anaconda轻量,也够用。你想想看,每个项目一个独立环境,互不干扰,多省心。
# 下载Miniconda(Linux x86_64为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 创建YOLOv11量化专用环境
conda create -n yolov11_quant python=3.10 -y
conda activate yolov11_quant
版本选择:Python 3.10 是目前PyTorch 2.x和TensorRT 10.x兼容性最好的版本。3.11以上部分库还没完全跟上,别给自己找麻烦。
2.2 PyTorch安装
PyTorch是量化流程的核心框架。这里要注意CUDA版本匹配,我踩过这个坑——装了不匹配的版本,训练时直接报错找不到设备。
先确认你的显卡驱动支持的CUDA版本:
nvidia-smi
# 查看右上角 "CUDA Version: 12.1" 之类的信息
然后根据这个版本安装对应的PyTorch:
# CUDA 12.1 对应 PyTorch 2.3.0
pip install torch==2.3.0 torchvision==0.18.0 --index-url https://download.pytorch.org/whl/cu121
# 验证安装
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
注意:不要用conda默认源装PyTorch,版本经常滞后。直接用PyTorch官方指定的pip源最稳。
2.3 ONNX与ONNX Runtime
ONNX是模型量化的中间桥梁。YOLOv11从PyTorch导出到ONNX,再通过ONNX Runtime做精度验证,这是标准流程。
# 安装ONNX核心库
pip install onnx==1.16.0
# ONNX Runtime(GPU版本,与CUDA对齐)
pip install onnxruntime-gpu==1.17.1
# 验证
python -c "import onnx; print(onnx.__version__); import onnxruntime; print(onnxruntime.__version__)"
我曾经在一次项目中,ONNX版本和ONNX Runtime版本差了三个小版本,导出的模型死活跑不通。后来统一到同一个大版本下,问题就解决了。所以这里建议版本号严格对齐。
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| ONNX | 1.16.0 | 支持Opset 21,覆盖YOLOv11所有算子 |
| ONNX Runtime GPU | 1.17.1 | 与CUDA 12.x兼容,支持INT8量化推理 |
| onnxsim | 0.4.33 | 模型简化工具,减少冗余节点 |
2.4 TensorRT安装
TensorRT是NVIDIA官方的推理优化引擎,也是我们做INT8量化的最终部署目标。安装它有个顺序问题,搞反了会报一堆链接错误。
安装步骤:
- 从NVIDIA官网下载TensorRT 10.x的tar包(需要注册账号)
- 解压并配置环境变量
- 安装Python wheel包
# 假设下载到 /opt 目录
cd /opt
tar -xzvf TensorRT-10.0.1.6.Linux.x86_64-gnu.cuda-12.4.tar.gz
# 配置环境变量(加到 ~/.bashrc 中)
export LD_LIBRARY_PATH=/opt/TensorRT-10.0.1.6/lib:$LD_LIBRARY_PATH
export PATH=/opt/TensorRT-10.0.1.6/bin:$PATH
# 安装Python包
pip install /opt/TensorRT-10.0.1.6/python/tensorrt-10.0.1.6-cp310-none-linux_x86_64.whl
# 验证
python -c "import tensorrt as trt; print(trt.__version__)"
小技巧:安装完成后,运行 trtexec --help 如果能正常输出,说明TensorRT环境完全就绪。这个工具后面做模型性能测试时会频繁用到。
2.5 CUDA与cuDNN版本匹配
这是整个环境搭建里最容易出问题的地方。我见过有人CUDA 11.8配了cuDNN 9.0,结果TensorRT编译时直接崩溃。版本匹配是个精细活。
核心原则:PyTorch → TensorRT → ONNX Runtime 三者的CUDA版本必须一致。
| CUDA版本 | cuDNN版本 | PyTorch版本 | TensorRT版本 |
|---|---|---|---|
| 11.8 | 8.9.7 | 2.1.0 - 2.2.0 | 8.6.x |
| 12.1 | 9.0.0 | 2.3.0 - 2.4.0 | 10.0.x |
| 12.4 | 9.1.0 | 2.5.0+ | 10.3.x |
安装cuDNN其实就是把文件拷贝到CUDA目录下:
# 下载cuDNN后解压
cp cudnn-linux-x86_64-9.0.0.312_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.1/include/
cp cudnn-linux-x86_64-9.0.0.312_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
避坑指南:我曾经直接用系统包管理器装cuDNN,结果版本对不上,排查了两天才发现是cuDNN的符号链接指向了旧版本。建议手动拷贝并检查软链接是否正确。
2.6 环境验证与知识图谱
所有组件装完后,跑一个完整的验证脚本,确保每个环节都通:
python -c "
import torch
import onnx
import onnxruntime
import tensorrt as trt
print('PyTorch:', torch.__version__, 'CUDA可用:', torch.cuda.is_available())
print('ONNX:', onnx.__version__)
print('ONNX Runtime:', onnxruntime.__version__)
print('TensorRT:', trt.__version__)
print('CUDA版本:', torch.version.cuda)
"
如果全部正常输出,恭喜你,环境搭建完成。
下面这张图概括了本章所有组件的关系和流程:
我的建议:把上面这个验证脚本保存为 check_env.py,每次换机器或重装环境后先跑一遍。省得后面量化到一半才发现环境有问题,那时候排查起来更痛苦。
嗯,环境搭建这块就这些。别看步骤多,其实按顺序来,半小时就能搞定。后面咱们就要开始动手做YOLOv11的模型导出和量化了。