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 von BigQuery ML erhalten Sie auf der Seite 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. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

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

    Aktivieren Sie die API

    .
  5. AI Platform Training and Prediction API and Compute Engine APIs aktivieren.

    Aktivieren Sie die APIs

  6. Installieren Sie das Google Cloud SDK und das gcloud-Befehlszeilentool.

Dataset erstellen

Im ersten Schritt erstellen Sie ein BigQuery-Dataset zum Speichern Ihres ML-Modells. So erstellen Sie ein Dataset:

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

    Zur Seite "BigQuery"

  2. Klicken Sie im Navigationsbereich im Abschnitt Ressourcen auf den Namen Ihres Projekts.

  3. Klicken Sie rechts im Detailbereich auf 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 unter Speicherort der Daten die Option USA aus. Derzeit werden die öffentlichen Datasets am multiregionalen Standort US gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Speicherort ablegen.

      Seite "Dataset erstellen"

  5. Übernehmen Sie alle anderen Standardeinstellungen und klicken Sie auf 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
gsutil cp -r gs://some/gcs/path/iris_model tmp_dir

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 das gcloud-Befehlszeilentool 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

Modellversionen 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

Details zum Ausführen von Onlinevorhersagen für ein bereitgestelltes Modell finden Sie unter https://cloud.google.com/ai-platform/prediction/docs/online-predict#requesting_predictions.

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 BigQuery ML-Anweisung CREATE MODEL 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

Unter den exportierten Dateien befindet sich eine main.py-Datei für die lokale Ausführung.

Exportierte Modelldateien in ein lokales Verzeichnis herunterladen

mkdir serving_dir
gsutil cp -r gs://some/gcs/path/boosted_tree_iris_model serving_dir

predictor.py 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 das gcloud-Befehlszeilentool 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 mit benutzerdefinierten Routinen finden Sie unter Modelle bereitstellen.

Modellressource erstellen

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

Modellversionen 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 BigQuery ML-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
gsutil cp -r gs://some/gcs/path/automl_iris_model/* automl_serving_dir/

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

Datasets 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 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 Dataset löschen. Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.

  4. Bestätigen Sie im Dialogfeld Dataset löschen den Löschbefehl. Geben Sie dazu den Namen des Datasets (bqml_tutorial) ein und klicken Sie auf 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 zum Cloud Storage-Browser.

    Browser 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, und klicken Sie dazu auf Löschen.

Projekt löschen

So löschen Sie das Projekt:

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte