环境准备:Python虚拟环境、PyTorch安装、ONNX Runtime安装、GPU/CUDA配置

做工业缺陷检测模型转换,第一步不是写代码,而是搭环境。我见过太多人上来就 pip install,结果装了一堆冲突的包,最后重装系统。嗯,咱们别走那条路。

这一章,我会带你从零搭一套干净、可复现的环境。说白了,就是给你的项目建一个独立的小房间,互不干扰。

2.1 Python虚拟环境:给你的项目一个独立房间

为什么需要虚拟环境?你想想看,一个项目要 PyTorch 1.13,另一个要 2.0,装在一起肯定打架。虚拟环境就是给每个项目一个独立的 Python 解释器和包目录。

我个人习惯用 conda,因为它不光管 Python 包,还能管 CUDA 和 cuDNN 的版本。当然,venv 也行,但 conda 在 GPU 环境管理上更省心。

2.1.1 安装 Miniconda

去官网下载 Miniconda(Python 3.9+ 版本)。安装时记得勾选「Add to PATH」,省得后面手动配环境变量。

小提示: 别装 Anaconda,太臃肿。Miniconda 够用,轻装上阵。

2.1.2 创建虚拟环境

打开终端(Windows 用 Anaconda Prompt),执行:

conda create -n defect_detection python=3.9 -y
conda activate defect_detection

环境名叫 defect_detection,Python 3.9。为什么选 3.9?因为 PyTorch 和 ONNX Runtime 对 3.9 的支持最稳定,我在项目中踩过 3.11 的坑,有些旧版算子不兼容。

2.1.3 验证环境

python --version
# 输出: Python 3.9.x
which python
# 输出: /path/to/miniconda3/envs/defect_detection/bin/python

看到路径里有 envs/defect_detection,说明环境激活成功。

2.2 GPU/CUDA配置:让显卡跑起来

工业缺陷检测模型通常不大,但推理速度要求高。GPU 加速是必须的。我刚开始做的时候,以为装个驱动就行,结果跑模型报错「CUDA not available」——嗯,这里要注意,驱动和 CUDA Toolkit 是两回事。

2.2.1 检查显卡驱动

nvidia-smi

这个命令会显示驱动版本、CUDA 版本(注意是驱动支持的 CUDA 版本,不是已安装的 Toolkit 版本)。

驱动版本 最高支持 CUDA 版本 推荐安装 CUDA
525.x 12.0 11.8 或 12.1
520.x 11.8 11.7 或 11.8
470.x 11.4 11.3 或 11.4
避坑指南: 我曾经在驱动版本 470 上装了 CUDA 12.0,结果 PyTorch 直接报错。驱动版本决定了你能用的 CUDA 上限,别贪新。

2.2.2 安装 CUDA Toolkit 和 cuDNN

我推荐用 conda 安装,省去手动配置环境变量的麻烦:

conda install cudatoolkit=11.8 cudnn=8.6.0 -c conda-forge

为什么选 11.8?因为 PyTorch 1.13 和 2.0 对 11.8 支持最好,ONNX Runtime 也兼容。如果你用更新的 PyTorch 2.1+,可以选 12.1。

2.2.3 验证 CUDA 可用性

python -c "import torch; print(torch.cuda.is_available())"
# 输出: True

如果输出 False,别慌。检查三件事:驱动版本、CUDA Toolkit 版本、PyTorch 版本是否匹配。我遇到过最坑的一次是装了 CPU 版的 PyTorch,折腾了两小时才发现。

2.3 PyTorch安装:选对版本很重要

PyTorch 的安装命令在官网有生成器,但咱们做工业缺陷检测,有几个要点:

  • 稳定版优先:别追最新版,选 LTS 或稳定版。我习惯用 1.13.1 或 2.0.1。
  • CUDA 版本匹配:PyTorch 的 CUDA 版本要和上面装的 Toolkit 一致。
  • 用 conda 安装:pip 有时会漏装依赖,conda 更可靠。

2.3.1 安装命令

conda install pytorch=1.13.1 torchvision=0.14.1 torchaudio=0.13.1 pytorch-cuda=11.8 -c pytorch -c nvidia

如果你网络慢,可以加 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 换清华源。

2.3.2 验证安装

python -c "import torch; print(torch.__version__); print(torch.cuda.get_device_name(0))"
# 输出: 1.13.1
# 输出: NVIDIA GeForce RTX 3060

看到显卡型号,说明 PyTorch 能调用 GPU 了。

2.4 ONNX Runtime安装:推理加速的关键

ONNX Runtime 是微软开源的推理引擎,专门优化 ONNX 模型的执行效率。工业场景下,我们通常用 GPU 版本来跑推理。

2.4.1 安装 ONNX Runtime GPU 版

pip install onnxruntime-gpu==1.15.1

注意:版本号要和你的 CUDA 版本匹配。1.15.1 支持 CUDA 11.8,如果你用 CUDA 12.x,就装 1.16+。

关键点: ONNX Runtime 的 GPU 版依赖 CUDA 和 cuDNN,但不需要 PyTorch。所以你可以单独装它,不影响 PyTorch 环境。

2.4.2 验证安装

python -c "import onnxruntime as ort; print(ort.get_device())"
# 输出: GPU

如果输出 CPU,说明没装 GPU 版,或者 CUDA 路径没配好。检查一下 pip list | findstr onnxruntime,看看是不是装了 onnxruntime(CPU 版)而不是 onnxruntime-gpu。

2.5 知识体系总览

下面这张图,帮你理清整个环境搭建的逻辑关系:

环境搭建知识体系图 环境搭建知识体系 工业缺陷检测环境 Python虚拟环境 GPU / CUDA 配置 推理引擎 Miniconda conda create nvidia-smi CUDA Toolkit ONNX Runtime PyTorch 安装 conda install 验证 GPU 核心原则:版本匹配(驱动 → CUDA → PyTorch → ONNX Runtime) 推荐组合:CUDA 11.8 + PyTorch 1.13.1 + ONNX Runtime 1.15.1

2.6 完整安装清单

最后,给你一份我常用的安装清单,照着执行就行:

步骤 命令 验证方法
1. 创建环境 conda create -n defect_detection python=3.9 -y conda activate defect_detection
2. 安装 CUDA conda install cudatoolkit=11.8 cudnn=8.6.0 -c conda-forge nvidia-smi
3. 安装 PyTorch conda install pytorch=1.13.1 torchvision=0.14.1 pytorch-cuda=11.8 -c pytorch -c nvidia torch.cuda.is_available()
4. 安装 ONNX Runtime pip install onnxruntime-gpu==1.15.1 ort.get_device()
避坑指南: 我曾经在 Windows 上装 ONNX Runtime GPU 版,结果一直报 DLL 加载失败。后来发现是 Visual C++ Redistributable 没装。去微软官网装一下「VC_redist.x64.exe」就好。

环境搭好了,下一步就是准备数据和模型了。记住,环境干净,后面少掉一半的头发。