1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > 人工智能AI > 正文

人工智能AI

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

1987web2023-07-10人工智能AI69
AI诸多工具库工具库之间的切换,是一件耗时耗力的麻烦事。ONNX即应运而生,使不同人工智能框架(如PyTorch、TensorRT、MXNet)可以采用相同格式存储模

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

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

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

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

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

ONNX 官方资源

  • 支持的工具库

为什么需要ONNX

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

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

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

什么是ONNX

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

计算图模型存储文件格式

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

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

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

标准数据类型

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 的核心设计理念是:

  • 互操作性
  • 可移植性

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

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

ONNX实现与现状

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

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

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

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

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

参考资料

最棒的AI工具,用于生成文本、语音、视频、图像、笔记、应用等!自从ChatGPT问世以来,我尝试了许多不同用途的AI工具。

在这篇文章中,我将与大家分享我认为最好的AI工具。我将为每个工具留下简短的评价,并提供链接以获取完整指南,以便进一步了解它们。

下面是我精选的10大AI工具。

1. Adobe Firefly:图像与文字效果生成

Adobe Firefly是一款将整合于Adobe产品如Photoshop中的生成性AI模型,专注于图像和文本效果的生成。

它的工作原理类似于Midjourney,但你无需使用Discord或了解此类平台的任何知识即可开始。你只需要登录或注册Adobe帐户,即可使用Adobe Firefly的测试版。

我最喜欢的功能无疑是Generative Fill,因为它可以让你在照片中添加物体,更改背景等。

要了解更多关于在Photoshop中使用Firefly的信息,请查看此完整指南。

请注意,Adobe Firefly目前处于测试阶段。如果你想在Photoshop中尝试它,可以去官网下载试用。

2. Notion AI:更高效的笔记和文档

如果你是Notion的用户,那么你一定会喜欢Notion AI。Notion AI将记事应用提升到新的水平。你只需输入提示即可在Notion应用中生成博客文章或社交媒体文章的文本。

下面是一个简短的演示。

来源:Notion

但这还不是全部!除了生成文本,Notion AI还有许多AI支持的功能。它可以帮助你总结文本,修复拼写和语法错误,并将文本翻译成多种语言。

3. NVIDIA Broadcast:AI增强的语音和视频

NVIDIA Broadcast是一个AI工具,非常适合那些想要提升视频会议和语音通话质量的人。

这个工具有很多由AI驱动的功能。下面是我最喜欢的几个:

一段视频胜过千言万语,所以下面是这些功能如何工作的快速演示。

不幸的是,这个工具要求你有Nvidia RTX显卡。如果你是Windows用户,请查看

此指南以验证你的电脑拥有何种显卡,并按照步骤安装此工具。

4. Canva AI:图像生成器、文本生成器、神奇设计和照片编辑器

想象一下,将一堆AI工具集成在一个平台上 —— 这就是Canva AI提供的。

如果你不熟悉Canva,Canva是一个创建社交媒体图形和演示文稿的工具,而现在借助AI,Canva变得更加强大!

首先,与Midjourney一样,Canva现在提供图像生成。你只需输入提示,图像将在几秒钟内在Canva中生成!

我试用了100个AI工具,这些是最佳之选

暑期创作大赛