Panoramica
Puoi ridurre il costo di esecuzione dei job di addestramento personalizzato utilizzando le VM spot. Le VM spot sono istanze di macchine virtuali (VM) in eccesso di archiviazione di Compute Engine. Le VM spot hanno sconti significativi, ma Compute Engine potrebbe arrestare o eliminare (prerilasciare) le VM spot in modo preventivo per recuperare la capacità in qualsiasi momento.
Per scoprire di più, consulta VM spot.
Limitazioni e requisiti
Tieni presente le seguenti limitazioni e requisiti quando utilizzi VM spot con Vertex AI:
- Tutte le VM spot limitazioni si applicano quando si utilizzano le VM spot con Vertex AI.
- L'utilizzo di VM Spot con Vertex AI è supportato solo per l'addestramento personalizzato e le previsioni.
- L'utilizzo di VM spot con pod TPU non è supportato.
-
Vertex AI Training può utilizzare solo VM spot con le seguenti serie di macchine:
- A2
- A3
- L'invio del job tramite la console Google Cloud non è supportato.
Fatturazione
Se i tuoi carichi di lavoro sono a tolleranza di errore e possono essere sottoposti a un possibile prerilascio delle VM, le VM spot possono ridurre notevolmente i costi di calcolo. Se alcune VM si arrestano durante l'elaborazione, il job rallenta, ma non si arresta completamente. Le VM spot completano le attività di elaborazione batch senza posizionare ulteriori sulle VM esistenti e senza che tu debba pagare il prezzo pieno di VM standard aggiuntive. Vedi Gestione dell'anticipo.
Quando utilizzi le VM spot, la fatturazione avviene in base alla durata del job e al tipo di macchina. Non paghi per il tempo in cui il job è in coda o prerilasciato.
Gestione del prerilascio
Le VM spot possono essere recuperate da Compute Engine in qualsiasi momento. Pertanto,
il tuo job di addestramento personalizzato deve essere a tolleranza di errore per trarre il massimo vantaggio dalle VM spot. Quando le VM spot vengono prerilasciate, il job di addestramento personalizzato
non riesce con un errore STOCKOUT
e Compute Engine prova a riavviare il job
a sei volte. Per scoprire come ottenere il massimo dalle tue VM spot, consulta
VM spot
best practice.
Di seguito sono riportati alcuni metodi che puoi utilizzare per creare un job di addestramento personalizzato a tolleranza di errore:
- Crea checkpoint per salvare i progressi. Se memorizzi periodicamente i progressi del modello, puoi assicurarti che un job di addestramento personalizzato interrotto possa riprendere dall'ultimo checkpoint memorizzato, invece di ricominciare dall'inizio.
- Usa Elastic Horovod. L'addestramento elastico consente a Horovod di scalare le tue risorse di calcolo senza richiedere un riavvio o un ripristino dai checkpoint. Per saperne di più, consulta Elastic Horovod.
- Utilizza uno script di arresto. Quando Compute Engine prerilascia una VM spot, puoi utilizzare uno script di arresto che tenta di eseguire azioni di pulizia prima che la VM venga prerilasciata. Per saperne di più, vedi Gestisci il prerilascio con un di chiusura.
Prima di iniziare
Prepara l'applicazione di addestramento personalizzato:
- Per utilizzare un container predefinito, consulta Crea un'applicazione di addestramento Python per un container predefinito.
- Per utilizzare un container personalizzato, consulta Crea un'immagine container personalizzata per l'addestramento.
Configurare il job di addestramento per utilizzare le VM spot
Puoi configurare il tuo job di addestramento personalizzato in modo che utilizzi le VM spot specificando una strategia SPOT
nella configurazione della pianificazione.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- LOCATION: la regione in cui verrà installato il container o il pacchetto Python vengono eseguiti tutti i test delle unità.
- PROJECT_ID: il tuo ID progetto.
-
JOB_NAME: obbligatorio. Un nome visualizzato per
CustomJob
. - Definisci il job di addestramento personalizzato:
- MACHINE_TYPE: il tipo di macchina. Consulta di tipi di macchine addestramento.
- REPLICA_COUNT: il numero di repliche dei worker da usare. Nella maggior parte dei casi, imposta questo valore su
1
per il primo pool di worker. - Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: l'URI di un'immagine container Docker con il codice di addestramento. Scopri come crea un l'immagine container personalizzata.
- CUSTOM_CONTAINER_COMMAND: facoltativo. Il comando da richiamare all'avvio del container. Questo comando sostituisce l'entrypoint predefinito del container.
- CUSTOM_CONTAINER_ARGS: facoltativo. Gli argomenti da passare all'avvio del container.
- Se l'applicazione di addestramento è un pacchetto Python che viene eseguito in un container predefinito,
specifica quanto segue:
- EXECUTOR_IMAGE_URI: l'URI dell'immagine container che viene eseguita il codice fornito. Consulta i container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: elenco separato da virgole di Cloud Storage URI che specificano i file del pacchetto Python, ovvero il programma di addestramento e dei pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione del .
- PYTHON_PACKAGE_ARGS: facoltativo. Argomenti della riga di comando da passare il modulo Python.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
Corpo JSON della richiesta:
{ "displayName": "JOB_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "MACHINE_TYPE" } }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs // for distributed training. ], "scheduling": { "strategy": "SPOT" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
La risposta contiene informazioni sulle specifiche e sulla JOB_ID.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta SDK Vertex AI per Python documentazione di riferimento dell'API.
customJob = aiplatform.CustomJob(
display_name=TEST_CASE_NAME,
worker_pool_specs=worker_pool_spec,
staging_bucket=OUTPUT_DIRECTORY
)
customJob.run(
scheduling_strategy=aiplatform.compat.types.custom_job.Scheduling.Strategy.SPOT
)
Passaggi successivi
- Scopri di più sulle VM spot.
- Per saperne di più sulle VM di Compute Engine in generale, leggi l'articolo documentazione sulle istanze di macchine virtuali.
- Per scoprire come creare VM spot, leggi l'articolo Creare e utilizzare VM spot.
- Utilizza le VM spot con Vertex AI per la previsione.