Panoramica
Puoi ridurre il costo di esecuzione dei job di previsione utilizzando le VM spot. Le VM spot sono istanze di macchine virtuali (VM) che rappresentano la capacità in eccesso 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:
- Quando utilizzi le VM spot con Vertex AI, si applicano tutte le limitazioni delle VM spot.
- L'utilizzo di VM Spot con Vertex AI è supportato solo per l'addestramento personalizzato e le previsioni.
- L'utilizzo di VM spot con i pod TPU non è supportato.
- 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 resistere a un eventuale prerilascio delle VM, Le VM spot possono ridurre in modo significativo 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 tue attività di elaborazione batch senza imporre un ulteriore carico sulle VM esistenti e senza che tu debba pagare il prezzo pieno di VM standard aggiuntive. Consulta Gestione del prerilascio.
Quando utilizzi le VM spot, i costi ti vengono addebitati in base a durata del job e tipo di macchina. Non paghi per il tempo in cui il job è in coda o è stato intercettato.
Gestione del prerilascio
Le VM spot possono essere recuperate da Compute Engine in qualsiasi momento. Pertanto,
il job di previsione deve essere a tolleranza di errore per ottenere il massimo
Spot VM. Quando le VM spot vengono prerilasciate, il job di previsione
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 rendere il tuo job di previsione tollerante ai guasti:
- Crea punti di controllo per salvare l'avanzamento. Se memorizzi periodicamente i progressi del modello, puoi assicurarti che un job di previsione interrotto possa riprendere dall'ultimo checkpoint memorizzato, anziché ricominciare dall'inizio.
- Utilizza uno script di arresto. Quando Compute Engine prerilascia una VM spot, puoi utilizzare uno script di arresto che tenta di eseguire prima che la VM venga prerilasciata. Per saperne di più, vedi Gestisci il prerilascio con un di chiusura.
Ricevi previsioni utilizzando le VM spot
Per utilizzare le VM spot quando esegui il deployment di un modello per ottenere previsioni, puoi usare l'API REST o l'SDK Vertex AI per Python.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: il tuo ID progetto.
- ENDPOINT_ID: l'ID dell'endpoint.
- MODEL_ID: l'ID del modello da implementare.
-
DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare il nome visualizzato delModel
anche perDeployedModel
. -
MACHINE_TYPE: facoltativo. Le risorse macchina utilizzate per ogni nodo
e deployment continuo. L'impostazione predefinita è
n1-standard-2
. Scopri di più sui tipi di macchine. - ACCELERATOR_TYPE: facoltativo. Il tipo di acceleratore da collegare alla macchina. Scopri di più.
- ACCELERATOR_COUNT: facoltativo. Il numero di acceleratori da utilizzare per ogni replica.
- MIN_REPLICA_COUNT: numero minimo di nodi per questo deployment. Il conteggio dei nodi può essere aumentato o diminuito in base al carico della previsione. fino al numero massimo di nodi e mai meno di questo numero. Questo valore deve essere maggiore o uguale a 1.
- MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment. Il numero di nodi può essere aumentato o diminuito in base al carico della previsione, fino a questo numero di nodi e mai inferiore al numero minimo di nodi.
- TRAFFIC_SPLIT_THIS_MODEL: la percentuale del traffico di previsione per questo endpoint da inoltrare al modello di cui viene eseguito il deployment con questa operazione. Il valore predefinito è 100. Tutto il traffico la somma delle percentuali deve essere 100. Scopri di più sulle suddivisioni del traffico.
- DEPLOYED_MODEL_ID_N: facoltativo. Se viene eseguito il deployment di altri modelli su questo endpoint, devono aggiornare le rispettive percentuali di suddivisione del traffico in modo che la somma di tutte le percentuali arrivi a 100.
- TRAFFIC_SPLIT_MODEL_N: il valore percentuale di suddivisione del traffico per l'ID del modello di cui è stato eseguito il deployment chiave.
- PROJECT_NUMBER: il numero del progetto generato automaticamente.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Corpo JSON della richiesta:
{ "acceleratorCount": 1}, "spot": true, "minReplicaCount": 1, "maxReplicaCount": 1}}, "trafficSplit": {"0": 100}}' \ "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel" "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "enableContainerLogging": true, "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT }, "spot": true, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
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.
endpoint5.deploy( model = model, deployed_model_display_name=DEPLOYED_NAME, traffic_split=TRAFFIC_SPLIT, machine_type="MACHINE_TYPE", accelerator_type="ACCELERATOR_TYPE", accelerator_count=ACCELERATOR_COUNT, min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, spot=True, sync=True )
Passaggi successivi
- Scopri di più sulle VM spot.
- Per saperne di più sulle VM Compute Engine in generale, consulta la documentazione relativa alle istanze di macchine virtuali.
- Per informazioni su come creare VM spot, consulta Creare e utilizzare VM spot.
- Utilizza le VM spot con l'addestramento di Vertex AI.