微软释出开源函式库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模型更容易优化和维护。