ONNX,AI框架生态系统的“任意门”
丹棱君有话说:什么开发神器惊艳了人工智能社区?当然是 ONNX !有了它,开发者再也不用担心不同开发框架切换的耗时问题,再也不用担心框架间的整合优化。ONNX 究竟是什么?它是微软和 Facebook 联合推出的开放神经网络交换(Open Neutral Network Exchange,ONNX)格式。欲知详情,请跟丹棱君来~
微软希望让每个人都能够从人工智能中受益,为此,我们提供了各种平台和工具来促进人工智能的普及,这其中就包括微软认知工具包,一个构建深层神经网络的开源框架。另外,我们还与有着相同愿景的机构合作共同支持人工智能社区的发展。
我们很高兴地与 Facebook 共同宣布,推出开放神经网络交换(ONNX,Open Neural Network Exchange)格式。ONNX 为 AI 框架生态系统中的互操作性和创新提供了共享的模型表示形式。微软认知工具包,Caffe2 和 PyTorch 都将支持 ONNX 。微软和 Facebook 共同开发了这个开源项目,并希望人工智能社区能够帮助其不断进化。
什么是 ONNX 表示形式?
微软认知工具包和其他框架提供了使开发人员更容易构建和运行表征神经网络的计算图的界面。这些框架虽然功能类似,但表示图形的格式各不相同。对此,ONNX 表示形式主要具备以下两个优势:
框架互操作性
开发者可以更轻松地在框架间切换,根据当前任务选择最适合的工具。每个框架都针对具体特性进行了优化,例如快速培训、支持灵活的网络架构、移动设备上的推理等等。很多时候,研发中最重要的特性通常与生产发布环节不同。这导致开发者在不同框架间转换模型时,会因框架选用不正确或明显延迟而降低效率。使用 ONNX 表示形式的框架将简化这一过程,让开发者更加灵活。
共享优化
硬件供应商和其他改进神经网络性能的优化可以通过定位 ONNX 表示形式来同时影响多个框架。通常,在每个框架中整合优化相当耗时。ONNX 表示形式会让优化更容易实现,从而吸引到更多开发者。
技术总结
ONNX 提供了可扩展计算图模型的定义,以及内置运算符和标准数据类型的定义,最初,我们专注于推理(评估)所需的能力。
每个计算数据流图将被打造成组成非循环图的节点列表。节点具有一或多个输入和一或多个输出。 每个节点是对一个运算符的一次调用。
运算符在图形外部实现,但是内置运算符的集合在框架之间是可移植的。每个支持 ONNX 的框架都将提供这些运算符适用数据类型的实现方式。
获取方式
ONNX 代码和文档的初始版本现已上传到 GitHub,点击“阅读原文”即可获取。欢迎开源社区里的开发者使用。我们将积极开展这一项目,即将发布的认知工具包也将支持 ONNX 。我们还计划和 Facebook 一道,提供部署参考、示例、工具和一个 model zoo 。
ONNX 表示形式奠定了一个开放生态系统的基础,让人工智能更加触手可及、更有价值。开发者可以为自己的任务选择合适的框架,框架作者可以专注于创新的增强功能,硬件供应商可以简化优化流程。我们希望社区能够支持 ONNX 实现这一令人兴奋的愿景。
了解更多:
后台入驻微软小冰
如果你很萌,请跟她一决高下!
点击“阅读原文”,即可获取 ONNX 代码和文档的初始版本。