TensorFlow?PyTorch?Paddle?AI工具库生态之争:ONNX将一统天下

简介: AI诸多工具库工具库之间的切换,是一件耗时耗力的麻烦事。ONNX 即应运而生,使不同人工智能框架(如PyTorch、TensorRT、MXNet)可以采用相同格式存储模
e4df9e6574239a3b8a52edf0c3609681.png
💡 作者: 韩信子@ ShowMeAI
📘 深度学习实战系列https://www.showmeai.tech/tutorials/42
📘 本文地址https://www.showmeai.tech/article-detail/319
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏 ShowMeAI查看更多精彩内容
4bff61feb793a338424241d757a5e6d1.png

当今的很多AI算法落地,我们都需要依赖特定的机器学习框架,现在比较热门的 AI 工具库如 TensorFlow 和 PyTorch 都出自大厂,并且有很好的生态和资源,借助它们我们可以很快速完成典型的一些任务,如图像分类或自然语言处理。

然而,工具库和工具库之间的相互切换,是一件很麻烦的事情,比如某公司团队开发主要使用TensorFlow,然而现在有一个深度算法,需要使用 caffe2 部署在移动设备上,那我们需要用 caffe2 重写模型重新训练,这是一个非常耗时耗力的过程。

ONNX 便应运而生,TensorFlow、Caffe2、PyTorch、paddlepaddle、Microsoft Cognitive Toolkit、Apache MXNet 等主流框架都对 ONNX 有着不同程度的支持。这就便于了我们的算法及模型在不同的框架之间的迁移

1487468596e9880378322c16f274ba30.png

ONNX(Open Neural Network Exchange)是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如PyTorch,TensorRT,MXNet)可以采用相同格式存储模型数据并交互。 ONNX的规范及代码主要由微软,亚马逊 ,Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在Github上。

💡 ONNX 官方资源

beb7847c92a0f9833d902b1a73e5d82a.png
3111f799c9b802ac8e0cbcd947ea1097.png
  • 支持的工具库
a233bc0b2ec33d32c200e1333de4f8b3.png

💡 为什么需要ONNX

机器学习/深度学习的出现和蓬勃发展的背景下,深度学习/机器学习模型训练与执行的框架/库的数量呈指数级增长。有两大原因促成这个增长:

  • 硬件供应商开发了自己的框架以实现垂直集成并使其更容易为他们的硬件开发模型
  • 开发自己的框架以针对特定用例实现最佳性能的软件供应商
385f66b4e61631f17ff45f78fc00e2ef.png

深度学习框架数量的激增导致整个AI生态系统碎片化,也使跨框架或硬件生态系统的工作变得困难。ONNX 的诞生是为了消除框架之间以及不同硬件生态系统之间互操作性的障碍。

💡 什么是ONNX

ONNX 是一个开放规范,包含以下定义:

📌 计算图模型存储文件格式

模型:是一个保存版本信息和元数据的非循环计算数据流图。

:包含模型中数据流图的名称、形成图的计算节点列表、图的输入和输出。

计算节点:图中的每个计算节点都接受零个或多个 📘定义类型、一个或多个定义类型的输出以及特定节点对其输入执行的操作类型。

4c861dc716c67fe730dcd60b21db0f90.png

📌 标准数据类型

ONNX 作为标准支持以下数据类型列表:

张量类型

  • Int8、Int16、Int32、Int64
  • Quantized Int
  • uint8, uint16, uint32, uint64
  • Float16, float, double
  • Bool
  • String
  • Complex64, complex128

非张量类型

  • Sequence
  • Map
  • Operators (Built-in/ Custom)

📌 算子/运算符

ONNX Graph 中的每个计算节点都执行特定的操作并产生一个或多个输出。 ONNX 标准定义了 📘运算符,ONNX图支持的运算符列表也在不断拓展,并通过 ONNX Opsets 保持最新状态。每次 ONNX Opset 更新都可能新增算子支持或改进现有算子。

💡 ONNX的目标

ONNX 的核心设计理念是:

  • 互操作性
  • 可移植性
19ce5a5092287b0ab7d7271244dfbd44.png

如上图所示,ONNX 希望通过提供一个高效的接口将模型从一个框架转换到另一个框架,从而成为不同框架之间的中介。

下表中列出了将模型从一些最常见的AI框架转换为 ONNX 格式的工具。

