Zubnet AI学习Wiki › ONNX
基础设施

ONNX

别名:开放神经网络交换格式
一种用于表示机器学习模型的开放格式,实现框架之间的互操作性。在PyTorch中训练的模型可以导出为ONNX,然后使用ONNX Runtime、TensorRT或其他针对特定硬件优化的推理引擎运行。ONNX充当训练世界(PyTorch、TensorFlow)和部署世界(优化运行时)之间的通用语言。

为什么重要

ONNX解决了一个真实的生产问题:你在PyTorch(研究标准)中训练,但在使用不同运行时效果更好的硬件上部署。转换为ONNX让你可以使用优化的推理引擎而无需重写模型。这对于边缘部署尤为重要,因为需要在有限硬件上获得最大性能。

深度解析

ONNX定义了一种计算图格式:节点表示操作(矩阵乘法、卷积、注意力),边表示在操作之间流动的张量。该图包含运行模型所需的所有信息:架构、权重、输入/输出形状和算子定义。ONNX Runtime(微软)是最流行的运行时,支持CPU、GPU和专用加速器。

何时使用ONNX

ONNX在以下情况最有用:(1)你需要在非NVIDIA硬件(Intel、AMD、ARM、移动端)上部署,而PyTorch CUDA不可用;(2)你需要最大推理速度,且ONNX Runtime的优化优于PyTorch;(3)你正在将模型集成到非Python应用中(ONNX Runtime有C++、C#、Java和JavaScript绑定)。对于使用大型LLM的标准GPU推理,专业的服务框架(vLLM、TGI)通常性能优于ONNX。

局限性

并非所有PyTorch操作都能顺利转换为ONNX,特别是自定义算子和动态架构。复杂模型可能需要手动干预才能正确导出。ONNX还落后于前沿架构——新的模型类型可能要等到添加了ONNX算子后才被支持。具体到LLM推理,GGUF/llama.cpp生态系统和TensorRT-LLM在大多数用例中已比ONNX更受欢迎。

相关概念

← 所有术语
← Ollama OpenAI →