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 AI Platform 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

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

  • BigQuery ML
  • Cloud Storage
  • AI Platform (optional, wird für Onlinevorhersagen verwendet)

Weitere Informationen zu den Kosten für BigQuery ML finden Sie unter BigQuery ML-Preise.

Weitere Informationen zu Cloud Storage-Kosten erhalten Sie auf der Seite Cloud Storage – Preise.

Weitere Informationen zu AI Platform-Kosten finden Sie auf der Seite Vorhersageknoten und Ressourcenzuordnung.

Vorbereitung

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu

    Enable the BigQuery API.

    Enable the API

    .
  7. Enable the AI Platform Training and Prediction API and Compute Engine APIs.

    Enable the APIs

  8. Installieren Sie die Google Cloud CLI und die Google Cloud-Befehlszeile.

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    Zur Seite „BigQuery“

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

  3. Klicken Sie auf Aktionen ansehen > Dataset erstellen.

    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.

      Die öffentlichen Datasets sind am multiregionalen Standort US gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Standort speichern.

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

      Seite "Dataset erstellen"

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 AI Platform für Online-/Batchvorhersagen finden Sie unter Modelle 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 Vorhersagen anfordern.

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

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 in Onlinevorhersagen von AI Platform bereitzustellen und auszuführen.

Weitere Informationen zum Bereitstellen eines Modells in AI Platform für Online-/Batchvorhersagen mit benutzerdefinierten Routinen finden Sie unter Modelle 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 Vorhersagen anfordern.

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

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 AI Platform nicht unterstützt.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

  • Sie können das von Ihnen erstellte Projekt löschen.
  • Alternativ können Sie das Projekt beibehalten und das Dataset und den Cloud Storage-Bucket löschen.

Docker-Container beenden

1) Listen Sie alle ausgeführten Docker-Container auf:

docker ps

2) Beenden Sie den Container mit der entsprechenden Container-ID aus der Containerliste:

docker stop container_id

AI Platform-Ressourcen löschen

1) Löschen Sie die Modellversion:

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

2) Löschen Sie das Modell:

gcloud ai-platform models delete $MODEL_NAME

Dataset löschen

Wenn Sie Ihr Projekt löschen, werden alle Datasets und Tabellen entfernt. Wenn Sie das Projekt wieder verwenden möchten, können Sie das in dieser Anleitung erstellte Dataset löschen:

  1. Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.

    Zur Seite "BigQuery"

  2. Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.

  3. Klicken Sie rechts im Fenster auf Delete dataset (Dataset löschen). Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.

  4. Bestätigen Sie im Dialogfeld Delete dataset (Dataset löschen) den Löschbefehl. Geben Sie dazu den Namen des Datasets (bqml_tutorial) ein und klicken Sie auf Delete (Löschen).

Cloud Storage-Bucket löschen

Wenn Sie Ihr Projekt löschen, werden alle Cloud Storage-Buckets im Projekt entfernt. Wenn Sie das Projekt wiederverwenden möchten, können Sie den Bucket löschen, den Sie in dieser Anleitung erstellt haben.

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

    Buckets aufrufen

  2. Klicken Sie das Kästchen neben dem Bucket, der gelöscht werden soll, an.

  3. Klicken Sie auf Löschen.

  4. Bestätigen Sie im eingeblendeten Fenster, dass Sie diesen Bucket und seinen Inhalt löschen möchten, indem Sie auf Löschen klicken.

Projekt löschen

So löschen Sie das Projekt:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte