第 11 章. 监控和更新模型
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
部署模型后,应像监控其他软件系统一样监控其性能。就像在"测试您的 ML 代码 "中一样,常规的软件最佳实践也适用。与"测试您的 ML 代码 "中一样,在处理 ML 模型时还需要考虑其他事项。
在本章中,我们将介绍在监控 ML 模型时需要注意的关键方面。更具体地说,我们将回答三个问题:
-
为什么要监控我们的模型?
-
我们如何监控我们的模型?
-
我们的监测应推动哪些行动?
让我们从监控模型如何帮助决定何时部署新版本或在生产中发现问题开始。
监测拯救生命
监测的目标是跟踪系统的健康状况。对于模型而言,这意味着监测其性能和预测质量。
如果用户习惯的改变突然导致模型产生不合格的结果,一个好的监控系统可以让你尽早发现并做出反应。下面我们就来介绍一下监控系统可以帮助我们发现的一些关键问题。
监测以告知刷新率
我们在"新鲜度和分布转移 "一文中看到,大多数模型需要定期更新才能保持一定的性能水平。监控 可以用来检测模型何时不再新鲜,何时需要重新训练。
例如,我们可以利用从用户那里获得的隐式反馈(例如他们是否点击了推荐)来估算模型的准确性。如果我们持续监控模型的准确性,那么一旦准确性低于规定的阈值,我们就可以训练一个新的模型。图 11-1显示了这一过程的时间轴,当准确率下降到阈值以下时,就会发生重新训练事件。
图 11-1. 监控触发重新部署
在重新部署更新的模型之前,我们需要验证新模型是否更好。我们将在本节"CI/CD for ML "中介绍如何做到这一点。首先,我们来讨论一下需要监控的其他方面,例如潜在的滥用。
监测以发现滥用
在某些情况下,例如在构建防止滥用或 欺诈检测系统时,有一部分用户会主动攻击模型。在这种情况下,监控就成了检测攻击和估算攻击成功率的关键方法。
监控系统可以使用 异常检测来检测攻击。例如,在跟踪每次登录银行在线门户网站的尝试时,如果登录尝试的次数突然增加了十倍,监控系统就会发出警报,这可能是攻击的迹象。
如图 11-2 所示,这种监控可以根据越过的阈值发出警报,也可以包括更细微的指标,如登录尝试的增加率。根据攻击的复杂程度,建立一个比简单阈值更细微的模型来检测此类异常情况可能很有价值。
图 11-2. 监控仪表板上的明显异常。您可以建立一个额外的 ML 模型来自动检测它。
除了监控新鲜度和检测异常,我们还应该监控哪些指标?
选择监控内容
软件应用 通常会监控一些指标,如处理请求所需的平均时间、未能处理的请求比例以及可用资源量。这些指标对任何生产服务的跟踪都很有用,可以在过多用户受到影响之前进行主动补救。
接下来,我们将介绍更多监测指标,以检测模型的性能何时开始下降。
性能指标
如果数据分布开始发生变化, 模型就会变得陈旧。如图 11-3 所示。
图 11-3. 地物分布漂移示例
说到分布转移,数据的输入和输出分布都会发生变化。以一个试图猜测用户下一步会看哪部电影的模型为例。在输入相同的用户历史记录的情况下,模型的预测应该根据可用电影目录中的新条目而改变。 ...