Questo documento spiega come utilizzare le prenotazioni di Compute Engine per avere la certezza che i tuoi job di previsione dispongano delle risorse di macchine virtuali (VM) necessarie per l'esecuzione.
Le prenotazioni sono una funzionalità di Compute Engine. Contribuiscono a garantire che tu disponga delle risorse disponibili per creare VM con lo stesso hardware (memoria e vCPU) e risorse facoltative (CPU, GPU, TPU e dischi SSD locali) ogni volta che ne hai bisogno.
Quando crei una prenotazione, Compute Engine verifica che la capacità richiesta sia disponibile nella zona specificata. In questo caso, Compute Engine riserva le risorse, crea la prenotazione e si verifica quanto segue:
- Puoi utilizzare immediatamente le risorse riservate, che rimangono disponibili finché non elimini la prenotazione.
- Le risorse prenotate ti vengono addebitate alla stessa tariffa on demand delle VM in esecuzione, inclusi eventuali sconti applicabili, fino all'eliminazione della prenotazione. Una VM che utilizza una prenotazione non comporta addebiti separati. Ti vengono addebitati solo i costi per le risorse al di fuori della prenotazione, ad esempio dischi o indirizzi IP. Per saperne di più, consulta i prezzi delle prenotazioni.
Limitazioni e requisiti
Quando utilizzi le prenotazioni Compute Engine con Vertex AI, tieni presente le seguenti limitazioni e requisiti:
- Vertex AI può utilizzare le prenotazioni solo per CPU (anteprima), VM GPU o TPU (anteprima).
- Vertex AI non può utilizzare le prenotazioni di VM a cui sono collegati manualmente dischi SSD locali.
- L'utilizzo delle prenotazioni di Compute Engine con Vertex AI è supportato solo per l'addestramento personalizzato e l'inferenza e per Vertex AI Workbench (anteprima).
- Per utilizzare una prenotazione, le proprietà VM devono corrispondere esattamente a quelle del tuo carico di lavoro Vertex AI. Ad esempio, se una prenotazione specifica un tipo di macchina
a2-ultragpu-8g
, il carico di lavoro Vertex AI può utilizzare la prenotazione solo se utilizza anche un tipo di macchinaa2-ultragpu-8g
. Consulta i requisiti. - Per utilizzare una prenotazione condivisa di VM GPU o TPU, devi utilizzarla tramite il progetto proprietario o un progetto consumer con cui la prenotazione è condivisa. Consulta Come funzionano le prenotazioni condivise.
- Per supportare gli aggiornamenti regolari dei deployment di Vertex AI, ti consigliamo di aumentare
il numero di VM di un valore superiore al numero totale di repliche come segue, in base al
tipo di prenotazione utilizzato dal tuo
DeployedModel
:SPECIFIC_RESERVATION
: deve specificare almeno una VM aggiuntiva; consigliamo il 10% (ma almeno 1). I modelli di cui è stato eseguito il deployment utilizzandoSPECIFIC_RESERVATION
hanno la garanzia di utilizzare solo le VM della prenotazione. Vertex AI non può eseguire aggiornamenti se non è presente una VM aggiuntiva.ANY
:- Non è necessario disporre di VM aggiuntive, perché i modelli di deployment che utilizzano la prenotazione
ANY
utilizzano VM on demand se la capacità di prenotazione non è sufficiente. Tuttavia, senza VM aggiuntive, la prenotazione potrebbe non essere utilizzata completamente dopo un upgrade. Ad esempio, supponiamo di avere una prenotazione con 40 VM e di eseguire il deployment di un modello con 40 repliche utilizzando quella prenotazione. Al primo deployment, tutte le 40 VM nella prenotazione vengono utilizzate daDeployedModel
. Dopo un upgrade, solo 36 VM provengono dalla prenotazione e 4 VM sono on demand. - Se vuoi mantenere l'utilizzo all'interno della prenotazione, ti consigliamo di avere almeno una
VM aggiuntiva per ogni
DeployedModel
oDeploymentResourcePool
che utilizza la prenotazione. Se il numero totale di VM dello stesso tipo nelle tue prenotazioniANY
è inferiore a 50, ti consigliamo di aggiungerne il 10% (ma almeno 1). Se è superiore a 50, ti consigliamo di aumentarlo del 25%. Ad esempio:- Se prevedi di eseguire il deployment di modelli utilizzando 40 VM A3, puoi avere una prenotazione A3 con 44 VM oppure due prenotazioni A3: la prenotazione X con 30 VM e la prenotazione Y con 14 VM (44 in totale). Lo stesso vale per altri numeri di prenotazioni, a condizione che siano tutte condivise con Vertex AI e il numero totale di VM in queste prenotazioni sia almeno 44.
- Se prevedi di eseguire il deployment di modelli utilizzando 100 VM A3, il numero totale di VM in tutte le prenotazioni A3 condivise con Vertex AI deve essere almeno 125.
- Se prevedi di eseguire il deployment di 2 modelli utilizzando 10 VM, il numero totale di VM in tutte le prenotazioni A3 condivise con Vertex AI deve essere almeno 12. Il numero di VM è inferiore a 50, ma il numero di VM aggiuntive è 2
(1 per
DeployedModel
).
- Per utilizzare una prenotazione
SPECIFIC_RESERVATION
, concedi il ruolo IAM Visualizzatore Compute all'account di servizio Vertex AI nel progetto proprietario delle prenotazioni (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com
, dove PROJECT_NUMBER è il numero di progetto del progetto che utilizza la prenotazione). -
I seguenti servizi e funzionalità non sono supportati quando utilizzi le prenotazioni di Compute Engine con l'inferenza di Vertex AI:
- Conformità al Federal Risk and Authorization Management Program (FedRAMP)
Fatturazione
Quando utilizzi le prenotazioni Compute Engine, ti vengono addebitati i seguenti costi:
- Prezzi di Compute Engine per le risorse di Compute Engine, inclusi eventuali sconti per impegno di utilizzo (CUD) applicabili. Consulta la pagina Prezzi di Compute Engine.
- Tariffe di gestione delle previsioni di Vertex AI oltre all'utilizzo dell'infrastruttura. Consulta la pagina Prezzi della previsione.
Prima di iniziare
- Esamina i requisiti e le limitazioni per le prenotazioni.
- Esamina i requisiti relativi alle quote e le limitazioni per le prenotazioni condivise.
Consenti l'utilizzo di una prenotazione
Prima di utilizzare una prenotazione di CPU, VM GPU o TPU, devi impostare le relative norme di condivisione per consentire a Vertex AI di utilizzare la prenotazione. Per farlo, utilizza uno dei seguenti metodi:
- Consenti l'utilizzo durante la creazione di una prenotazione
- Consenti il consumo in una prenotazione esistente
Consenti il consumo durante la creazione di una prenotazione
Quando crei una prenotazione per un singolo progetto o condivisa di VM GPU, puoi consentire a Vertex AI di utilizzare la prenotazione nel seguente modo:
- Se utilizzi la console Google Cloud , nella sezione Servizi Google Cloud, seleziona Condividi prenotazione.
- Se utilizzi Google Cloud CLI, includi il
flag
--reservation-sharing-policy
impostato suALLOW_ALL
. - Se utilizzi l'API REST, nel corpo della richiesta includi il
campo
serviceShareType
impostato suALLOW_ALL
.
Consenti il consumo in una prenotazione esistente
Puoi modificare una prenotazione creata automaticamente di VM GPU o TPU per una prenotazione futura solo dopo l'ora di inizio della prenotazione.
Per consentire a Vertex AI di utilizzare una prenotazione esistente, utilizza uno dei seguenti metodi:
Verificare che una prenotazione venga utilizzata
Per verificare che la prenotazione venga utilizzata, consulta la sezione Verifica il consumo della prenotazione nella documentazione di Compute Engine.Ottenere inferenze utilizzando una prenotazione
Per creare un deployment del modello che utilizza una prenotazione Compute Engine di VM con GPU, utilizza 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 progetto in cui è stata creata la prenotazione. Per utilizzare una prenotazione condivisa da un altro progetto, devi condividerla con quel progetto. Per saperne di più, vedi Modificare i progetti consumer in una prenotazione condivisa.
- 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 diModel
anche perDeployedModel
. - MACHINE_TYPE: il tipo di macchina da utilizzare per ogni nodo di questo deployment. L'impostazione
predefinita è
n1-standard-2
. Per saperne di più sui tipi di macchine supportati, consulta Configurare le risorse di calcolo per la previsione. - ACCELERATOR_TYPE: il tipo di acceleratore da collegare alla macchina. Per saperne di più sul tipo di GPU supportato da ciascun tipo di macchina, consulta GPU per carichi di lavoro di calcolo.
- ACCELERATOR_COUNT: il numero di acceleratori da collegare alla macchina.
- RESERVATION_AFFINITY_TYPE: deve essere
ANY
,SPECIFIC_RESERVATION
oNONE
.ANY
significa che le VM del tuocustomJob
possono utilizzare automaticamente qualsiasi prenotazione con proprietà corrispondenti.SPECIFIC_RESERVATION
indica che le VM del tuocustomJob
possono utilizzare solo una prenotazione che le VM hanno come target specifico per nome.NONE
significa che le VM del tuocustomJob
non possono utilizzare alcuna prenotazione. La specifica diNONE
ha lo stesso effetto dell'omissione di una specifica di affinità della prenotazione.
- ZONE: la zona in cui è stata creata la prenotazione.
- RESERVATION_NAME: il nome della prenotazione.
- MIN_REPLICA_COUNT: Il numero minimo di nodi per questo deployment. Il conteggio di nodi può essere aumentato o diminuito in base al carico di inferenza, fino al numero massimo di nodi e mai al di sotto di questo numero di nodi. Questo valore deve essere maggiore o uguale a 1.
- MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment. Il conteggio di nodi può essere aumentato o diminuito in base al carico di inferenza, fino a questo numero di nodi e mai al di sotto del numero minimo di nodi.
- TRAFFIC_SPLIT_THIS_MODEL: la percentuale di traffico di previsione verso questo endpoint da indirizzare al modello di cui viene eseguito il deployment con questa operazione. Il valore predefinito è 100. La somma di tutte le percentuali di traffico deve essere pari a 100. Scopri di più sulle suddivisioni del traffico.
- DEPLOYED_MODEL_ID_N: (Facoltativo). Se su questo endpoint sono stati implementati altri modelli, devi aggiornare le percentuali di suddivisione del traffico in modo che la somma di tutte le percentuali sia pari a 100.
- TRAFFIC_SPLIT_MODEL_N: il valore della percentuale di suddivisione del traffico per la chiave ID modello di cui è stato eseguito il deployment.
- PROJECT_NUMBER: il numero di progetto generato automaticamente per il tuo progetto.
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:
{ "deployedModel": { "model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT, "reservationAffinity": { "reservationAffinityType": "RESERVATION_AFFINITY_TYPE", "key": "compute.googleapis.com/reservation-name", "values": [ "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME" ] } }, "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_ID/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 Python, consulta Installare l'SDK Vertex AI Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API dell'SDK Vertex AI per Python.
Prima di eseguire uno dei seguenti script, effettua le seguenti sostituzioni:
- DEPLOYED_NAME: un nome per il modello di cui è stato eseguito il deployment.
- TRAFFIC_SPLIT: il valore della percentuale di suddivisione del traffico per la chiave ID modello di cui è stato eseguito il deployment.
- MACHINE_TYPE: la macchina utilizzata per ogni nodo di questo
deployment. L'impostazione predefinita è
n1-standard-2
. Scopri di più sui tipi di macchine. - ACCELERATOR_TYPE: il tipo di acceleratore da collegare alla macchina. Per saperne di più sul tipo di GPU supportato da ciascun tipo di macchina, consulta GPU per carichi di lavoro di calcolo.
- ACCELERATOR_COUNT: il numero di acceleratori da collegare alla macchina.
- PROJECT_ID: il progetto in cui è stata creata la prenotazione. Per utilizzare una prenotazione condivisa da un altro progetto, devi condividerla con quel progetto. Per saperne di più, consulta Modificare i progetti consumer in una prenotazione condivisa.
- ZONE: la zona in cui si trova la prenotazione.
- RESERVATION_NAME: il nome della prenotazione.
- MIN_REPLICA_COUNT: Il numero minimo di nodi per questo deployment. Il conteggio di nodi può essere aumentato o diminuito in base al carico di inferenza, fino al numero massimo di nodi e mai al di sotto di questo numero di nodi. Questo valore deve essere maggiore o uguale a 1.
- MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment. Il conteggio di nodi può essere aumentato o diminuito in base al carico di inferenza, fino a questo numero di nodi e mai al di sotto del numero minimo di nodi.
A seconda del tipo di prenotazione che vuoi utilizzare, esegui una delle seguenti operazioni:
- Per utilizzare una prenotazione specifica:
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, reservation_affinity_type="SPECIFIC_RESERVATION", reservation_affinity_key="compute.googleapis.com/reservation-name", reservation_affinity_values=["projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"], min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )
- Per utilizzare una prenotazione utilizzata automaticamente:
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, reservation_affinity_type="ANY_RESERVATION", min_replica_count=MIN_REPLICA_COUNT, max_replica_count=MAX_REPLICA_COUNT, sync=True )
Passaggi successivi
- Scopri di più sulle prenotazioni delle risorse di zona di Compute Engine.
- Scopri come utilizzare le prenotazioni con l'addestramento di Vertex AI.
- Scopri come visualizzare le prenotazioni.
- Scopri come monitorare l'utilizzo delle prenotazioni.