使用自訂訓練功能訓練模型時,您可以設定訓練工作,自動將 Vertex AI TensorBoard 記錄上傳至 Vertex AI TensorBoard。
您可以透過這項整合功能,在 Vertex AI TensorBoard 將 Vertex AI TensorBoard 記錄檔寫入 Cloud Storage 時,近乎即時地監控訓練作業。
如需初始設定,請參閱「設定 Vertex AI TensorBoard」。
訓練指令碼變更
訓練指令碼必須設定為將 TensorBoard 記錄寫入 Cloud Storage 值區,而 Vertex AI Training 服務會透過預先定義的環境變數 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」。如需建構自訂訓練容器的操作步驟,請參閱「建立用於訓練的自訂容器映像檔」。
如要建立自訂訓練工作,請使用 Python 適用的 Vertex AI SDK 或 REST。
Python
Python
project
:。您可以在 Google Cloud 控制台 歡迎頁面中找到這些 ID。
location
:執行 CustomJob 的位置。這個位置應與提供的 TensorBoard 執行個體相同。staging_bucket
:在 API 呼叫期間暫存構件的 Cloud Storage 值區,包括 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
:要使用的工作站備用資源數量。 在大多數情況下,請將此值設為 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: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- 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/customJobs
JSON 要求主體:
{ "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 提升自訂訓練工作的效能。