安装与配置 #

系统要求 #

支持的操作系统 #

text
┌─────────────────────────────────────────────────────────────┐
│                    支持的操作系统                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Linux                                                      │
│  ├── Ubuntu 18.04+                                         │
│  ├── CentOS 7+                                             │
│  ├── Debian 10+                                            │
│  └── 其他主流发行版                                         │
│                                                             │
│  macOS                                                      │
│  ├── macOS 10.14+                                          │
│  └── Apple Silicon (M1/M2) 原生支持                        │
│                                                             │
│  Windows                                                    │
│  ├── Windows 10+                                           │
│  └── Windows Server 2016+                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Python 版本要求 #

ONNX 版本 Python 版本
1.15+ 3.8 - 3.12
1.12 - 1.14 3.7 - 3.11
1.10 - 1.11 3.6 - 3.10

硬件要求 #

text
最低配置:
- CPU: 任意 x86_64 或 ARM64 处理器
- 内存: 2GB+
- 存储: 500MB+

推荐配置(GPU 加速):
- NVIDIA GPU: Compute Capability 3.5+
- CUDA: 11.0+ 或 12.x
- cuDNN: 8.x

安装 ONNX #

方式一:pip 安装(推荐) #

bash
pip install onnx

安装特定版本:

bash
pip install onnx==1.15.0

方式二:conda 安装 #

bash
conda install -c conda-forge onnx

方式三:从源码安装 #

bash
git clone https://github.com/onnx/onnx.git
cd onnx
git submodule update --init --recursive
pip install -e .

安装 ONNX Runtime #

ONNX Runtime 是 ONNX 模型的高性能推理引擎。

CPU 版本 #

bash
pip install onnxruntime

GPU 版本 #

bash
pip install onnxruntime-gpu

版本对照表 #

包名 说明 适用场景
onnxruntime CPU 版本 通用 CPU 推理
onnxruntime-gpu CUDA GPU 版本 NVIDIA GPU 加速
onnxruntime-directml DirectML 版本 Windows GPU
onnxruntime-openvino OpenVINO 后端 Intel 硬件加速
onnxruntime-vitisai Vitis AI 后端 AMD FPGA/Xilinx

GPU 版本要求 #

text
┌─────────────────────────────────────────────────────────────┐
│                    GPU 版本依赖                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  NVIDIA CUDA 版本要求:                                     │
│                                                             │
│  onnxruntime-gpu 1.16+                                     │
│  ├── CUDA 11.8 或 12.x                                     │
│  └── cuDNN 8.x                                             │
│                                                             │
│  onnxruntime-gpu 1.15                                      │
│  ├── CUDA 11.8                                             │
│  └── cuDNN 8.x                                             │
│                                                             │
│  安装 CUDA:                                                │
│  pip install nvidia-cuda-runtime-cu11                      │
│  pip install nvidia-cudnn-cu11                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安装验证 #

验证 ONNX 安装 #

python
import onnx

print(f"ONNX 版本: {onnx.__version__}")

from onnx import defs
print(f"默认 opset 版本: {defs.onnx_opset_version()}")

print("ONNX 安装成功!")

验证 ONNX Runtime 安装 #

python
import onnxruntime as ort

print(f"ONNX Runtime 版本: {ort.__version__}")

providers = ort.get_available_providers()
print(f"可用的执行提供者: {providers}")

print("ONNX Runtime 安装成功!")

完整验证脚本 #

python
import onnx
import onnxruntime as ort
import numpy as np
from pathlib import Path

def verify_installation():
    print("=" * 50)
    print("ONNX 安装验证")
    print("=" * 50)
    
    print(f"\n1. ONNX 版本: {onnx.__version__}")
    print(f"   默认 opset 版本: {onnx.defs.onnx_opset_version()}")
    
    print(f"\n2. ONNX Runtime 版本: {ort.__version__}")
    print(f"   可用提供者: {ort.get_available_providers()}")
    
    print("\n3. 创建测试模型...")
    
    import torch
    import torch.nn as nn
    
    class SimpleModel(nn.Module):
        def __init__(self):
            super().__init__()
            self.fc = nn.Linear(10, 5)
        
        def forward(self, x):
            return torch.relu(self.fc(x))
    
    model = SimpleModel()
    model.eval()
    
    dummy_input = torch.randn(1, 10)
    
    torch.onnx.export(
        model,
        dummy_input,
        "test_model.onnx",
        input_names=["input"],
        output_names=["output"],
        opset_version=17
    )
    print("   模型导出成功!")
    
    print("\n4. 验证模型...")
    onnx_model = onnx.load("test_model.onnx")
    onnx.checker.check_model(onnx_model)
    print("   模型验证通过!")
    
    print("\n5. 推理测试...")
    session = ort.InferenceSession("test_model.onnx")
    input_data = np.random.randn(1, 10).astype(np.float32)
    outputs = session.run(None, {"input": input_data})
    print(f"   输出形状: {outputs[0].shape}")
    
    Path("test_model.onnx").unlink()
    
    print("\n" + "=" * 50)
    print("✅ 所有验证通过!ONNX 环境配置正确。")
    print("=" * 50)

if __name__ == "__main__":
    verify_installation()

开发环境配置 #

推荐的项目结构 #

text
project/
├── models/              # ONNX 模型文件
│   ├── model.onnx
│   └── optimized/
├── scripts/             # 转换脚本
│   ├── export_onnx.py
│   └── optimize.py
├── src/                 # 源代码
│   ├── inference.py
│   └── utils.py
├── tests/               # 测试代码
│   └── test_model.py
├── requirements.txt     # 依赖
└── README.md

requirements.txt 示例 #

text
onnx>=1.15.0
onnxruntime>=1.16.0
numpy>=1.21.0
protobuf>=3.20.0

torch>=2.0.0
torchvision>=0.15.0

onnxoptimizer>=0.3.0

可选工具安装 #

bash
pip install onnxoptimizer

pip install onnx-simplifier

pip install netron

常见问题 #

问题 1:protobuf 版本冲突 #

text
错误信息:
TypeError: Descriptors cannot not be created directly.

解决方案:
pip install protobuf==3.20.3

问题 2:GPU 版本找不到 CUDA #

text
错误信息:
Failed to load library libcublas.so

解决方案:
1. 确认 CUDA 已正确安装
2. 设置环境变量:
   export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

3. 或使用 CPU 版本:
   pip uninstall onnxruntime-gpu
   pip install onnxruntime

问题 3:Apple Silicon M1/M2 支持 #

bash
pip install onnx
pip install onnxruntime

pip install onnxruntime-silicon

问题 4:Windows DLL 加载失败 #

text
错误信息:
DLL load failed: 找不到指定的模块。

解决方案:
1. 安装 Visual C++ Redistributable
2. 或使用 conda 安装:
   conda install -c conda-forge onnx onnxruntime

IDE 配置 #

VS Code 配置 #

json
{
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.formatting.provider": "black",
    "python.analysis.typeCheckingMode": "basic",
    "files.associations": {
        "*.onnx": "binary"
    }
}

PyCharm 配置 #

  1. 设置 Python 解释器
  2. 安装 ONNX 插件(可选)
  3. 配置代码风格

下一步 #

现在你已经完成了 ONNX 的安装和配置,接下来学习 核心概念,深入了解 ONNX 的基础概念!

最后更新:2026-04-04