Bei benutzerdefinierten Trainingsjobs, für die GPU-Ressourcen angefordert werden, können Sie mit Dynamic Workload Scheduler die Jobs basierend darauf planen, wann die angeforderten GPU-Ressourcen verfügbar werden. Auf dieser Seite erfahren Sie, wie Sie benutzerdefinierte Trainingsjobs mit dem Dynamic Workload Scheduler planen und das Planungsverhalten in Vertex AI anpassen.
Empfohlene Anwendungsfälle
Wir empfehlen, in den folgenden Fällen benutzerdefinierte Trainingsjobs mit dem Dynamic Workload Scheduler zu planen:
- Für den benutzerdefinierten Trainingsjob werden A100- oder H100-GPUs angefordert und Sie möchten den Job ausführen, sobald die angeforderten Ressourcen verfügbar sind. Beispielsweise, wenn Vertex AI die GPU-Ressourcen außerhalb der Stoßzeiten zuweist.
- Ihre Arbeitslast erfordert mehrere Knoten und kann erst ausgeführt werden, wenn alle GPU-Knoten bereitgestellt und bereit sind. Angenommen, Sie erstellen einen verteilten Trainingsjob.
Voraussetzungen
Damit Sie den Dynamic Workload Scheduler verwenden können, muss Ihr benutzerdefinierter Trainingsjob die folgenden Anforderungen erfüllen:
- Die
timeout
Ihres benutzerdefinierten Trainingsjobs darf maximal 7 Tage betragen. - Für Ihren benutzerdefinierten Trainingsjob wird dieselbe Maschinenkonfiguration für alle Workerpools verwendet.
Unterstützte Jobtypen
Alle Typen benutzerdefinierter Trainingsaufträge werden unterstützt, einschließlich CustomJob
, HyperparameterTuningjob
und TrainingPipeline
.
Dynamic Workload Scheduler in Ihrem benutzerdefinierten Trainingsjob aktivieren
Wenn Sie den Dynamic Workload Scheduler in Ihrem benutzerdefinierten Trainingsjob aktivieren möchten, legen Sie beim Erstellen des Jobs das API-Feld scheduling.strategy
auf FLEX_START
fest.
Unter den folgenden Links finden Sie weitere Informationen zum Erstellen eines benutzerdefinierten Trainingsjobs.
- Erstellen Sie ein
CustomJob
- Erstellen Sie ein
HyperparameterTuningJob
- Erstellen Sie ein
TrainingPipeline
Dauer für die Wartezeit auf die Ressourcenverfügbarkeit konfigurieren
Im Feld scheduling.maxWaitDuration
können Sie konfigurieren, wie lange der Job auf Ressourcen warten kann. Ein Wert von 0
bedeutet, dass der Job unbegrenzt wartet, bis die angeforderten Ressourcen verfügbar sind. Der Standardwert ist 1 Tag.
Beispiele
In den folgenden Beispielen wird gezeigt, wie Sie den Dynamic Workload Scheduler für einen customJob
aktivieren.
Wählen Sie den Tab für die Oberfläche aus, die Sie verwenden möchten.
gcloud
Wenn Sie einen Job über die Google Cloud CLI einreichen, fügen Sie das Feld scheduling.strategy
in die Datei config.yaml
ein.
Beispiel für eine YAML-Konfigurationsdatei:
workerPoolSpecs:
machineSpec:
machineType: n1-highmem-2
replicaCount: 1
containerSpec:
imageUri: gcr.io/ucaip-test/ucaip-training-test
args:
- port=8500
command:
- start
scheduling:
strategy: FLEX_START
maxWaitDuration: 1800s
python
Wenn Sie einen Job mit dem Vertex AI SDK für Python einreichen, legen Sie das Feld scheduling_strategy
in der entsprechenden CustomJob
-Erstellungsmethode fest.
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,
)
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
Wenn Sie einen Job mit der Vertex AI REST API einreichen, legen Sie beim Erstellen des benutzerdefinierten Trainingsjobs die Felder scheduling.strategy
und scheduling.maxWaitDuration
fest.
Beispiel für einen JSON-Anfragetext:
{
"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"
}
}
}
Kontingent
Wenn Sie einen Job mit dem Dynamic Workload Scheduler einreichen, wird nicht das On-Demand-Kontingent von Vertex AI, sondern das Kontingent für unterbrechbare Jobs von Vertex AI verbraucht. Beispiel: NVIDIA H100-GPUs:
aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus
,
Vertex AI verbraucht:
aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus
.
Das Kontingent auf Abruf wird jedoch nur dem Namen nach verwendet. Ihre Ressourcen können nicht vorzeitig beendet werden und verhalten sich wie Standardressourcen.
Bevor Sie einen Job mit Dynamic Workload Scheduler einreichen, müssen Sie Ihre Kontingente auf Abruf auf eine ausreichende Menge erhöhen. Weitere Informationen zu Vertex AI-Kontingenten und eine Anleitung zum Anfordern einer Kontingenterhöhung finden Sie unter Vertex AI-Kontingente und -Limits.
Abrechnung
Ihnen wird nur die Zeit in Rechnung gestellt, während der der Job ausgeführt wird, nicht die Zeit, in der der Job auf verfügbare Ressourcen wartet. Weitere Informationen finden Sie unter Preise.
Weitere Informationen
- Weitere Informationen zum Konfigurieren von Rechenressourcen für benutzerdefinierte Trainingsjobs
- Weitere Informationen zum Verwenden des verteilten Trainings für benutzerdefinierte Trainingsjobs
- Weitere Informationen zu Planungsoptionen