Questa pagina descrive come utilizzare Vertex AI per esportare il tuo modello tabulare AutoML in Cloud Storage, scaricare il modello su un server on-premise o su un server ospitato da un altro cloud provider e quindi utilizzare Docker per rendere il modello disponibile per le previsioni.
Per informazioni sull'esportazione di modelli Edge di immagini e video, consulta Esportare modelli di AutoML Edge.
Dopo aver esportato il modello tabulare, se vuoi importarlo di nuovo in Vertex AI, consulta Importare modelli in Vertex AI.
Limitazioni
L'esportazione dei modelli tabulari AutoML presenta le seguenti limitazioni:
Puoi esportare solo modelli di classificazione tabulare e regressione AutoML. L'esportazione dei modelli di previsione tabulare AutoML non è supportata.
Vertex Explainable AI non è disponibile utilizzando modelli tabulari esportati. Se devi utilizzare Vertex Explainable AI, devi fornire previsioni da un modello ospitato da Vertex AI.
Il modello tabulare esportato può essere eseguito solo su CPU con architettura x86 che supportano i set di istruzioni Advanced Vector Extensions (AVX).
Processo di esportazione
Per esportare il modello, segui questi passaggi:
- 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 l'ambiente cloud.
- 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 sezione Vertex AI della console Google Cloud, 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 usare almeno un livello di cartella.
Per ottenere risultati ottimali, crea una nuova cartella vuota. Copierai l'intero contenuto della cartella in un passaggio successivo.
Fai clic su Esporta.
Scaricherai il modello esportato sul server nella sezione successiva.
REST
Puoi utilizzare il metodo models.export per esportare un modello in Cloud Storage.Prima di utilizzare i dati della richiesta, effettua 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 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. Copierai 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:
arricciatura
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 di configurazione di Java riportate nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java Vertex AI.
Per eseguire l'autenticazione in Vertex AI, configura le 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 di configurazione di Node.js riportate nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js Vertex AI.
Per eseguire l'autenticazione in Vertex AI, configura le 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, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Conoscere lo stato di un'operazione di esportazione
Alcune richieste avviano operazioni a lunga esecuzione il cui completamento richiede tempo. Queste richieste restituiscono un nome operazione, che puoi utilizzare per visualizzare lo stato dell'operazione o per annullarla. Vertex AI fornisce metodi helper per effettuare chiamate a operazioni a lunga esecuzione. Per maggiori informazioni, consulta Operazioni a lunga esecuzione.
Esegui il pull ed esegui il server del modello
In questa attività scaricherai il modello esportato da Cloud Storage e avvierai il container Docker, in modo che il modello sia pronto a ricevere richieste di previsione.
Per eseguire il pull ed l'esecuzione del server del modello:
Sulla macchina in cui eseguirai il modello, passa alla directory in cui vuoi salvare il modello esportato.
Scarica il modello esportato:
gsutil cp -r <var>gcs-destination</var> .
Dove gcs-destination è il percorso della posizione del modello esportato in Cloud Storage.
Il modello viene copiato nella directory attuale, secondo il 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 di cui eseguire il pull si trova nel file
environment.json
nella directory del modello esportata. Dovrebbe avere il seguente percorso:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json
Se non è presente alcun fileenvironment.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 eseguire il pull dell'immagine Docker. Ogni repository fornisce la stessa immagine Docker, ma scegliere l'opzione Più regioni 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 contenitore Docker del server del modello
Poiché scarichi il container Docker del modello quando esporti il modello, devi aggiornare esplicitamente il server del modello per ricevere aggiornamenti e correzioni di bug. Devi aggiornare periodicamente il server del modello utilizzando il seguente comando:
docker pull MODEL_SERVER_IMAGE
Assicurati che l'URI dell'immagine Docker corrisponda all'URI dell'immagine Docker di cui hai estratto in precedenza.
Ottieni previsioni dal modello esportato
Il server dei modelli nel container di immagini Vertex AI gestisce le richieste di previsione e restituisce i risultati.
La previsione batch non è disponibile per i modelli esportati.
Formato dei dati di previsione
Tu fornisci i dati (campo payload
) per la tua richiesta di previsione nel seguente formato JSON:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
L'esempio seguente mostra una richiesta con tre colonne: una colonna categoriale, un array numerico e uno struct. 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" } } ] }
esegui 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, denominato dimensione mini-batch, influisce sulla latenza e sulla velocità effettiva della previsione. Maggiore è la dimensione del mini-batch, maggiori sono la latenza e la velocità effettiva. Per una latenza ridotta, utilizza una dimensione del mini-batch inferiore. Per una velocità effettiva maggiore, aumenta le dimensioni del mini-batch. Le dimensioni dei mini-batch più utilizzate 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 della previsione
Il formato dei risultati dipende dall'obiettivo del modello.
Risultati del modello di classificazione
I risultati della previsione per i modelli di classificazione (binari e multi-classe) restituiscono un punteggio di probabilità per ogni valore potenziale della colonna di destinazione. Devi decidere come vuoi utilizzare i punteggi. Ad esempio, per ottenere una classificazione binaria dai punteggi forniti, devi identificare un valore di soglia. Se esistono due classi, "A" e "B", devi classificare l'esempio come "A" se il punteggio per "A" è maggiore della soglia scelta e "B" in caso contrario. Per i set di dati sbilanciati, la soglia potrebbe avvicinarsi 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 } ] }
Passaggi successivi