白酒厂家
免费服务热线

Free service

hotline

010-00000000
白酒厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

Facebook微软联合推出ONNX标准号称要解决开发框架碎片化_[#第一枪]

发布时间:2021-06-07 11:57:49 阅读: 来源:白酒厂家

消息,今日微软和 Facebook 发布了一个全新的开源项目——ONNX,欲借此打造一个开放的深度学习开发工具生态系统。

ONNX 的全称为“Open Neural Network Exchange”,即“开放的神经网络切换”。顾名思义,该项目的目的是让不同的神经网络开发框架做到互通互用。目前,Microsoft Cognitive Toolkit,PyTorch 和 Caffe2 已宣布支持 ONNX。

ONNX 所针对的,可以说是深度学习开发生态中最关键的问题之一:

开发框架的碎片化。

在任意一个框架上训练的神经网络模型,无法直接在另一个框架上用。开发者需要耗费大量时间精力把模型从一个开发平台移植到另一个。

借助 ONNX,开发者能把在 PyTorch 上训练的模型直接拿到Caffe2 上进行推理。对于把模型从研究阶段推向产品阶段,这是一个经常遇到的场景。微软宣布正积极开发 MicrosoftCognitive Toolkit 的下个版本,将会提供对 ONNX 的支持。

ONNX 的工作原理是:

实时跟踪某个神经网络是如何在这些框架上生成的,接着,使用这些信息创建一个通用的计算图,即符合ONNX 标准的计算图。这样做行得通,是因为在计算方面,这些框架产生的最终结果都非常接近,虽然更高级的表达不同。

ONNX 标准意味着什么?

PyTorch、Microsoft Cognitive Toolkit 等框架提供的界面,让开发者创建、运行用来表示神经网络的计算图更加方便。虽然功能相似,但每一个框架都用一套不同的格式表示这些计算图。雷锋网获知,ONNX 的表示方式有两个核心优势:

框架之间的互用互通

开发者能更方便地在不同框架间切换,为不同任务选择最优工具。基本每个框架都会针对某个特定属性进行优化,比如训练速度、对网络架构的支持、能在移动设备上推理等等。在大多数情况下,研发阶段最需要的属性和产品阶段是不一样的。这导致效率的降低,比如选择不切换到最合适的框架,又或者把模型转移到另一个框架导致额外的工作,造成进度延迟。使用支持 ONNX表示方式的框架,则大幅简化了切换过程,让开发者的工具选择更灵活。

优化共享

硬件设备商们推出的对神经网络性能的优化,将能够一次性影响到多个开发框架——如果用的是 ONNX表示方式。如果优化很频繁,把它们单独整合到各个框架是个非常耗费时间的事。通过 ONNX表示方式,更多开发者就能获取这些优化。

技术概括

ONNX 为可扩展的计算图模型、内部运算器(Operator)以及标准数据类型提供了定义。在初始阶段,Facebook 和微软会专注于推理(Inference)所需要的各项能力(评估)。

每个计算数据流图以节点列表的形式组织起来,构成一个非循环的图。节点有一个或多个的输入与输出。每个节点都是对一个运算器的调用。图还会包含协助记录其目的、作者等信息的元数据。

运算器在图的外部实现,但那些内置的运算器可移植到不同的框架上。每个支持ONNX 的框架将在匹配的数据类型上提供这些运算器的实现。

TensorFlow 的缺席

ONNX 标准能否在深度学习开发者们接受,在很大程度上将取决于它在各个框架上的普及程度。

在雷锋网看来,目前 ONNX 最大的问题是,最受欢迎的开发框架 TensorFlow 没有兼容ONNX 标准。亚马逊的御用框架MXNet 也没有。Facebook 和微软都表示,将来会持续有更多框架加入到ONNX 生态中,但没有透露TensorFlow 和MXNet 是否在计划中。谷歌和亚马逊也还没有对此事表达态度,他们愿不愿意合作,尚属未知。

如何使用

初始版ONNX 的代码、文件,已在GitHub 上开源。Facebook 和微软表示将会持续改进ONNX,将会在不久的将来推出范例、工具、reference implementations 以及模型。

更多关于 ONNX 的信息可访问 Facebook 官方博客。

via微软,venturebeat

雷锋网版权文章,未经授权禁止转载。详情见转载须知。

抗裂防水剂图片

全自动扫地机价格

玻璃休闲桌