捷徑

torch.onnx

概觀

開放神經網路交換格式 (ONNX) 是一種用於表示機器學習模型的開放標準格式。torch.onnx 模組會從原生 PyTorch torch.nn.Module 模型擷取計算圖,並將其轉換為 ONNX 圖

匯出的模型可以由任何 支援 ONNX 的執行階段 使用,包括 Microsoft 的 ONNX Runtime

您可以使用 ONNX 匯出器 API 的兩種版本,如下所示

基於 TorchDynamo 的 ONNX 匯出器

基於 TorchDynamo 的 ONNX 匯出器是 PyTorch 2.1 和更新版本最新的(和 Beta 版)匯出器

TorchDynamo 引擎被用來鉤入 Python 的框架評估 API,並將其位元組碼動態重寫為 FX 圖。產生的 FX 圖會在最終轉譯為 ONNX 圖之前進行優化。

這種方法的主要優勢在於 FX 圖 是使用位元組碼分析擷取的,該分析保留了模型的動態特性,而不是使用傳統的靜態追蹤技術。

進一步了解基於 TorchDynamo 的 ONNX 匯出器

基於 TorchScript 的 ONNX 匯出器

基於 TorchScript 的 ONNX 匯出器自 PyTorch 1.2.0 起可用

TorchScript 被用來追蹤(透過 torch.jit.trace())模型並擷取靜態計算圖。

因此,產生的圖有幾個限制

  • 它不會記錄任何控制流程,例如 if 語句或迴圈;

  • 不會處理 訓練評估 模式之間的細微差別;

  • 不會真正處理動態輸入

為了嘗試支援靜態追蹤限制,匯出器也支援 TorchScript 腳本(透過 torch.jit.script()),例如,它增加了對資料依賴控制流程的支援。但是,TorchScript 本身是 Python 語言的一個子集,因此並非所有 Python 功能都受到支援,例如就地操作。

進一步了解基於 TorchScript 的 ONNX 匯出器

貢獻/開發

ONNX 匯出器是一個社群專案,我們歡迎大家做出貢獻。我們遵循 PyTorch 貢獻指南,但您可能也有興趣閱讀我們的 開發 Wiki

文件

取得 PyTorch 的完整開發人員文件

檢視文件

教學課程

取得適用於初學者和進階開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並獲得問題的解答

檢視資源