AutoML 模型資料分割作業簡介

本頁面說明 Vertex AI 如何使用資料的訓練、驗證和測試集訓練 AutoML 模型,以及您可以控制資料如何在這三個集合中分割的方式。AutoML 會根據訓練資料的資料類型,以不同方式使用資料分割。

本頁面說明圖片、文字和影片資料的分割方式。如要瞭解表格型資料的分割資料,請參閱「表格型資料的分割資料」。

映像檔

對於圖片資料集,AutoML 會使用訓練集訓練模型,並使用驗證集驗證模型在訓練期間傳回的結果。訓練完成後,AutoML 會使用測試集提供最終評估指標。

文字

對於文字資料集,訓練和驗證集可用來嘗試不同的預先處理、架構和超參數選項組合。完成上述試驗後,系統就會產生經過訓練的模型,然後在驗證資料集上評估模型品質,並透過這些模型來引導探索其他選項組合。

當其他試驗無法繼續改善品質時,這個版本的模型就會被視為效能最佳且經過完整訓練的最終模型。接著,Vertex AI 會使用在平行調整階段決定的參數和架構,訓練另外兩個模型:

  1. 使用訓練和驗證集訓練的模型。

    Vertex AI 會使用您的測試集,針對這個模型產生模型評估指標。這是測試集在程序中首次使用。這麼做可確保最終評估指標能毫無偏誤的反映出最終訓練模型在實際工作環境中的效能。

  2. 使用訓練、驗證和測試集訓練的模型。

    您可以使用這個模型要求預測結果。

影片

針對影片資料集,AutoML 會使用訓練集訓練模型,然後使用測試集提供最終評估指標。驗證集不適用於影片資料集。

您可以讓 Vertex AI 自動分割資料。系統會依百分比隨機將資料分成三組。這是分割資料最簡單的方式,在大多數情況下都能正常運作。

設定 文字 圖片 影片
訓練 80 80 80
驗證 10 10 不適用
測試 10 10 20

如要使用預設資料分割,請在 Google Cloud 主控台中接受預設值,或是將 API 的「split」欄位留空。

如要控制資料的分割方式,您可以選擇下列任一選項:

您只能選擇其中一種方法,並在訓練模型時做出選擇。部分選項需要變更訓練資料 (例如 ml_use 標籤)。為資料分割選項加入資料或標籤,並不代表您必須使用這些選項;您還是可以在訓練模型時選擇其他選項。

手動分割非結構化資料

手動分配也稱為「預先定義的分配」。

如要使用 ml_use 標籤來控制資料分割,您必須先在資料上設定 ml_use 標籤。

為 ml_use 標籤設定值

您可以在匯入資料時 (每個資料項目或整個匯入檔案) 為視覺、影片和文字資料設定 ml_use 標籤,也可以在資料匯入後使用 Google Cloud 控制台設定標籤。

在匯入時針對個別資料項目設定 ml_use

您可以為每個資料項目設定 ml_use 標籤,方法是在 JSON 列資料中加入 aiplatform.googleapis.com/ml_use 欄位的值,或是設定 CSV 檔案第一欄的值。如需更多詳細資訊,請參閱如何為資料類型準備資料的相關資訊。

如果資料中含有任何重複的資料項目 (如果相同的影片、圖片或文字片段在匯入檔案中出現多次),Vertex AI 會使用遇到的第一個資料項目的 ml_use 值,並忽略後續的任何 ml_use 值。系統遇到的第一個項目不一定是上傳檔案開頭附近的項目。

為整個上傳檔案設定 ml_use

如果資料可以依 ml_use 值分類至不同的上傳檔案,您可以在使用 Google Cloud 主控台上傳檔案時,使用每個檔案的下拉式選單,或在 datasets.import 方法中使用 dataItemLabels 對應欄位,為整個上傳檔案設定 ml_use 值。

如果您為上傳檔案設定 ml_use,且檔案也包含 ml_use 值,則檔案中的 ml_use 值會優先於檔案層級的值。

匯入後設定 ml_use

上傳資料後,您可以在 Google Cloud 控制台中為特定資料項目設定或更新 ml_use 值,方法是選取清單檢視畫面中的一或多個項目,然後使用「指派 ML 用途」下拉式選單。

如果您再次上傳資料檔案,即使 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=rosevalidationFilter 設為 labels.flower=daisy,以及 testFilter 設為 labels.flower=dahlia。這項設定會導致所有標示為 rose 的資料新增至訓練集、所有標示為 daisy 的資料新增至驗證集,以及所有標示為 dahlia 的資料新增至測試集。

如果您對多個欄位進行篩選,資料項目可能會與多個篩選條件相符。在這種情況下,訓練集優先,接著是驗證集,最後是測試集。換句話說,只有在項目符合測試集篩選條件,但不符合訓練或驗證篩選條件時,才會放入測試集。如果項目不符合任何一組的篩選條件,就會從訓練中排除。

請勿將資料分割類別與模型將要預測的內容相關聯;每個集合都必須反映模型用於預測的資料範圍。(例如,如果模型預期要依花卉類型分類圖片,請勿使用先前所述的篩選器)。

如果不希望篩選器比對任何項目,請將其設為「-」(減號)。

數學分割

數學分割也稱為「分數分割」。

根據預設,系統會根據資料類型的預設百分比,隨機將資料分割成多組。您可以將百分比變更為加總為 100 的任何值 (針對 Vertex AI API,您會使用加總為 1.0 的小數)。

如要變更百分比 (分數),請使用 FractionSplit 物件定義分數。對於圖片、文字和影片資料類型,您也可以在訓練模型時使用Google Cloud 控制台更新分割百分比。