概述

透過資料流圖上的運算來完成使用神經網路的深度學習。某些框架(例如 CNTK、Caffe2、Theano 和 TensorFlow)使用靜態圖,而其他框架(例如 PyTorch 和 Chainer)則使用動態圖。但是,它們都提供介面,讓開發人員可以輕鬆建構運算圖和以最佳化方式處理圖的執行階段。該圖作為中間表示法(IR),用於捕獲開發人員原始程式碼的特定意圖,並有助於最佳化和轉換以在特定裝置(CPU、GPU、FPGA 等)上執行。

為何需要通用 IR?

如今,每個框架都有自己專有的圖表示法,儘管它們都提供類似的功能 – 這意味著每個框架都是 API、圖和執行階段的孤立堆疊。此外,框架通常針對某些特性進行了最佳化,例如快速訓練、支援複雜的網路架構、在行動裝置上進行推論等。開發人員必須選擇針對其中一個特性進行最佳化的框架。此外,這些最佳化可能更適合開發的特定階段。由於需要轉換,這導致研究和生產之間出現重大延遲。

為了實現人工智慧的民主化目標,我們期望讓開發人員能夠在開發或部署的任何階段選擇最適合其專案的框架。開放神經網路交換(ONNX)格式是一種通用 IR,有助於建立這個強大的生態系統。

藉由提供運算圖的通用表示法,ONNX 可協助開發人員為其任務選擇合適的框架,讓作者專注於創新增強功能,並使硬體供應商能夠簡化其平台的最佳化。

ONNX 設計為開放格式。我們歡迎社群的貢獻,並鼓勵所有人都在其生態系統中採用 ONNX。

為何需要兩個變體?

ONNX 的基本定義包括對基於神經網路技術的機器學習演算法的必要支援。ONNX-ML 包括常用於傳統機器學習演算法的其他類型和標準運算符。建立這兩個變體是為了明確表示某些框架希望以標準化的方式超越神經網路演算法,同時允許其他框架僅支援神經網路。