Per i job di addestramento personalizzati che richiedono risorse GPU, Dynamic Workload Scheduler consente di pianificare i job in base a quando le risorse GPU richieste diventano disponibili. Questa pagina mostra come pianificare job di addestramento personalizzati mediante Dynamic Workload Scheduler, e come personalizzare il comportamento di pianificazione su Vertex AI.
Casi d'uso consigliati
Consigliamo di utilizzare Dynamic Workload Scheduler per pianificare i job di addestramento personalizzati nel le seguenti situazioni:
- Il job di addestramento personalizzato richiede le GPU A100 o H100 e vuoi eseguire non appena le risorse richieste diventano disponibili. Ad esempio, quando Vertex AI alloca le risorse GPU al di fuori delle ore di punta.
- Il carico di lavoro richiede più nodi e non può iniziare a funzionare finché non viene eseguito il provisioning di tutti i nodi GPU e non sono pronti contemporaneamente. Ad esempio, stai creando un job di addestramento distribuito.
Requisiti
Per utilizzare Dynamic Workload Scheduler, il tuo job di addestramento personalizzato deve soddisfare i seguenti requisiti: requisiti:
- Il tuo job di addestramento personalizzato ha un
timeout
massimo di 7 giorni o meno. - Il job di addestramento personalizzato utilizza la stessa configurazione della macchina per tutti i pool di worker.
Tipi di prestazioni supportati
Sono supportati tutti i tipi di job di addestramento personalizzato, tra cui CustomJob
,
HyperparameterTuningjob
e TrainingPipeline
.
Abilita Dynamic Workload Scheduler nel tuo job di addestramento personalizzato
Per attivare Dynamic Workload Scheduler nel job di addestramento personalizzato, imposta il campo API scheduling.strategy
su FLEX_START
quando crei il job.
Per informazioni dettagliate su come creare un job di addestramento personalizzato, consulta i seguenti link.
Configura la durata di attesa della disponibilità delle risorse
Puoi configurare il tempo di attesa del job per le risorse nel
Campo scheduling.maxWaitDuration
. Il valore 0
indica che il job attende
a tempo indeterminato finché le risorse richieste non diventano disponibili. Il valore predefinito
è di 1 giorno.
Esempi
Gli esempi riportati di seguito mostrano come attivare Dynamic Workload Scheduler per un customJob
.
Seleziona la scheda dell'interfaccia che vuoi utilizzare.
gcloud
Quando invii un job utilizzando Google Cloud CLI, aggiungi il campo scheduling.strategy
nel
file config.yaml
.
Esempio di file di configurazione YAML:
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
Quando invii un job utilizzando l'SDK Vertex AI per Python, imposta il campo scheduling_strategy
nel metodo di creazione CustomJob
pertinente.
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
Quando invii un job utilizzando l'API REST di Vertex AI, imposta i campi scheduling.strategy
e scheduling.maxWaitDuration
quando crei il job di addestramento personalizzato.
Esempio di corpo JSON della richiesta:
{
"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"
}
}
}
Quota
Quando invii un job utilizzando Dynamic Workload Scheduler, invece di utilizzare i dati on demand Quota di Vertex AI, che utilizza una quota prerilasciabile. Ad esempio, per le GPU Nvidia H100, anziché consumare:
aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus
,
Vertex AI utilizza:
aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus
.
Tuttavia, la quota prerilasciabile viene utilizzata solo nel nome. Le tue risorse non sono prerilasciabili e si comportano come risorse standard.
Prima di inviare un job utilizzando Dynamic Workload Scheduler, assicurati che le tue quote prerilasciabili siano stati aumentati a un importo sufficiente. Per informazioni dettagliate sulle quote di Vertex AI e sulle istruzioni per presentare richieste di aumento della quota, consulta Quote e limiti di Vertex AI.
Fatturazione
Ti viene addebitata solo la durata dell'esecuzione del job e non il tempo di attesa prima che le risorse diventino disponibili. Per i dettagli, consulta la pagina Prezzi.
Passaggi successivi
- Scopri di più sulla configurazione delle risorse di computing per i job di addestramento personalizzato.
- Scopri di più sull'utilizzo dell'addestramento distribuito per i job di addestramento personalizzato.
- Scopri di più sulle altre opzioni di pianificazione.