如要啟動監控工作,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_a
、column_b
和 column_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
後續步驟
- 為模型啟用偏差和偏移偵測功能。
- 在 Colab 中試用範例筆記本,或在 GitHub 上查看。