CREATE MODEL MONITOR¶
Crie ou substitua um monitoramento de modelo no esquema atual ou especificado.
- Consulte também:
ALTER MODEL MONITOR, SHOW MODEL MONITORS, DESCRIBE MODEL MONITOR, DROP MODEL MONITOR
Sintaxe¶
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> ]
Parâmetros obrigatórios¶
monitor_nameEspecifica o identificador do monitoramento de modelo; deve ser exclusivo no esquema em que o monitor é criado e deve estar no mesmo esquema que o modelo que está sendo monitorado.
Se o identificador do monitoramento de modelo não for totalmente qualificado (na forma de
db_name.schema_name.nameouschema_name.name), o comando criará o modelo no esquema atual para a sessão.Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo,
"My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais informações, consulte Requisitos para identificadores.
MODEL = model_nameO nome do modelo a ser monitorado. Deve estar no mesmo esquema em que o monitor é criado.
VERSION = 'version_name'Nome da versão do modelo a ser monitorada.
FUNCTION = function_nameNome da função específica na versão do modelo a ser monitorada.
SOURCE = source_nameNome da tabela ou exibição de origem com o recurso, as inferências e os rótulos da verdade fundamental.
WAREHOUSE = warehouse_nameO nome do warehouse do Snowflake a ser usado para as operações de computação interna do monitor.
REFRESH_INTERVAL = 'refresh_interval'O intervalo em que o monitor atualiza seu estado interno. O valor deve ser uma cadeia de caracteres que represente um período de tempo, como
'1 day'. As unidades compatíveis incluem segundos, minutos, horas, dias, semanas, meses, trimestres e anos. É possível usar o singular (“hora”) ou o plural (“horas”) para o nome do intervalo, mas não pode abreviá-lo.AGGREGATION_WINDOW = 'aggregation_window'A janela na qual o monitor agrega dados. O valor deve ser uma cadeia de caracteres que represente um período de tempo, como
'1 day'. Somente dias são compatíveis. Você pode usar o singular («dia») ou o plural («dias») para o nome do intervalo, mas não é possível abreviar.TIMESTAMP_COLUMN = timestamp_nameNome da coluna nos dados de origem com os carimbos de data/hora. Deve ser do tipo TIMESTAMP_NTZ.
Parâmetros opcionais¶
BASELINE = baseline_nameNome da tabela de linha de base que contém um instantâneo de dados semelhante a SOURCE, que é usado para calcular o desvio. Um instantâneo desses dados é incorporado ao objeto do monitor. Embora esse parâmetro seja opcional, se não for definido, o monitor não poderá detectar desvios.
ID_COLUMNS = id_column_name_arrayUma matriz de nomes de colunas de cadeia de caracteres que, juntos, identificam exclusivamente cada linha nos dados de origem. Consulte Constantes ARRAY.
Nota
Pelo menos uma coluna de previsão (uma pontuação de previsão ou uma classe de previsão) é obrigatória.
Para modelos de classificação binária: as previsões podem ser pontuações ou classes; os dados reais devem ser classes.
Para modelos de classificação multiclasse: as previsões e os dados reais devem ser classes.
Para modelos de regressão: tanto as previsões quanto os dados reais devem ser números.
PREDICTION_CLASS_COLUMNS = prediction_class_column_name_arrayUma matriz de cadeias de caracteres que nomeia todas as colunas da classe de previsão na fonte de dados. Consulte Constantes ARRAY. Se a tarefa do modelo for
TABULAR_BINARY_CLASSIFICATIONouTABULAR_REGRESSION, as colunas deverão ser do tipo NUMBER. Se a tarefa do modelo forTABULAR_MULTI_CLASSIFICATION, as colunas deverão ser do tipo STRING.PREDICTION_SCORE_COLUMNS = prediction_column_name_arrayUma matriz de cadeias de caracteres que nomeia todas as colunas de pontuação de previsão na fonte de dados. Consulte Constantes ARRAY. As colunas devem ser do tipo NUMBER.
ACTUAL_CLASS_COLUMNS = actual_class_column_name_arrayUma matriz de cadeias de caracteres que nomeia todas as colunas de classe reais na fonte de dados. Consulte Constantes ARRAY. Se a tarefa do modelo for
TABULAR_BINARY_CLASSIFICATIONouTABULAR_REGRESSION, as colunas deverão ser do tipo NUMBER. Se a tarefa do modelo forTABULAR_MULTI_CLASSIFICATION, as colunas deverão ser do tipo STRING.ACTUAL_SCORE_COLUMNS = actual_column_name_arrayUma matriz de cadeias de caracteres que nomeia todas as colunas de pontuação reais na fonte de dados. Consulte Constantes ARRAY. As colunas devem ser do tipo NUMBER.
SEGMENT_COLUMNS = segment_column_name_arrayUma matriz de cadeias de caracteres que nomeia todas as colunas de segmento na fonte de dados. Consulte Constantes ARRAY. As colunas de segmento devem ser do tipo STRING nos dados de origem. Você pode especificar até cinco colunas de segmento por monitor. Cada coluna de segmento deve ter menos de 25 valores exclusivos para garantir um desempenho ideal. Para obter mais informações sobre segmentos, consulte ML Observability: monitoramento do comportamento do modelo ao longo do tempo.
CUSTOM_METRIC_COLUMNS = custom_metric_column_name_arrayUma matriz de cadeias de caracteres que nomeia colunas nos dados de origem que são utilizadas para métricas personalizadas. Essas colunas não são tratadas como recursos. Consulte Constantes ARRAY. As colunas devem ser do tipo NUMBER.
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
|---|---|---|
OWNERSHIP |
Monitoramento de modelo |
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 |
Esquema |
|
SELECT |
Tabela ou exibição especificada pelo parâmetro SOURCE |
|
USAGE |
Warehouse especificado pelo parâmetro WAREHOUSE |
|
USAGE |
Modelo especificado pelo parâmetro MODEL |
O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema. Observe que uma função com privilégio concedido em um esquema permite que essa função resolva o esquema. Por exemplo, uma função com privilégio CREATE concedido em um esquema pode criar objetos nesse esquema sem também ter USAGE concedido nesse esquema.
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Notas de uso¶
Os seguintes requisitos se aplicam aos parâmetros:
A tarefa modelo deve ser
tabular_binary_classificationoutabular_regression.No momento, não há suporte para modelos de múltiplas saídas. Embora as colunas de previsão e dados reais sejam matrizes, as matrizes devem ter apenas um elemento.
Pelo menos uma das colunas de previsão deve ser especificada.
As colunas reais são opcionais, mas as métricas de precisão não serão computadas se não forem especificadas.
Uma coluna pode ser especificada uma vez em todos os parâmetros (por exemplo, um ID de coluna não pode ser também uma coluna de previsão).
O número de recursos monitorados é limitado a 500.
Requisitos da coluna de segmento:
As colunas de segmento devem ser do tipo STRING.
Máximo de cinco colunas de segmento por monitor (limite rígido).
Cada coluna de segmento deve ter menos de 25 valores exclusivos (limite recomendado).
Os valores de segmento diferenciam maiúsculas de minúsculas, e caracteres especiais não são aceitos para consultas de segmento.
A configuração básica das instâncias do MODEL MONITOR, incluindo o modelo que ele monitora e as fontes de dados que usa, não pode ser alterada depois que o monitoramento é criado. É possível modificar apenas algumas opções usando ALTER MODEL MONITOR. Para alterar a configuração de um monitor, elimine a instância e crie uma nova.
A replicação é compatível apenas com as instâncias da classe CUSTOM_CLASSIFIER.
As cláusulas
OR REPLACEeIF NOT EXISTSsão mutuamente exclusivas. Elas não podem ser usadas na mesma instrução.Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.
Exemplos¶
Exemplo básico
Crie um monitor de modelos que seja atualizado diariamente e use colunas únicas de previsão e pontuação real.
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' );
Exemplo com CUSTOM_METRIC_COLUMNS
Especifique colunas numéricas personalizadas para calcular métricas personalizadas adicionais.
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' );
Neste exemplo, incluímos duas métricas personalizadas: latency_ms e num_impressions. Essas são colunas nos dados de origem que não são recursos do modelo, mas são úteis para acompanhar o desempenho do modelo.