多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 将预测模型部署到生产中 > 原文: [https://machinelearningmastery.com/deploy-machine-learning-model-to-production/](https://machinelearningmastery.com/deploy-machine-learning-model-to-production/) ### 5个实现机器学习的最佳实践。 并非所有预测模型都是Google规模的。 有时,您需要开发一个小型预测模型,并将其放入软件中。 我最近收到了这个读者问题: > 实际上,我对机器学习的知识缺少一部分。在构建机器学习模型之前,所有教程都会为您提供相应的步骤。你怎么能用这个模型? 在这篇文章中,我们将介绍一些最佳实践,以简化模型到生产的过渡,并确保您充分利用它。 ![How To Deploy Your Predictive Model To Production](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2016/09/How-To-Deploy-Your-Predictive-Model-To-Production.jpg) 如何将您的预测模型部署到生产 照片由 [reynermedia](https://www.flickr.com/photos/89228431@N06/11285592553/) ,保留一些权利。 ## 我有一个模特。怎么办? 因此,您已经完成了一个系统化的过程,并创建了一个可靠且准确的模型,可以预测您的问题。 你想以某种方式使用这个模型。 * 也许你想创建一个可以进行临时预测的独立程序。 * 也许您希望将模型合并到现有软件中。 我们假设您的软件是适度的。您不是在寻找Google规模的部署。也许它只适合你,也许只是一个客户或者可能是一些工作站。 **到目前为止还不错?** 现在,我们需要了解一些最佳实践,以便将准确可靠的模型投入运营。 ## 5模型部署最佳实践 为什么不将模型打入您的软件并发布? 你可以。但是,通过添加一些额外的步骤,您可以确信您正在部署的模型是可维护的并且长期保持准确。 **您是否已将模型投入生产?** **请发表评论并分享您的经历。** 在将预测模型部署到生产环境中时,您可以采取以下五个最佳实践步骤。 ### 1.指定表现要求 你需要清楚地说明什么是好的和坏的表现。 这可能是准确性或误报或任何指标对业务都很重要。 拼出,并使用您开发的当前模型作为基线数字。 随着您改进系统,这些数字可能会随着时间的推移而增加。 表现要求很重要。没有它们,您将无法设置确定系统是否按预期运行所需的测试。 在达成最低,平均或表现范围预期之前,请不要继续。 ### 2.从模型系数中分离预测算法 您可能已使用库来创建预测模型。例如,R,scikit-learn或Weka。 您可以选择使用该库部署模型,或者在软件中重新实现模型的预测方面。您甚至可能希望[将您的模型设置为Web服务](https://www.quora.com/What-is-the-easiest-way-to-deploy-a-machine-learning-model-say-a-regression-for-production)。 无论如何,最好将从模型内部进行预测的算法分开。这是从训练数据中学习的模型中的特定系数或结构。 #### 2A。选择或实施预测算法 机器学习算法的复杂性通常在模型训练中,而不是在进行预测。 例如,使用回归算法进行预测非常简单,并且易于以您选择的语言实现。这将是重新实现的明显算法的示例,而不是模型训练中使用的库。 如果您决定使用该库进行预测,请熟悉API和依赖项。 用于进行预测的软件就像应用程序中的所有其他软件一样。 **像软件一样对待它。** 实现它,编写单元测试,使其健壮。 #### 2B。序列化您的模型系数 让我们调用模型学习的数字或结构:_系数_。 这些数据不是您的应用程序的配置。 **将其视为软件配置。** 使用软件项目将其存储在外部文件中。版本吧。将配置视为代码,因为它可以轻松破坏您的项目。 随着您改进模型,您很可能需要在将来更新此配置。 ### 3.为您的模型开发自动化测试 您需要自动化测试来证明您的模型按预期工作。 在软件领域,我们所有这些回归测试。随着我们对系统的不同部分进行更改,它们确保软件未来的行为不会退化。 为您的模型编写回归测试。 * 收集或提供一小部分数据样本进行预测。 * 使用生产算法代码和配置进行预测。 * 确认测试中预期的结果。 这些测试是你的预警警报。如果它们失败,您的模型将被破坏,您无法发布软件或使用该模型的功能。 使测试严格执行模型的最低表现要求。 除了要包含的域中的任何原始数据集之外,我强烈建议设计您理解的测试用例。 我还强烈建议随着时间的推移收集异常值和有趣的案例,这些案例会产生意外结果(或破坏系统)。这些应该被理解并添加到回归测试套件中。 每次代码更改后和每次发布之前运行回归测试。每晚运行它们。 ### 4.开发反向测试和现在测试基础设施 模型将发生变化,软件和正在进行预测的数据也将发生变化。 您希望使用大型数据库上的指定配置自动评估生产模型。 这将允许您有效地回溯测试历史数据模型的更改,并确定您是否真正做出了改进。 这不是可用于超参数调整的小数据集,这是可用的全套数据,可能按月,年或其他一些重要分界进行划分。 * 将当前运营模型运行到基准表现。 * 运行新模型,竞争进入运营的地方。 设置完成后,每晚或每周运行一次,并自动报告。 **接下来,添加一个Now-Test。** 这是对最新数据的生产模型的测试。 也许这是今天,本周或本月的数据。我们的想法是获得一个早期警告,即生产模型可能会步履蹒跚。 这可能是由内容漂移引起的,其中模型利用的数据中的关系随着时间的推移而微妙地变化。 如果表现低于最低表现要求,此Now-Test还可以吐出报告并发出警报(通过电子邮件)。 ### 5.挑战然后试用模型更新 您需要更新模型。 也许您设计了一个需要新代码和新配置的全新算法。重温以上所有要点。 更小且更易于管理的变化将是模型系数。例如,您可能设置了每晚运行的模型超参数的网格或随机搜索,并吐出新的候选模型。 **你应该这样做。** 测试模型并且非常关键。给每个模型一个新的模型。 使用上面第4点中的Back-Test和Now-Test基础架构评估新模型的表现。仔细检查结果。 使用回归测试评估更改,作为最终的自动检查。 测试使用该模型的软件的功能。 也许可以将更改推送到某些位置或测试版中以获得反馈,同样可以降低风险。 一旦您确信它满足最低表现要求并且优先于之前的结果,请接受您的新模型。 像棘轮一样,考虑随着模型表现的提高,逐步更新表现要求。 ## 摘要 将小型模型添加到操作软件是非常可行的。 在这篇文章中,您发现了5个步骤,以确保您覆盖您的基础并遵循良好的工程实践。 总之,这些步骤是: 1. 指定表现要求。 2. 从模型系数分离预测算法。 3. 为您的模型开发回归测试。 4. 开发反向测试和现在测试基础设施。 5. 挑战然后试用模型更新。 如果您对有关操作机器学习模型的更多信息感兴趣,请查看帖子: * [建立生产机器学习基础设施](http://machinelearningmastery.com/building-a-production-machine-learning-infrastructure/) 这更多是关于Google规模的机器学习模型部署。观看所提及的视频,并查看AirBnB和Etsy生产管道的重要链接。 您对此帖子有任何疑问或将您的模型投入生产吗? 在评论中提出您的问题,我会尽力回答。