Esporta un modello BigQuery ML per la previsione online


Questo tutorial mostra come esportare un modello BigQuery ML e poi eseguire il deployment del modello su AI Platform o su una macchina locale. Potrai usa la tabella iris dai set di dati pubblici di BigQuery e analizzare i tre scenari end-to-end seguenti:

  • Addestra ed esegui il deployment di un modello di regressione logistica. Si applica anche ai modelli di classificatore DNN, regressore DNN, K-means, regressione lineare e fattorizzazione matriciale.
  • Addestra ed esegui il deployment di un modello classificatore boosted tree. Si applica anche al modello di regressore ad albero potenziato.
  • Addestra ed esegui il deployment di un modello di classificatore AutoML; si applica anche al modello regressore AutoML.

Costi

Questo tutorial utilizza componenti fatturabili di Google Cloud, tra cui:

  • BigQuery ML
  • Cloud Storage
  • AI Platform (facoltativo, utilizzato per la previsione online)

Per ulteriori informazioni sui costi di BigQuery ML, consulta Prezzi di BigQuery ML.

Per ulteriori informazioni sui costi di Cloud Storage, consulta Prezzi di Cloud Storage.

Per ulteriori informazioni sui costi di AI Platform, consulta pagina nodi di previsione e allocazione delle risorse.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. BigQuery viene abilitato automaticamente nei nuovi progetti. Per attivare BigQuery in un progetto preesistente, vai a

    Attiva l'API BigQuery.

    Abilita l'API

  7. Abilita le API AI Platform Training and Prediction API and Compute Engine.

    Abilita le API

  8. Installa Google Cloud CLI e Google Cloud CLI.

Crea il tuo set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina di BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del tuo progetto.

  3. Fai clic su Visualizza azioni > Crea il set di dati.

    Crea il set di dati.

  4. Nella pagina Crea set di dati, segui questi passaggi:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

      I set di dati pubblici vengono archiviati nell'US più regioni. Per semplicità, per archiviare il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea il set di dati.

      Pagina Crea set di dati.

Addestra ed esegui il deployment di un modello di regressione logistica

Addestra il modello

Addestra un modello di regressione logistica che prevede il tipo di iris utilizzando BigQuery ML CREATE MODEL l'Informativa. Il completamento del job di addestramento dovrebbe richiedere circa un minuto.

bq query --use_legacy_sql=false \
  'CREATE MODEL `bqml_tutorial.iris_model`
  OPTIONS (model_type="logistic_reg",
      max_iterations=10, input_label_cols=["species"])
  AS SELECT
    *
  FROM
    `bigquery-public-data.ml_datasets.iris`;'

Esporta il modello

Esporta il modello in un bucket Cloud Storage utilizzando lo strumento a riga di comando bq. Per ulteriori modi per esportare i modelli, consulta Esportare i modelli BigQuery ML. Il completamento del job di estrazione dovrebbe richiedere meno di un minuto.

bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model

Deployment e distribuzione locali

Puoi eseguire il deployment dei modelli TensorFlow esportati utilizzando containerizzato. I seguenti passaggi richiedono l'installazione di Docker.

Scarica i file del modello esportati in una directory temporanea

mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive

Crea una sottodirectory della versione

Questo passaggio imposta un numero di versione (in questo caso 1) per il modello.

mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir

Esegui il pull dell'immagine Docker

docker pull tensorflow/serving

Esegui il container Docker

docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &

esegui la previsione

curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict

Deployment e distribuzione online

In questa sezione viene utilizzato Google Cloud CLI per eseguire il deployment eseguire previsioni sulla base del modello esportato.

Per ulteriori dettagli sul deployment di un modello in AI Platform per online/batch per le previsioni, consulta Deployment di modelli.

Crea una risorsa del modello

MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME

Crea una versione del modello

1) Imposta le variabili di ambiente:

MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"

2) Crea la versione:

gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK

Il completamento di questo passaggio potrebbe richiedere alcuni minuti. Dovresti vedere il messaggio Creating version (this might take a few minutes).......

3) (Facoltativo) Ottieni informazioni sulla tua nuova versione:

gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME

Dovresti vedere un output simile al seguente:

createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY

Previsione online

I dettagli sull'esecuzione di previsioni online su un modello di cui è stato eseguito il deployment sono disponibile nella sezione Richiesta di previsioni.

1) Crea un file JSON delimitato da nuova riga per gli input, ad esempio instances.json file con i seguenti contenuti:

{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}

2) Imposta le variabili env per la previsione:

INPUT_DATA_FILE="instances.json"

3) Esegui previsione:

gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE

Addestra ed esegui il deployment di un modello di classificazione ad albero ottimizzato

Addestra il modello

Addestra un modello di classificazione degli alberi potenziato che prevede il tipo di iris utilizzando CREATE MODEL l'Informativa. Il completamento del job di addestramento dovrebbe richiedere circa 7 minuti.

bq query --use_legacy_sql=false \
  'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model`
  OPTIONS (model_type="boosted_tree_classifier",
      max_iterations=10, input_label_cols=["species"])
  AS SELECT
    *
  FROM
    `bigquery-public-data.ml_datasets.iris`;'

Esporta il modello

