訓練管道可讓您執行自訂機器學習 (ML) 訓練,並根據訓練輸出內容自動建立 Model
資源。
如果您的工作只涉及執行訓練工作,並自動建立模型資源,而不需要協調完整的工作流程,則使用本文所述的獨立訓練管道可能就足夠了。不過,如果您想建立包含多個步驟 (例如資料處理、訓練、評估、部署或監控) 的完整機器學習生命週期,並且希望這項作業可靠、自動化且可重複執行,建議您使用 Vertex AI Pipelines,因為這項服務專門用於工作流程自動調度。
建立管道前
在 Vertex AI 上建立訓練管道前,您必須建立 Python 訓練應用程式或自訂容器,以便定義要在 Vertex AI 上執行的訓練程式碼和依附元件。如果您使用 PyTorch、TensorFlow、scikit-learn 或 XGBoost 建立 Python 訓練應用程式,可以使用我們的預先建構容器來執行程式碼。如果不確定要選擇哪一個選項,請參閱訓練碼規定,進一步瞭解相關資訊。
訓練管道選項
訓練管道會將訓練工作與其他步驟封裝在一起。本指南將說明兩種不同的訓練管道:
- 啟動
CustomJob
,並將產生的模型上傳至 Vertex AI - 啟動超參數調整工作,並將產生的模型上傳至 Vertex AI
此外,您也可以在訓練管道中使用代管資料集。進一步瞭解如何設定訓練管道,以便使用受管理的資料集。
CustomJob
包含的內容
建立自訂工作時,您需要指定 Vertex AI 執行訓練程式碼時所需的設定,包括:
- 單一節點訓練 (
WorkerPoolSpec
) 的一個工作站集區,或分散式訓練的多個工作站集區 - 用於設定工作排程的選用設定 (
Scheduling
)、為訓練程式碼設定特定環境變數、使用自訂服務帳戶,以及使用 VPC 網路對等互連
您可以在工作站集區中指定下列設定:
- 機器類型和加速器
- 設定工作站集區執行的訓練程式碼類型:Python 訓練應用程式 (
PythonPackageSpec
) 或自訂容器 (ContainerSpec
)
如果您想在 Vertex AI 訓練管道之外建立獨立的自訂工作,請參閱自訂工作指南。
設定管道以使用代管資料集
在訓練管道中,您可以設定自訂訓練工作或超參數調整工作,以便使用代管資料集。您可以使用代管資料集,透過訓練應用程式和模型管理資料集。
如要在訓練管道中使用代管資料集,請按照下列步驟操作:
- 建立資料集。
- 更新訓練應用程式,以便使用代管資料集。詳情請參閱「Vertex AI 如何將資料集傳送至訓練應用程式」。
建立訓練管道時,請指定代管型資料集。舉例來說,如果您使用 REST API 建立訓練管道,請在
inputDataConfig
部分指定資料集設定。您必須在建立資料集的地區中建立訓練管道。
如需更多資訊,請參閱 TrainingPipeline
的 API 參考資料。
設定分散式訓練
在訓練管道中,您可以指定多個工作站集區,為分散式訓練設定自訂訓練工作或超參數調整工作。
本頁的所有範例都會顯示單一複本訓練作業,且有一個 worker 集區。如要修改這些值以進行分散式訓練,請按照下列步驟操作:
- 使用第一個工作站集區設定主要備用資源,並將備用資源數量設為 1。
- 如果機器學習架構支援這些額外的叢集工作,以便進行分散式訓練,請新增更多 worker 集區來設定 worker 副本、參數伺服器副本或評估器副本。
進一步瞭解如何使用分散式訓練。
CustomJob 和模型上傳
這個訓練管道會封裝自訂工作,並提供額外的便利步驟,讓您在訓練後更輕鬆地將模型部署至 Vertex AI。這個訓練管道主要會執行兩項作業:
訓練管道會建立
CustomJob
資源。自訂工作會使用您指定的運算資源執行訓練應用程式。自訂工作完成後,訓練管道會在您為 Cloud Storage 值區指定的輸出目錄中,找到訓練應用程式建立的模型成果。它會使用這些構件建立模型資源,讓您準備模型部署作業。
您可以透過兩種方式設定模型構件的位置:
如果您為訓練工作設定
baseOutputDirectory
,請務必使用 Vertex AI 設定的$AIP_MODEL_DIR
環境變數,讓訓練程式碼將模型構件儲存到該位置。訓練工作完成後,Vertex AI 會在gs://BASE_OUTPUT_DIRECTORY/model
中搜尋產生的模型構件。如果您設定
modelToUpload.artifactUri
欄位,訓練管道就會從該 URI 上傳模型構件。如果您未設定baseOutputDirectory
,則必須設定這個欄位。
如果您同時指定 baseOutputDirectory
和 modelToUpload.artifactUri
,Vertex AI 會使用 modelToUpload.artifactUri
。
如要建立這類訓練管道,請按照下列步驟操作:
控制台
在 Google Cloud 控制台的 Vertex AI 專區中,前往「Training pipelines」頁面。
按一下「建立」圖示
,開啟「訓練新模型」窗格。在「訓練方法」步驟中,指定下列設定:
如果您想使用代管資料集進行訓練,請指定資料集和註解集。
否則,請在「Dataset」下拉式清單中,選取「No managed dataset」。
選取「自訂訓練 (進階)」。
按一下「繼續」。
在「模型詳細資料」步驟中,選擇「訓練新模型」或「訓練新版本」。如果您選取「訓練新模型」,請為模型輸入所需名稱 MODEL_NAME。按一下「繼續」。
在「Training container」步驟中,指定下列設定:
選取要使用預先建構的容器還是自訂容器進行訓練。
視您的選擇而定,請執行下列任一操作:
如果您想使用預建容器進行訓練,請向 Vertex AI 提供所需資訊,讓系統使用您上傳至 Cloud Storage 的訓練套件:
使用「Model framework」和「Model framework version」下拉式清單,指定要使用的預先建構容器。
在「Package location」欄位中,指定您建立並上傳的 Python 訓練應用程式的 Cloud Storage URI。這個檔案通常結尾為
.tar.gz
。在「Python 模組」欄位中,輸入訓練應用程式進入點的模組名稱。
如果您想使用自訂容器進行訓練,請在「Container image」欄位中指定容器映像檔的 Artifact Registry 或 Docker Hub URI。
在「模型輸出目錄」欄位中,指定您有權存取的值區中目錄的 Cloud Storage URI。目錄尚不需要存在。
這個值會在
baseOutputDirectory
API 欄位中傳遞至 Vertex AI,該欄位會設定訓練應用程式在執行時可存取的多個環境變數。在訓練結束後,Vertex AI 會在這個 URI 的子目錄中尋找模型構件,以便建立
Model
。(這個子目錄會以AIP_MODEL_DIR
環境變數的形式提供給訓練程式碼使用)。如果您未使用超參數調整,Vertex AI 會在
BASE_OUTPUT_DIRECTORY/model/
中尋找模型構件。選用:您可以在「引數」欄位中指定 Vertex AI 開始執行訓練程式碼時要使用的引數。所有引數的總長度上限為 100,000 個半形字元。這些引數的行為會因您使用的容器類型而有所不同:
如果您使用的是預建容器,Vertex AI 會將引數做為指令列標記傳遞至 Python 模組。
如果您使用的是自訂容器,Vertex AI 會使用引數覆寫容器的
CMD
指令。
按一下「繼續」。
在「超參數調整」步驟中,確認「啟用超參數調整」核取方塊未選取。按一下「繼續」。
在「運算和定價」步驟中,指定下列設定:
在「區域」下拉式清單中,選取「支援自訂訓練的區域」。
在「Worker pool 0」部分,指定要用於訓練的運算資源。
如果您指定加速器,請確認您選擇的加速器類型在所選區域可用。
如要執行分散式訓練,請按一下「Add more worker pools」,然後為每個額外的工作站集區指定額外的運算資源組。
按一下「繼續」。
在「預測容器」步驟中,指定下列設定:
選取要使用預先建立的容器還是自訂容器,以便從訓練完成的模型提供預測結果。
視您的選擇而定,請執行下列任一操作:
如果您想使用預先建構的容器提供預測結果,請使用「模型架構」、「模型架構版本」和「加速器類型」欄位,選擇要用於預測的預先建構預測容器。
將「模型架構」和「模型架構版本」與您用於訓練的機器學習架構相符。只有在日後想使用 GPU 進行線上或批次預測時,才指定加速器類型。
如要使用自訂容器提供預測結果,請按照下列步驟操作:
在「Container image」欄位中,指定容器映像檔的 Artifact Registry URI。
您可以視需要指定指令,覆寫容器的
ENTRYPOINT
指令。
「模型目錄」欄位包含您先前在「訓練容器」步驟的「模型輸出目錄」欄位中設定的值。變更這兩個欄位都會產生相同的效果。如要進一步瞭解這個欄位,請參閱前一個操作說明。
將「Predict schemata」部分的欄位留空。
按一下「開始訓練」,啟動自訂訓練管道。
REST
使用下列程式碼範例,透過 trainingPipeline
資源的 create
方法建立訓練管道。
注意:如要設定此管道以建立新的模型版本,您可以選擇在 trainingPipeline
欄位中新增 PARENT_MODEL
。
如需更多資訊,請參閱「使用 Vertex AI Model Registry 進行模型版本管理」。
使用任何要求資料之前,請先替換以下項目:
- LOCATION_ID:執行訓練程式碼並儲存
Model
的區域。 - PROJECT_ID:您的專案 ID。
- TRAINING_PIPELINE_NAME:必填。trainingPipeline 的顯示名稱。
- 如果訓練應用程式使用 Vertex AI 資料集,請指定下列項目:
- DATASET_ID:資料集 ID。
- ANNOTATIONS_FILTER:根據您指定的註解篩選資料集。
- ANNOTATION_SCHEMA_URI:根據指定的註解結構定義 URI 篩選資料集。
-
請使用下列其中一個選項,指定資料項目如何分割為訓練集、驗證集和測試集。
- 如要根據定義各組大小的倍數來分割資料集,請指定下列項目:
- TRAINING_FRACTION:用於訓練模型的資料集比例。
- VALIDATION_FRACTION:用於驗證模型的資料集比例。
- TEST_FRACTION:用於評估模型的資料集比例。
- 如要根據篩選條件拆分資料集,請指定下列項目:
- TRAINING_FILTER:將資料集篩選為用於訓練模型的資料項目。
- VALIDATION_FILTER:將資料集篩選為用於驗證模型的資料項目。
- TEST_FILTER:將資料集篩選為用於評估模型的資料項目。
- 如要使用預先定義的分割,請指定下列項目:
- PREDEFINED_SPLIT_KEY:用來分割資料集的資料欄名稱。這個欄中可接受的值包括 `training`、`validation` 和 `test`。
-
如要根據資料項上的時間戳記分割資料集,請指定下列項目:
- TIMESTAMP_TRAINING_FRACTION:用於訓練模型的資料集比例。
- TIMESTAMP_VALIDATION_FRACTION:用於驗證模型的資料集比例。
- TIMESTAMP_TEST_FRACTION:用於評估模型的資料集比例。
- TIMESTAMP_SPLIT_KEY:用於分割資料集的時間戳記資料欄名稱。
- 如要根據定義各組大小的倍數來分割資料集,請指定下列項目:
- OUTPUT_URI_PREFIX:Vertex AI 將訓練資料集分割為訓練、驗證和測試資料集後,會將其匯出至 Cloud Storage 位置。
- 定義自訂訓練工作:
- MACHINE_TYPE:機器類型。請參閱可用於訓練的機器類型。
- ACCELERATOR_TYPE:(選填) 要附加至每個試用版的加速器類型。
- ACCELERATOR_COUNT:(選填) 要附加至每個試驗的加速器數量。
- REPLICA_COUNT:每個測試要使用的 worker 備用資源數量。
- 如果訓練應用程式是在自訂容器中執行,請指定下列項目:
- CUSTOM_CONTAINER_IMAGE_URI:Artifact Registry 或 Docker Hub 中容器映像檔的 URI,會在每個 worker 副本上執行。
- CUSTOM_CONTAINER_COMMAND:(選填) 啟動容器時要叫用的指令。這項指令會覆寫容器的預設進入點。
- CUSTOM_CONTAINER_ARGS:(選填) 啟動容器時要傳遞的引數。所有引數的總長度上限為 100,000 個半形字元。
- 如果訓練應用程式是預先建立容器中執行的 Python 套件,請指定下列項目:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI:執行提供的 Python 套件的容器映像檔 URI。請參閱可用於訓練的預先建構容器。
- PYTHON_PACKAGE_URIS:Python 套件檔案的 Cloud Storage 位置,即訓練程式及其依附元件套件。套件 URI 數量上限為 100。
- PYTHON_MODULE:安裝套件後要執行的 Python 模組名稱。
- PYTHON_PACKAGE_ARGS:(選填) 要傳遞至 Python 模組的指令列引數。所有引數的總長度上限為 100,000 個半形字元。
- TIMEOUT:(選填) 工作的最大執行時間。
- MODEL_NAME:TrainingPipeline 上傳 (建立) 的模型顯示名稱。
- MODEL_DESCRIPTION:模型說明。
- IMAGE_URI:用於執行預測的容器映像檔 URI。例如:
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
。使用預先建立的容器或自訂容器。 - modelToUpload.labels:任何一組鍵/值組合,用於整理模型。舉例來說:
- "env": "prod"
- "tier": "backend"
- 為要套用至這項訓練管道的任何標籤指定 LABEL_NAME 和 LABEL_VALUE。
HTTP 方法和網址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
JSON 要求主體:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml", "trainingTaskInputs": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } } }, "modelToUpload": { "displayName": "MODEL_NAME", "predictSchemata": {}, "containerSpec": { "imageUri": "IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
回應內容包含規格和 TRAININGPIPELINE_ID 相關資訊。
Java
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Java。詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python 適用的 Vertex AI SDK
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python API 參考說明文件。
以下範例說明如何使用 Python 適用的 Vertex AI SDK 建立自訂訓練管道。選擇要使用自訂容器或預先建立的容器進行訓練:
預先建構的容器
使用 Vertex AI SDK for Python 建立訓練管道,在預建容器中執行 Python 程式碼時,您可以透過下列任一方式提供訓練程式碼:
指定 Cloud Storage 中 Python 來源發布作業套件的 URI。
(如果您在建立訓練管道時未使用 Python 適用的 Vertex AI SDK,也可以使用這個選項)。
指定本機電腦上的 Python 指令碼路徑。在建立訓練管道之前,Vertex AI SDK for Python 會將您的指令碼封裝為來源發行版本,並上傳至您選擇的 Cloud Storage 值區。
(這個選項僅適用於使用 Python 適用的 Vertex AI SDK)。
如要查看每個選項的程式碼範例,請選取相應的分頁標籤:
套件
指令碼
以下範例使用 CustomTrainingJob
類別。
自訂容器
以下範例使用 CustomContainerTrainingJob
類別。
超參數調整工作和模型上傳
這個訓練管道會封裝超參數調整工作,並新增方便的步驟,讓您在訓練完成後更輕鬆地將模型部署至 Vertex AI。這個訓練管道主要會執行兩項操作:
訓練管道會建立超參數調整工作資源。超參數調整工作會建立多個試驗。每個試驗都會使用您指定的運算資源和超參數,透過自訂工作執行訓練應用程式。
超參數調整工作完成後,訓練管道會在您為 Cloud Storage 值區指定的輸出目錄 (
baseOutputDirectory
) 中,找出最佳試驗的模型構件。訓練管道會使用這些構件建立模型資源,讓您準備模型部署作業。
針對這個訓練管道,您必須指定 baseOutputDirectory
,讓 Vertex AI 搜尋最佳試驗的模型構件。
超參數調整工作需要設定其他設定。進一步瞭解 HyperparameterTuningJob
的設定。
REST
使用下列程式碼範例,透過 trainingPipeline
資源的 create
方法建立訓練管道。
使用任何要求資料之前,請先替換以下項目:
- LOCATION_ID:專案所在的區域。
- PROJECT_ID:您的專案 ID。
- TRAINING_PIPELINE_NAME:必填。trainingPipeline 的顯示名稱。
- 如果訓練應用程式使用 Vertex AI 資料集,請指定下列項目:
- DATASET_ID:資料集 ID。
- ANNOTATIONS_FILTER:根據您指定的註解篩選資料集。
- ANNOTATION_SCHEMA_URI:根據指定的註解結構定義 URI 篩選資料集。
-
請使用下列其中一個選項,指定資料項目如何分割為訓練集、驗證集和測試集。
- 如要根據定義各組大小的倍數來分割資料集,請指定下列項目:
- TRAINING_FRACTION:用於訓練模型的資料集比例。
- VALIDATION_FRACTION:用於驗證模型的資料集比例。
- TEST_FRACTION:用於評估模型的資料集比例。
- 如要根據篩選條件拆分資料集,請指定下列項目:
- TRAINING_FILTER:將資料集篩選為用於訓練模型的資料項目。
- VALIDATION_FILTER:將資料集篩選為用於驗證模型的資料項目。
- TEST_FILTER:將資料集篩選為用於評估模型的資料項目。
- 如要使用預先定義的分割,請指定下列項目:
- PREDEFINED_SPLIT_KEY:用來分割資料集的資料欄名稱。這個欄中可接受的值包括 `training`、`validation` 和 `test`。
-
如要根據資料項上的時間戳記分割資料集,請指定下列項目:
- TIMESTAMP_TRAINING_FRACTION:用於訓練模型的資料集比例。
- TIMESTAMP_VALIDATION_FRACTION:用於驗證模型的資料集比例。
- TIMESTAMP_TEST_FRACTION:用於評估模型的資料集比例。
- TIMESTAMP_SPLIT_KEY:用於分割資料集的時間戳記資料欄名稱。
- 如要根據定義各組大小的倍數來分割資料集,請指定下列項目:
- OUTPUT_URI_PREFIX:Vertex AI 將訓練資料集拆分為訓練、驗證和測試集後,會將其匯出至 Cloud Storage 位置。
- 指定超參數調整工作:
- 指定指標:
- METRIC_ID:這個指標的名稱。
- METRIC_GOAL:這個指標的目標。可以是
MAXIMIZE
或MINIMIZE
。
- 指定超參數:
- PARAMETER_ID:此超參數的名稱。
- PARAMETER_SCALE:(選填) 參數的縮放方式。請將 CATEGORICAL 參數設為未設定。可以是
UNIT_LINEAR_SCALE
、UNIT_LOG_SCALE
、UNIT_REVERSE_LOG_SCALE
或SCALE_TYPE_UNSPECIFIED
- 如果這個超參數的類型是 DOUBLE,請指定這個超參數的最小值 (DOUBLE_MIN_VALUE) 和最大值 (DOUBLE_MAX_VALUE)。
- 如果這個超參數的類型是 INTEGER,請指定這個超參數的最小 (INTEGER_MIN_VALUE) 和最大 (INTEGER_MAX_VALUE) 值。
- 如果這個超參數的類型是 CATEGORICAL,請將可接受的值 (CATEGORICAL_VALUES) 指定為字串陣列。
- 如果這個超參數的類型是 DISCRETE,請將可接受的值 (DISCRETE_VALUES) 指定為數字陣列。
- ALGORITHM:(選填) 這個超參數調整工作要使用的搜尋演算法。可以是
ALGORITHM_UNSPECIFIED
、GRID_SEARCH
或RANDOM_SEARCH
。 - MAX_TRIAL_COUNT:在這個工作中執行的試驗次數上限。
- PARALLEL_TRIAL_COUNT:同時執行的測試數量上限。
- MAX_FAILED_TRIAL_COUNT:在超參數調整工作失敗前,可能失敗的工作數量。
- 定義試用自訂訓練工作:
- MACHINE_TYPE:機器類型。請參閱可用於訓練的機器類型。
- ACCELERATOR_TYPE:(選填) 要附加至每個試用版的加速器類型。
- ACCELERATOR_COUNT:(選填) 要附加至每個試驗的加速器數量。
- REPLICA_COUNT:每個測試要使用的 worker 備用資源數量。
- 如果訓練應用程式在自訂容器中執行,請指定下列項目:
- CUSTOM_CONTAINER_IMAGE_URI:Artifact Registry 或 Docker Hub 中容器映像檔的 URI,會在每個 worker 副本上執行。
- CUSTOM_CONTAINER_COMMAND:(選填) 系統啟動容器時要叫用的指令。這項指令會覆寫容器的預設進入點。
- CUSTOM_CONTAINER_ARGS:(選填) 啟動容器時要傳遞的引數。
- 如果訓練應用程式是預先建立容器中執行的 Python 套件,請指定下列項目:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI:執行提供的 Python 套件的容器映像檔 URI。請參閱可用於訓練的預先建構容器。
- PYTHON_PACKAGE_URIS:Python 套件檔案的 Cloud Storage 位置,即訓練程式及其依附元件套件。套件 URI 數量上限為 100。
- PYTHON_MODULE:安裝套件後要執行的 Python 模組名稱。
- PYTHON_PACKAGE_ARGS:(選填) 要傳遞至 Python 模組的指令列引數。
- 瞭解工作排程選項。
- TIMEOUT:(選填) 每個測試的最大執行時間。
- 針對要套用至這項超參數調整工作的任何標籤,指定 LABEL_NAME 和 LABEL_VALUE。
- 指定指標:
- MODEL_NAME:TrainingPipeline 上傳 (建立) 的模型顯示名稱。
- MODEL_DESCRIPTION:選用。模型的說明。
- PREDICTION_IMAGE_URI:必填。請指定下列兩個選項之一:
- 用於預測的預先建構容器的映像檔 URI,例如「tf2-cpu.2-1:latest」。
- 您要用於預測的自訂容器映像檔 URI。
- modelToUpload.labels:選用。任何用於整理模型的鍵/值組合。舉例來說:
- "env": "prod"
- "tier": "backend"
- 為要套用至這項訓練管道的任何標籤指定 LABEL_NAME 和 LABEL_VALUE。
HTTP 方法和網址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
JSON 要求主體:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/hyperparameter_tuning_task_1.0.0.yaml", "trainingTaskInputs": { "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }, "modelToUpload": { "displayName": "MODEL_NAME", "description": "MODEL_DESCRIPTION", "predictSchemata": {}, "containerSpec": { "imageUri": "PREDICTION_IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
回應內容包含規格和 TRAININGPIPELINE_ID 相關資訊。
監控訓練
如要查看訓練記錄,請按照下列步驟操作:
在 Google Cloud 控制台的「Vertex AI」專區中,前往「Training」頁面。
按一下工作名稱,前往自訂工作頁面。
按一下「查看記錄」。
您也可以使用互動式殼層,在訓練管道執行期間檢查訓練容器。
查看經過訓練的模型
自訂訓練管道完成後,您可以在 Google Cloud 控制台的 Vertex AI 專區,以及「Models」頁面中,找到已訓練好的模型。
後續步驟
- 瞭解如何使用 Cloud Profiler,找出訓練效能瓶頸,以更快速且經濟實惠的方式訓練模型。
- 將模型部署至端點。
- 建立超參數調整工作。
- 瞭解如何根據資源可用性排定自訂訓練工作。