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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
Enable the BigQuery API.
. -
Enable the AI Platform Training and Prediction API and Compute Engine APIs.
- Installieren Sie die Google Cloud CLI und die Google Cloud-Befehlszeile.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.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.
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:
Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.
Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf Delete dataset (Dataset löschen). Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.
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.
- Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.
Klicken Sie das Kästchen neben dem Bucket, der gelöscht werden soll, an.
Klicken Sie auf Löschen.
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Einführung in BigQuery ML
- Modelle exportieren
- Mehr zum Erstellen von Modellen auf der Seite zur
CREATE MODEL
-Syntax