BigQuery ML-Modell für Onlinevorhersagen exportieren

In dieser Anleitung wird gezeigt, wie Sie ein BigQuery ML-Modell exportieren und das Modell dann entweder auf Vertex AI oder auf einem lokalen Computer bereitstellen. Sie verwenden die iris-Tabelle aus den öffentlichen BigQuery-Datasets und bearbeiten die drei folgenden durchgängigen Szenarien:

  • Logistische Regressionsmodell trainieren und bereitstellen – gilt auch für DNN-Klassifikator-, DNN-Regressor-, k-Means-, lineare Regressions-und Matrixfaktorisierungsmodelle
  • Boosted Tree-Klassifikationsmodell trainieren und bereitstellen – gilt auch für das Boosted Tree-Regressormodell
  • AutoML-Klassifikatormodell trainieren und bereitstellen – gilt auch für das AutoML-Regressormodell

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset zum Speichern Ihres ML-Modells.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    Zur Seite "BigQuery"

  2. Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.

  3. Klicken Sie auf  Aktionen ansehen > Dataset erstellen.

  4. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    • Geben Sie unter Dataset-ID bqml_tutorial ein.

    • Wählen Sie als Standorttyp die Option Mehrere Regionen und dann USA (mehrere Regionen in den USA) aus.

    • Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.

bq

Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl bq mk mit dem Flag --location. Eine vollständige Liste der möglichen Parameter finden Sie in der bq mk --dataset-Befehlsreferenz.

  1. Erstellen Sie ein Dataset mit dem Namen bqml_tutorial, wobei der Datenspeicherort auf US und die Beschreibung auf BigQuery ML tutorial dataset festgelegt ist:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    Anstelle des Flags --dataset verwendet der Befehl die verkürzte Form -d. Wenn Sie -d und --dataset auslassen, wird standardmäßig ein Dataset erstellt.

  2. Prüfen Sie, ob das Dataset erstellt wurde:

    bq ls

API

Rufen Sie die Methode datasets.insert mit einer definierten Dataset-Ressource auf.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von BigQuery DataFrames in der BigQuery-Kurzanleitung: BigQuery DataFrames verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu BigQuery DataFrames.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Logistisches Regressionsmodell trainieren und bereitstellen

In den folgenden Abschnitten erfahren Sie, wie Sie ein logistisches Regressionsmodell trainieren und bereitstellen.

Modell trainieren

Trainieren Sie ein logistisches Regressionsmodell, das den Typ "iris" mit der BigQuery ML-Anweisung CREATE MODEL vorhersagt. Dieser Trainingsjob sollte etwa eine Minute dauern.

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`;'

Modell exportieren

Exportieren Sie das Modell mit dem bq-Befehlszeilentool in einen Cloud Storage-Bucket. Weitere Möglichkeiten zum Exportieren von Modellen finden Sie unter BigQuery ML-Modelle exportieren. Dieser Extrahierungsjob sollte weniger als eine Minute dauern.

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

Lokal bereitstellen und einsetzen

Sie können exportierte TensorFlow-Modelle mit dem Docker-Container von TensorFlow Serving bereitstellen. Für die folgenden Schritte müssen Sie Docker installieren.

Exportierte Modelldateien in ein temporäres Verzeichnis herunterladen

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

Unterverzeichnis der Version erstellen

Mit diesem Schritt wird eine Versionsnummer (in diesem Fall 1) für das Modell festgelegt.

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

Docker-Image abrufen

docker pull tensorflow/serving

Docker-Container ausführen

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 &

Vorhersage ausführen

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

Online bereitstellen und einsetzen

In diesem Abschnitt wird die Google Cloud CLI verwendet, um Vorhersagen für das exportierte Modell bereitzustellen und auszuführen.

Weitere Informationen zum Bereitstellen eines Modells in Vertex AI für Online- oder Batchvorhersagen finden Sie unter Modell an einem Endpunkt bereitstellen.

Modellressource erstellen

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

Eine Modellversion erstellen

1) Legen Sie die Umgebungsvariablen fest.

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

2) Erstellen Sie die Version:

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

Dieser Schritt kann einige Minuten dauern. Es sollte die Meldung Creating version (this might take a few minutes)...... angezeigt werden.

3) (optional) Rufen Sie Informationen zu Ihrer neuen Version ab:

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

Die Ausgabe sollte in etwa so aussehen:

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

Onlinevorhersage

Weitere Informationen zum Ausführen von Onlinevorhersagen für ein bereitgestelltes Modell finden Sie unter Onlineinferenzen aus einem benutzerdefinierten trainierten Modell abrufen.

1) Erstellen Sie für die Eingaben eine JSON-Datei mit Zeilenumbrüchen, z. B. eine Datei instances.json mit folgendem Inhalt:

{"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) Richten Sie Umgebungsvariablen für die Vorhersage ein:

INPUT_DATA_FILE="instances.json"

3) Führen Sie die Vorhersage aus:

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

Boosted Tree-Klassifikationsmodell trainieren und bereitstellen

In den folgenden Abschnitten erfahren Sie, wie Sie ein Boosted Tree-Klassifikatormodell trainieren und bereitstellen.

Modell trainieren

Trainieren Sie unter Verwendung der CREATE MODEL-Anweisung ein Boosted Tree-Klassifikationsmodell, das den Typ "iris" vorhersagt. Dieser Trainingsjob sollte etwa 7 Minuten dauern.

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`;'

