對於要求 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
天。 - 自訂訓練工作會為所有工作站集區使用相同的機器設定。
支援的工作類型
系統支援所有自訂訓練作業類型,包括 CustomJob
、HyperparameterTuningjob
和 TrainingPipeline
。
在自訂訓練工作中啟用動態工作負載排程器
如要在自訂訓練工作中啟用動態工作負載排程器,請在建立工作時將 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.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"
}
}
}
配額
使用動態工作負載排程器提交工作時,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 配額與限制」。
帳單
系統只會針對工作執行期間收費,不會收取工作等待可用資源時的費用。詳情請參閱「定價」。
後續步驟
- 進一步瞭解如何設定自訂訓練工作的運算資源。
- 進一步瞭解如何使用分散式訓練執行自訂訓練工作。
- 進一步瞭解其他排程選項。