Vertex AI Model Monitoring にスキーマを提供する

モニタリング ジョブを開始するには、入力ペイロードを正しく解析するために、Model Monitoring が表形式のデータセットのスキーマを認識している必要があります。

  • AutoML モデルの場合、Vertex AI はすでにトレーニング データにアクセスできるため、Model Monitoring はスキーマを自動的に解析します。

  • カスタムトレーニングモデルの場合

    • Model Monitoring は、標準の Key-Value 入力形式を使用するモデルのスキーマを自動的に解析できます。

    • Key-Value 入力形式を使用しないカスタム トレーニング モデルの場合は、モニタリング ジョブの作成時にスキーマの指定が必要になることがあります。

    スキーマの生成は、オンライン予測エンドポイントとバッチ予測のどちらに対して Model Monitoring を有効にするかによって異なります。

オンライン予測エンドポイントのスキーマ解析

オンライン予測エンドポイントの場合、Model Monitoring でスキーマを自動的に解析するか、モニタリング ジョブの作成時にスキーマをアップロードできます。

自動スキーマ解析

オンライン エンドポイントでスキュー検出またはドリフト検出を有効にすると、通常、Model Monitoring は入力スキーマを自動的に解析できます。自動スキーマ解析の場合、Model Monitoring は最初の 1,000 個の入力リクエストを分析してスキーマを決定します。

自動スキーマ解析は、入力リクエストが Key-Value ペアの形式の場合に最適です。ここで、"key" は特徴の名前、"value" は特徴の値です。例:

"key":"value"
{"TenYearCHD":"0", "glucose":"5.4", "heartRate":"1", "age":"30",
"prevalentStroke":"0", "gender":"f", "ethnicity":"latin american"}

入力が "key":"value" 形式でない場合、Model Monitoring は各特徴のデータ型を識別して、各入力にデフォルトの特徴名を自動的に割り当てます。

カスタム インスタンス スキーマ

Model Monitoring ジョブを作成するときに、独自の入力スキーマを指定すると、Model Monitoring でモデルの入力が正しく解析されます。

このスキーマは分析インスタンスのスキーマと呼ばれます。スキーマ ファイルは、入力ペイロードの形式、各特徴の名前、各特徴のタイプを指定します。

スキーマは、Open API 形式で YAML ファイルとして記述される必要があります。次の例は、object 形式の予測リクエストを示しています。

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds
  • type は、予測リクエストが次のいずれかの形式であることを示しています。

    • object:Key-Value ペア
    • array: アレイライク
    • string: CSV 文字列
  • properties は個々の特徴のタイプを示しています。

  • リクエストが配列形式または csv 文字列形式の場合は、各リクエストで特徴が表示される順序を required フィールドに指定します。

予測リクエストが配列形式または csv 文字列形式の場合、欠損特徴を null 値として表現します。たとえば、5 つの特徴を含む予測リクエストについて考えてみます。

[feature_a, feature_b, feature_c, feature_d, feature_e]

feature_c で欠損値が許容される場合、feature_c が欠損しているサンプル リクエストは、{[1, 2, , 4, 6]} のようになります。リストの長さは 5 のままで、その中央に null 値が 1 つあります。

バッチ予測のためのスキーマ解析

バッチ予測の場合、Model Monitoring でスキーマを自動的に解析するか、モニタリング ジョブの作成時にスキーマをアップロードできます。

自動スキーマ解析

モニタリング ジョブの作成時にスキーマを指定しない場合、Model Monitoring は特徴のデータ型を推測し、トレーニング データに基づいてスキーマを生成します。

Model Monitoring は、どの特徴がターゲット列(予測対象の特徴)であるかも認識する必要があります。ターゲット列は、スキーマと特徴スキュー指標から除外されます。ターゲット列は、モニタリング ジョブの作成時に指定できます。

ターゲット列の仕様

モニタリング ジョブの作成時にターゲット列を指定しない場合、Model Monitoring はトレーニング データの最後の特徴名にターゲット列としてラベルを付けます。

たとえば、column_c が最初の行の最後にあるため、Model Monitoring はこの CSV トレーニング データで column_c をターゲット列としてラベルを付けます。

column_a, column_b, column_d, column_c
1,"a", 2, "c"
2,"b", 342, "d"

同様に、この JSONL ファイルでは column_c が最初の行の最後にあるため、Model Monitoring はターゲット列として column_c というラベルを付けます。

{"column_a": 1, "column_b": "a", "column_d": 2, "column_c": "c" }
{"column_a": 2, "column_b": "b", "column_c": "d",  "column_d": 342}

どちらの例でも、最終的なスキーマには column_acolumn_bcolumn_d のみが含まれます。

カスタム スキーマ

カスタム スキーマでは、入力ペイロードの形式、各特徴の名前、各特徴のタイプを指定します。

スキーマは、Open API 構文を使用した YAML ファイルとして記述する必要があります。次の例は、object 形式の予測リクエストを示しています。

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds

Model Monitoring は、JSON ラインのバッチ予測の出力に基づいて特徴スキューを計算します。データ型に配列が含まれる場合、入力データの配列の長さは yaml ファイルで指定された特徴の数と同じである必要があります。それ以外の場合、Model Monitoring は、配列長が正しくない予測インスタンスを特徴スキュー計算から除外します。

たとえば、次のデータ型の配列には 2 つの特徴が含まれています。

  • 配列:{[[1, 2]]}

  • "Key"/"Value": {"key": 0, "values": [[1, 2]]}

対応するスキーマでも、次の 2 つの特徴を指定する必要があります。

type: object
properties:
  name:
    type: string
  age:
    type: number
required:
- name
- age

次のステップ