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

目录
相关文章
|
2月前
|
人工智能 自然语言处理 搜索推荐
AI与GIS工具引领企业变革
科技赋能企业转型:清华团队突破固态电池技术,AIGEO融合AI与GIS助力精准获客,降本增效。覆盖美妆、教育、金融等多领域,提升流量与转化率,推动数字化升级。(238字)
243 107
|
1月前
|
人工智能 搜索推荐 算法
用AI提示词搞定基金定投:技术人的理财工具实践
本文将AI提示词工程应用于基金定投,为技术人打造一套系统化、可执行的理财方案。通过结构化指令,AI可生成个性化定投策略,覆盖目标设定、资产配置、风险控制与动态调整,帮助用户降低决策门槛,规避情绪干扰,实现科学理财。
362 13
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
566 13
|
1月前
|
SQL 人工智能 机器人
AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建
FastGPT 与 MCP 协议结合,打造工具增强型智能体新范式。MCP 如同 AI 领域的“USB-C 接口”,实现数据与工具的标准化接入。FastGPT 可调用 MCP 工具集,动态执行复杂任务,亦可作为 MCP 服务器共享能力。二者融合推动 AI 应用向协作式、高复用、易集成的下一代智能体演进。
282 0
|
2月前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
865 1
|
1月前
|
机器学习/深度学习 人工智能 算法
AI可以做电商主图了:技术原理,AI电商图生成工具对比及技术解析
双十一临近,电商主图需求激增。AI技术凭借多图融合、扩散模型等,实现高效智能设计,30秒生成高质量主图,远超传统PS效率。支持风格迁移、背景替换、文案生成,助力商家快速打造吸睛商品图,提升转化率。
551 0
|
1月前
|
人工智能 搜索推荐 数据可视化
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
当AI学会“使用工具”:智能体(Agent)如何重塑人机交互
300 115
|
1月前
|
人工智能 安全 搜索推荐
AI的下一个前沿:从静态工具到动态代理
AI的下一个前沿:从静态工具到动态代理
218 113
|
1月前
|
人工智能 自然语言处理 安全
从工具到伙伴:AI代理(Agent)是下一场革命
从工具到伙伴:AI代理(Agent)是下一场革命
247 117
|
30天前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
377 20
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀

热门文章

最新文章

推荐镜像

更多