【翻译】ONNX扩展加速AI开发

https://developers.facebook.com/blog/post/2018/05/02/onnx-expansion-speeds-research-production/ONNX扩展加速AI开发在最近的深度学习革命开始时,研究人员只使用了一些工具(如Torch,Theano和Caffe),但今天有一个强大的深度学习框架和硬件运行时生态系统。虽然这个不断增长的工具箱非常有用,但每个框架都有可能在没有互操作性的情况下成为一个孤岛。但是,互操作性需要为每个可能的框架/运行时对进行大量自定义集成工作,并且重新实现模型以在框架之间移动通常很困难,并且可能会使开发速度减慢数周或数月。Facebook帮助开发了开放式神经网络交换(ONNX)格式允许AI工程师更轻松地在框架之间移动模型,而无需进行资源密集型定制工程。今天,我们分享ONNX正在增加对其他AI工具的支持,包括百度的PaddlePaddle平台和Qualcomm SNPE。ONNX还为Apple Core ML技术添加了生产就绪型转换器。通过这些新增功能,ONNX现在可以与绝大多数模型类型配合使用,并可以部署到数百万个移动设备上。借助ONNX,AI工程师可以使用任意数量的受支持框架开发模型,将模型导出到另一个用于生产服务的框架,或导出到硬件运行时以优化特定设备的推理。因此,工程师现在可以更加快速灵活地开发和实施他们的最新研究,同时利用各种工具。在实践中,加速“研究到生产”管道有可能更快地将强大的AI功能引入实际应用并带来新体验。使AI工具可互操作主要技术公司通过开源或积极支持各种深度学习框架来推动人工智能的发展。这些包括亚马逊网络服务(Apache MXNet),Facebook(Caffe2和PyTorch,现在正在开发的PyTorch 1.0),谷歌(TensorFlow)和微软(Cognitive Toolkit)。还有一个不断增长的硬件运行时生态系统,如NVIDIA的TensorRT和英特尔的nGraph,可帮助简化和优化“最后一英里”部署到支持量化和层融合等技术的设备上。我们于2017年9月开始与Microsoft 合作,推出ONNX规范,旨在使深度学习生态系统具有互操作性。从那时起,亚马逊网络服务,AMD,ARM,华为,IBM,英特尔,NVIDIA和高通加入了这一努力; 最近,百度,Bitmain,联发科和首选网络也加入进来。随着新功能添加到ONNX,开发人员将能够部署更多类型的模型,使用量化数据格式,并超越推理以支持模型培训。此外,这种跨系统的互操作性将使快速增长的AI社区能够更紧密地协作并从整个领域的进步中受益。ONNX宇宙如何扩展尽管如此迅速地看到这样一个广泛的生态系统形式令人兴奋,但我们特别鼓励人们看到AI社区如何构建和启动生产就绪的解决方案和库。这些进步表明ONNX正在经历最初的开发阶段,并可用于支持各种用例的大规模环境中。最近推出的一些产品和社区项目包括:官方Core ML支持 - Core ML使开发人员能够快速构建具有Apple产品智能新功能的应用程序。ONNX社区现在可以访问生产就绪的Core ML转换器,允许开发人员将ONNX格式的模型直接用于Core ML并直接集成到iOS应用程序中。Snapdragon神经处理引擎生产支持 - Qualcomm Snapdragon神经处理引擎SDK旨在帮助开发人员在Snapdragon移动平台上运行一种或多种以ONNX格式训练和导出的神经网络模型,无论是CPU,GPU还是DSP。百度的PaddlePaddle - PaddlePaddle(PArallel Distributed Deep LEarning)是一个深度学习平台,最初由百度科学家和工程师开发,用于公司自己的产品。今天,Paddle团队公开发布了其ONNX格式模型导出器的第一个版本,允许AI开发人员利用各种数据中心,移动和嵌入式推理运行时。NVIDIA TensorRT 4 - TensorRT是深度学习推理优化器和运行时。TensorRT 4中的原生ONNX解析器提供了一个简单的路径,可以将Caffe2,Chainer,Microsoft Cognitive Toolkit,Apache MxNet和PyTorch等框架中的ONNX模型导入TensorRT。ONNX的下一步是什么虽然ONNX在采用和生态系统扩展方面取得了长足进步,但仍有很多工作要做。我们继续在若干领域取得进展,所有领域都对社区参与和贡献持开放态度:NLP支持 - 现代NLP(自然语言处理)是深度学习的重要应用。此外,现代NLP网络通常难以实现,甚至更难以在框架之间进行转移。这些网络通常不是在框架范围内统一处理的。ONNX连接这些网络的能力可能是一个非常引人注目的功能。NLP网络(包括循环网络)建立在动态控制结构之上。标准化这些结构的处理可以导致与后端的更好协作,以暴露网络语义并实现更好的性能。计算机视觉领域已经开发出一种传统,用于优化规范视觉模型的硬件后端,例如ResNet-50。NLP领域没有类似的传统,一个通用的框架接口提议 - 领先的硬件和系统供应商提供高度优化的软件来运行神经网络图。与通用实现相比,该软件可以提供数量级的加速,但是它们与深度学习框架和应用程序的集成由于各种特定于供应商的接口以及与高级应用程序的软件堆栈的微妙不兼容而变得复杂。到目前为止,ONNX格式的目标是通过离线翻译在不同的高级框架和特定于供应商的库之间进行神经网络模型的离线转换。在本提案中,我们分析了如何丰富ONNX生态系统以实现运行时发现和选择高性能图执行后端,以及将ONNX图在线转换为这些实现的内部表示。社区工作组 - 除了在ONNX核心和界面上工作外,还努力将ONNX范例引入模型训练(除推理之外)等领域,并建立对模型量化和压缩的支持,以创建测试和合规工具集,并继续扩展包含预训练ONNX模型的模型动物园。如果您想参加,请联系Github上的个别工作组负责人。除了对ONNX生态系统的这些重要补充之外,我们还将其用作PyTorch 1.0中的内部中间表示,PyTorch 1.0是我们用于开发和生产的新型灵活AI框架。我们相信ONNX将继续发展并寻找新的用途来推动AI的开发和实施。希望了解有关ONNX的更多信息的工程师可以使用以下资源:
  • 在此处了解有关ONNX及其背后社区的更多信息。
  • 试用一个教程,看看在框架之间迁移模型是多么容易。
  • 了解有关如何为项目做出贡献的更多信息。
  • 在Github上联系我们,告诉我们您对该项目的看法。
  • 查看F8的ONNX分组会议,其中包括AWS,Facebook和Microsoft的特邀演讲。
  • 我们相信ONNX有一个良好的开端,在您的帮助下可以更好。我们正在积极寻找合作伙伴参与工作组,传播使用情况,并直接为项目做出贡献。如果您想为ONNX的发展做出贡献,请加入我们吧。访问code.facebook.com上的Facebook工程博客,获取更多新闻。

    相关内容推荐