Questo documento spiega come utilizzare le prenotazioni Compute Engine per ottenere un elevato livello di certezza che i tuoi job di previsione dispongano delle risorse delle macchine virtuali (VM) necessarie per l'esecuzione.
Le prenotazioni sono una funzionalità di Compute Engine. Ti aiutano ad avere a disposizione le risorse per creare VM con lo stesso hardware (memoria e vCPU) e le risorse facoltative (GPU 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 fino a quando non elimini la prenotazione.
- Ti viene addebitato il costo delle risorse riservate 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. Per saperne di più, consulta la pagina relativa alle prenotazioni di risorse di zona di Compute Engine.
Limitazioni e requisiti
Quando utilizzi le prenotazioni Compute Engine con Vertex AI, tieni conto delle seguenti limitazioni e requisiti:
- Vertex AI può utilizzare solo le prenotazioni delle VM con GPU collegate.
- Vertex AI non può utilizzare le prenotazioni delle VM con dischi SSD locali collegati manualmente.
- L'utilizzo delle prenotazioni Compute Engine con Vertex AI è supportato solo per l'addestramento e le previsioni personalizzate.
- Per utilizzare una prenotazione, le proprietà della VM devono corrispondere esattamente al 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 Requisiti. - Per utilizzare una prenotazione condivisa di VM GPU, devi farlo utilizzando il progetto del proprietario o un progetto consumer con cui la prenotazione è condivisa. Consulta Come funzionano le prenotazioni condivise.
- Per supportare aggiornamenti regolari dei deployment di Vertex AI, ti consigliamo di aumentare il numero di VM per più del numero totale di repliche come segue, in base al tipo di prenotazione utilizzato dal tuo
DeployedModel
:SPECIFIC_RESERVATION
: devi specificare almeno 1 VM aggiuntiva. Consigliamo il 10% (ma almeno 1). I modelli di cui è stato eseguito il deployment utilizzandoSPECIFIC_RESERVATION
consumeranno obbligatoriamente solo le VM della prenotazione. Vertex AI non può eseguire aggiornamenti se non sono presenti VM aggiuntive.ANY
:- Non è necessario disporre di VM aggiuntive, perché i modelli di cui è stato eseguito il deployment utilizzando la prenotazione
ANY
utilizzano VM on demand se la capacità della 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 questa prenotazione. Al primo deployment, tutte le 40 VM della prenotazione vengono utilizzate dalDeployedModel
. Dopo un upgrade, solo 36 VM provengono dalla prenotazione e 4 VM sono on demand. - Se vuoi mantenere l'utilizzo entro i limiti della prenotazione, ti consigliamo di avere almeno 1 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 aumentarlo del 10% (ma di almeno 1). Se è superiore a 50, ti consigliamo di aumentare il 25%. Ad esempio:- Se prevedi di eseguire il deployment di modelli utilizzando 40 VM A3, puoi avere 1 prenotazione A3 con 44 VM o 2 prenotazioni A3: prenotazione X con 30 VM e 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 che il numero totale di VM in queste prenotazioni sia almeno pari a 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 pari a 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 di 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 risorse di calcolo 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 del progetto che utilizza la prenotazione). -
I seguenti servizi e funzionalità non sono supportati quando utilizzi le prenotazioni di Compute Engine con la previsione 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 di Prediction.
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.
Consentire l'utilizzo di una prenotazione
Prima di utilizzare una prenotazione di VM GPU, devi impostare le norme di condivisione per consentire a Vertex AI di utilizzare la prenotazione. A tal fine, utilizza uno dei seguenti metodi:
- Consentire il consumo durante la creazione di una prenotazione
- Consentire il consumo in una prenotazione esistente
Consentire il consumo durante la creazione di una prenotazione
Quando crei una prenotazione per un singolo progetto o una prenotazione condivisa di VM GPU, puoi consentire a Vertex AI di utilizzare la prenotazione come segue:
- Se utilizzi la console Google Cloud, nella sezione Servizi Google Cloud, seleziona Condividi prenotazione.
- Se utilizzi Google Cloud CLI, includi il
--reservation-sharing-policy
flag impostato suALLOW_ALL
. - Se utilizzi l'API REST, nel corpo della richiesta includi il
serviceShareType
campo impostato suALLOW_ALL
.
Consentire il consumo in una prenotazione esistente
Per consentire a Vertex AI di utilizzare una prenotazione esistente di VM GPU, consulta Modificare il criterio di condivisione di una prenotazione.Verificare che una prenotazione sia stata utilizzata
Per verificare che la prenotazione venga utilizzata, consulta Verificare il consumo delle prenotazioni nella documentazione di Compute Engine.Ottenere le previsioni utilizzando una prenotazione
Per creare un deployment del modello che utilizza una prenotazione Compute Engine di VM 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 di un altro progetto, devi condividerla con quel progetto. Per ulteriori informazioni, consulta 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 il
DeployedModel
. Puoi utilizzare il nome visualizzato delModel
anche perDeployedModel
. - MACHINE_TYPE: il tipo di macchina da utilizzare per ogni nodo di questo deployment. L'impostazione predefinita è
n1-standard-2
. Per ulteriori informazioni 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 ulteriori informazioni sul tipo di GPU supportato da ogni 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
indica che le VM del tuocustomJob
possono automaticamente utilizzare qualsiasi prenotazione con proprietà corrispondenti.SPECIFIC_RESERVATION
indica che le VM dicustomJob
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.
- RESERVATION_NAME: il nome della prenotazione.
- MIN_REPLICA_COUNT: il numero minimo di nodi per questo deployment. Il numero di 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. La somma di tutte le percentuali di traffico deve essere pari al 100%. Scopri di più sulle suddivisioni del traffico.
- DEPLOYED_MODEL_ID_N: facoltativo. Se in questo endpoint sono di cui è stato eseguito il deployment di altri modelli, devi aggiornare le relative percentuali di suddivisione del traffico in modo che tutte le percentuali sommate diano 100.
- TRAFFIC_SPLIT_MODEL_N: il valore percentuale della suddivisione del traffico per la chiave ID modello di cui è stato eseguito il deployment.
- PROJECT_NUMBER: il numero del progetto generato automaticamente.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/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 per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK for Python.
Prima di eseguire uno degli script riportati di seguito, effettua le seguenti sostituzione:
- DEPLOYED_NAME: un nome per il modello di cui è stato eseguito il deployment.
- TRAFFIC_SPLIT: il valore percentuale della 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 ulteriori informazioni sul tipo di GPU supportato da ogni 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 ulteriori informazioni, vedi 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 numero di 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.
A seconda del tipo di prenotazione che vuoi utilizzare, procedi in uno dei seguenti modi:
- 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 consumata 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.