人工智能 | ONNX 简介

人工智能
后台-插件-广告管理-内容页头部广告(手机)

简介

ONNX,Open Neural Network Exchange,即开放神经网络交换,是一种针对机器学习模型而设计的开放文件格式,用于存储训练好的模型。不同的人工智能框架(如Pytorch、MXNet等)可以采用相同格式存储模型数据并进行交互。ONNX为AI模型提供了开放源代码格式,包括深度学习和传统机器学习。它定义了一个可扩展的计算图模型,以及内置操作符和标准的数据类型。ONNX能够让AI开发人员随着项目的发展选择更合适的工具。目前,正专注于推断(scoring)所需的功能。

ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等科技公司和研究机构共同开发。其所建立的ONNX开源的人工智能生态圈,旨在为机器学习算法和软件工具制定开放标准,以促进人工智能行业的创新与合作。

ONNX以开放源代码的方式托管在Github上。目前,官方支持加载ONNX模型并进行推理的深度学习框架有:Caffe2、PyTorch、 MXNet、ML.NET、TensorRT 和 Microsoft CNTK,并且 TensorFlow 也非官方的支持ONNX。实现不同框架之间的互操作性,简化从研究到生产的路径,有助于提高AI社区的创新速度。

发展历程

ONNX最初名为Toffee,由Facebook的PyTorch团队开发。2017年9月,更名为ONNX,并由Facebook和Microsoft发布。后来IBM、Huawei、Intel、AMD、Arm和Qualcomm都宣布支持ONNX。

2017年10月,Microsoft宣布将其Cognitive Toolkit和Project Brainwave平台纳入ONNX。2017年12月,ONNX发布第一个正式版本(v1.0)。

2019年11月,ONNX加入Linux Foundation AI。该组织是一家致力于构建人工智能(AI)、机器学习(ML)和深度学习(DL)领域开源创新生态系统的组织,推动人工智能和数据领域的开源创新。

2020年10月,Zetane Systems成为ONNX生态系统的成员。

ONNX的目的

ONNX使开发者能够在不同框架间转换,进行互操作。开发者可以使用喜欢的框架,而不用担心对推理的影响。框架的共享优化还会使硬件供应商和其他公司能够针对ONNX,可以一次性改进多个框架的人工神经网络性能。

ONNX 支持的框架

ONNX社区提供工具,帮助开发者创建和部署深度学习模型,支持的框架有:

  • Yandex CatBoost
  • Chainer - 基于Python的深度学习框架
  • Cognitive Toolkit - Microsoft Cognitive Toolkit (CNTK) 是一个开源工具包,通过定向图将神经网络描述为一系列计算步骤。CNTK 已不再积极开发。
  • CoreML
  • Optimum - Optimum是Transformers的扩展,以包集合的形式进行分发。Optimum提供了一套性能优化工具,以最高效率在目标硬件上训练和运行模型。
  • Keras - Python编写的开源人工神经网络库
  • LibSVM - 支持向量机库(Support Vector Machines,SVM),支持C-SVM分类、nu-SVM分类、one-class-SVM、epsilon-SVM回归、nu-SVM回归,以及C-SVM分类的自动模型选择工具
  • Matlab - Deep Learning Toolbox 包含一系列算法、预训练模型和应用程序,为您设计和实现深度神经网络提供框架。
  • MindSpore - 是由华为推出的新一代全场景AI开源计算框架
  • MosaicML Composer - 是一个PyTorch库,能够更快、更低的成本和更高的精度训练神经网络。
  • MXNet - MXNet是一个深度学习框架。它让您能够将符号和命令式编程相结合,以实现最高效率和工作效率。MXNet的核心包含一个动态依赖调度器,可自动并行化符号和命令式操作。
  • MyCaffe - C++ CAFFE开源项目的 C# 重写版本。
  • NCNN - 为手机端极致优化的高性能神经网络前向计算框架。
  • NeoML - NeoML是一个端到端的机器学习框架,支持构建、训练和部署机器学习模型。
  • Neural Network Libraries - 一个深度学习框架
  • PaddlePaddle - 飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、 开源开放的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。
  • PyTorch - 针对深度学习, 并且使用 GPU 和 CPU 来优化的 tensor library。
  • DLPy - SAS Viya中提供的SAS深度学习功能的高级Python库。
  • Simcenter Amesim - 是一个系统仿真平台,允许设计工程师对系统性能进行虚拟评估和优化。
  • Simio - 全面向对象的仿真软件
  • Singa - Apache SINGA是Apache顶级项目之一,专注于深度学习和机器学习模型的分布式训练
  • SciKit Learn - 是一个建立在SciPy上的 Python 编程语言的机器学习库
  • Tengine - 由 OPEN AI LAB 主导开发,实现了深度学习神经网络模型在嵌入式设备上的快速、高效部署需求。
  • TensorFlow - 端到端开源机器学习平台
  • Tribuo - 一个用于构建和部署机器学习模型的Java库。
  • XGBoost
  • Wolfram - 计算机编程语言,具有用于神经网络机器学习系统的构建、培训和部署的最先进的功能.
  • Zama - 使用同态加密保护隐私的开源加密工具
  • ...

小结

ONNX是一种机器学习模型的开放标准,提供了开放的源代码格式。许多AI框架的模型都可以转换为标准的ONXX格式,可以在各种平台和设备上运行。

不同的AI框架差不多都有其自己的API,相对独立,而应用可能会选择不同的AI框架,不同AI框架的数据交换就显得非常重要,ONNX使得不同框架间的互操作成为可能,大大促进了人工智能的应用。

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。