ONNX系列一 --- 带有ONNX的便携式神经网络

目录

介绍

模型的问题

运行时问题

下一步

代码示例

参考文献


系列文章列表如下:

ONNX系列一 --- 带有ONNX的便携式神经网络

ONNX系列二 --- 使用ONNX使Keras模型可移植

ONNX系列三 --- 使用ONNX使PyTorch AI模型可移植

ONNX系列四 --- 使用ONNX使TensorFlow模型可移植

ONNX系列五 --- 在C#中使用可移植的ONNX AI模型

ONNX系列六 --- 在Java中使用可移植的ONNX AI模型

ONNX系列七 --- 在Python中使用可移植的ONNX AI模型

介绍

预训练的神经网络无处不在。无论您要解决什么问题,都很有可能其他人已经训练了神经网络来做到这一点。如果有人已经花了很多时间和金钱来训练模型,那为什么要重新发明轮子。

ONNX Model Zoo 这样的集合让你很容易找到下一个顶级模型。但是,如果找到的模型不是您想要使用的格式,该怎么办?我们真正需要的是便携式神经网络——这正是ONNX格式所提供的。本系列将探讨如何将常见的AI模型格式转换为ONNX格式——然后在您的应用程序中使用它们。阅读完毕后,您将对2020年如何使用便携式神经网络有完整的了解。

要了解ONNX及其提供的价值,您必须首先了解其解决的问题。如果您修改了机器学习算法并创建了一个仅由您自己使用的模型(来自创建模型的同一项目),那么您就不会遇到机器学习问题。另一方面,如果您对当前项目负有DevOps的责任,并且必须生产由数据科学家团队创建的模型,那么您就遇到了机器学习问题。

模型的问题

机器学习问题是由以下事实引起的:如今,必须使用与创建模型相同的语言和框架来提供模型。例如,当您使用PythonKeras创建神经网络并准备将模型部署到生产环境时,运行该模型的服务将需要用Python编写,并且需要同时安装PythonKeras在您的生产环境中。

在微服务环境中,这听起来似乎没什么大不了的——在其中安装了PythonKeras的情况下创建镜像,将镜像部署到容器中,并通过RESTful API提供预测。但是,也许您的团队中没有任何Python专家,或者您的工程工作流程针对一种语言进行了优化,并且没有很多质量检验关方法(静态代码分析,单元测试,端对端测试和安全扫描)适用于Python。这两种情况在使用C#或Java进行了标准化的大型企业中非常常见。让不熟悉PythonKeras的工程师部署和维护进行预测的服务并不理想。同样,在没有进行所有适当质量检查的情况下部署服务只会将故障引入整个应用程序。

理想的解决方案是使模型具有通用格式,从而允许从任何语言使用所有类型的模型(传统的机器学习模型以及神经网络)。

运行时问题

机器学习问题不仅仅是语言之间缺乏模型互操作性。批处理模式或实时服务模型都可能需要大量计算。

理想的解决方案是拥有一个运行时,该运行时可以从每种编程语言访问,并能够以针对基础硬件进行优化的方式来服务模型。

下一步

本文是七篇系列文章中的第一篇,我们将探讨ONNX在三种流行的框架和三种流行的编程语言方面的价值。

接下来的三篇文章将介绍从用于构建神经网络的三个流行框架中创建ONNX模型的过程。由于ONNX不提供训练模型的功能,因此我将简要概述每个框架,以便您选择最佳的模型来训练模型。每个框架都有一个不同的软件包,需要安装这些软件包才能转换为ONNX。这将涵盖每个框架。最后,从每个框架导出模型时,需要注意一些独特的陷阱。

最后三篇文章将演示如何使用PythonC#和Java服务ONNX模型。与之前的文章类似,他们将探讨每种语言的一些独特问题。

每篇文章都有自己的特色。因此,例如,如果您知道您的数据科学团队使用了PyTorch,并且需要从Java中使用经过训练的模型,那么您可以直接阅读PyTorchJava上的两篇文章,您将一切准备就绪。

代码示例

如果没有大量代码示例,那么关于ONNX的系列文章将会是什么?Github上有一个配套存储库,其中包含本系列中显示的所有代码的工作副本。我打算不断改进这些demo,并添加来自ONNX Model Zoo的更多演示和示例,因此请经常查看此存储库。

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值