Per i job di addestramento serverless di Vertex AI che richiedono risorse GPU, Dynamic Workload Scheduler ti consente di pianificare i job in base a quando le risorse GPU richieste diventano disponibili. Questa pagina mostra come pianificare i job di addestramento serverless 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 serverless nelle seguenti situazioni:
- Il job di addestramento serverless richiede GPU L4, A100, H100, H200 o B200 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 tuo workload richiede più nodi e non può essere eseguito finché tutti i nodi GPU non vengono sottoposti al provisioning e non sono pronti contemporaneamente. Ad esempio, stai creando un job di addestramento distribuito.
Requisiti
Per utilizzare Dynamic Workload Scheduler, il job di addestramento serverless deve soddisfare i seguenti requisiti:
- Le richieste di job di addestramento serverless riguardano GPU L4, A100, H100, H200 o B200.
- Il tuo job di addestramento serverless ha un
timeoutmassimo di 7 giorni o meno. - Il job di addestramento serverless 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 serverless, inclusi CustomJob,
HyperparameterTuningjob e TrainingPipeline.
Abilitare Dynamic Workload Scheduler nel job di addestramento serverless
Per abilitare Dynamic Workload Scheduler nel job di addestramento serverless, imposta il campo dell'API scheduling.strategy su FLEX_START quando crei il job.
Per informazioni dettagliate su come creare un job di addestramento serverless, consulta i seguenti link.
Configura la durata dell'attesa per la disponibilità delle risorse
Puoi configurare per quanto tempo il job può attendere le risorse nel campo
scheduling.maxWaitDuration. Un valore 0 indica che il job attende
indefinitamente fino a quando le risorse richieste non diventano disponibili. Il valore predefinito
è 1 giorno.
Esempi
Gli esempi seguenti mostrano come abilitare 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.
File di configurazione YAML di esempio:
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
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,
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
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
serverless.
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, anziché utilizzare la quota di Vertex AI on demand, Vertex AI utilizza la quota preemptible. Ad esempio, per le GPU Nvidia H100, anziché consumare:
aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,
Vertex AI consuma:
aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.
Tuttavia, la quota prerilasciabile viene utilizzata solo nel nome. Le tue risorse non sono preemptive e si comportano come risorse standard.
Prima di inviare un job utilizzando Dynamic Workload Scheduler, assicurati che le quote preemptive siano state aumentate a un importo sufficiente. Per informazioni dettagliate sulle quote di Vertex AI e istruzioni per effettuare richieste di aumento della quota, consulta la pagina Quote e limiti di Vertex AI.
Fatturazione
Quando utilizzi l'inizio flessibile di DWS, la fatturazione viene effettuata in base ai prezzi di Dynamic Workload Scheduler. Oltre all'utilizzo dell'infrastruttura, sono previste commissioni di gestione dell'addestramento serverless.
Passaggi successivi
- Scopri di più sulla configurazione delle risorse di calcolo per i job di addestramento serverless.
- Scopri di più sull'utilizzo dell'addestramento distribuito per job di addestramento serverless.
- Scopri di più sulle altre opzioni di pianificazione.