使用自訂訓練訓練模型時,您可以設定訓練工作,自動將 Vertex AI TensorBoard 記錄上傳至 Vertex AI TensorBoard。
您可以使用這項整合功能,在 Vertex AI TensorBoard 記錄檔寫入 Cloud Storage 時,以近乎即時的方式監控訓練作業。
如需初始設定,請參閱「為 Vertex AI TensorBoard 設定」。
訓練指令碼異動
訓練指令碼必須設為將 TensorBoard 記錄寫入 Cloud Storage 值區,Vertex AI 訓練服務會透過預先定義的環境變數 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 自訂訓練」。如要瞭解如何建構自訂訓練容器,請參閱「建立訓練用自訂容器映像檔」一文。
如要建立自訂訓練工作,請使用 Python 適用的 Vertex AI SDK 或 REST。
Python 適用的 Vertex AI SDK
Python 適用的 Vertex AI SDK
project
:您的專案 ID。您可以在 Google Cloud 控制台歡迎頁面中找到這些 ID。
location
:CustomJob 的執行位置。這個位置應與提供的 TensorBoard 例項相同。staging_bucket
:Cloud Storage 值區,用於在 API 呼叫期間暫存成果,包括 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: "${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 最佳化自訂訓練工作效能。