5bc09f843f55ca84cfc0eacf622c7276.png

💡 ONNX实现与现状

实际上,要满足将模型从任何其他AI框架转换为ONNX一直是一个挑战。主要障碍之一是这些AI框架生态的高速发展与每次版本迭代带来的新支持(例如算子等)。

模型从一个框架到另一个框架的转换归结为能够表示原始模型的基础数学运算。下图显示了每个框架中定义的运算符数量。实际上,目前ONNX仅支持PyTorch所有算子的约13% ,一些使用低频 PyTorch 运算符构建的模型在转换时还是有困难。

9ae4cda1fa72ebe41f7052aee237a393.png

不过像PyTorch这样的工具库里,包含的很多运算符有这一样或者类似的功能,是否需要完全同步支持也是一个问题。但ONNX开放了自定义运算符的功能,使得用户可以 📘根据需要添加自己的功能

即使目前 ONNX 还做不到完全支持和自由衔接所有AI工具框架,但凭借丰富的运算符集,ONNX已经可以描述来自各种框架的大多数 DNN 和 ML 模型。它的『函数』功能,使得用户可以把暂时不支持的复杂的操作符用更原始的操作符来表达 。

它带来了AI生态的自由流通,随着生态和社区的高速发展,相信在未来ONNX会成为AI生态中最终的桥梁之一,发挥巨大的作用。

参考资料

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
相关文章
|
4天前
|
人工智能 自然语言处理 数据可视化
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
Data Formulator 是微软研究院推出的开源 AI 数据可视化工具,结合图形化界面和自然语言输入,帮助用户快速创建复杂的可视化图表。
162 9
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
|
8天前
|
人工智能 Linux iOS开发
exo:22.1K Star!一个能让任何人利用日常设备构建AI集群的强大工具,组成一个虚拟GPU在多台设备上并行运行模型
exo 是一款由 exo labs 维护的开源项目,能够让你利用家中的日常设备(如 iPhone、iPad、Android、Mac 和 Linux)构建强大的 AI 集群,支持多种大模型和分布式推理。
239 100
|
9天前
|
人工智能 安全 开发工具
Repomix:8.1K Star!轻松将整个代码库打包为AI友好格式的开源工具,使代码库更易于AI理解
Repomix 是一款强大的工具,能够将整个代码库打包成AI友好的单个文件,支持多种输出格式和安全检查。
68 9
|
11天前
|
人工智能 自然语言处理 IDE
6 款 AI 工具,助力写出更优质代码
6 款 AI 工具,助力写出更优质代码
124 3
6 款 AI 工具,助力写出更优质代码
|
12天前
|
人工智能 自然语言处理 API
OpenDeepResearcher:开源 AI 研究工具,自动完成搜索、评估、提取和生成报告
OpenDeepResearcher 是一款开源 AI 研究工具,支持异步处理、去重功能和 LLM 驱动的决策,帮助用户高效完成复杂的信息查询和分析任务。
153 18
OpenDeepResearcher:开源 AI 研究工具,自动完成搜索、评估、提取和生成报告
|
13天前
|
人工智能 安全 数据库
AiCodeAudit-基于Ai大模型的自动代码审计工具
本文介绍了基于OpenAI大模型的自动化代码安全审计工具AiCodeAudit,通过图结构构建项目依赖关系,提高代码审计准确性。文章涵盖概要、整体架构流程、技术名词解释及效果演示,详细说明了工具的工作原理和使用方法。未来,AI大模型有望成为代码审计的重要工具,助力软件安全。项目地址:[GitHub](https://github.com/xy200303/AiCodeAudit)。
|
22天前
|
人工智能 自然语言处理 语音技术
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具
FilmAgent 是由哈工大与清华联合推出的AI电影自动化制作工具,通过多智能体协作实现从剧本生成到虚拟拍摄的全流程自动化。
239 10
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具
|
28天前
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
113 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
1月前
|
人工智能 资源调度 JavaScript
PPTAgent:中科院开源AI工具,自动将文档转化为高质量PPT
PPTAgent 是中科院推出的自动生成演示文稿框架,基于两阶段编辑方法,支持智能分析、大纲生成、幻灯片生成与评估,适用于教育、企业培训等多种场景。
428 18
PPTAgent:中科院开源AI工具,自动将文档转化为高质量PPT
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
929 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App

热门文章

最新文章

推荐镜像

更多