Devi eseguire il deployment di un modello in un endpoint prima di poterlo usare per fornire predizioni online. Il deployment di un modello associa risorse fisiche al modello in modo che possa fornire previsioni online con bassa latenza.
Per essere dispiegabile, il modello deve essere visibile in Vertex AI Model Registry. Per informazioni su Model Registry, inclusa la procedura per importare gli elementi del modello o crearli direttamente in Model Registry, consulta Introduzione a Vertex AI Model Registry.
Puoi eseguire il deployment di più modelli in un endpoint oppure dello stesso modello in più endpoint. Per ulteriori informazioni sulle opzioni e sui casi d'uso per il deployment dei modelli, consulta Motivi per eseguire il deployment di più modelli nello stesso endpoint.
Eseguire il deployment di un modello in un endpoint
Per eseguire il deployment di un modello, utilizza uno dei seguenti metodi:
Console Google Cloud
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Modelli.
Fai clic sul nome e sull'ID versione del modello di cui vuoi eseguire il deployment per aprire la relativa pagina dei dettagli.
Seleziona la scheda Deployment e test.
Se il modello è già stato implementato in uno o più endpoint, questi sono elencati nella sezione Esegui il deployment del modello.
Fai clic su Esegui il deployment nell'endpoint.
Per eseguire il deployment del modello in un nuovo endpoint, seleziona
Crea nuovo endpoint, e fornisci un nome per il nuovo endpoint. Per eseguire il deployment del modello in un endpoint esistente, seleziona Aggiungi a un endpoint esistente e seleziona l'endpoint dall'elenco a discesa.Puoi eseguire il deployment di più modelli in un endpoint oppure puoi eseguire il deployment dello stesso modello in più endpoint.
Se esegui il deployment del modello in un endpoint esistente in cui sono già stati implementati uno o più modelli, devi aggiornare la percentuale di Suddivisione del traffico per il modello di cui stai eseguendo il deployment e per i modelli già implementati in modo che tutte le percentuali sommino il 100%.
Se esegui il deployment del modello in un nuovo endpoint, accetta 100 per la Suddivisione del traffico. In caso contrario, modifica i valori di suddivisione del traffico per tutti i modelli nell'endpoint in modo che sommino 100.
Inserisci il numero minimo di nodi di calcolo che vuoi fornire per il tuo modello.
Si tratta del numero di nodi che devono essere sempre disponibili per il modello.
Ti vengono addebitati i nodi utilizzati, sia per gestire il carico di previsione sia per i nodi di standby (minimi), anche senza traffico di previsione. Consulta la pagina dei prezzi.
Il numero di nodi di calcolo può aumentare se necessario per gestire il traffico di previsione, ma non supererà mai il numero massimo di nodi.
Per utilizzare la scalabilità automatica, inserisci il numero massimo di nodi di calcolo a cui vuoi che Vertex AI esegua la scalabilità.
Seleziona il tipo di macchina.
Risorse di macchine più grandi aumentano le prestazioni di previsione e i costi. Confronta i tipi di macchine disponibili.
Seleziona un Tipo di acceleratore e un Conteggio acceleratori.
Se hai attivato l'utilizzo dell'acceleratore quando hai importato o creato il modello, viene visualizzata questa opzione.
Per il conteggio degli acceleratori, consulta la tabella GPU per verificare la presenza di numeri validi di GPU che puoi utilizzare con ogni tipo di macchina CPU. Il conteggio degli acceleratori fa riferimento al numero di acceleratori per nodo, non al numero totale di acceleratori nel tuo deployment.
Se vuoi utilizzare un account di servizio personalizzato per il deployment, seleziona un account di servizio nel menu a discesa Account di servizio.
Scopri come modificare le impostazioni predefinite per la registrazione delle previsioni.
Fai clic su Fine per il modello e, quando tutte le percentuali di Suddivisione traffico sono corrette, fai clic su Continua.
Viene visualizzata la regione in cui viene eseguito il deployment del modello. Deve essere la regione in cui hai creato il modello.
Fai clic su Esegui il deployment per eseguire il deployment del modello nell'endpoint.
API
Quando esegui il deployment di un modello utilizzando l'API Vertex AI, completa i seguenti passaggi:
Creazione di un endpoint
Se stai eseguendo il deployment di un modello in un endpoint esistente, puoi saltare questo passaggio e andare a Ottenere l'ID endpoint. Per provare l'anteprima dell'endpoint dedicato, vai a Creare un endpoint dedicato.
gcloud
Nell'esempio seguente viene utilizzato il comando gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION_ID \
--display-name=ENDPOINT_NAME
Sostituisci quanto segue:
- LOCATION_ID: la regione in cui utilizzi Vertex AI.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
Lo strumento Google Cloud CLI potrebbe richiedere alcuni secondi per creare l'endpoint.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la tua regione.
- PROJECT_ID: il tuo ID progetto.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Corpo JSON della richiesta:
{ "display_name": "ENDPOINT_NAME" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
"done":
true
.
Terraform
L'esempio seguente utilizza la risorsa Terraform google_vertex_ai_endpoint
per creare un endpoint.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Crea un endpoint dedicato
Se stai eseguendo il deployment di un modello in un endpoint esistente, puoi saltare questo passaggio.
Un endpoint dedicato è un endpoint più veloce e stabile che supporta dimensioni del payload più grandi e timeout delle richieste più lunghi.
Per utilizzare un endpoint dedicato durante l'anteprima, devi attivarlo esplicitamente.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"display_name": "ENDPOINT_NAME", "dedicatedEndpointEnabled": true}' \
https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Sostituisci quanto segue:
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
- LOCATION_ID: la regione in cui utilizzi Vertex AI.
- PROJECT_ID: l'ID del tuo progetto Google Cloud.
Python
endpoint = aiplatform.Endpoint.create(
display_name="ENDPOINT_NAME",
dedicated_endpoint_enabled=True,
)
Sostituisci quanto segue:
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
Recuperare l'ID endpoint
Per eseguire il deployment del modello, devi disporre dell'ID endpoint.
gcloud
Nell'esempio seguente viene utilizzato il comando gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION_ID \
--filter=display_name=ENDPOINT_NAME
Sostituisci quanto segue:
- LOCATION_ID: la regione in cui utilizzi Vertex AI.
- ENDPOINT_NAME: il nome visualizzato dell'endpoint.
Prendi nota del numero visualizzato nella colonna ENDPOINT_ID
. Utilizza questo ID nel
passaggio successivo.
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_NAME: il nome visualizzato dell'endpoint.
Metodo HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Esegui il deployment del modello
Seleziona la scheda di seguito per la tua lingua o il tuo ambiente:
gcloud
I seguenti esempi utilizzano il comando gcloud ai endpoints deploy-model
.
L'esempio seguente esegue il deployment di un Model
in un Endpoint
senza utilizzare GPU per accelerare l'invio di previsioni e senza suddividere il traffico tra più risorse DeployedModel
:
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- ENDPOINT_ID: l'ID dell'endpoint.
- LOCATION_ID: la regione in cui utilizzi Vertex AI.
- MODEL_ID: l'ID del modello da implementare.
-
DEPLOYED_MODEL_NAME: un nome per il
DeployedModel
. Puoi utilizzare il nome visualizzato delModel
anche perDeployedModel
. - 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.
-
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.
Se il flag
--max-replica-count
viene omesso, il numero massimo di nodi viene impostato sul valore di--min-replica-count
.
Esegui il comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Suddivisione del traffico
Il flag --traffic-split=0=100
negli esempi precedenti invia il 100% del traffico di previsione ricevuto da Endpoint
al nuovo DeployedModel
, rappresentato dall'ID temporaneo 0
. Se il tuo Endpoint
ha già altre risorseDeployedModel
, puoi suddividere il traffico tra il nuovoDeployedModel
e quello precedente.
Ad esempio, per inviare il 20% del traffico al nuovo DeployedModel
e l'80% a uno precedente,
esegui il seguente comando.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- OLD_DEPLOYED_MODEL_ID: l'ID del
DeployedModel
esistente.
Esegui il comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Esegui il deployment del modello.
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 il
DeployedModel
. Puoi utilizzare il nome visualizzato delModel
anche perDeployedModel
. -
MACHINE_TYPE: facoltativo. Le risorse della macchina utilizzate 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. Facoltativo se ACCELERATOR_COUNT non è specificato o è pari a zero. Non consigliato per i modelli AutoML o con addestramento personalizzato che utilizzano immagini non GPU. Scopri di più.
- ACCELERATOR_COUNT: il numero di acceleratori da utilizzare per ogni replica. Facoltativo. Deve essere pari a zero o non specificato per i modelli AutoML o con addestramento personalizzato che utilizzano immagini non GPU.
- 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 di progetto generato automaticamente del 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/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "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.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Scopri come modificare le impostazioni predefinite per la registrazione delle previsioni.
Recupera lo stato dell'operazione
Alcune richieste avviano operazioni a lunga esecuzione che richiedono tempo per essere completate. Queste richieste restituiscono un nome dell'operazione, che puoi utilizzare per visualizzarne lo stato o annullarla. Vertex AI fornisce metodi di assistenza per effettuare chiamate a operazioni di lunga durata. Per ulteriori informazioni, consulta Utilizzo delle operazioni di lunga durata.
Limitazioni
- Se hai attivato i Controlli di servizio VPC, il contenitore del modello di cui è stato eseguito il deployment non avrà accesso a internet.
Configura il deployment del modello
Durante il deployment del modello, devi prendere le seguenti decisioni importanti su come eseguire la previsione online:
Risorsa creata | Impostazione specificata al momento della creazione della risorsa |
---|---|
Endpoint | Località in cui eseguire le previsioni |
Modello | Contenitore da utilizzare (ModelContainerSpec ) |
DeployedModel | Macchine da utilizzare per la previsione online |
Non puoi aggiornare queste impostazioni elencate dopo la creazione iniziale del modello o dell'endpoint e non puoi sostituirle nella richiesta di previsione online. Se devi modificare queste impostazioni, devi eseguire nuovamente il deployment del modello.
Cosa succede quando esegui il deployment di un modello
Quando esegui il deployment di un modello in un endpoint, associ risorse fisiche (macchine) al modello in modo che possa fornire previsioni online. Le previsioni online hanno requisiti di bassa latenza. Fornire le risorse al modello in anticipo riduce la latenza.
Il tipo di addestramento (AutoML o personalizzato) e il tipo di dati (AutoML) del modello determinano i tipi di risorse fisiche a disposizione del modello. Dopo il deployment del modello, puoi mutate
alcune di queste risorse senza creare un nuovo deployment.
La risorsa endpoint fornisce l'endpoint (URL) del servizio che utilizzi per richiedere la previsione. Ad esempio:
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
Motivi per eseguire il deployment di più modelli nello stesso endpoint
Il deployment di due modelli nello stesso endpoint ti consente di sostituire gradualmente un modello con l'altro. Ad esempio, supponiamo che tu stia utilizzando un modello e trovi un modo per aumentarne l'accuratezza con nuovi dati di addestramento. Tuttavia, non vuoi aggiornare l'applicazione in modo che rimandi a un nuovo URL endpoint e non vuoi creare modifiche improvvise nell'applicazione. Puoi aggiungere il nuovo modello allo stesso endpoint, pubblicando una piccola percentuale di traffico, e aumentare gradualmente la suddivisione del traffico per il nuovo modello fino a quando non gestisce il 100% del traffico.
Poiché le risorse sono associate al modello anziché all'endpoint, puoi eseguire il deployment di modelli di tipi diversi nello stesso endpoint. Tuttavia, la migliore prassi è eseguire il deployment di modelli di un tipo specifico (ad esempio tabulari AutoML, con addestramento personalizzato) in un endpoint. Questa configurazione è più facile da gestire.
Motivi per eseguire il deployment di un modello in più di un endpoint
Potresti voler eseguire il deployment dei modelli con risorse diverse per ambienti di applicazione diversi, ad esempio di test e di produzione. Potresti anche supportare SLO diversi per le richieste di previsione. È possibile che una delle tue applicazioni abbia esigenze di prestazioni molto più elevate rispetto alle altre. In questo caso, puoi eseguire il deployment del modello in un endpoint con prestazioni superiori e con più risorse di calcolo. Per ottimizzare i costi, puoi anche eseguire il deployment del modello in un endpoint con prestazioni inferiori e con meno risorse della macchina.
Comportamento di scalabilità
Quando esegui il deployment di un modello per la previsione online come DeployedModel
, puoi configurare i nodi di previsione in modo che si scalino automaticamente. Per farlo, imposta dedicatedResources.maxReplicaCount
su un valore maggiore di dedicatedResources.minReplicaCount
.
Quando configuri un DeployedModel
, devi impostare
dedicatedResources.minReplicaCount
su almeno 1. In altre parole, non puoi
configurare DeployedModel
per scalare fino a 0 nodi di previsione quando non è
utilizzato.
Utilizzo e configurazione del target
Per impostazione predefinita, se esegui il deployment di un modello senza risorse GPU dedicate, Vertex AI aumenta o diminuisce automaticamente il numero di repliche in modo che l'utilizzo della CPU corrisponda al valore target predefinito del 60%.
Per impostazione predefinita, se esegui il deployment di un modello con risorse GPU dedicate (se
machineSpec.accelerator_count
è maggiore di 0), Vertex AI aumenterà o diminuirà automaticamente il numero di repliche
in modo che l'utilizzo della CPU o della GPU, a seconda del valore più elevato, corrisponda al valore predefinito
del 60%. Pertanto, se il throughput di previsione causa un utilizzo elevato della GPU, ma non della CPU, Vertex AI eseguirà il ridimensionamento e l'utilizzo della CPU sarà molto basso, il che sarà visibile nel monitoraggio. Al contrario, se il contenitore personalizzato sottoutilizza la GPU, ma ha un processo non correlato che aumenta l'utilizzo della CPU oltre il 60%, Vertex AI eseguirà l'upgrade, anche se potrebbe non essere stato necessario per raggiungere i target di QPS e latenza.
Puoi ignorare la metrica e il target della soglia predefiniti specificando
autoscalingMetricSpecs
.
Tieni presente che se il deployment è configurato per il ridimensionamento in base solo all'utilizzo della CPU, non verrà eseguito lo scale up anche se l'utilizzo della GPU è elevato.
Gestire l'utilizzo delle risorse
Puoi monitorare il tuo endpoint per tenere traccia di metriche come l'utilizzo della CPU e dell'acceleratore, il numero di richieste, la latenza e il numero di repliche correnti e target. Queste informazioni possono aiutarti a comprendere il comportamento di scalabilità e l'utilizzo delle risorse del tuo endpoint.
Tieni presente che ogni replica esegue un solo contenitore. Ciò significa che se un contenitore di previsione non può utilizzare completamente la risorsa di calcolo selezionata, ad esempio codice a thread singolo per una macchina multi-core o un modello personalizzato che chiama un altro servizio durante la generazione della previsione, i nodi potrebbero non aumentare di dimensioni.
Ad esempio, se utilizzi FastAPI o qualsiasi server di modelli con un numero configurabile di worker o thread, in molti casi avere più di un worker può aumentare l'utilizzo delle risorse, migliorando la capacità del servizio di scalare automaticamente il numero di repliche.
In genere, consigliamo di iniziare con un worker o un thread per core. Se noti che l'utilizzo della CPU è basso, in particolare in caso di carico elevato, o se il tuo modello non viene eseguito in modalità di scalabilità perché l'utilizzo della CPU è basso, aumenta il numero di worker. Se invece noti che l'utilizzo è troppo elevato e le latenze aumentano più del previsto sotto carico, prova a utilizzare meno worker. Se utilizzi già un solo worker, prova a utilizzare un tipo di macchina più piccolo.
Comportamento di scalabilità e tempo di latenza
Vertex AI regola il numero di repliche ogni 15 secondi utilizzando i dati della finestra dei 5 minuti precedenti. Per ogni ciclo di 15 secondi, il sistema misura l'utilizzo del server e genera un numero target di repliche in base alla seguente formula:
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
Ad esempio, se hai due repliche utilizzate al 100%, il target è 4:
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
Un altro esempio: se hai 10 repliche e l'utilizzo scende all'1%, il target è 1:
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
Al termine di ogni ciclo di 15 secondi, il sistema regola il numero di repliche in modo che corrisponda al valore target più alto della finestra dei 5 minuti precedenti. Tieni presente che, poiché viene scelto il valore target più alto, l'endpoint fare lo scale down se si verifica un picco di utilizzo durante la finestra di 5 minuti, anche se l'utilizzo complessivo è molto basso. D'altra parte, se il sistema deve essere scalato, lo farà entro 15 secondi poiché viene scelto il valore target più alto anziché la media.
Tieni presente che anche dopo che Vertex AI ha modificato il numero di repliche, è necessario del tempo per avviarle o ridurle. Di conseguenza, si verifica un ulteriore ritardo prima che l'endpoint possa adeguarsi al traffico. I fattori principali che contribuiscono a questo tempo includono:
- il tempo necessario per il provisioning e l'avvio delle VM Compute Engine
- il tempo necessario per scaricare il contenitore dal registry
- il tempo necessario per caricare il modello dallo spazio di archiviazione
Il modo migliore per comprendere il comportamento di scalabilità del modello nel mondo reale è eseguire un test di carico e ottimizzare le caratteristiche importanti per il modello e il caso d'uso. Se lo strumento di scalabilità automatica non esegue lo scale up abbastanza rapidamente per la tua applicazione, esegui il provisioning di min_replicas
sufficienti per gestire il traffico di riferimento previsto.
Aggiorna la configurazione della scalabilità
Se hai specificato DedicatedResources
o AutomaticResources
durante il deployment del modello, puoi aggiornare la configurazione di scalabilità senza eseguire nuovamente il deployment del modello chiamando mutateDeployedModel
.
Ad esempio, la seguente richiesta aggiorna max_replica
,
autoscaling_metric_specs
e disattiva il logging del contenitore.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
Note sull'utilizzo:
- Non puoi modificare il tipo di macchina o passare da
DedicatedResources
aAutomaticResources
o viceversa. Gli unici campi di configurazione della scalabilità che puoi modificare sono:min_replica
,max_replica
eAutoscalingMetricSpec
(soloDedicatedResources
). - Devi elencare tutti i campi da aggiornare in
updateMask
. I campi non elencati vengono ignorati. - DeployedModel deve essere in uno stato
DEPLOYED
. Può essere attiva al massimo un'operazione di mutazione per modello di cui è stato eseguito il deployment. mutateDeployedModel
ti consente inoltre di attivare o disattivare il logging del contenitore. Per ulteriori informazioni, consulta la sezione Log di previsione online.
Annullare il deployment di un modello ed eliminare l'endpoint
Utilizza uno dei seguenti metodi per annullare il deployment di un modello ed eliminare l'endpoint.
Console Google Cloud
Annullare il deployment del modello come segue:
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Endpoint.
Fai clic sul nome e sull'ID versione del modello di cui vuoi annullare il deployment per aprire la relativa pagina dei dettagli.
Nella riga del modello, fai clic su
Azioni e poi su Annulla il deployment del modello nell'endpoint.Nella finestra di dialogo Annulla il deployment del modello nell'endpoint, fai clic su Annulla deployment.
Per eliminare altri modelli, ripeti i passaggi precedenti.
(Facoltativo) Elimina l'endpoint di previsione online nel seguente modo:
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Previsione online.
Seleziona l'endpoint.
Per eliminare l'endpoint, fai clic su
Azioni e poi su Elimina endpoint.
gcloud
Elenca gli ID di tutti gli endpoint del progetto:
gcloud ai endpoints list \ --project=PROJECT_ID \ --region=LOCATION_ID
Sostituisci PROJECT_ID con il nome del progetto e LOCATION_ID con la regione in cui utilizzi Vertex AI.
Elenca gli ID dei modelli di cui è stato eseguito il deployment in un endpoint:
gcloud ai endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
Sostituisci ENDPOINT_ID con l'ID endpoint.
Annullare il deployment di un modello dall'endpoint:
gcloud ai endpoints undeploy-model ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID \ --deployed-model-id=DEPLOYED_MODEL_ID
Sostituisci DEPLOYED_MODEL_ID con l'ID modello.
(Facoltativo) Elimina l'endpoint di previsione online:
gcloud ai endpoints delete ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
Passaggi successivi
- Scopri come ottenere una previsione online.
- Scopri di più sugli endpoint privati.