Questa pagina descrive come utilizzare Vertex AI per esportare i dati tabulari AutoML in Cloud Storage, scaricalo su un server on-premise ospitato da un altro cloud provider, e poi usare Docker per creare il modello disponibili per le previsioni.
Per informazioni sull'esportazione dei modelli Edge di immagini e video, consulta Esportare i modelli AutoML Edge.
Dopo aver esportato il modello tabulare, per reimportarlo Vertex AI, vedi Importa modelli in Vertex AI.
Limitazioni
L'esportazione dei modelli tabulari AutoML presenta le seguenti limitazioni:
Puoi esportare solo i modelli di classificazione e regressione tabulari AutoML. L'esportazione dei modelli di previsione tabulari AutoML supportati.
Vertex Explainable AI non è disponibile con i modelli tabulari esportati. Per se usi Vertex Explainable AI, devi fornire previsioni da un modello ospitato Vertex AI.
Il modello tabulare esportato può essere eseguito solo su CPU con architettura x86 che supportano gli insiemi di istruzioni AVX (Advanced Vector Extensions).
Processo di esportazione
I passaggi per esportare il modello sono:
- Configura l'ambiente.
- Esporta il modello.
- Esegui il pull ed esegui il server del modello.
- Richiedi previsioni.
Prima di iniziare
Prima di poter completare questa attività, devi aver completato le seguenti attività:
- Configura il progetto come descritto in Configurare un progetto e un ambiente di sviluppo.
- Addestra il modello che vuoi scaricare.
- Installa e inizializza Google Cloud CLI sul server che utilizzerai per eseguire il modello esportato.
- Installa Docker sul tuo server.
Esporta il modello
Console
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Modelli.
Fai clic sul modello tabulare da esportare per aprire la relativa pagina dei dettagli.
Fai clic su Esporta nella barra dei pulsanti per esportare il modello.
Seleziona o crea una cartella Cloud Storage nella posizione che preferisci.
Il bucket deve soddisfare i requisiti dei bucket.
Non puoi esportare un modello in un bucket di primo livello. Devi utilizzare almeno a un livello della cartella.
Per risultati ottimali, crea una nuova cartella vuota. Dovrai copiare l'intero contenuto della cartella in un passaggio successivo.
Fai clic su Esporta.
Nella sezione successiva scaricherai il modello esportato sul tuo server.
REST
Puoi utilizzare models.export per esportare un modello in di archiviazione ideale in Cloud Storage.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la tua regione.
- PROJECT: il tuo ID progetto.
- MODEL_ID: l'ID del modello da esportare.
-
GCS_DESTINATION : la tua cartella di destinazione in
di archiviazione ideale in Cloud Storage. Ad esempio,
gs://export-bucket/exports
.Non puoi esportare un modello in un bucket di primo livello. Devi utilizzare almeno un livello di cartella.
La cartella deve essere conforme ai requisiti dei bucket.
Per ottenere risultati ottimali, crea una nuova cartella. Copia l'intero contenuto della cartella in un passaggio successivo.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
Corpo JSON della richiesta:
{ "outputConfig": { "exportFormatId": "tf-saved-model", "artifactDestination": { "outputUriPrefix": "GCS_DESTINATION" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-12T20:53:40.130785Z", "updateTime": "2020-10-12T20:53:40.130785Z" }, "outputInfo": { "artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ" } } }
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di 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 nel Guida rapida di Vertex AI con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 saperne di più, consulta la documentazione di riferimento dell'API Python.
Visualizzare lo stato di un'operazione di esportazione
Alcune richieste avviano operazioni a lunga esecuzione il cui completamento richiede tempo. Questi restituiscono il nome di un'operazione, che puoi utilizzare per visualizzare o annullare l'operazione. Vertex AI fornisce metodi di assistenza per effettuare chiamate a operazioni di lunga durata. Per ulteriori informazioni, consulta la sezione Utilizzo di modelli operazioni.
Esegui il pull ed esegui il server del modello
In questa attività, scaricherai il modello esportato da Cloud Storage e avvierai il contenitore Docker, in modo che il modello sia pronto per ricevere richieste di previsione.
Per estrarre ed eseguire il server del modello:
Sulla macchina in cui eseguirai il modello, passa alla directory in cui vuoi salvare il modello esportato.
Scarica il modello esportato:
gcloud storage cp <var>gcs-destination</var> . --recursive
Dove gcs-destination è il percorso della posizione del file esportato in Cloud Storage.
Il modello viene copiato nella directory corrente, nel seguente percorso:
./model-<model-id>/tf-saved-model/<export-timestamp>
Il percorso può contenere
tf-saved-model
ocustom-trained
.Rinomina la directory in modo che il timestamp venga rimosso.
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>
Il timestamp rende la directory non valida per Docker.
Esegui il pull dell'immagine Docker del server del modello.
sudo docker pull MODEL_SERVER_IMAGE
L'immagine del server del modello da estrarre si trova nel file
environment.json
nella directory del modello esportato. Deve avere il seguente percorso:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json
Se non è presente alcun file environment.json, utilizza:
MULTI_REGION-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server-v1
Sostituisci
MULTI_REGION
conus
,europe
oasia
per selezionare il repository Docker da cui vuoi estrarre l'immagine Docker. Ogni repository fornisce la stessa immagine Docker, ma la scelta della regione multipla di Artifact Registry più vicina alla macchina su cui esegui Docker potrebbe ridurre la latenza.Avvia il container Docker utilizzando il nome della directory appena creato:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
Puoi arrestare il server del modello in qualsiasi momento utilizzando Ctrl-C
.
Aggiorna il container Docker del server del modello
Poiché scarichi il container Docker del server di modelli quando esporti il modello, devi aggiornare esplicitamente il server di modelli per ricevere aggiornamenti e correzioni di bug. Devi aggiornare il server del modello periodicamente utilizzando il seguente comando:
docker pull MODEL_SERVER_IMAGE
Assicurati che l'URI dell'immagine Docker corrisponda all'URI dell'immagine Docker che hai recuperato in precedenza.
Ricevi previsioni dal modello esportato
Il server di modelli nel contenitore di immagini Vertex AI gestisce le richieste di previsione e restituisce i risultati delle previsioni.
La previsione batch non è disponibile per i modelli esportati.
Formato dei dati di previsione
Fornisci i dati (campo payload
) per la richiesta di previsione quanto segue
Formato JSON:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
L'esempio seguente mostra una richiesta con tre colonne: una colonna categorica, un array numerico e una struttura. La richiesta include due righe.
{ "instances": [ { "categorical_col": "mouse", "num_array_col": [ 1, 2, 3 ], "struct_col": { "foo": "piano", "bar": "2019-05-17T23:56:09.05Z" } }, { "categorical_col": "dog", "num_array_col": [ 5, 6, 7 ], "struct_col": { "foo": "guitar", "bar": "2019-06-17T23:56:09.05Z" } } ] }
Effettua la richiesta di previsione
Inserisci i dati della richiesta in un file di testo, ad esempio
tmp/request.json
.Il numero di righe di dati nella richiesta di previsione, chiamata mini-batch dimensioni, influisce sulla latenza e sulla velocità effettiva di previsione. Più grande è il mini- batch, più elevate sono la latenza e la velocità in bit. Per ridurre la latenza, utilizza un di mini-batch più piccole. Per aumentare la velocità effettiva, aumenta la dimensione del mini-batch. Le dimensioni più comuni dei mini-batch sono 1, 32, 64, 128, 256, 512, e 1024.
Richiedi la previsione:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
Formato dei risultati di previsione
Il formato dei risultati dipende dallo scopo del modello.
Risultati del modello di classificazione
I risultati di previsione per i modelli di classificazione (binari e multi-classe) restituiscono un punteggio di probabilità per ogni potenziale valore della colonna target. Devi determinare come vuoi utilizzare i punteggi. Ad esempio, per ottenere un file binario dalla classificazione fornita, identificheresti un valore di soglia. Se esistono due classi, "A" e "B", devi classificare l'esempio come "A" se il punteggio di "A" è maggiore della soglia scelta e "B" negli altri casi. Per i set di dati sbilanciati, la soglia potrebbe tendere al 100% o allo 0%.
Il payload dei risultati per un modello di classificazione è simile a questo esempio:
{ "predictions": [ { "scores": [ 0.539999994635582, 0.2599999845027924, 0.2000000208627896 ], "classes": [ "apple", "orange", "grape" ] }, { "scores": [ 0.23999999463558197, 0.35999998450279236, 0.40000002086278963 ], "classes": [ "apple", "orange", "grape" ] } ] }
Risultati del modello di regressione
Viene restituito un valore previsto per ogni riga valida della richiesta di previsione. Gli intervalli di previsione non vengono restituiti per i modelli esportati.
Il payload dei risultati per un modello di regressione è simile a questo esempio:
{ "predictions": [ { "value": -304.3663330078125, "lower_bound": -56.32196807861328, "upper_bound": 126.51904296875 }, { "value": -112.3663330078125, "lower_bound": 16.32196807861328, "upper_bound": 255.51904296875 } ] }