Per i job di addestramento personalizzati che richiedono risorse GPU, Dynamic Workload Scheduler ti consente di pianificare i job in base al momento in cui le risorse GPU richieste diventano disponibili. Questa pagina mostra come pianificare job di addestramento personalizzati utilizzando Dynamic Workload Scheduler e come personalizzare il comportamento di pianificazione su Vertex AI.
Casi d'uso consigliati
Ti consigliamo di utilizzare Dynamic Workload Scheduler per pianificare i job di addestramento personalizzati nelle seguenti situazioni:
- Il job di addestramento personalizzato richiede GPU A100 o H100 e vuoi eseguirlo 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 è stato 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 job di addestramento personalizzato deve soddisfare i seguenti 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 job 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 per la disponibilità delle risorse
Puoi configurare il tempo di attesa del job per le risorse nel
scheduling.maxWaitDuration
campo. Un valore 0
indica che il job attende
indefinitamente finché le risorse richieste non diventano disponibili. Il valore predefinito è 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 la pianificazione dei workload dinamici, anziché utilizzare la quota Vertex AI on demand, Vertex AI utilizza la quota preemitiva. 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 per nome. Le risorse non sono prelevabili e si comportano come risorse standard.
Prima di inviare un job utilizzando Dynamic Workload Scheduler, assicurati che le quote preattivabili siano state aumentate in misura 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 addebitato solo il costo per la durata dell'esecuzione del job e non per il tempo in cui il job è in attesa che le risorse diventino disponibili. Per maggiori dettagli, consulta la pagina Prezzi.
Passaggi successivi
- Scopri di più sulla configurazione delle risorse di calcolo 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.