ML 可观测性:随时间推移监控模型行为¶
模型行为可能因输入漂移、训练假设过时、数据管道问题以及底层硬件和软件变更、流量波动等常见因素而随时间发生变化。ML 可观测性使您能够通过 Snowflake Model Registry,从性能、漂移和数量等多个维度追踪已部署生产模型的质量。
目前,模型监控支持回归和二元分类模型。
备注
要深入了解并开始使用 ML 可观测性,请参阅 快速入门 (https://quickstarts.snowflake.com/guide/getting-started-with-ml-observability-in-snowflake/index.html#0)。
ML 可观测性工作流程¶
当您使用已在 Snowflake Model Registry 中记录的模型进行推理时,您将收到 Snowpark 或 Pandas DataFrame 形式的结果,具体取决于传递给推理方法的输入 DataFrame 的类型。这些数据通常来源于 Snowflake。即使在 Snowflake 之外运行推理,也常会将结果存储在 Snowflake 中。ML 可观测性允许您通过处理存储的推理数据来监控模型在这两种情境下的性能。典型的工作流程如下所示。

监控日志存储推理数据和预测,以便 ML 可观测性功能可以观察预测随时间的变化情况。监控日志存储在包含 ID、时间戳、特征、预测和真相标签的表中,指明给定行是预测数据还是观察到的数据。基本结构如下所示。

您必须为要监控的每个模型版本显式创建模型监控对象。每个模型版本可以有一个监控器,每个监控器可以监控一个模型版本;它们不能共享。监控对象通过查询源数据自动刷新监控日志,并根据日志更新监控报告。
每个监控器封装以下信息:
要监控的模型版本。
存储监控日志的表。
数据存储的最小时间粒度(聚合窗口),当前最少为 1 天。
用于比较性指标操作(如漂移)的可选基线表。
先决条件¶
在开始之前,请确保您满足以下条件:
Snowflake 账户。
snowflake-ml-python
Python 包的版本 1.7.1 或更高版本。
创建模型监控器¶
使用 CREATE MODEL MONITOR 命令创建模型监控器。必须在受监控的模型版本所在的架构中创建模型监控器。您必须对在其中创建监控器的架构拥有 CREATE MODEL MONITOR 权限。最多可以为每个账户创建 250 个模型监控器。
有关 CREATE MODEL MONITOR 命令的更多详细信息,请参阅 CREATE MODEL MONITOR。
小技巧
有关可与模型监控器配合使用的其他 SQL 命令的详细信息,请参阅 模型监控命令。
暂时停止和恢复监控¶
您可以使用以下命令暂停(暂时停止)模型监控器:ALTER MODEL MONITOR ...SUSPEND。要恢复监控,请发出 ALTER MODEL MONITOR ... RESUME。
刷新失败时自动暂停¶
模型监控器在遇到与源表相关的连续五次刷新失败后会自动暂停刷新。您可以使用 DESCRIBE MODEL MONITOR 命令查看刷新暂停的状态和原因。输出包含以下列:
aggregation_status
:此列中的值是 JSON 对象。如果模型监控器暂停,则此对象中的一个或多个值将为 SUSPENDED。aggregation_last_error
:此列中的值是一个 JSON 对象,其中包含导致暂停的特定 SQL 错误。
解决刷新失败的根本原因后,您可以通过发出 ALTER MODEL MONITOR ...RESUME 来恢复监控器。
查看监控报告¶
要查看监控报告,请访问 Snowsight 中的 ML Monitoring 仪表板。在 Snowsight 导航窗格中,请选择 AI & ML,然后选择 Models。生成的列表包含您当前角色有权访问的所有数据库和架构内 Snowflake Model Registry 中的所有模型。
通过选择 Models 列表中的相应行打开模型的详细信息页面。详细信息页面显示关键模型信息,包括模型的描述、标签、版本和监控器。
详细信息页面中的 Monitors 列表显示模型监控器列表、监控器附加到的模型版本及其状态和创建时间。
通过选择“Monitors”列表中的相应行打开模型监控器仪表板页面。仪表板中填充了图表,展示了模型随时间变化的关键指标。显示的实际图表取决于监控器基于的模型类型(即二进制分类还是回归)。
在仪表板中,您可以执行以下操作:
通过点击时间范围选择器更改图表的范围。
点击 Settings 按钮更改显示的图表。(将鼠标悬停在指标名称上可查看有关该指标的详细信息。)
点击 Compare 模型选择器下拉列表来比较模型监控器。
选择 Display monitor details 显示有关模型监控器的更多信息。
查询监控结果¶
您创建的每个模型监控器都有以下指标:
偏移指标:分布变更或数据偏移
性能指标:分布变更或数据偏移
统计指标:计数或空值
要查询监控器计算的指标,请使用监控器指标函数。指标函数会从模型监控器对象获取指标。您可以使用指标函数的结果在 Streamlit 或其他集中式监控工具中创建自定义仪表板。
重要
您必须具有以下权限才能使用模型监控器对象:
命令 |
所需权限 |
---|---|
CREATE MODEL MONITOR |
|
SHOW MODEL MONITORS |
模型监控器的任意权限 |
DESCRIBE MODEL MONITOR |
模型监控器的任意权限 |
ALTER MODEL MONITOR |
模型监控器的 MODIFY 权限 |
DROP MODEL MONITOR |
模型监控器的 OWNERSHIP 权限 |
使用以下 SQL 模板从模型监控器获取偏移指标。
SELECT *
FROM TABLE(MODEL_MONITOR_DRIFT_METRIC (
<model_monitor_name>,
<drift_metric_name>,
<column_name>,
<granularity>,
<start_time>,
<end_time>
)
)
使用以下 SQL 模板从模型监控器获取性能指标。
SELECT *
FROM TABLE(MODEL_MONITOR_PERFORMANCE_METRIC (
<model_monitor_name>,
<metric_name>,
<granularity>,
<start_time>,
<end_time>
)
)
使用以下 SQL 模板从模型监控器获取统计指标。
SELECT *
FROM TABLE(MODEL_MONITOR_STAT_METRIC (
<model_monitor_name>,
<metric_name>,
<granularity>,
<start_time>,
<end_time>
)
)
您可以为监控指标设置警报和通知。有关更多信息,请参阅 警报和通知。
已知限制¶
以下限制适用于模型监控器:
监控器必须与模型版本位于同一个数据库和架构中。
仅支持单输出回归和二元分类模型。
至少需要一个预测列(类别或分数);实际列是可选的,但准确性指标是必需的。
偏移计算需要基准数据;如果没有基准数据,要添加基准数据,必须删除监控器并重新创建。
每列在监控器中只能使用一次。例如,不能使用与该列和预测 ID 列相同的列。
数据不得包含无效值(空值、NaNs、+/-Inf、0-1 以外的概率分数、非二进制类别或 PREDICTION_CLASS_COLUMNS 列中超过两个类别),以避免监控器出现故障和暂停。
时间戳列的类型必须为
TIMESTAMP_NTZ
;预测列和实际列必须为NUMBER
。必须以天为单位指定聚合窗口。
最多可以监控 500 个功能。
最多可以创建 250 个监控器。
成本注意事项¶
虚拟仓库计算:
模型监控器会使用虚拟仓库,在创建和每次刷新期间都会产生成本。
加载 Snowsight 仪表板还会使用虚拟仓库,从而产生额外费用。
存储:
模型监控器将源数据物化为存储在账户中的表。
云服务计算:
当底层基础对象发生更改时,模型监控器使用云服务计算来触发刷新。只有当账户的每日云服务计算费用超过每日仓库费用的 10% 时,才会收取云服务计算费用。