当前位置: 首页 > 知识库问答 >
问题:

如何在生产环境中部署机器学习算法?

彭令秋
2023-03-14

我是机器学习算法的新手。我正在学习基本算法,如回归、分类、聚类、序列建模、在线算法。互联网上的所有文章都展示了如何将这些算法用于特定数据。没有关于在正式生产环境中部署这些算法的文章。所以我的问题是

1) 如何在生产环境中部署机器学习算法?

2)机器学习教程中遵循的典型方法是使用一些训练数据构建模型,并将其用于测试数据。但是,是否建议在生产环境中使用这种模型?传入的数据可能会不断变化,因此模型将无效。模型刷新周期的持续时间应该是多少以适应此类更改?

共有3个答案

孙思源
2023-03-14

很抱歉,我的评论没有包括太多的细节,因为我也是ML“部署”的新手。但是由于作者也是ML的新手,我希望这些基本的指导也能有所帮助。对于“部署”,您应该

  1. 拥有ML算法:您可以使用免费工具,也可以使用Python、R、Java、.Net等库开发自己的工具,或者使用云上的系统。)
  2. 使用训练数据集训练这些ML模型
  3. 保存那些经过训练的模型(您应该根据您的开发环境搜索这个主题。Tensorflow/Keras提供了一些文件格式,或者pickle、ONNX等格式。我想在这里写一个完整的列表,以及它们的支持语言

然后,您可以在生产中部署这些保存的模型。在生产中,您应该拥有自己开发的应用程序来运行保存的模型(例如:您使用Python开发的应用程序需要经过训练

对于第二个问题;如上所述,答案表明问题在于模型的“在线训练能力”。请另外注意:;对于“在线学习”,您的生产环境还必须为您的生产工具/系统提供真正正确的测试数据标签。你会有这种能力吗?

注意:以上都只是小的“评论”而不是一个明确的答案,但从技术上来说,我还不能写评论。感谢没有取消投票:)

罗宪
2023-03-14

免责声明:我为这家公司工作,Datmo为ML构建了一个更好的工作流程。我们一直在寻找帮助在ML上工作的开发人员,所以如果你有任何问题,请随时anand@datmo.com联系我。

1) 为了进行部署,您应该首先将代码拆分为预处理、培训和测试。这样,您可以轻松封装部署所需的组件。通常情况下,您会希望进行预处理、测试以及权重文件(训练过程的输出),并将它们放在一个文件夹中。接下来,您将希望在服务器上托管此项,并围绕此包装一个API服务器。我建议使用Flask Restful API,以便您可以使用查询参数作为输入,并以标准JSON blob输出响应。

要将其托管在服务器上,您可以使用本文,其中讨论了如何在 EC2 上部署 Flask API。

您可以加载和建模并将其用作此代码中给出的API。

2) 如果没有更多细节,我很难回答。它高度依赖于数据类型和模型类型。例如,对于深度学习,不存在在线学习。

郑卜鹰
2023-03-14

我不确定这是否是一个好问题(因为它太笼统了,而且表述得不好),但我建议您阅读有关偏差 - 方差权衡的信息。长话短说,您可能拥有低偏差\高方差机器学习模型,并在测试数据(用于实现模型的数据)上获得 100% 准确的结果,但可能会导致模型过度拟合训练数据。因此,当您尝试在训练期间未使用的数据上使用它时,将导致性能不佳。另一方面,您可能具有高偏差\低方差模型,该模型与您的训练数据拟合不佳,并且在新的生产数据上也会表现得同样糟糕。牢记这一点的一般准则是:

1) 获取大量数据,用于构建机器学习系统的原型

2)将数据分为训练集、交叉验证集和测试集

