Esportazione di un modello BigQuery ML per la previsione online

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questo tutorial mostra come esportare un modello BigQuery ML e quindi eseguirne il deployment su AI Platform o su una macchina locale. Utilizzerai la tabella iris dei set di dati pubblici di BigQuery e lavorerai attraverso i seguenti tre scenari end-to-end:

  • Addestrare ed eseguire il deployment di un modello di regressione logistica. Si applica anche a modelli di classificazione DNN, regressione DNN, media k, regressione lineare e fattorizzazione matriciale.
  • Addestrare ed eseguire il deployment di un modello di classificatore con albero potenziato (si applica anche al modello di regressione con albero potenziato).
  • Addestrare ed eseguire il deployment di un modello di classificatore AutoML (si applica anche al modello di regressione 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 la pagina Prezzi di BigQuery ML.

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

Per ulteriori informazioni sui costi di AI Platform, consulta la 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. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  6. La funzionalità BigQuery viene attivata 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

Il primo passaggio consiste nel creare un set di dati BigQuery per archiviare il tuo modello ML. Per creare il set di dati:

  1. In Google Cloud Console, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel pannello di navigazione, nella sezione Risorse, fai clic sul nome del tuo progetto.

  3. Sul lato destro, nel riquadro dei dettagli, fai clic su Crea set di dati.

    Crea il set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.
    • Per Località dei dati, scegli Stati Uniti (US). Attualmente, i set di dati pubblici sono archiviati nella località multiregionale US. Per semplicità, posiziona il set di dati nella stessa posizione.

      Crea la pagina del set di dati.

  5. Lascia invariate tutte le altre impostazioni predefinite e fai clic su 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 diaframma utilizzando l'istruzione CREATE MODEL di BigQuery ML. Questo job di addestramento dovrebbe richiedere circa 1 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, vedi Esportazione di modelli di ML ML. Questo job di estrazione dovrebbe richiedere meno di 1 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 il container Docker TensorFlow Serving. I seguenti passaggi richiedono l'installazione di Docker.

Scarica i file del modello esportati in una directory temporanea

mkdir tmp_dir
gsutil cp -r gs://some/gcs/path/iris_model tmp_dir

Creare una sottodirectory delle versioni

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

Questa sezione utilizza Google Cloud CLI per il deployment e l'esecuzione delle previsioni sul modello esportato.

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

Crea una risorsa 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) Ricevi informazioni sulla 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 delle previsioni online su un modello di cui è stato eseguito il deployment sono disponibili all'indirizzo https://cloud.google.com/ai-platform/recommendion/docs/online-recommend#requesting_recommendions.

1) Crea un file JSON delimitato da una riga per gli input, ad esempio il file instances.json con il seguente contenuto

{"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) Configura 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

Addestrare ed eseguire il deployment di un modello di classificazione ad albero potenziato

Addestra il modello

Addestra un modello di classificato ad albero potenziato che prevede il tipo di diaframma utilizzando l'istruzione CREATE MODEL di BigQuery ML. Questo 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 lo strumento a riga di comando bq. Per altri metodi di esportazione dei modelli, consulta Esportazione di modelli di ML 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
gsutil cp -r gs://some/gcs/path/boosted_tree_iris_model serving_dir

Estrazione del 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 XBoost - versione 0.82 o successive.

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

Questa sezione utilizza Google Cloud CLI per il deployment e l'esecuzione di previsioni sul modello esportato in AI Platform Prediction online.

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.

Arresto del container Docker

1) Elenca tutti i container Docker in esecuzione.

docker ps

2) Interrompi il contenitore con l'ID contenitore applicabile riportato nell'elenco dei contenitori.

docker stop container_id

Eliminazione delle risorse AI Platform in corso...

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

Eliminazione del set di dati

L'eliminazione del progetto rimuove tutti i set di dati e tutte le tabelle che contiene. Se preferisci riutilizzare il progetto, puoi eliminare il set di dati che hai creato in questo tutorial:

  1. Se necessario, apri la pagina BigQuery in Google Cloud Console.

    Vai alla pagina BigQuery

  2. Nella 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, conferma il comando di eliminazione digitando il nome del set di dati (bqml_tutorial) e fai clic su Elimina.

Eliminazione del bucket Cloud Storage

L'eliminazione del progetto rimuove tutti i bucket Cloud Storage al suo interno. Se preferisci riutilizzare il progetto, puoi eliminare il bucket che hai creato in questo tutorial

  1. In Google Cloud Console, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Seleziona la casella di controllo del bucket che vuoi eliminare.

  3. Fai clic su Elimina.

  4. Nella finestra dell'overlay visualizzata, conferma di voler eliminare il bucket e i suoi contenuti facendo clic su Elimina.

Eliminazione del progetto in corso...

Per eliminare il progetto:

  1. In Google Cloud Console, 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