微軟釋出開源函式庫ONNX Script,該工具可讓開發者直接以程式語言Python編寫ONNX模型,而這也是新PyTorch ONNX匯出工具的基礎,用以更好地支援PyTorch 2.0即時編譯器TorchDynamo。微軟計畫將ONNX Script貢獻給Linux基金會旗下的ONNX GitHub組織。

微軟投資發展ONNX Script,便是為ONNX與PyTorch進一步深度整合鋪路。微軟從PyTorch 0.3.0時候開始在ONNX支援PyTorch,而現在PyTorch已經發展到2.0,甚至即將發布2.1,TorchDynamo加入代表著序列化模型工具TorchScript即將退役,因此原本的ONNX匯出工具也會需要大改。

為此,微軟重新規畫了ONNX匯出的基礎,ONNX Script便是這項基礎的最新成果。微軟在去年底的時候開始這項工作,並且與PyTorch工程師密切合作,確保TorchDynamo能夠正確無誤地匯出ONNX模型。

過去開發者在編寫ONNX模型時,需要對ONNX模型的規範和序列化格式有深入的理解,雖然微軟對此還釋出了簡化流程的API,在很大程度抽象化序列化格式,但是使用者仍需要非常熟悉ONNX的結構,才能夠順利完成工作。

而微軟新釋出的ONNX Script採用了新方法,並透過開發者普遍對Python的理解,使編寫ONNX模型變得更加容易。ONNX Script對ONNX中的所有運算子,提供強型態API,因此現有的Python工具、語法檢查器以及IDE,都能夠提供有參考價值的回饋,並且確保執行正確性,而且因為ONNX Script支援Python語言結構,因此熟悉Python的開發者,便能夠更自然地編寫ONNX模型,包括條件、迴圈,還有一元或二元運算子等。

ONNX Script融合了Python語言和ONNX模型的優點,不只擁有Python可讀性和生產力,也能利用現有Python和ONNX工具,對ONNX模型靜態推理,也就是說,用戶可以不實際執行模型,就可透過工具理解和最佳化模型行為。

整體來說,ONNX Script提供一種新的Python程式開發模型,在開發者創建ONNX模型的時候,可以使用熟悉的Python語言,以獲得更好的開發體驗。

微軟視ONNX Script為定義和擴展ONNX的手段,新的核心運算子和高階函式都已經能夠用ONNX Script編寫,而這也加速了ONNX標準的演進。在之後,微軟也會提供轉換ONNX到ONNX Script的支援,讓開發者可以無縫編輯既有模型,使得ONNX模型更容易最佳化和維護。

熱門新聞

Advertisement