根據資源可用性安排訓練工作

對於要求 GPU 資源的自訂訓練工作,動態工作負載排程器可根據所要求 GPU 資源的可用時間,排定工作時間。本頁說明如何使用動態工作負載排程器排定自訂訓練工作,以及如何在 Vertex AI 自訂排程行為。

建議在下列情況使用 Dynamic Workload Scheduler 排定自訂訓練工作:

  • 自訂訓練工作要求使用 L4、A100、H100、H200 或 B200 GPU,且您希望在要求的資源可用時立即執行工作。舉例來說,Vertex AI 在尖峰時段以外分配 GPU 資源時。
  • 您的工作負載需要多個節點,且必須等到所有 GPU 節點都已佈建並準備就緒,才能同時開始執行。舉例來說,您要建立分散式訓練工作。

需求條件

如要使用 Dynamic Workload Scheduler,自訂訓練工作必須符合下列規定:

  • 自訂訓練工作要求使用 L4、A100、H100、H200 或 B200 GPU。
  • 自訂訓練作業最多只能執行 timeout 天。
  • 自訂訓練工作會為所有工作站集區使用相同的機器設定。

支援的工作類型

系統支援所有自訂訓練作業類型,包括 CustomJobHyperparameterTuningjobTrainingPipeline

在自訂訓練工作中啟用動態工作負載排程器

如要在自訂訓練工作中啟用動態工作負載排程器,請在建立工作時將 scheduling.strategy API 欄位設為 FLEX_START

如要瞭解如何建立自訂訓練工作,請參閱下列連結。

設定等待資源可用的時間長度

您可以在 scheduling.maxWaitDuration 欄位中設定工作可等候資源的時間長度。如果值為 0,表示作業會無限期等待,直到要求的資源可用為止。預設值為 1 天

範例

下列範例說明如何為 customJob 啟用動態工作負載排程器。 選取要使用的介面分頁。

gcloud

使用 Google Cloud CLI 提交工作時,請在 config.yaml 檔案中新增 scheduling.strategy 欄位。

YAML 設定檔範例:

workerPoolSpecs:
  machineSpec:
    machineType: a2-highgpu-1g
    acceleratorType: NVIDIA_TESLA_A100
    acceleratorCount: 1
  replicaCount: 1
  containerSpec:
    imageUri: gcr.io/ucaip-test/ucaip-training-test
    args:
    - port=8500
    command:
    - start
scheduling:
  strategy: FLEX_START
  maxWaitDuration: 7200s

Python

使用 Python 適用的 Vertex AI SDK 提交工作時,請在相關的 CustomJob 建立方法中設定 scheduling_strategy 欄位。

from google.cloud.aiplatform_v1.types import custom_job as gca_custom_job_compat

def create_custom_job_with_dws_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
        machine_type="a2-highgpu-1g",
        accelerator_type="NVIDIA_TESLA_A100",
        accelerator_count=1,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
        max_wait_duration=1800,
        scheduling_strategy=gca_custom_job_compat.Scheduling.Strategy.FLEX_START
    )

REST

使用 Vertex AI REST API 提交工作時,請在建立自訂訓練工作時設定 scheduling.strategyscheduling.maxWaitDuration 欄位。

JSON 要求內文範例:

{
  "displayName": "MyDwsJob",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "a2-highgpu-1g",
          "acceleratorType": "NVIDIA_TESLA_A100",
          "acceleratorCount": 1
        },
        "replicaCount": 1,
        "diskSpec": {
          "bootDiskType": "pd-ssd",
          "bootDiskSizeGb": 100
        },
        "containerSpec": {
          "imageUri": "python:3.10",
          "command": [
            "sleep"
          ],
          "args": [
            "100"
          ]
        }
      }
    ],
    "scheduling": {
      "maxWaitDuration": "1800s",
      "strategy": "FLEX_START"
    }
  }
}

配額

使用動態工作負載排程器提交工作時,Vertex AI 會消耗可搶占配額,而非隨選 Vertex AI 配額。舉例來說,如果是 Nvidia H100 GPU,請勿使用下列指令:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus

Vertex AI 會消耗:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus

不過,先占配額只會用於名稱。您的資源不會遭到搶占,運作方式與標準資源相同。

使用 Dynamic Workload Scheduler 提交工作前,請先確認可搶占配額已增加至足夠數量。如要瞭解 Vertex AI 配額,以及如何申請提高配額,請參閱「Vertex AI 配額與限制」。

帳單

系統只會針對工作執行期間收費,不會收取工作等待可用資源時的費用。詳情請參閱「定價」。

後續步驟