带有ONNX的便携式神经网络(译文)
By S.F.
本文链接 https://www.kyfws.com/news/portable-neural-networks-with-onnx/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 4 分钟阅读 - 1728 个词 阅读量 0带有ONNX的便携式神经网络(译文)
原文地址:https://www.codeproject.com/Articles/5278500/Portable-Neural-Networks-with-ONNX
原文作者:Keith Pijanowski
译文由本站翻译
前言
本文是七篇系列文章中的第一篇,我们将探讨ONNX在三种流行的框架和三种流行的编程语言方面的价值. 在这里,我们将涵盖一些关键概念以及对ONNX解决的问题的描述.对于不熟悉机器学习和深度学习的人员,这部分内容将作为入门. 下载源547.1 KB
介绍
预训练的神经网络无处不在.无论您要解决的是什么问题,都很有可能其他人已经训练了神经网络来做到这一点.如果有人已经花了很多时间和金钱来训练模型,那为什么要重新发明轮子. 像ONNX Model Zoo之类的收藏可以轻松找到下一个顶级模型.但是,如果找到的模型不是您想要使用的格式,该怎么办?我们真正需要的是便携式神经网络-这正是ONNX格式所提供的.本系列文章将研究如何将常见的AI模型格式转换为ONNX格式-然后在您的应用程序中使用它们.阅读完毕后,您将全面了解2020年如何使用便携式神经网络. 要了解ONNX及其提供的价值,您必须首先了解其解决的问题.如果您修改了机器学习算法并创建了一个仅由您自己使用的模型(来自创建模型的同一项目),那么您就不会遇到机器学习问题.另一方面,如果您对当前项目负有DevOps责任,并且必须生产由数据科学家团队创建的模型,那么您就遇到了机器学习问题.
模型的问题
机器学习问题是由以下事实引起的:如今,必须使用用于创建模型的相同语言和框架来提供模型.例如,当您使用Python和Keras创建神经网络并准备将模型部署到生产环境时,运行模型的服务将需要用Python编写,并且需要同时安装Python和Keras在您的生产环境中. 在微服务环境中,这听起来似乎没什么大不了-在其中安装了Python和Keras的情况下创建映像,将映像部署到容器中,并通过RESTful API提供预测.但是,也许您的团队中没有任何Python专家,或者您的工程工作流程针对一种语言进行了优化,并且没有很多质量门(静态代码分析,单元测试,端对端测试和安全扫描) )(适用于Python).这两种情况在使用C#或Java进行标准化的大型企业中非常常见.让不熟悉Python或Keras的工程师部署和维护进行预测的服务并不理想.此外,在没有进行所有适当质量检查的情况下部署服务只会将故障引入整个应用程序. 理想的解决方案是使模型具有通用格式,从而允许从任何语言使用所有类型的模型(传统的机器学习模型以及神经网络).
运行时问题
机器学习问题不仅仅是语言之间缺乏模型互操作性.批处理模式或实时服务模型都可能需要大量计算. 理想的解决方案是拥有一个运行时,该运行时可以从每种编程语言访问,并能够以针对基础硬件进行优化的方式来服务模型.
下一步
本文是七篇系列文章中的第一篇,我们将探讨ONNX在三种流行的框架和三种流行的编程语言方面的价值. 接下来的三篇文章将介绍从用于构建神经网络的三个流行框架中创建ONNX模型的过程.由于ONNX不提供训练模型的功能,因此我将简要概述每个框架,以便您选择最佳的模型来训练模型.每个框架都有一个不同的软件包,需要安装这些软件包才能转换为ONNX.这将涵盖每个.最后,从每个框架导出模型时,需要注意一些独特的陷阱. 最后三篇文章将演示如何使用Python,C#和Java服务ONNX模型.与之前的文章类似,他们将探讨每种语言的一些独特问题. 每篇文章都有自己的特色.因此,例如,如果您知道您的数据科学团队使用PyTorch,并且需要从Java中使用受过训练的模型,那么您可以直接阅读PyTorch和Java上的两篇文章,您将一无所获.
代码样本
如果没有大量的代码示例,那么关于ONNX的系列文章将是什么? Github上有一个配套存储库,其中包含本系列中显示的所有代码的工作副本.我打算不断改进这些演示,并添加来自ONNX Model Zoo的更多演示和示例,因此请经常查看此存储库.
参考文献
- https://www.tensorflow.org/
- https://github.com/onnx/tensorflow-onnx
- https://keras.io/
- https://github.com/onnx/keras-onnx
- https://pytorch.org/
- https://pytorch.org/docs/stable/onnx.html
- https://microsoft.github.io/onnxruntime/
- https://github.com/microsoft/onnxruntime/blob/master/docs/CSharp_API.md#getting-started
- https://microsoft.github.io/onnxruntime/
- https://github.com/microsoft/onnxruntime/blob/master/docs/Java_API.md#getting-started
- https://microsoft.github.io/onnxruntime/python/api_summary.html
- https://github.com/keithpij/onnx-lab
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Python AI machine-learning Keras 新闻 翻译