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

  发布于 2022-12-07 10:44

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

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

2)机器学习教程中的典型方法是使用一些训练数据构建模型,用它来测试数据.但是在生产环境中使用这种模型是否明智?传入的数据可能会不断变化,因此模型将无效.模型刷新周期应该是什么持续时间来适应这些变化?

2 个回答
  • 免责声明:我在这家公司工作,Datmo为ML构建了更好的工作流程。我们一直在寻求帮助从事ML的其他开发人员,如果您有任何疑问,请随时通过anand@datmo.com与我联系。

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

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

    您可以按照此代码中的 API进行加载和建模并将其用作API 。

    2)我很难在没有更多细节的情况下回答。它高度依赖于数据类型和模型类型。例如,对于深度学习,没有在线学习之类的东西。

    2022-12-11 01:59 回答
  • 我不确定这是不是一个好问题(因为它太笼统而且没有表现好),但我建议你阅读偏差 - 方差权衡.简而言之,您可以使用低偏差\高差异机器学习模型,并在测试数据(您用于实现模型的数据)上获得100%准确的结果,但是您可能会使您的模型过度拟合训练数据.因此,当您尝试在训练期间未使用的数据上使用它时,将导致性能不佳.另一方面,您可能具有高偏差\低方差模型,这将很难适应您的训练数据,并且在新的生产数据上也会表现差.记住一般准则将是:

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

    2)将您的数据拆分为列车集,交叉验证集和测试集

    3)创建一个模型,该模型在测试数据上具有相对较低的偏差(良好的准确性,实际上 - 良好的F1分数).然后在交叉验证集上尝试此模型以查看结果.如果结果不好 - 您的方差问题很大,那么您使用了一个过度拟合数据并且不能很好地推广的模型.重写模型,使用模型参数或使用不同的算法.重复,直到你在CV集上得到一个好的结果

    4)由于我们使用模型以便在CV集上获得良好的结果,因此您希望在测试集上测试最终模型.如果它是好的 - 就是这样,你有一个模型的最终版本,可以在prod环境中使用它.

    第二个问题没有答案,它基于您的数据和您的应用程序.但可能会使用两种通用方法:

    1)做我之前提到的所有内容来构建一个在测试集上具有良好性能的模型.在一段时间内重新训练您的模型新数据(尝试不同的时期,但是一旦您看到模型的性能下降,您可以尝试重新训练您的模型).

    2)使用在线学习方法.这不适用于许多算法,但在某些情况下可以使用它.通常,如果您发现可以使用随机梯度下降学习方法 - 您可以使用在线学习,并使您的模型与最新的生产数据保持同步.

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

    2022-12-11 02:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有