Occorre eseguire il deployment di un modello in un endpoint prima che il modello possa essere utilizzato per fornire previsioni online. Il deployment di un modello associa risorse fisiche al modello, in modo che possa fornire previsioni online con bassa latenza.
Per poter eseguire il deployment, il modello deve essere visibile in Vertex AI Model Registry. Per informazioni su Model Registry, incluse informazioni su come importare gli artefatti del modello o crearli direttamente in Model Registry, consulta Introduzione a Vertex AI Model Registry.
È possibile eseguire il deployment di più modelli in un endpoint oppure di eseguire il deployment dello stesso modello su 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.
esegui il deployment di un modello in un endpoint
Utilizza uno dei seguenti metodi per eseguire il deployment di un modello:
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 è già stato eseguito il deployment del modello in eventuali endpoint, questi sono elencati nella sezione 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 specifica un nome per il nuovo endpoint. Per eseguire il deployment del modello in un endpoint esistente, seleziona Aggiungi a endpoint esistente e seleziona l'endpoint dall'elenco a discesa.È possibile eseguire il deployment di più modelli in un endpoint oppure di eseguire il deployment dello stesso modello su più endpoint.
Se esegui il deployment del modello in un endpoint esistente in cui è stato eseguito il deployment di uno o più modelli, devi aggiornare la percentuale di Suddivisione traffico relativa al modello che stai implementando e ai modelli di cui è già stato eseguito il deployment, in modo che la somma di tutte le percentuali arrivi al 100%.
Se esegui il deployment del modello in un nuovo endpoint, accetta 100 per la suddivisione del traffico. Altrimenti, regola i valori di suddivisione del traffico per tutti i modelli nell'endpoint in modo che vengano sommati fino a 100.
Inserisci il numero minimo di nodi di computing che vuoi fornire per il modello.
Questo è il 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 in standby (minimo), anche senza traffico di previsione. Consulta la pagina relativa ai prezzi.
Il numero di nodi di computing 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 computing fino a cui vuoi fare lo scale up di Vertex AI.
Seleziona il Tipo di macchina.
L'aumento di risorse delle macchine aumenta le prestazioni di previsione e i costi. Confronta i tipi di macchine disponibili.
Seleziona un Tipo di acceleratore e un Conteggio acceleratori.
Se hai abilitato l'utilizzo dell'acceleratore quando hai importato o creato il modello, questa opzione viene visualizzata.
Per il conteggio degli acceleratori, consulta la tabella delle GPU per verificare il numero valido di GPU da utilizzare con ciascun tipo di macchina CPU. Il numero di acceleratori si riferisce al numero di acceleratori per nodo, non al numero totale di acceleratori nel deployment.
Se vuoi utilizzare un account di servizio personalizzato per il deployment, seleziona un account di servizio nella casella a discesa Account di servizio.
Scopri come modificare le impostazioni predefinite per il logging 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, devi completare questi passaggi:
Creazione di un endpoint
Se esegui il deployment di un modello in un endpoint esistente, puoi saltare questo passaggio.
gcloud
L'esempio seguente utilizza 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 stai utilizzando 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, effettua 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 delle seguenti 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, vedi Comandi Terraform di base.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.
Recuperare l'ID endpoint
L'ID endpoint è necessario per eseguire il deployment del modello.
gcloud
L'esempio seguente utilizza 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 stai utilizzando 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, effettua le seguenti sostituzioni:
- LOCATION_ID: la regione in cui stai utilizzando 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 delle seguenti 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 di seguito la scheda per la tua lingua o il tuo ambiente:
gcloud
Nei seguenti esempi viene utilizzato il comando gcloud ai endpoints deploy-model
.
L'esempio seguente esegue il deployment di Model
in un Endpoint
senza utilizzare GPU
per accelerare la fornitura delle previsioni e senza suddividere il traffico tra più
risorse DeployedModel
:
Prima di utilizzare qualsiasi dato di comando riportato di seguito, effettua le seguenti sostituzioni:
- ENDPOINT_ID: l'ID dell'endpoint.
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
- MODEL_ID: l'ID del modello di cui eseguire il deployment.
-
DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare anche il nome visualizzato diModel
perDeployedModel
. - MIN_REPLICA_COUNT: 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 inferiore a questo numero di nodi.
-
MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment.
Il conteggio dei nodi può essere aumentato o diminuito in base al carico della previsione fino a questo numero di nodi, ma mai inferiore al numero minimo di nodi.
Se ometti il flag
--max-replica-count
, il numero massimo di nodi viene impostato sul valore--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
che Endpoint
riceve al nuovo DeployedModel
, rappresentato dall'ID temporaneo 0
. Se il tuo Endpoint
ha già altre
risorse di DeployedModel
, puoi suddividere il traffico tra il nuovo
DeployedModel
e quello precedente.
Ad esempio, per inviare il 20% del traffico al nuovo DeployedModel
e l'80% a uno precedente, esegui questo comando.
Prima di utilizzare qualsiasi dato di comando riportato di seguito, effettua le seguenti sostituzioni:
- OLD_DEPLOYED_MODEL_ID: l'ID dell'elemento
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, effettua le seguenti sostituzioni:
- LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
- PROJECT_ID: il tuo ID progetto.
- ENDPOINT_ID: l'ID dell'endpoint.
- MODEL_ID: l'ID del modello di cui eseguire il deployment.
-
DEPLOYED_MODEL_NAME: un nome per
DeployedModel
. Puoi utilizzare anche il nome visualizzato diModel
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 macchina. - ACCELERATOR_TYPE: tipo di acceleratore da associare alla macchina. Facoltativo se ACCELERATOR_COUNT non è specificato o è pari a zero. Opzione non consigliata per i modelli AutoML o i modelli 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 zero o non specificato per i modelli AutoML o i modelli con addestramento personalizzato che utilizzano immagini non GPU.
- MIN_REPLICA_COUNT: 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 inferiore a 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 dei nodi può essere aumentato o diminuito in base al carico della previsione fino a questo numero di nodi, ma mai inferiore al numero minimo di nodi.
- TRAFFIC_SPLIT_THIS_MODEL: la percentuale del traffico di previsione verso questo endpoint che verrà instradato 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 viene eseguito il deployment di altri modelli in questo endpoint, devi 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 la chiave dell'ID del 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/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 delle seguenti 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 per la configurazione di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Scopri come modificare le impostazioni predefinite per il logging delle previsioni.
Ottieni stato operazione
Alcune richieste avviano operazioni a lunga esecuzione il cui completamento richiede tempo. Queste richieste restituiscono un nome dell'operazione che puoi utilizzare per visualizzare lo stato dell'operazione o annullarla. Vertex AI offre metodi helper per effettuare chiamate su operazioni a lunga esecuzione. Per ulteriori informazioni, vedi Operazioni con le operazioni a lunga esecuzione.
Limitazioni
- Se hai abilitato i Controlli di servizio VPC, il container del modello di cui hai eseguito il deployment non avrà accesso a internet.
Configura il deployment del modello
Durante il deployment del modello, prendi le seguenti importanti decisioni 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 eseguirne l'override nella richiesta di previsione online. Se devi modificare queste impostazioni, devi rieseguire il deployment del modello.
Cosa succede quando esegui il deployment di un modello
Quando esegui il deployment di un modello in un endpoint, devi associare le risorse fisiche (macchina) al modello in modo che possa fornire previsioni online. Le previsioni online hanno requisiti di bassa latenza. Fornendo risorse al modello in anticipo riduci la latenza.
Il tipo di dati (AutoML o personalizzato) e (AutoML) di addestramento
del modello determinano i tipi di risorse fisiche disponibili per il modello. Dopo il deployment del modello, puoi mutate
alcune di queste risorse senza crearne uno nuovo.
La risorsa endpoint fornisce l'endpoint di servizio (URL) 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 che tu stia trovando un modo per aumentarne l'accuratezza con nuovi dati di addestramento. Tuttavia, non vuoi aggiornare l'applicazione in modo che punti a un nuovo URL dell'endpoint e non vuoi creare cambiamenti improvvisi nell'applicazione. Puoi aggiungere il nuovo modello allo stesso endpoint, gestendo una piccola percentuale di traffico, e aumentare gradualmente la suddivisione del traffico per il nuovo modello finché non gestisce il 100% del traffico.
Poiché le risorse sono associate al modello anziché all'endpoint, puoi eseguire il deployment di modelli di tipo diverso sullo stesso endpoint. Tuttavia, la best practice prevede il deployment di modelli di un tipo specifico (ad esempio, tabulari AutoML, addestramento personalizzato) in un endpoint. Questa configurazione è più facile da gestire.
Motivi per eseguire il deployment di un modello su più di un endpoint
Potresti voler eseguire il deployment dei tuoi modelli con risorse diverse per diversi ambienti applicativi, ad esempio test e produzione. Potresti anche voler supportare SLO diversi per le tue 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 più elevate con più risorse per la macchina. Per ottimizzare i costi, puoi anche eseguire il deployment del modello su un endpoint a prestazioni inferiori e con meno risorse macchina.
Comportamento di scalabilità
Quando esegui il deployment di un modello per la previsione online come DeployedModel
, puoi configurare i nodi di previsione per la scalabilità automatica. Per farlo, imposta dedicatedResources.maxReplicaCount
su un valore maggiore di dedicatedResources.minReplicaCount
.
Quando configuri un DeployedModel
, devi impostare
dedicatedResources.minReplicaCount
almeno su 1. In altre parole, non puoi configurare DeployedModel
per la scalabilità fino a 0 nodi di previsione quando non è utilizzato.
Utilizzo e configurazione target
Per impostazione predefinita, se esegui il deployment di un modello senza risorse GPU dedicate, Vertex AI scala automaticamente il numero di repliche verso l'alto o verso il basso 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 farà automaticamente lo scale up o lo scale down del numero di repliche in modo che l'utilizzo di CPU o GPU, a seconda di quale sia il valore più alto, corrisponda al valore target predefinito del 60%. Pertanto, se la velocità effettiva di previsione causa un elevato utilizzo della GPU, ma non un elevato utilizzo della CPU, Vertex AI farà lo scale up e l'utilizzo della CPU sarà molto ridotto, il che sarà visibile durante il monitoraggio. Al contrario, se il container personalizzato sta sottoutilizzando la GPU, ma ha un processo non correlato che aumenta l'utilizzo della CPU oltre il 60%, Vertex AI farà lo scale up, anche se ciò potrebbe non essere stato necessario per raggiungere i target di QPS e latenza.
Puoi eseguire l'override della metrica e del target della soglia predefinita specificando autoscalingMetricSpecs
.
Tieni presente che se il deployment è configurato per la scalabilità solo in base all'utilizzo della CPU, non verrà fatto lo scale up anche se l'utilizzo della GPU è elevato.
Gestisci l'utilizzo delle risorse
Puoi monitorare il tuo endpoint per tenere traccia di metriche come l'utilizzo di CPU e Accelerator, il numero di richieste, la latenza e il numero di repliche attuali e di destinazione. Queste informazioni possono aiutarti a comprendere il comportamento di scalabilità e utilizzo delle risorse dell'endpoint.
Tieni presente che ogni replica esegue un solo container. Ciò significa che se un container di previsione non è in grado di utilizzare completamente la risorsa di computing selezionata, ad esempio codice con thread singolo per una macchina multi-core o un modello personalizzato che chiama un altro servizio come parte della previsione, i nodi potrebbero non fare lo scale up.
Ad esempio, se utilizzi FastAPI o qualsiasi server modello 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 thread per core. Se noti che l'utilizzo della CPU è ridotto, soprattutto con un carico elevato, oppure il tuo modello non sta aumentando perché l'utilizzo della CPU è ridotto, 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 usare un tipo di macchina più piccolo.
Comportamento di scalabilità e ritardo
Vertex AI regola il numero di repliche ogni 15 secondi utilizzando i dati della finestra di 5 minuti precedente. 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%))
Alla fine di ogni ciclo di 15 secondi, il sistema regola il numero di repliche in modo che corrisponda al valore target più alto della finestra di 5 minuti precedente. Tieni presente che, poiché viene scelto il valore target più alto, l'endpoint non farà fare lo scale down se si verifica un picco di utilizzo durante la finestra di 5 minuti, anche se l'utilizzo complessivo è molto ridotto. Se invece è necessario fare lo scale up, il sistema lo farà entro 15 secondi, dal momento che viene scelto il valore target più alto invece della media.
Tieni presente che anche dopo che Vertex AI ha regolato il numero di repliche, potrebbe essere necessario del tempo per avviare o disattivare le repliche. Di conseguenza, c'è un ulteriore ritardo prima che l'endpoint possa adattarsi al traffico. I fattori principali che contribuiscono a questo periodo includono quanto segue:
- il tempo necessario per eseguire il provisioning e avviare le VM di Compute Engine
- il tempo necessario per scaricare il container dal registry
- il tempo necessario per caricare il modello
Il modo migliore per comprendere il comportamento di scalabilità nel mondo reale del modello è eseguire un test di carico e ottimizzare le caratteristiche importanti per il modello e il caso d'uso. Se il gestore della scalabilità automatica non fa lo scale up abbastanza rapidamente per la tua applicazione, esegui il provisioning di un numero di min_replicas
sufficiente per gestire il traffico di riferimento previsto.
Aggiorna la configurazione di scalabilità
Se hai specificato DedicatedResources
o AutomaticResources
quando hai eseguito 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
e
autoscaling_metric_specs
e disabilita il logging dei container.
{
"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 cambiare il tipo di macchina, 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 in elenco vengono ignorati. - Il campo DeployedModel
deve essere in stato
DEPLOYED
. Può esserci al massimo un'operazione di mutazione attiva per ogni modello di cui è stato eseguito il deployment. mutateDeployedModel
consente anche di abilitare o disabilitare il logging dei container. Per ulteriori informazioni, consulta Registrazione delle previsioni online.
Passaggi successivi
- Scopri come ricevere una previsione online.
- Scopri di più sugli endpoint privati.