CREATE MODEL MONITOR¶
在当前或指定架构中创建或替换 模型监控器。
语法¶
CREATE [ OR REPLACE ] MODEL MONITOR [ IF NOT EXISTS ] <monitor_name> WITH
MODEL = <model_name>
VERSION = '<version_name>'
FUNCTION = '<function_name>'
SOURCE = <source_name>
WAREHOUSE = <warehouse_name>
REFRESH_INTERVAL = '<refresh_interval>'
AGGREGATION_WINDOW = '<aggregation_window>'
TIMESTAMP_COLUMN = <timestamp_name>
[ BASELINE = <baseline_name> ]
[ ID_COLUMNS = <id_column_name_array> ]
[ PREDICTION_CLASS_COLUMNS = <prediction_class_column_name_array> ]
[ PREDICTION_SCORE_COLUMNS = <prediction_column-name_array> ]
[ ACTUAL_CLASS_COLUMNS = <actual_class_column_name_array> ]
[ ACTUAL_SCORE_COLUMNS = <actual_column_name_array> ]
[ SEGMENT_COLUMNS = <segment_column_name_array> ]
[ CUSTOM_METRIC_COLUMNS = <custom_metric_column_name_array> ]
必填参数¶
monitor_name指定模型监控器的标识符;在创建监控器的架构中必须唯一,并且必须与被监控的模型位于同一架构。
如果监控器标识符不是完全限定的(以
db_name.schema_name.name或schema_name.name的形式),则该命令将在会话的当前架构中创建模型。此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,
"My object")。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。
MODEL = model_name要监控的模型的名称。必须在创建监控器的同一架构中。
VERSION = 'version_name'要监控的模型版本的名称。
FUNCTION = function_name要监控的模型版本中特定函数的名称。
SOURCE = source_name包含特征、推断和真实标签的源表或视图的名称。
WAREHOUSE = warehouse_name用于监控器内部计算操作的 Snowflake 仓库的名称。
REFRESH_INTERVAL = 'refresh_interval'监控器刷新其内部状态的时间间隔。值必须是表示时间段的字符串,如
'1 day'。支持的单位包括秒、分钟、小时、天、周、月、季度和年。可以使用单数(“hour”)或复(“hours”)形式作为时间间隔的名称,但不得使用缩写。AGGREGATION_WINDOW = 'aggregation_window'监控器汇总数据的窗口。值必须是表示时间段的字符串,如
'1 day'。仅支持天数。您可以使用单数(“day”)或复数(“days”)形式作为时间间隔的名称,但不得使用缩写。TIMESTAMP_COLUMN = timestamp_name源数据中包含时间戳的列的名称。必须为类型 TIMESTAMP_NTZ。
可选参数¶
BASELINE = baseline_name包含类似 SOURCE 的数据快照的基线表名称,用于计算偏移。此数据的快照嵌入监控器对象中。虽然此参数可选,但如果未设置,则监控器无法检测到偏移。
ID_COLUMNS = id_column_name_array字符串列名称的数组,它们一起唯一标识源数据中的每行。 请参阅 ARRAY 常量。
备注
至少有一个预测列(预测分数或预测类)是必需的。
对于二进制分类模型:预测可以是分数或类;实际必须是类。
对于多类分类模型:预测和实际必须是类。
对于回归模型:预测与实际都必须是数字。
PREDICTION_CLASS_COLUMNS = prediction_class_column_name_array用于命名数据源中所有预测类列的字符串数组。请参阅 ARRAY 常量。如果模型任务为
TABULAR_BINARY_CLASSIFICATION或TABULAR_REGRESSION,则列的类型必须为 NUMBER。如果模型任务为TABULAR_MULTI_CLASSIFICATION,则列的类型必须为 STRING。PREDICTION_SCORE_COLUMNS = prediction_column_name_array用于命名数据源中所有预测分数列的字符串数组。请参阅 ARRAY 常量。列的类型必须为 NUMBER。
ACTUAL_CLASS_COLUMNS = actual_class_column_name_array用于命名数据源中所有实际类列的字符串数组。 请参阅 ARRAY 常量。如果模型任务为
TABULAR_BINARY_CLASSIFICATION或TABULAR_REGRESSION,则列的类型必须为 NUMBER。如果模型任务为TABULAR_MULTI_CLASSIFICATION,则列的类型必须为 STRING。ACTUAL_SCORE_COLUMNS = actual_column_name_array用于命名数据源中的所有实际分数列的字符串数组。 请参阅 ARRAY 常量。列的类型必须为 NUMBER。
SEGMENT_COLUMNS = segment_column_name_array用于命名数据源中所有分段列的字符串数组。请参阅 ARRAY 常量。分段列必须为源数据中的 STRING 类型。最多可以为每个监视器指定 5 个分段列。为了获得最佳性能,每个分段列的唯一值应少于 25 个。有关分段的更多信息,请参阅 ML 可观测性:随时间推移监控模型行为。
CUSTOM_METRIC_COLUMNS = custom_metric_column_name_arrayAn array of strings naming columns in the source data that are used for custom metrics. These columns are not treated as features. See ARRAY 常量. Columns must be of type NUMBER.
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
OWNERSHIP |
模型监控器 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
CREATE MODEL MONITOR |
架构 |
|
SELECT |
由 SOURCE 参数指定的表或视图 |
|
USAGE |
由 WAREHOUSE 参数指定的仓库 |
|
USAGE |
由 MODEL 参数指定的模型 |
The USAGE privilege on the parent database and schema are required to perform operations on any object in a schema. Note that a role granted any privilege on a schema allows that role to resolve the schema. For example, a role granted CREATE privilege on a schema can create objects on that schema without also having USAGE granted on that schema.
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
以下要求适用于参数:
模型任务必须为
tabular_binary_classification或tabular_regression。目前不支持多输出模型。尽管预测列和实际列是数组,但数组必须只有一个元素。
必须至少指定一个预测列。
实际列可选,但如果未指定,则不会计算准确性指标。
可以在所有参数中指定一次列(例如,ID 列不能还是预测列)。
被监控的特征数限制为 500 个。
Segment column requirements:
分段列的类型必须为 STRING。
每个监视器最多 5 个分段列(硬性限制)。
每个分段列的唯一值应少于 25 个(建议限制)。
分段值区分大小写,分段查询不支持特殊字符。
MODEL MONITOR 实例的基本配置(包括它监控的模型和它使用的数据源)在监控器创建后无法更改。您只能使用 ALTER MODEL MONITOR 修改一些选项。要更改监控器的配置,请删除该实例并创建一个新实例。
只有 CUSTOM_CLASSIFIER 类的实例支持 复制。
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
基本示例
创建每天刷新并使用单个预测列和实际分数列的模型监视器。
CREATE MODEL MONITOR my_monitor WITH
MODEL = my_model
VERSION = 'v1'
FUNCTION = 'predict'
SOURCE = mydb.myschema.scoring_data
WAREHOUSE = compute_wh
REFRESH_INTERVAL = '1 day'
AGGREGATION_WINDOW = '1 day'
TIMESTAMP_COLUMN = event_time
PREDICTION_SCORE_COLUMNS = ( 'prediction_score' )
ACTUAL_SCORE_COLUMNS = ( 'actual_score' );
以 CUSTOM_METRIC_COLUMNS 为例
指定自定义数值列以计算其他自定义指标。
CREATE MODEL MONITOR my_monitor_custom WITH
MODEL = my_model
VERSION = 'v1'
FUNCTION = 'predict'
SOURCE = mydb.myschema.scoring_data
WAREHOUSE = compute_wh
REFRESH_INTERVAL = '1 day'
AGGREGATION_WINDOW = '1 day'
TIMESTAMP_COLUMN = event_time
PREDICTION_SCORE_COLUMNS = ( 'prediction_score' )
ACTUAL_SCORE_COLUMNS = ( 'actual_score' )
CUSTOM_METRIC_COLUMNS = ( 'latency_ms', 'num_impressions' );
在此示例中,我们包括两个自定义指标:latency_ms 和 num_impressions。这些是源数据中的列,不是模型的特征,但在跟踪模型性能时很有用。