如果無伺服器訓練工作要求 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 定價計費。除了基礎架構使用費,您還必須支付無伺服器訓練管理費。