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