微软和Facebook近日宣布了一个新的开源项目,该项目旨在为涉及不同编程框架的神经网络创建一种共享的模型表示机制。这个新项目名为开放神经网络交换(ONNX),让人们因此有望跨Cognitive Toolkit、PyTorch和Caffe2来共享模型。

微软和Facebook启动开源项目,旨在让神经网络易于移植-势活

按照设想,ONNX有助于解决眼下机器学习生态系统的关键问题之一。现在有大量的不同框架用来构建和执行神经网络,还有其他的机器学习系统,但是它们都不一样,而且无法协同运行。

如果使用ONNX,Facebook就可以导出用PyTorch构建的训练模型,并将它与Caffe2结合起来用于推理。这对于拿来研究环境(PyTorch擅长于此)中构建的模型,然后放到生产环境中与Caffe2结合使用而言很重要。微软表示,它在全力发布支持ONNX的Cognitive Toolkit(又叫CNTK)版本。

系统的工作原理是,跟踪分析使用这其中一种框架生成的神经网络在运行时如何执行,然后利用该信息,创建一张可以传来传去的普通计算图。这之所以成为可能,是由于说到计算,那每一个框架生成的最终结果非常相似,尽管较高级的表示机制不一样。

眼下,ONNX的最大问题在于,它与其他一些流行的机器学习框架不相兼容,包括起源于谷歌的TensorFlow和亚马逊青睐的机器学习框架Apache MXNet。

然而,落实支持这个项目的方法并非易事。Facebook表示,它不得不对PyTorch和Caffe2都作了改动,以便支持该项目。微软和Facebook表示,它们希望开源社区会帮助自己逐渐完善ONNX,以便将来有望支持更多的框架。

此外,ONNX并不支持一些较复杂的网络,比如用PyTorch构建的具有动态流控制功能的那些网络。Facebook计划将来添加这方面的功能。