人工智能之 ONNX 简介

关键字 :AI人工智能

简介

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使得不同框架间的互操作成为可能,大大促进了人工智能的应用。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能