CREATE MODEL MONITOR

現在のスキーマまたは指定したスキーマの モデルモニター を作成または置換します。

こちらもご参照ください。

ALTER MODEL MONITORSHOW MODEL MONITORSDESCRIBE MODEL MONITORDROP 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> ]
Copy

必須パラメーター

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' などの、期間を表す文字列でなければなりません。サポートされる単位は、seconds、minutes、hours、days、weeks、months、quarters、およびyearsです。単数形("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 定数 をご参照ください。

注釈

少なくとも1つの予測列(予測スコアまたは予測クラスのいずれか)が必須です。

  • バイナリ分類モデルの場合: 予測はスコアでもクラスでもかまいませんが、実績はクラスでなければなりません。

  • マルチクラス分類モデルの場合: 予測と実績はクラスでなければなりません。

  • 回帰モデルの場合: 予測値と実績値の両方が数値でなければなりません。

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 である必要があります。1つのモニターにつき最大5つのセグメント列を指定できます。パフォーマンスを最適化するには、各セグメント列が25個未満の一意の値を持つ必要があります。セグメントの詳細については、ML 可観測性:時間経過に伴うモデルの動作のモニタリング をご参照ください。

CUSTOM_METRIC_COLUMNS = custom_metric_column_name_array

カスタムメトリックに使用されるソースデータの列を指定する文字列の配列。 これらの列は特徴量として扱われません。ARRAY 定数 をご参照ください。列は型 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 パラメーターで指定されたモデル

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対する CREATE 権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対する USAGE*も*付与されている必要はありません。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • パラメーターには以下の要件が適用されます。

    • モデルタスクは tabular_binary_classification または tabular_regression にする必要があります。

    • 複数出力モデルは現在サポートされていません。予測列と実際列は配列ですが、配列の要素は1つのみにする必要があります。

    • 少なくとも1つの予測列を指定する必要があります。

    • 実際列は任意ですが、指定しないと精度メトリクスは計算されません。

    • 列はすべてのパラメーターで1回のみ指定できます(例: ID 列を予測列にもすることはできません)。

  • モニターできる特徴量の数は500個に制限されています。

  • セグメント列の要件:

    • セグメント列は、型 STRING にする必要があります。

    • モニターごとに最大5セグメント列(ハード制限)。

    • 各セグメント列は、25個以下の一意の値を持たなければなりません(推奨制限)。

    • セグメント値は大文字と小文字が区別され、特殊文字はセグメントクエリではサポートされていません。

  • MODEL MONITOR インスタンスの基本構成(モニターするモデルや使用するデータソースを含む)を、モニター作成後に変更することはできません。ALTER MODEL MONITOR を使って変更できるのは、いくつかのオプションのみです。モニターの構成を変更するには、インスタンスをドロップして新しいインスタンスを作成します。

  • 複製 は、 CUSTOM_CLASSIFIER クラスのインスタンスに対してのみサポートされます。

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

基本的な例

毎日リフレッシュし、単一の予測スコア列と実際スコア列を使用するモデルモニターを作成します。

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' );
Copy

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' );
Copy

この例では、latency_msnum_impressions という2つのカスタムメトリックを含めています。これらは、モデルの特徴ではないが、モデルのパフォーマンスの次に追跡すると役立つソースデータの列です。