Modell exportieren

Exportieren Sie das Modell mit dem bq-Befehlszeilentool in einen Cloud Storage-Bucket. Weitere Möglichkeiten zum Exportieren von Modellen finden Sie unter BigQuery ML-Modelle exportieren.

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

Lokal bereitstellen und einsetzen

Die exportierten Dateien enthalten eine main.py-Datei für die lokale Ausführung.

Exportierte Modelldateien in ein lokales Verzeichnis herunterladen

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

Predictor extrahieren

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

XGBoost-Bibliothek installieren

Installieren Sie die XGBoost-Bibliothek Version 0.82 oder höher.

Vorhersage ausführen

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}]'

Online bereitstellen und einsetzen

In diesem Abschnitt wird die Google Cloud CLI verwendet, um Vorhersagen für das exportierte Modell bereitzustellen und auszuführen. Weitere Informationen finden Sie unter Onlineinferenzen von einem benutzerdefinierten trainierten Modell abrufen.

Weitere Informationen zum Bereitstellen eines Modells in Vertex AI für Online- oder Batchvorhersagen mit benutzerdefinierten Routinen finden Sie unter Modell auf einem Endpunkt bereitstellen.

Modellressource erstellen

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

Eine Modellversion erstellen

1) Legen Sie die Umgebungsvariablen fest.

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

2) Erstellen Sie die Version:

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

Dieser Schritt kann einige Minuten dauern. Es sollte die Meldung Creating version (this might take a few minutes)...... angezeigt werden.

3) (optional) Rufen Sie Informationen zu Ihrer neuen Version ab:

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

Die Ausgabe sollte in etwa so aussehen:

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

Onlinevorhersage

Weitere Informationen zum Ausführen von Onlinevorhersagen für ein bereitgestelltes Modell finden Sie unter Onlineinferenzen aus einem benutzerdefinierten trainierten Modell abrufen.

1) Erstellen Sie für die Eingaben eine JSON-Datei mit Zeilenumbrüchen, z. B. eine Datei instances.json mit folgendem Inhalt:

{"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) Richten Sie Umgebungsvariablen für die Vorhersage ein:

INPUT_DATA_FILE="instances.json"

3) Führen Sie die Vorhersage aus:

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

AutoML-Klassifikationsmodell trainieren und bereitstellen

In den folgenden Abschnitten erfahren Sie, wie Sie ein AutoML-Klassifizierungsmodell trainieren und bereitstellen.

Modell trainieren

Trainieren Sie unter Verwendung der Anweisung CREATE MODEL ein AutoML-Klassifikationsmodell, das den Typ "iris" vorhersagt. AutoML-Modelle benötigen mindestens 1.000 Zeilen mit Eingabedaten. Da ml_datasets.iris nur 150 Zeilen hat, verzehnfachen wir die Daten. Dieser Trainingsjob sollte etwa 2 Stunden dauern.

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;'

Modell exportieren

Exportieren Sie das Modell mit dem bq-Befehlszeilentool in einen Cloud Storage-Bucket. Weitere Möglichkeiten zum Exportieren von Modellen finden Sie unter BigQuery ML-Modelle exportieren.

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

Lokal bereitstellen und einsetzen

Weitere Informationen zum Erstellen von AutoML-Containern finden Sie unter Modelle exportieren. Für die folgenden Schritte müssen Sie Docker installieren.

Exportierte Modelldateien in ein lokales Verzeichnis kopieren

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

AutoML-Docker-Image abrufen

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

Docker-Container starten

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

Vorhersage ausführen

1) Erstellen Sie für die Eingaben eine JSON-Datei mit Zeilenumbrüchen, z. B. eine Datei input.json mit folgendem Inhalt:

{"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) Führen Sie den Aufruf für die Vorhersage aus:

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

Online bereitstellen und einsetzen

Die Onlinevorhersage für AutoML-Regressor- und AutoML-Klassifikatormodelle wird in Vertex AI nicht unterstützt.