使用自訂訓練功能訓練模型時,您可以設定訓練工作,自動將 Vertex AI TensorBoard 記錄檔上傳至 Vertex AI TensorBoard。
您可以透過這項整合功能,在 Vertex AI TensorBoard 將記錄檔寫入 Cloud Storage 時,近乎即時地監控訓練作業。
如需初始設定,請參閱「設定 Vertex AI TensorBoard」。
訓練指令碼變更
訓練指令碼必須設定為將 TensorBoard 記錄寫入 Cloud Storage 值區,Vertex AI Training Service 會透過預先定義的環境變數 AIP_TENSORBOARD_LOG_DIR,自動提供該值區的位置。
通常只要將 os.environ['AIP_TENSORBOARD_LOG_DIR'] 做為記錄目錄提供給開放原始碼 TensorBoard 記錄寫入 API 即可。AIP_TENSORBOARD_LOG_DIR 的位置通常是使用 staging_bucket 變數設定。
如要在 TensorFlow 2.x 中設定訓練指令碼,請建立 TensorBoard 回呼,並將 log_dir 變數設為 os.environ['AIP_TENSORBOARD_LOG_DIR']。接著,TensorBoard 回呼會納入 TensorFlow model.fit 回呼清單。
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
進一步瞭解 Vertex AI 如何在自訂訓練環境中設定環境變數。
建立自訂訓練工作
下列範例說明如何建立自己的自訂訓練工作。
如需如何建立自訂訓練工作的詳細範例,請參閱「Hello custom training」。如需建立自訂訓練容器的操作步驟,請參閱「建立用於訓練作業的自訂容器映像檔」。
如要建立自訂訓練工作,請使用 Vertex AI SDK for Python 或 REST。
Python
Python
project:。您可以在 Google Cloud 控制台的歡迎頁面找到這些 ID。
location:執行 CustomJob 的位置。這個位置應與提供的 TensorBoard 執行個體相同。staging_bucket:在 API 呼叫期間暫存構件的 Cloud Storage bucket,包括 TensorBoard 記錄。display_name:自訂訓練工作的顯示名稱。script_path:相對於本機檔案系統工作目錄的路徑,指向訓練程式碼的進入點指令碼。container_uri:訓練容器映像檔的 URI,可以是 Vertex AI。預先建構的訓練容器或自訂容器。model_serving_container_image_uri:模型服務容器的 URI,適用於提供訓練指令碼產生的模型。dataset_id:用於訓練的資料集 ID 編號。model_display_name:訓練模型的顯示名稱。args:要傳遞至 Python 指令碼的指令列引數。replica_count:要使用的 worker 副本數量。 在多數情況下,請將此值設為 1,以供第一個工作站集區使用。machine_type:要使用的 VM 類型。如需支援的 VM 清單,請參閱「機器類型」。accelerator_type:要附加至資源集區中每個 VM 的 GPU 類型。如需支援的 GPU 清單,請參閱「GPU」一文。accelerator_count要附加至資源集區中每個 VM 的 GPU 數量。預設值為1。training_fraction_split:用於訓練模型的部分資料集。validation_fraction_split:用於驗證模型的部分資料集。test_fraction_split:用於評估模型的部分資料集。sync:是否要同步執行這個方法。tensorboard_resource_name:CustomJob 將 TensorBoard 記錄檔上傳至的 Vertex TensorBoard 執行個體資源名稱。service_account:使用 TensorBoard 執行時為必要項目。請參閱「建立具備必要權限的服務帳戶」。
REST
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION_ID:要執行
CustomJob的位置,例如 us-central1。這個位置應與提供的 TensorBoard 執行個體相同。 - PROJECT_ID:您的專案 ID。
- TENSORBOARD_INSTANCE_NAME:(必要) 儲存 Vertex AI TensorBoard 記錄的現有 Vertex AI TensorBoard 執行個體完整名稱:
projects/PROJECT_ID/locations/LOCATION_ID/tensorboards/TENSORBOARD_INSTANCE_ID
注意:如果 TensorBoard 執行個體不是現有執行個體,建立 customJobs 時會擲回 404 錯誤。 - GCS_BUCKET_NAME:在設定期間建立的 Cloud Storage bucket 名稱。
使用不重複且無法預測的名稱 (例如加入隨機後置字元)。
- USER_SA_EMAIL:(必要) 先前步驟中建立的服務帳戶,或是您自己的服務帳戶。"USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER。
- INVOCATION_TIMESTAMP:「$(date +'%Y%m%d-%H%M%S')」
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR:(必要) 訓練的所有輸出內容寫入路徑。 Google Cloud "gs://$GCS_BUCKET_NAME/$JOB_NAME"
HTTP 方法和網址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobsJSON 要求主體:
{
"displayName": JOB_NAME,
"jobSpec":{
"workerPoolSpecs":[
{
"replicaCount": "1",
"machineSpec": {
"machineType": "n1-standard-8",
},
"containerSpec": {
"imageUri": TRAINING_CONTAINER,
}
}
],
"base_output_directory": {
"output_uri_prefix": BASE_OUTPUT_DIR,
},
"serviceAccount": USER_SA_EMAIL,
"tensorboard": TENSORBOARD_INSTANCE_NAME,
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID",
"displayName": "DISPLAY_NAME",
"jobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "n1-standard-8"
},
"replicaCount": "1",
"diskSpec": {
"bootDiskType": "pd-ssd",
"bootDiskSizeGb": 100
},
"containerSpec": {
"imageUri": "IMAGE_URI"
}
}
],
"serviceAccount": "SERVICE_ACCOUNT",
"baseOutputDirectory": {
"outputUriPrefix": "OUTPUT_URI_PREFIX"
},
"tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id"
},
"state": "JOB_STATE_PENDING",
"createTime": "CREATE-TIME",
"updateTime": "UPDATE-TIME"
}
後續步驟
- 請參閱「查看 Vertex AI TensorBoard」。
- 瞭解如何使用 Cloud Profiler,提升自訂訓練工作的效能。