CREATE MODEL MONITOR¶
Créer ou remplacer un moniteur du modèle dans le schéma actuel ou spécifié.
Syntaxe¶
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> ]
Paramètres requis¶
monitor_nameSpécifie l’identificateur du moniteur du modèle ; il doit être unique pour le schéma dans lequel le moniteur est créé et doit se trouver dans le même schéma que le modèle contrôlé.
Si l’identificateur du moniteur n’est pas complet (sous la forme
db_name.schema_name.nameouschema_name.name), la commande recherche le modèle dans le schéma actuel de la session.De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple,
"My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations, voir Exigences relatives à l’identificateur.
MODEL = model_nameLe nom du modèle à contrôler. Doit se trouver dans le même schéma que celui dans lequel le moniteur est créé.
VERSION = 'version_name'Nom de la version du modèle à contrôler.
FUNCTION = function_nameNom de la fonction spécifique dans la version du modèle à contrôler.
SOURCE = source_nameNom de la table ou de la vue source qui contient les étiquettes des fonctions, des inférences et de la réalité de terrain.
WAREHOUSE = warehouse_nameNom de l’entrepôt Snowflake à utiliser pour les opérations de calcul internes du moniteur.
REFRESH_INTERVAL = 'refresh_interval'L’intervalle auquel le moniteur actualise son état interne. La valeur doit être une chaîne représentant une période, telle que
'1 day'. Les unités prises en charge incluent les secondes, les minutes, les heures, les jours, les semaines, les mois, les trimestres et les années. Vous pouvez utiliser le singulier (« heure ») ou le pluriel (« heures ») pour le nom de l’intervalle, mais vous ne pouvez pas l’abréger.AGGREGATION_WINDOW = 'aggregation_window'Fenêtre sur laquelle le moniteur agrège les données. La valeur doit être une chaîne représentant une période, telle que
'1 day'. Seuls les jours sont pris en charge. Vous pouvez utiliser le singulier (« jour ») ou le pluriel (« jours ») pour le nom de l’intervalle, mais vous ne pouvez pas l’abréger.TIMESTAMP_COLUMN = timestamp_nameNom de la colonne des données source qui contient les horodatages. Doit être du type TIMESTAMP_NTZ.
Paramètres facultatifs¶
BASELINE = baseline_nameNom de la table de référence qui contient un instantané de données similaire à SOURCE, utilisé pour calculer la dérive. Un instantané de ces données est intégré à l’objet du moniteur. Bien que ce paramètre soit facultatif, s’il n’est pas défini, le moniteur ne peut pas détecter la dérive.
ID_COLUMNS = id_column_name_arrayUn tableau de noms de colonnes de chaînes qui, ensemble, identifient de manière unique chaque ligne des données source. Voir Constantes ARRAY.
Note
Au moins une colonne de prédiction (soit un score de prédiction, soit une classe de prédiction) est obligatoire.
Pour les modèles de classification binaire : les prédictions peuvent être des scores ou des classes ; les données réelles doivent être des classes.
Pour les modèles de classification multi-classes : les prédictions et les données réelles doivent être des classes.
Pour les modèles de régression : les prédictions et les données réelles doivent être des nombres.
PREDICTION_CLASS_COLUMNS = prediction_class_column_name_arrayTableau de chaînes nommant toutes les colonnes de classe de prédiction dans la source de données. Voir Constantes ARRAY. Si la tâche du modèle est
TABULAR_BINARY_CLASSIFICATIONouTABULAR_REGRESSION, les colonnes doivent être du type NUMBER. Si la tâche du modèle estTABULAR_MULTI_CLASSIFICATION, les colonnes doivent être du type STRING.PREDICTION_SCORE_COLUMNS = prediction_column_name_arrayTableau de chaînes nommant toutes les colonnes de score de prédiction dans la source de données. Voir Constantes ARRAY. Les colonnes doivent être du type NUMBER.
ACTUAL_CLASS_COLUMNS = actual_class_column_name_arrayTableau de chaînes nommant toutes les colonnes de classe réelles dans la source de données. Voir Constantes ARRAY. Si la tâche du modèle est
TABULAR_BINARY_CLASSIFICATIONouTABULAR_REGRESSION, les colonnes doivent être du type NUMBER. Si la tâche du modèle estTABULAR_MULTI_CLASSIFICATION, les colonnes doivent être du type STRING.ACTUAL_SCORE_COLUMNS = actual_column_name_arrayTableau de chaînes nommant toutes les colonnes de score réelles dans la source de données. Voir Constantes ARRAY. Les colonnes doivent être du type NUMBER.
SEGMENT_COLUMNS = segment_column_name_arrayTableau de chaînes nommant toutes les colonnes de segment dans la source de données. Voir Constantes ARRAY. Les colonnes de segment doivent être du type STRING dans les données sources. Vous pouvez spécifier jusqu’à 5 colonnes de segments par moniteur. Chaque colonne de segment doit comporter moins de 25 valeurs uniques pour des performances optimales. Pour plus d’informations sur les segments, consultez ML Observability : suivi du comportement du modèle dans le temps.
CUSTOM_METRIC_COLUMNS = custom_metric_column_name_arrayTableau de chaînes nommant des colonnes dans les données sources qui sont utilisées pour les métriques personnalisées. Ces colonnes ne sont pas traitées comme des fonctionnalités. Consultez Constantes ARRAY. Les colonnes doivent être du type NUMBER.
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :
Privilège |
Objet |
Remarques |
|---|---|---|
OWNERSHIP |
Moniteur du modèle |
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 |
Schéma |
|
SELECT |
Table ou vue spécifiée par le paramètre SOURCE |
|
USAGE |
Entrepôt spécifié par le paramètre WAREHOUSE |
|
USAGE |
Modèle spécifié par le paramètre MODEL |
Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma. Notez qu’un rôle doté d’un privilège quelconque sur un schéma permet à ce rôle de résoudre le schéma. Par exemple, un rôle doté du privilège CREATE sur un schéma peut créer des objets sur ce schéma sans également avoir le privilège USAGE attribué sur ce schéma.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Notes sur l’utilisation¶
Les exigences suivantes s’appliquent aux paramètres :
La tâche du modèle doit être
tabular_binary_classificationoutabular_regression.Les modèles à sorties multiples ne sont pas pris en charge actuellement. Bien que les colonnes de prédiction et de données réelles soient des tableaux, les tableaux ne doivent comporter qu’un seul élément.
Au moins une des colonnes de prédiction doit être spécifiée.
Les colonnes de données réelles sont facultatives, mais les mesures de précision ne sont pas calculées si elles ne sont pas spécifiées.
Une colonne ne peut être spécifiée qu’une seule fois pour tous les paramètres (par exemple, un ID de colonne ne peut pas être également une colonne de prédiction).
Le nombre de fonctions contrôlées est limité à 500.
Exigences en matière de colonnes de segments :
Les colonnes de segment doivent être du type STRING.
5 colonnes de segments maximum par moniteur (limite stricte).
Chaque colonne de segment doit avoir moins de 25 valeurs uniques (limite recommandée).
Les valeurs des segments sont sensibles à la casse et les caractères spéciaux ne sont pas pris en charge pour les requêtes de segments.
La configuration de base des instances de MODEL MONITOR, y compris le modèle contrôlé et les sources de données utilisées, ne peut pas être modifiée après la création du moniteur. Vous ne pouvez modifier que quelques options à l’aide de ALTER MODEL MONITOR. Pour modifier la configuration d’un moniteur, supprimez l’instance et créez-en une nouvelle.
La réplication est prise en charge uniquement pour les instances de la classe CUSTOM_CLASSIFIER.
Les clauses
OR REPLACEetIF NOT EXISTSs’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.
Exemples¶
Exemple de base
Créer un moniteur de modèles qui s’actualise quotidiennement et utilise des colonnes de prédiction uniques et de score réel.
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' );
Exemple avec CUSTOM_METRIC_COLUMNS
Spécifier des colonnes numériques personnalisées pour calculer des métriques personnalisées supplémentaires.
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' );
Dans cet exemple, nous incluons deux métriques personnalisé : latency_ms et num_impressions. Il s’agit de colonnes dans les données sources qui ne sont pas des fonctionnalités du modèle, mais qui sont utiles pour être suivies à côté des performances du modèle.