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 das folgende End-to-End-Szenario:

  • Trainieren und Bereitstellen eines logistischen Regressionsmodells – gilt auch für lineare Regressions-, k-Means- und Matrixfaktorisierungsmodelle

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 finden 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-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie in der Cloud Console auf der Projektauswahlseite ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google 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. Aktivieren Sie die AI Platform Training and Prediction API and Compute Engine APIs.

    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. Wechseln Sie in der Google Cloud Console zur BigQuery-Web-UI.

    Zur BigQuery-Web-UI

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

  3. Klicken Sie rechts im Detailbereich auf Create Dataset (Dataset erstellen).

    Dataset erstellen

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

    • Geben Sie unter Dataset ID (Dataset-ID) bqml_tutorial ein.
    • Wählen Sie für Data location (Speicherort der Daten) die Option United States (US) (USA) aus. Derzeit werden die öffentlichen Datasets am multiregionalen Standort US gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Speicherort ablegen.

      Seite

  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

Lokale Bereitstellung und Bereitstellung

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

Onlinebereitstellung und -bereitstellung

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

Onlineprognose

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 eine Vorhersage aus:

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

Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud Platform-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:

  • Sie löschen das von Ihnen erstellte Projekt.
  • 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. Öffnen Sie ggf. die BigQuery-Web-UI.

    Zur BigQuery-Web-UI

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

  3. Klicken Sie rechts im Fenster auf Delete dataset (Datensatz 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. Öffnen Sie den Cloud Storage-Browser in der Google Cloud Console.
    Zum Cloud Storage-Browser
  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 Beenden, um das Projekt zu löschen.

Weitere Informationen