安装与配置 #
系统要求 #
支持的操作系统 #
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 配置 #
- 设置 Python 解释器
- 安装 ONNX 插件(可选)
- 配置代码风格
下一步 #
现在你已经完成了 ONNX 的安装和配置,接下来学习 核心概念,深入了解 ONNX 的基础概念!
最后更新:2026-04-04