3)创建一个模型,该模型对您的测试数据具有相对较低的偏差(良好的准确性,实际上是良好的F1分数)。然后在交叉验证集上尝试这个模型,看看结果。如果结果不好——你有一个高方差问题,你使用的模型过度拟合数据,不能很好地概括。重写你的模型,调整模型参数或者使用不同的算法。重复,直到你在CV集上得到一个好的结果

4)由于我们使用模型是为了在CV集上获得良好的结果,因此您想在测试集上测试您的最终模型。如果它是好的-就是这样,您就有了模型的最终版本,并且可以在prod环境中使用它。

第二个问题没有答案,它基于您的数据和您的应用程序。但是可以使用 2 种通用方法:

1)做我前面提到的所有事情,建立一个在测试集上具有良好性能的模型。在一段时间内根据新数据重新训练您模型(尝试不同的时期,但是当您看到模型的性能下降时,您可以尝试重新训练您的模型)。

2)使用在线学习方法。这不适用于许多算法,但在某些情况下可以使用。一般来说,如果你看到你可以使用随机梯度下降学习方法——你可以使用在线学习,只要让你的模型与最新的生产数据保持同步。

请记住,即使您使用#2(在线学习方法),您也不能确定您的模型将永远有效。迟早您获得的数据可能会发生重大变化,您可能希望使用完全不同的模型(例如切换到ANN而不是SWM或逻辑回归)。

 类似资料:
  • 删除警告 为了减少文件大小,Vue 精简独立版本已经删除了所有警告,但是当你使用 Webpack 或 Browserify 等工具时,你需要一些额外的配置实现这点。 Webpack 使用 Webpack 的 DefinePlugin 来指定生产环境,以便在压缩时可以让 UglifyJS 自动删除代码块内的警告语句。例如配置: var webpack = require('webpack') mo

  • Kibana5 是是一个完整的 web 应用。使用时,你需要做的只是打开浏览器,然后输入你运行 Kibana 的机器地址然后加上端口号。比如说:localhost:5601 或者 http://YOURDOMAIN.com:5601。 但是当你准备在生产环境使用 Kibana5 的时候,比起在本机运行,就需要多考虑一些问题: 在哪运行 kibana 是否需要加密 Kibana 出入的流量 是否需要

  • 主要内容:Python,NumPy,Pandas ,Scikit-Learn常言道“工欲善其事,必先利其器”,在学习机器学习算法之前,我们需要做一些准备工作,首先要检查自己的知识体系是否完备,其次是要搭建机器学习的开发环境。本教程以讲解算法为主,不会涉及太复杂的应用案例,在讲解过程中会穿插一些示例代码,这样不仅能够帮助你理解算法原理,同时又能让你体会到算法的应用过程。 机器学习的研究方向有很多,比如图像识别、语音识别、自然语言处理、以及深度学习等,因此它是一门较为复杂的技

  • 我已经准备好了机器学习算法。我想在一个拥有70个城市的国家将其投入生产。但在将其推广到 70 个城市之前,我想在 1 个城市进行实验,以评估它在生产中的性能。但是,我现在面临一个问题,如果出现以下情况,我应该设置什么标准:1. 时间(我可以将其投入生产多少个月)2.数据(在实时环境中我需要多少数据来评估算法性能) 任何人都可以在生产环境中指导此机器学习实验吗? 编辑:我正在将机器学习应用于美国的价

  • 标签(空格分隔): EBOOKCHAIN PM2 NODEJS [TOC] 前言 部署前请先安装Ebookcoin 请参考官方wiki:https://github.com/Ebookcoin/ebookcoin/wiki/ pm2简介 Node.js默认单进程运行,对于32位系统最高可以使用512MB内存,对于64位最高可以使用1GB内存。对于多核CPU的计算机来说,这样做效率很低,因为只有一个

  • 我使用内置的线性学习算法训练了AWS SageMaker模型。我可以从S3下载经过训练的模型工件(model.tar.gz)。 如何在独立于AWS的本地环境中部署模型,以便在不访问internet的情况下进行预测和推断调用?