第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量化的最终部署目标。安装它有个顺序问题,搞反了会报一堆链接错误。

安装步骤:

  1. 从NVIDIA官网下载TensorRT 10.x的tar包(需要注册账号)
  2. 解压并配置环境变量
  3. 安装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)
"

如果全部正常输出,恭喜你,环境搭建完成。

下面这张图概括了本章所有组件的关系和流程:

YOLOv11量化环境知识图谱 硬件层:NVIDIA GPU + 驱动 + CUDA 12.1 + cuDNN 9.0 PyTorch 2.3.0(训练/量化) TensorRT 10.0(INT8部署) ONNX 1.16.0(模型中间表示) YOLOv11 量化流程(PTQ / QAT) ONNX Runtime 精度验证

我的建议:把上面这个验证脚本保存为 check_env.py,每次换机器或重装环境后先跑一遍。省得后面量化到一半才发现环境有问题,那时候排查起来更痛苦。

嗯,环境搭建这块就这些。别看步骤多,其实按顺序来,半小时就能搞定。后面咱们就要开始动手做YOLOv11的模型导出和量化了。