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

如果無伺服器訓練工作要求 GPU 資源,Dynamic Workload Scheduler 可讓您根據要求的 GPU 資源何時可用,安排工作排程。本頁面說明如何使用 Dynamic Workload Scheduler 排定無伺服器訓練工作,以及如何在 Gemini Enterprise Agent Platform 自訂排程行為。

建議用途

在下列情況下,建議使用 Dynamic Workload Scheduler 排定無伺服器訓練工作:

  • 無伺服器訓練工作要求 L4、A100、H100、H200 或 B200 GPU,且您希望在要求的資源可用時,立即執行工作。例如,Gemini Enterprise Agent Platform 在非尖峰時段分配 GPU 資源時。
  • 工作負載需要多個節點,且必須等到所有 GPU 節點都佈建完成並準備就緒,才能開始執行。舉例來說,您正在建立分散式訓練工作。

需求條件

如要使用 Dynamic Workload Scheduler,無伺服器訓練工作必須符合下列條件:

  • 無伺服器訓練工作要求 L4、A100、H100、H200 或 B200 GPU。
  • 無伺服器訓練工作的timeout上限為 7 天。
  • 無伺服器訓練工作會為所有 worker 集區使用相同的機器設定。

支援的工作類型

支援所有無伺服器訓練工作類型,包括 CustomJob、HyperparameterTuningjob 和 TrainingPipeline。

在無伺服器訓練工作中啟用 Dynamic Workload Scheduler

如要在無伺服器訓練工作中啟用 Dynamic Workload Scheduler,請在建立工作時,將 scheduling.strategy API 欄位設為 FLEX_START。

如要瞭解如何建立無伺服器訓練工作,請參閱下列連結。

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

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

範例

以下範例說明如何為 customJob 啟用 Dynamic Workload Scheduler。選取要使用的介面分頁。

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

使用 Agent Platform SDK for Python 提交工作時,請在相關的 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

使用 Gemini Enterprise Agent Platform REST API 提交工作時,請在建立無伺服器訓練工作時設定 scheduling.strategy 和 scheduling.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"
    }
  }
}

配額

使用 Dynamic Workload Scheduler 提交工作時,Gemini Enterprise Agent Platform 會使用先占配額,而非隨選 Gemini Enterprise Agent Platform 配額。舉例來說,如果是 Nvidia H100 GPU,則不使用:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus、

Gemini Enterprise Agent Platform 會使用:

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus。

不過,「先占」配額只是名義上的配額。資源不具先占功能,運作方式與標準資源相同。

使用 Dynamic Workload Scheduler 提交工作前,請先確認可先占配額已增加至足夠數量。如要進一步瞭解 Gemini Enterprise Agent Platform 配額,以及如何要求提高配額,請參閱「Gemini Enterprise Agent Platform 配額和限制」。

帳單

使用 DWS 彈性啟動時,系統會依據 Dynamic Workload Scheduler 定價計費。除了基礎架構使用費,您還必須支付無伺服器訓練管理費。

後續步驟