为什么要监控模型?
监控机器学习模型的原因有很多。它使您能够分析预测的准确性、消除预测错误并调整模型以确保最佳性能。
消除不良泛化
由于缺乏标记数据或其他计算限制,机器学习模型通常在总域内数据的一小部分数据上进行训练。尽管构建模型是为了减少偏差,但这种做法会导致泛化性差。结果,输出数据样本将不准确或效率低下。监控模型可以解决这个问题。它可以帮助您创建平衡且准确的模型,而不会过度拟合或欠拟合数据。
消除参数随时间变化的问题
基于特定时间的变量和参数优化模型。在部署模型时,相同的参数将变得微不足道。例如,5 年前创建的情感模型可能会错误地对某些单词或短语的情感进行分类。因此,预测将是不准确的。模型监控使您能够通过帮助您分析模型在很长一段时间内对真实数据的执行情况来解决问题。
确保预测的稳定性
机器学习模型的输入不是独立的。因此,系统任何部分的变化,包括超参数和采样方法,都可能导致不可预测的变化。模型监控通过跟踪各种稳定性指标来确保高度稳定的预测,包括群体稳定性指数 (PSI) 和特征稳定性指数 (CSI)。
机器学习模型清单:您应该跟踪什么?
您应该密切关注这些事情,以使您的机器学习模型在现实生活中取得成功:
1. 数据分布变化
每个机器学习模型都会随着时间的推移而退化。在更改模型输入时,您可能会遇到数据漂移。当模型接收到它在训练中没有看到的数据时,性能会显着下降。模型监控可帮助您有效地识别与性能相关的问题。
让我们想想大流行病造成的严峻形势。它极大地影响了客户的行为,因为许多人失去了工作。因此,他们对营销活动的反应与前几年截然不同。
这就是为什么尽早获得有关数据分布变化的信号很重要的原因。因此,您可以相应地更新模型。通过监控模型,您可以跟踪关键模型特征和模型预测的分布。如果数据分布的变化与过去显著不同,您可以触发警报以对模型进行必要的更新。
2. 性能改变
模型监控可帮助您跟踪性能变化。因此,您可以确定模型的执行情况。此外,它还可以帮助您了解如何在出现问题时有效地进行调试。
跟踪模型性能改变最直接的方法是不断评估真实数据的性能。您可以将预测值与实际值进行比较,以确定模型是否运行良好。此外,您可以触发自定义通知,以获取有关指标任何重大变化的信息,例如:准确率和精确率。
3. 健康指标/运营指标
您需要密切关注系统性能,包括 CPU、内存、磁盘和网络 I/O 的使用情况。分析这些指标对于确保机器学习服务全面运行非常重要。
Valohai 部署中内置了健康指标。还有各种工具,例如:Grafana,可用于跟踪机器学习系统的运行状况。它们允许您方便地查询和可视化指标。此外,您可以为最重要的指标定义警报规则。
4. 数据完整性
数据完整性是指数据在其整个生命周期内的可靠性。您必须确保数据准确无误。有多种方法可以做到这一点,包括错误检查和验证。
您必须检查数据分布、特征统计和相关性中的错误以确保完整性。有不同的工具可以帮助您。例如,Great Expectations,以促进数据管道的分析完整性。作为传统持续集成 (CI) 工作流程的一部分,它会测试、记录和分析您的数据管道。以这种方式检查数据完整性可以为您节省大量时间。
5. 分段性能
通过分段跟踪性能,您可以深入了解特定切片上的模型质量。它可以帮助您找到关键区域,例如:机器学习模型在哪里出错以及在哪里表现最好。
您可能已经定义了要监控的细分市场,例如:高端客户与企业整体消费者的模型准确性。要按细分跟踪性能,您将需要仅针对已定义细分内的对象自定义质量指标。
此外,您应该寻找低性能的细分市场。让我们考虑一个您正在研究车辆定价模型的场景。如果它不断建议高于特定地区的实际报价,您应该记下它并找到提高准确性的解决方案。
6. 偏见/公平
监控偏差确保所有子组和跟踪合规性都得到公平对待。在医疗保健和金融等关键领域,模型决策可能会产生严重影响,这是一个非常重要的因素。
作为模型的创建者,您必须了解不同情况下的性能差异。例如,不同人口统计群体的模型性能可能会因其在训练数据中的表现而异。您可以使用在线提供的不同工具来解决此问题。
小结
模型监控正在成为机器学习在生产中成功应用的核心组成部分。上面的清单将为实施彻底的模型监控提供有价值的考虑,以确保生产中持续不变的性能。
在 Valohai 中如何监控模型?
Valohai 是一个独立的 MLOps 平台。 它专注于提供一个基础设施来收集、版本化和可视化现在和未来可以想象的任何指标。 最终取决于数据科学家来确定哪些指标是值得的,以及如何为每个模型计算它们。
生产中的模型在操作系统级别与 Valohai 通信,这意味着它收集并存储您的进程内部打印的所有内容,无论是错误堆栈跟踪、模型指标还是健康信息。
第 1 步:存储指标
一旦用户选择了哪些指标值得跟踪以及如何计算它们,就该将它们展示给平台了。
Valohai 始终存储所有原始日志,但为了将指标与其他指标分开,它们需要打印为带有特殊键 vh_metadata
的 JSON 字典。 Valohai 提供了一个 Python 实用程序来简化此操作,但专家也可以打印原始 JSON。
示例代码:
c = calculate_response_confidence() # Stored as a raw log print(f”Confidence: {c}”) # Stored as a metric print(“{'vh_metadata': {'confidence': c}}”) # Stored as a metric (alternative) import valohai logger = valohai.logger() logger.log(“confidence”, c) 复制代码
第 2 步:在 UI 中可视化指标
一旦 Valohai 从原始日志中解析出指标,就可以使用 Valohai 部署监控 UI 随着时间的推移对其进行可视化,用户可以在其中分析任何选定时间范围的日志和指标。
三种不同的监控视图:
- 日志
- 折线图
- 直方图
在日志视图中,用户可以监视选定时间范围内的原始日志。为了方便起见,打印到stdout和stderr的内容颜色不同,时间戳自然由平台自动处理。此视图主要用于调试目的。
直方图将所选时间步长的数据与Count(计数)、Min(最小值)、Max(最大值)、Mean(平均值)和Sum(总和)进行聚合,以更好地了解长期漂移和异常。