Esporta il modello in un bucket Cloud Storage utilizzando strumento a riga di comando bq. Per altri modi Per esportare i modelli, consulta Esportare i modelli BigQuery ML.

bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model

Deployment e distribuzione locali

Nei file esportati è presente un file main.py per l'esecuzione locale.

Scarica i file del modello esportati in una directory locale

mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive

Estrai il predittore

tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/

Installa la libreria XGBoost

Installa la libreria XGBoost 0.82 o successiva.

esegui la previsione

cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'

Deployment e distribuzione online

In questa sezione viene utilizzato Google Cloud CLI per eseguire il deployment eseguire previsioni sulla base del modello esportato in AI Platform Online Prediction.

Per ulteriori dettagli sul deployment di un modello in AI Platform per online/batch utilizzando routine personalizzate, consulta Deployment di modelli.

Crea una risorsa del modello

MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME

Crea una versione del modello

1) Imposta le variabili di ambiente:

MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"

2) Crea la versione:

gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15

Il completamento di questo passaggio potrebbe richiedere alcuni minuti. Dovresti vedere il messaggio Creating version (this might take a few minutes).......

3) (Facoltativo) Ottieni informazioni sulla tua nuova versione:

gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME

Dovresti vedere un output simile al seguente:

createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY

Previsione online

Per ulteriori dettagli sull'esecuzione di previsioni online su un modello di cui è stato eseguito il deployment, consulta Richiedere previsioni.

1) Crea un file JSON delimitato da nuova riga per gli input. Ad esempio, instances.json file con i seguenti contenuti:

{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}

2) Imposta le variabili di ambiente per la previsione:

INPUT_DATA_FILE="instances.json"

3) Esegui previsione:

gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE

Addestra ed esegui il deployment di un modello di classificazione AutoML

Addestra il modello

Addestra un modello di classificatore AutoML che prevede il tipo di iris utilizzando CREATE MODEL l'Informativa. I modelli AutoML richiedono almeno 1000 righe di dati di input. Poiché ml_datasets.iris ha solo 150 righe, i dati vengono duplicati 10 volte. Questo il completamento del job di addestramento dovrebbe richiedere circa 2 ore.

bq query --use_legacy_sql=false \
  'CREATE MODEL `bqml_tutorial.automl_iris_model`
  OPTIONS (model_type="automl_classifier",
      budget_hours=1, input_label_cols=["species"])
  AS SELECT
    * EXCEPT(multiplier)
  FROM
    `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'

Esporta il modello

Esporta il modello in un bucket Cloud Storage utilizzando strumento a riga di comando bq. Per altri modi Per esportare i modelli, consulta Esportazione dei modelli BigQuery ML.

bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model

Deployment e distribuzione locali

Per maggiori dettagli sulla creazione di container AutoML, consulta Esportazione di modelli. I seguenti passaggi richiede l'installazione di Docker.

Copia i file del modello esportati in una directory locale

mkdir automl_serving_dir
gcloud storage cp gs://some/gcs/path/automl_iris_model/* automl_serving_dir/ --recursive

Esegui il pull dell'immagine Docker con AutoML

docker pull gcr.io/cloud-automl-tables-public/model_server

Avvia container Docker

docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server

esegui la previsione

1) Crea un file JSON delimitato da nuova riga per gli input. Ad esempio, input.json file con i seguenti contenuti:

{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}

2) Effettua la chiamata di previsione:

curl -X POST --data @input.json http://localhost:8080/predict

Deployment e distribuzione online

La previsione online per i modelli di regressore AutoML e classificatori AutoML non è supportata in AI Platform.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

  • Puoi eliminare il progetto che hai creato.
  • In alternativa, puoi mantenere il progetto ed eliminare il set di dati e il bucket Cloud Storage.

Arresta container Docker

1) Elenca tutti i container Docker in esecuzione.

docker ps

2) Arresta il contenitore con l'ID contenitore applicabile nell'elenco dei container.

docker stop container_id

Elimina risorse AI Platform

1) Elimina la versione del modello.

gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME

2) Elimina il modello.

gcloud ai-platform models delete $MODEL_NAME

Elimina il set di dati

L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il set di dati creato tutorial:

  1. Se necessario, apri la pagina BigQuery nel nella console Google Cloud.

    Vai alla pagina di BigQuery

  2. Nel menu di navigazione, fai clic sul set di dati bqml_tutorial che hai creato.

  3. Fai clic su Elimina set di dati sul lato destro della finestra. Questa azione elimina il set di dati, la tabella e tutti i dati.

  4. Nella finestra di dialogo Elimina set di dati, digita per confermare il comando di eliminazione il nome del set di dati (bqml_tutorial), quindi fai clic su Elimina.

Elimina il bucket Cloud Storage

L'eliminazione del progetto rimuove tutti i bucket Cloud Storage nel progetto. Se se preferisci riutilizzare il progetto, puoi eliminare il bucket tutorial

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Seleziona la casella di controllo del bucket da eliminare.

  3. Fai clic su Elimina.

  4. Nella finestra di overlay visualizzata, conferma l'eliminazione del il bucket e i relativi contenuti facendo clic su Elimina.

Elimina il progetto

Per eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi