モニタリング ジョブを開始するには、入力ペイロードを正しく解析するために、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_a
、column_b
、column_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
次のステップ
- モデルのスキューとドリフトの検出を有効にする。
- Colab でサンプル ノートブックを試すか、GitHub で表示する。