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 显示有关模型监控器的更多信息。
访问控制要求¶
使用模型监控器对象需要以下权限。
命令 |
所需权限 |
---|---|
CREATE MODEL MONITOR |
|
SHOW MODEL MONITORS |
模型监控器的任意权限 |
DESCRIBE MODEL MONITOR |
模型监控器的任意权限 |
ALTER MODEL MONITOR |
模型监控器的 MODIFY 权限 |
DROP MODEL MONITOR |
模型监控器的 OWNERSHIP 权限 |
模型监控器仪表板 |
模型和模型监控器的 USAGE 权限 |
已知限制¶
以下限制适用于模型监控器:
必须在模型版本受监控的数据库和架构中创建监控器。
目前仅支持单输出回归和二元分类模型。
需要至少一个预测列(类或分数)。实际列是可选的,但在计算精度指标时是必需的。
如果未提供基线数据,则无法计算漂移。您需要删除监控器并再次创建,才能添加基线数据。
给定列在监控器中只能使用一次。例如,不能将同一列同时用作 ID 和预测列。
模型监控器预期您的数据不包含无效值,如空值、NaNs、±Inf、0-1 范围外的概率分数、不是严格意义上 0 或 1 的类,或在 PREDICTION_CLASS_COLUMNS 列中存在两个以上类。此类问题可能会导致监控器出现故障并最终暂停。
时间戳列的类型必须为 TIMESTAMP_NTZ 或 DATE。预测列和实际列的类型必须为 NUMBER。
必须以天为单位指定聚合窗口。
监控的特征数量最多可以达到 500 个。
您最多可以创建 250 个监控器。
成本注意事项¶
- 虚拟仓库计算
模型监控器在虚拟仓库中运行。当用户创建服务时以及每次刷新监控器时,该仓库都会产生成本。在加载关联的 Snowsight 仪表板时也会使用虚拟仓库,并且会产生费用。
- 存储
模型监控器将源数据物化为存储在账户中的表。
- 云服务计算
当底层基础对象发生更改时,模型监控器使用云服务计算来触发刷新。只有当账户的每日云服务计算费用超过每日仓库费用的 10% 时,才会收取云服务计算费用。