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