本頁面說明 Vertex AI 如何使用訓練、驗證和測試資料集訓練 AutoML 模型,以及如何控管資料在這三個資料集之間的分割方式。AutoML 會根據訓練資料的資料類型,以不同方式使用資料分割。
本頁面說明圖片和影片資料的資料分割。如要瞭解表格型資料的資料分割,請參閱表格型資料的資料分割。
映像檔
如果是圖片資料集,AutoML 會使用訓練集訓練模型,並使用驗證集驗證模型在訓練期間傳回的結果。訓練完成後,AutoML 會使用測試集提供最終評估指標。
影片
如果是影片資料集,AutoML 會使用訓練集訓練模型,然後使用測試集提供最終評估指標。驗證集不適用於影片資料集。
您可以讓 Vertex AI 自動分割資料。系統會依百分比將資料隨機分成三組。這是最簡單的資料分割方式,在大多數情況下都適用。
設定 | 圖片 | 影片 |
---|---|---|
訓練 | 80 | 80 |
驗證 | 10 | 不適用 |
測試 | 10 | 20 |
如要使用預設資料分割,請在 Google Cloud 控制台中接受預設值,或將 API 的 split 欄位留空。
如要控制資料集的分割方式,可以選擇下列選項:
請只選擇其中一個選項,並在訓練模型時做出選擇。部分選項需要變更訓練資料 (例如 ml_use
標籤)。加入資料或資料分割選項的標籤,不代表您必須使用這些選項,訓練模型時仍可選擇其他選項。
手動分割非結構化資料
手動分割也稱為「預先定義的分割」。
如要使用 ml_use
標籤控管資料分割,您必須在資料上設定 ml_use
標籤。
設定 ml_use 標籤的值
您可以在匯入視覺和影片資料時 (針對每個資料項目或整個匯入檔案),或在匯入資料後使用 Google Cloud 控制台,為資料設定 ml_use
標籤。
在匯入時為個別資料項目設定 ml_use
在 JSON Lines 資料中加入 aiplatform.googleapis.com/ml_use
欄位的值,或設定 CSV 檔案第一欄的值,即可為每個資料項目設定 ml_use
標籤。詳情請參閱資料類型相關的資料準備資訊。
如果資料中的任何資料項目重複 (匯入檔案中出現多次相同的影片或圖片片段),Vertex AI 會使用遇到的第一個資料項目的 ml_use
值,並忽略後續的 ml_use
值。第一個遇到的項目不一定是上傳檔案開頭附近的項目。
為整個上傳檔案設定 ml_use
如果資料可依 ml_use
值排序至不同上傳檔案,您可以在使用 Google Cloud 控制台上傳檔案時,透過每個檔案的下拉式選單設定整個上傳檔案的 ml_use
值,也可以在 datasets.import 方法中使用 dataItemLabels
對應欄位。
如果您為上傳檔案設定 ml_use
,且檔案也包含 ml_use
值,則檔案中的 ml_use
值會優先於檔案全域值。
匯入後設定 ml_use
上傳資料後,您可以在ml_use
控制台 Google Cloud 中選取清單檢視畫面中的一或多個項目,然後使用「指派機器學習用途」下拉式選單,為特定資料項目設定或更新 ml_use
值。
即使 ml_use 值已變更,重新上傳資料檔案也不會更新 ml_use
值。匯入後,您無法使用 Vertex AI API 更新 ml_use
值。
使用 ml_use 標籤
訓練模型時,請在 Google Cloud 控制台中,將「資料分割」指定為「手動 (進階)」。如果使用 Vertex AI API 訓練模型,請使用 FilterSplit 物件,並指定訓練篩選器 labels.aiplatform.googleapis.com/ml_use=training
、驗證篩選器 labels.aiplatform.googleapis.com/ml_use=validation
和測試篩選器 labels.aiplatform.googleapis.com/ml_use=test
。例如:
model = job.run(
dataset=dataset,
model_display_name=_name,
training_filter_split="labels.aiplatform.googleapis.com/ml_use=training",
validation_filter_split="labels.aiplatform.googleapis.com/ml_use=validation",
test_filter_split="labels.aiplatform.googleapis.com/ml_use=test")
系統會將 ml_use
值的所有資料項目指派給指定集合。訓練程序會排除未設定 ml_use
的資料項目。
資料篩選器分割
您可以使用其他標籤 (ml-use 除外) 和其他欄位,透過 Vertex AI API 中的 FilterSplit 物件分割資料。舉例來說,您可以將 trainingFilter
設為 labels.flower=rose
、validationFilter
設為 labels.flower=daisy
,以及 testFilter
設為 labels.flower=dahlia
。這項設定會將標示為 rose
的所有資料新增至訓練集,將標示為 daisy
的所有資料新增至驗證集,並將標示為 dahlia
的所有資料新增至測試集。
如果依多個欄位篩選,資料項目可能會符合多個篩選條件。 在本例中,訓練集優先於驗證集,驗證集優先於測試集。換句話說,只有在項目符合測試集的篩選條件,但不符合訓練集或驗證集的篩選條件時,才會放入測試集。如果項目不符合任何一組的篩選條件,就會從訓練中排除。
請勿使用與模型預測內容相關的資料分割類別;每個資料集都必須反映模型用於預測的資料範圍。(舉例來說,如果模型預期會依花卉類型分類圖片,請勿使用先前所述的篩選器)。
如要讓篩選器不比對任何項目,請將其設為「-
」(減號)。
數學分組
數學分割也稱為「分數分割」。
根據預設,系統會按照資料類型的預設百分比,將資料隨機分割成不同集合。您可以將百分比變更為加總為 100 的任何值 (如果是 Vertex AI API,請使用加總為 1.0 的分數)。
如要變更百分比 (分數),請使用 FractionSplit 物件定義分數。如果是圖片和影片資料類型,您也可以在訓練模型時,使用Google Cloud 控制台更新分割百分比。