每个学习AI的人,都应该知道ONNX,华为也是会员

查理谈科技 2024-06-30 13:31:10

作为一个想深入学习AI, 想学习更多机器学习和大语言模型的人, 不知道ONNX 是不行的,今天来简单介绍一下 ONNX。

一、ONNX 是什么?

ONNX 全称是Open Neural Network Exchange, 中文名称是开放神经网络交换,这是一个公开而且开放的模型交换标准, 用来在各个神经网络框架用到的模型文件中充当一个交换标准, 这就实现了神经网络模型之间的可移植性, 避免单一的模型厂家的依赖, 因此, 这对于AI 研究人员而言非常重要。

看看ONNX 官网的定义:

ONNX 是一种用于表示机器学习模型的开放格式。ONNX 定义了一组通用运算符(机器学习和深度学习模型的构建块)和一种通用文件格式,使 AI 开发人员能够将模型与各种框架、工具、运行时和编译器一起使用

开放神经网络交换 (ONNX) 是一个由技术公司和研究组织组成的开源人工智能生态系统[3],它们建立了代表机器学习算法和软件工具的开放标准,以促进 AI 领域的创新和协作。ONNX 可在 GitHub 上找到这个项目github.com/onnx/onnx。

最开始, ONNX是Facebook公司PyTorch团队的内部项目,一开始的项目名称是Toffee, 是为了解决公司的模型之间不兼容的问题而提出的。后来到了2017年9月, Facebook和微软公司联合起来, 把这个项目改名为ONNX并秉持着开放开源的标准。

很快, 更多的成员,例如IBM、华为、英特尔、AMD、Arm 和高通,都纷纷加入这个项目, 从而使得这个项目得到了更快的发展。到2017 年 10 月,微软宣布将把其认知工具包Cognitive Toolkit和 Project Brainwave 平台添加到该计划中。2019 年 11 月,ONNX 被接受为 Linux Foundation AI 的毕业项目。

目前为止的ONNX 成员列表, 可以看到很多我国AI 公司的名字:

ONNX 主要有两大显著的优点:

框架互操作性

允许开发人员更轻松地在框架之间移动,其中一些框架可能更适合开发过程的特定阶段,例如快速训练、网络架构灵活性或移动设备上的推理。

共享优化

允许硬件供应商和其他人通过定位 ONNX 表示来同时提高多个框架的人工神经网络的性能。

二、ONNX 的基本内容

ONNX 提供了可扩展计算图模型、内置运算符和标准数据类型的定义,专注于推理(inference)任务。

每个计算数据流图都是形成非循环图的节点列表。节点有输入和输出。每个节点都是对运算符的调用。元数据记录了图表。每个支持 ONNX 的框架都将提供内置运算符。

ONNX 可以比作一种专门用于数学函数的编程语言。它定义了机器学习模型使用该语言实现其推理功能所需的所有必要操作。例如,线性回归可以用以下方式表示:

def onnx_linear_regressor(X):"ONNX code for a linear regression"return onnx.Add(onnx.MatMul(X, coefficients), bias)

这个例子里面, 与开发人员用 Python 编写的表达式非常相似。它也可以表示为一个图形,逐步展示如何转换特征以获得预测。这就是为什么使用 ONNX 实现的机器学习模型通常被称为 ONNX 图。

ONNX 旨在提供一种通用语言,任何机器学习框架都可以使用它来描述其模型。第一种情况是使在生产中部署机器学习模型变得更加容易。

下图展示了主流的AI 框架的模型和ONNX 转化的列表:

可以在部署 ONNX 的环境中专门实现和优化 ONNX 解释器(或运行时)以完成此任务。使用 ONNX,可以构建一个独特的流程来在生产中部署模型,并且独立于用于构建模型的学习框架。

三、ONNX运行时(执行引擎)

前面讲到了ONNX既然是一个模型, 那么,ONNX也提供了一个参考实现的模型执行引擎,下面是可以运行ONNX的框架:

框架

网址

http://kalrayinc.com/

http://sophon.ai/

https://ip.cadence.com/ai&CMP=TIP_AI1_IndTre_Arti_0918_PP

https://www.ceva-dsp.com/product/ceva-deep-neural-network-cdnn/

https://datakalab.com/technology

deepC

https://github.com/ai-techsystems/deepC

groq

https://groq.com/products/

https://habana.ai/

https://hailo.ai/product-hailo/hailo-dataflow-compiler/

小米的MACE

https://github.com/XiaoMi/mace

https://developer.nvidia.com/tensorrt

https://docs.openvino.ai/

Optimum

https://huggingface.co/docs/optimum/index

https://onnx.ai/onnx-mlir

https://github.com/microsoft/onnxruntime

http://www.qualcomm.com/

http://www.rock-chips.com/a/en/products/RK18_Series/2019/0529/989.html

https://www.synopsys.com/dw/ipdir.php?ds=arc-metaware-ev

https://www.synopsys.com/dw/ipdir.php?ds=arc-metaware-ev

ncnn

https://github.com/Tencent/ncnn

https://www.teradata.com/Blogs/Solving-Data-Science-Operationalization-Dilemma-with-Vantage-BYOM

https://www.tensil.ai/

https://github.com/onnx/onnx-tensorflow/blob/main/README.md

https://docs.tvm.ai/tutorials/frontend/from_onnx.html#sphx-glr-tutorials-frontend-from-onnx-py

https://www.beckhoff.com/machine-learning/

https://vespa.ai/

uwp

https://docs.microsoft.com/en-us/windows/uwp/machine-learning/

https://www.hiascend.com/en/software/modelzoo#onnx

四、ONNX 模型可视化工具

为了更好的理解ONNX的模型, 这里有一些可视化工具,可以更好的理解可视化计算图。

可视化工具

网址

免费

https://github.com/lutzroeder/Netron

下载地址:https://github.com/lutzroeder/netron/releases/latest

飞桨』深度学习可视化工具

https://github.com/PaddlePaddle/VisualDL官网:https://www.paddlepaddle.org.cn/paddle/visualdl

ML 模型和内部张量 3D 可视化工具(免费)

https://github.com/zetane/viewer

Windows下载地址:https://download.zetane.com/zetane/Zetane-1.7.4.msiMac 下载地址:

https://download.zetane.com/zetane/Zetane-1.7.4.dmg

zetane 使用截图:

五、总结

本文系统的介绍了ONNX的功能和由来, 并介绍了基本语法和相关的运行时和可视化工具



0 阅读:0

查理谈科技

简介:感谢大家的关注