模型监控概览
本文档介绍了 BigQuery ML 如何通过评估和比较模型使用的数据来监控机器学习 (ML) 模型。 这包括将模型的应用数据与其训练数据进行比较,以及将新的应用数据与之前使用的应用数据进行比较。
了解模型使用的数据是机器学习的一个关键方面,因为此数据会影响模型性能。了解训练数据与应用数据之间的任何差异对于确保模型随时间推移而保持准确尤为重要。模型在使用与训练数据类似的应用数据时表现最佳。当应用数据与用于训练模型的数据存在差异时,即使模型本身未更改,模型的性能也会降低。
BigQuery ML 提供的函数可帮助您分析训练和应用数据是否存在数据偏差和数据偏移:
- 当训练数据的特征值分布与生产环境中应用数据存在显著差异时,就会发生数据偏差。模型的训练统计信息会在模型训练期间保存,因此使用偏差检测不需要原始训练数据。
- 当生产环境中的特征数据分布随时间发生显著变化时,就会发生数据偏移连续的数据跨度支持偏移检测,例如,在不同的应用数据日期之间。这样,在数据集数据偏离太多而无法重新训练模型之前,如果应用数据会随时间变化,您可以收到通知。
使用以下函数在 BigQuery ML 中监控模型:
ML.DESCRIBE_DATA
:计算一组训练或应用数据的描述性统计信息。ML.VALIDATE_DATA_SKEW
:计算一组应用数据的统计信息,然后将其与训练 BigQuery ML 模型时计算的训练数据统计信息进行比较,以识别两个数据集之间的异常差异。仅针对应用数据中与训练数据中的特征列匹配的特征列计算统计信息,以获得更好的性能并降低费用。ML.VALIDATE_DATA_DRIFT
:计算和比较两组应用数据的统计信息,以识别两个数据集之间的异常差异。ML.TFDV_DESCRIBE
:计算一组训练或传送数据的精细描述性统计信息。此函数提供与 TensorFlowtfdv.generate_statistics_from_csv
API 相同的行为。ML.TFDV_VALIDATE
:比较训练和应用数据的统计信息,或两组应用数据统计信息,以识别两个数据集之间的异常差异。此函数提供与 TensorFlowvalidate_statistics
API 相同的行为。
监控应用场景
本部分介绍如何在常见监控应用场景中使用 BigQuery ML 模型监控函数。
基本数据偏差监控
如果您希望快速开发和监控数据倾斜模型,并且不需要精细的倾斜统计信息与现有监控解决方案集成,则适合使用此应用场景。
此应用场景的典型步骤如下:
- 对训练和应用数据运行
ML.DESCRIBE_DATA
函数,以确保两个数据集彼此进行适当比较,并且都在预期的参数范围内。 - 创建 BigQuery ML 模型并根据训练数据进行训练。
- 运行
ML.VALIDATE_DATA_SKEW
函数,将应用数据统计信息与在创建模型期间计算的训练数据统计信息进行比较,以查看是否存在任何数据倾斜。 - 如果存在数据倾斜,请调查根本原因,适当调整训练数据,然后重新训练模型。
基本数据偏移监控
如果您希望快速开发和监控数据偏移模型,并且不需要精细的偏移统计信息与现有监控解决方案集成,则适合此应用场景。
此应用场景的典型步骤如下:
- 对训练和应用数据运行
ML.DESCRIBE_DATA
函数,以确保两个数据集彼此进行适当比较,并且都在预期的参数范围内。 - 创建 BigQuery ML 模型并根据训练数据进行训练。
- 运行
ML.VALIDATE_DATA_DRIFT
函数来比较两个不同应用数据集的统计信息,以查看是否存在任何数据偏移。例如,您可能希望将当前应用数据与表快照中的历史应用数据进行比较,或与特定时间点传送的特征进行比较,您可以使用ML.FEATURES_AT_TIME
函数获取这些特征。 - 如果存在数据偏移,请调查根本原因,适当调整训练数据,然后重新训练模型。
高级数据偏差或偏移监控
如果您希望将精细的偏差或偏移统计信息与现有监控解决方案集成或用于其他目的,则适合此应用场景。
此应用场景的典型步骤如下:
- 按照适合监控解决方案的时间间隔对训练和应用数据运行
ML.TFDV_DESCRIBE
函数,并保存查询结果。此步骤可让您将未来的应用数据与过去时间点的训练和应用数据进行比较。 对训练和应用数据统计信息或两组应用数据统计信息运行
ML.TFDV_VALIDATE
函数,以分别评估数据倾斜或特征偏移。训练和应用数据必须采用 JSON 格式以 TensorFlowDatasetFeatureStatisticsList
协议缓冲区的形式提供。您可以通过运行ML.TFDV_DESCRIBE
函数以正确格式生成协议缓冲区,也可以从 BigQuery 外部加载它。以下示例展示了如何评估特征偏差:DECLARE stats1 JSON; DECLARE stats2 JSON; SET stats1 = ( SELECT * FROM ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.training`) ); SET stats2 = ( SELECT * FROM ML.TFDV_DESCRIBE(TABLE `myproject.mydataset.serving`) ); SELECT ML.TFDV_VALIDATE(stats1, stats2, 'SKEW'); INSERT `myproject.mydataset.serve_stats` (t, dataset_feature_statistics_list) SELECT CURRENT_TIMESTAMP() AS t, stats1;
如果存在数据倾斜或数据偏移,请调查根本原因,适当调整训练数据,然后重新训练模型。
监控自动化
您可以使用预定查询运行监控函数、评估输出并在检测到异常时重新训练模型,从而自动进行监控。您必须在设置预定查询的过程中启用电子邮件通知。
如需查看演示如何自动执行 ML.VALIDATE_DATA_SKEW
函数的示例,请参阅自动执行偏差检测。