Zubnet AI學習Wiki › ONNX
基礎設施

ONNX

別名:開放神經網路交換格式

一種用於表示機器學習模型的開放格式,可實現不同框架之間的互通性。在 PyTorch 中訓練的模型可以匯出為 ONNX,然後使用 ONNX Runtime、TensorRT 或其他針對特定硬體最佳化的推論引擎運行。ONNX 充當訓練世界(PyTorch、TensorFlow)和部署世界(最佳化執行時期)之間的通用語言。

為什麼重要

ONNX 解決了一個真實的生產問題:你在 PyTorch(研究標準)中訓練,但部署在使用不同執行時期效果更好的硬體上。轉換為 ONNX 讓你無需重寫模型即可使用最佳化的推論引擎。這對於需要在有限硬體上獲得最大效能的邊緣部署尤其重要。

深度解析

ONNX 定義了一種計算圖格式:節點代表運算(矩陣乘法、卷積、注意力),邊代表運算之間流動的張量。該圖包含運行模型所需的所有資訊:架構、權重、輸入/輸出形狀和運算子定義。ONNX Runtime(Microsoft)是最受歡迎的執行時期,支援 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 →
ESC