# 将预测模型部署到生产环境中

> 原文： [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生产管道的重要链接。

您对此帖子有任何疑问或将您的模型投入生产吗？
在评论中提出您的问题，我会尽力回答。