启动监控和维护机器学习系统

Posted 多源信息融合的瓦斯灾害预测

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动监控和维护机器学习系统相关的知识,希望对你有一定的参考价值。

  在实际机器学习项目中,当你完成你的机器学习模型并已获准启动生产环境!现在,你需要准备好解决方案以进行上线(例如,完善代码、编写文档和测试等)。然后你可以将模型部署到生产环境中。一种方法是保存训练好的Scikit-Learn模型(使用joblib),包括完整的预处理和预测流水线,然后在你的生产环境中加载经过训练的模型并通过调用prepare()方法来进行预测。例如,也许该模型在网站内使用:用户将输入有关新地区的一些数据,然后单击估算价格按钮。这将发送一个查询,其中包含数据发送到Web服务器,然后将其转发到Web应用程序,最后,你的代码调用模型的predict()方法(在服务器启动时加载模型,而不是每次使用模型时都加载模型)。或者,你可以将模型包装在Web应用程序中,使用专用的Web服务,通过RESTAPI来进行查询(参见图2-17)。这样可以轻松地将你的模型升级到新版本,而不会中断主应用程序。这样也简化了扩展,因为可以根据需要来启动任意数量的Web服务,并且平衡那些Web服务上Web应用程序的请求负载。而且,它允许你的Web应用程序使用任何语言,而不仅仅是Python。

另一种流行的策略是将模型部署到云上,例如在Google Cloud AI Platform(以前称为Google Cloud ML Engine)上:只需使用joblib来保存模型并上传到Google Cloud Storage(GCS),然后转到Google Cloud AI Platform并创建一个新的模型版本,将其指向GCS文件。这为你提供了一个简单的Web服务,该服务负责负载平衡和扩展。它接受包含输入数据(例如一个地区)的JSON请求并返回包含预测的JSON响应。然后,你可以在你的网站(或你使用的任何生产环境)中使用此Web服务。

但是部署并不是故事的结束。你还需要编写监控代码以定期检查系统的实时性能,并在系统性能降低时触发警报。由于基础架构中的组件损坏,性能下降可能会很大,但也有可能是轻微的下降,长时间内很容易被忽视。这很常见,因为模型会随着时间的流逝而“腐烂”:的确,世界在变化,因此,如果使用去年的数据对模型进行训练,则可能不会适应今天的数据。

因此,你需要监控模型的实时性能。但是怎么做呢?在某些情况下,可以从下游推断模型的性能指标。例如,如果你的模型是推荐系统的一部分,并且推荐用户可能感兴趣的产品,那么很容易监控每天出售的推荐产品的数量。如果该数字下降(与不推荐相比),那么主要的嫌疑就是模型。这可能是因为数据流水线断开,或者可能需要对新数据重新训练模型。

但是,如果没有人工分析,确定模型的性能并不总是可行的。例如,假设你训练了一个图像分类模型来检测生产线上的产品缺陷。你怎么能在数以千计的次品发货给客户之前,得到模型的性能是否下降的警告?一种解决方案是将一些模型分类的图片(尤其是对模型来说不确定的图片)送给人工评估者。根据任务,评估者可能需要是专家或者非专家,例如众包平台上的工人(例如Amazon Mechanical Turk)。在某些应用中,他们甚至可能是用户自己,通过调查或重新设计的验证码来响应。

无论哪种方式,你都需要建立一个监控系统(是否有人来评估实时模型),以及所有的相关流程,以定义发生故障怎么做以及如何为故障做准备。不幸的是,这可能需要做很多工作。实际上,工作量通常比构建和训练模型要多得多。

如果数据不断发展,则需要更新数据集并定期重新训练模型。你应该使整个过程尽可能地自动化。可以通过以下操作来使其自动化:

·定期收集新数据并做标记(例如,使用人工评估者)。

编写脚本来训练模型并自动微调超参数。该脚本可以根据你的需求(例如每天或每周)自动运行。

编写另一个脚本,该脚本将在更新的测试集上评估新模型和旧模型,如果性能良好则将该模型部署到生产环境中(如果性能降低,请调查原因)。

你还应该确保评估模型的输入数据质量。有时由于信号质量较差(例如故障、传感器发送随机值,或者其他的输出过时了),但是你的系统性能可能需要一段时间才能触发警报。如果你监控模型的输入,则可能会更早一点发现。例如,越来越多的输入缺少某个特征,或者其平均值或标准差偏离训练集太远,或者分类特征中出现了新类别。

最后,请保留每个模型的备份,准备好流程和工具,以便在新模型出现时快速回滚到以前的模型,以防新模型由于某种情况开始出现严重故障。进行备份还可以轻松实现将新模型与以前的模型进行比较。同样,你应该保留每个版本的数据集,以便在新数据集遭到破坏的情况下可以回滚到先前的数据集(如果事实能证明添加到其中的新数据都是离群值)。备份数据集还可以针对任何先前的数据集来评估任何模型。


多源信息融合的煤矿瓦斯灾害预测

以上是关于启动监控和维护机器学习系统的主要内容,如果未能解决你的问题,请参考以下文章

机器学习入门线路

机器学习进阶线路

机器学习项目流程

人工智能机器学习和深度学习,是如何影响视频监控的?

shell+钉钉机器人完成java程序中断后自启动和实时监控

用于监控服务器的机器学习