為 Vertex AI Model Monitoring 提供結構定義

如要啟動監控工作,Model Monitoring 必須瞭解表格資料集的結構定義,才能正確剖析輸入酬載。

  • 如果是 AutoML 模型,模型監控功能會自動剖析結構定義,因為 Vertex AI 已可存取訓練資料。

  • 自訂訓練模型:

    • 如果模型使用標準鍵/值輸入格式,模型監控功能可以自動剖析結構定義。

    • 對於不使用鍵/值輸入格式的自訂訓練模型,您可能需要在建立監控作業時提供結構定義。

    視您是為線上推論端點或批次推論啟用模型監控功能而定,結構定義的產生方式會有所不同。

線上推論端點的結構定義剖析

如果是線上推論端點,您可以讓 Model Monitoring 自動剖析結構定義,也可以在建立監控工作時上傳結構定義。

自動剖析結構定義

為線上端點啟用偏差或偏移偵測功能後,模型監控功能通常會自動剖析輸入結構定義。如要自動剖析結構定義,模型監控功能會分析前 1,000 個輸入要求,以判斷結構定義。

如果輸入要求格式為鍵/值組合,其中 "key" 是功能名稱,"value" 是功能值,自動剖析結構定義功能的效果最佳。例如:

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

如果輸入內容不是 "key":"value" 格式,模型監控功能會嘗試識別每個特徵的資料類型,並自動為每個輸入內容指派預設特徵名稱。

自訂執行個體結構定義

您可以在建立模型監控工作時提供自己的輸入結構定義,確保模型監控功能正確剖析模型的輸入內容。

這個結構定義稱為「分析執行個體結構定義」。結構定義檔案會指定輸入酬載的格式、各項功能的名稱,以及各項功能的類型。

結構定義必須以 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:鍵/值組合
    • array:類似陣列
    • string:csv 字串
  • properties 表示各項功能的類型。

  • 如果要求採用陣列或 CSV 字串格式,請在 required 欄位中,指定每個要求列出的功能順序。

如果推論要求採用陣列或 CSV 字串格式,請將任何遺漏的特徵表示為空值。舉例來說,假設有五項特徵的推論要求:

[feature_a, feature_b, feature_c, feature_d, feature_e]

如果 feature_c 允許缺少值,則缺少 feature_c 的範例要求會是:{[1, 2, , 4, 6]}。清單長度仍為 5,中間有一個空值。

批次推論的結構定義剖析

如果是批次推論,您可以在建立監控工作時,讓 Model Monitoring 自動剖析結構定義,或上傳結構定義。

自動剖析結構定義

如果在建立監控工作時未提供結構定義,模型監控功能會根據訓練資料推斷特徵的資料類型,並產生結構定義。

模型監控功能也需要知道哪個特徵是目標欄,也就是要預測的特徵。目標資料欄會從結構定義和特徵偏差指標中排除。建立監控工作時,您可以指定目標資料欄。

目標資料欄規格

如果在建立監控工作時未指定目標資料欄,模型監控會將訓練資料中的最後一個特徵名稱標示為目標資料欄。

舉例來說,模型監控會將這個 CSV 訓練資料中的 column_c 標示為目標資料欄,因為 column_c 位於第一列的結尾:

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

同樣地,模型監控功能會將這個 JSONL 檔案中的 column_c 標示為目標資料欄,因為 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

自訂架構

自訂結構定義會指定輸入酬載的格式、每個特徵的名稱,以及每個特徵的類型。

結構定義必須以 YAML 檔案形式編寫,並採用 Open API 語法。以下範例是採用 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

模型監控會根據 JSON Lines 批次推論輸出計算特徵偏差。如果資料類型包含陣列,輸入資料中的陣列長度必須等於 YAML 檔案中指定的特徵數量。否則,模型監控功能會從特徵偏斜計算中,排除陣列長度不正確的推論執行個體。

舉例來說,下列資料類型中的陣列包含兩項特徵:

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

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

對應的結構定義也必須指定兩項功能:

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

後續步驟