环境准备: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」,省得后面手动配环境变量。
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 |
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+。
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 知识体系总览
下面这张图,帮你理清整个环境搭建的逻辑关系:
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() |
环境搭好了,下一步就是准备数据和模型了。记住,环境干净,后面少掉一半的头发。