In dieser Anleitung wird gezeigt, wie Sie ein BigQuery ML-Modell exportieren
und das Modell dann entweder in Vertex AI oder auf einem lokalen Computer bereitstellen. Sie werden
die Tabelle iris
aus den öffentlichen BigQuery-Datasets verwenden und die drei folgenden durchgängigen Szenarien bearbeiten:
- 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
- Vertex AI (optional, 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 den Kosten für Vertex AI finden Sie unter Benutzerdefiniert trainierte Modelle.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie mit Google Cloudnoch 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem bereits bestehenden Projekt wechseln Sie zu
Aktivieren Sie die BigQuery API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollen. -
Aktivieren Sie die AI Platform Training and Prediction API und die Compute Engine APIs.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollen. - Installieren Sie die Google Cloud CLI und die Google Cloud CLI.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern.
Console
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_tutorialein.Wählen Sie unter Standorttyp die Option Multi-Region und dann USA aus.
Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.
bq
Verwenden Sie den
bq mk --dataset Befehl, um ein neues Dataset zu erstellen.
Erstellen Sie ein Dataset mit dem Namen
bqml_tutorialund legen Sie den Datenstandort aufUSfest.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Prüfen Sie, ob das Dataset erstellt wurde:
bq ls
API
Rufen Sie die datasets.insert
Methode mit einer definierten Dataset-Ressource auf.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
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 Onlinevorhersagen von einem benutzerdefiniert 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-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 bereitzustellen und auszuführen. Weitere Informationen finden Sie unter Onlinevorhersagen von einem benutzerdefiniert trainierten Modell abrufen.
Weitere Informationen zum Bereitstellen eines Modells in Vertex AI für Online- oder Batchvorhersagen mit benutzerdefinierten Routinen finden Sie unter Modell an 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 Onlinevorhersagen von einem benutzerdefiniert trainierten Modell abrufen.
1) Erstellen Sie für die Eingaben eine JSON-Datei mit Zeilenumbrüchen, z. B. eine Datei mit folgendem Inhalt: Beispiel: 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-Klassifikatormodell trainieren und bereitstellen
In den folgenden Abschnitten erfahren Sie, wie Sie ein 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 Tabellarische AutoML-Modelle exportieren. Für die folgenden Schritte müssen Sie Dockerinstallieren.
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 mit folgendem Inhalt: Beispiel: 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.
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
Vertex AI-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 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.
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite 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:
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Nächste Schritte
- Einführung in BigQuery ML
- Modelle exportieren
- Mehr zum Erstellen von Modellen auf der Seite zur
CREATE MODEL-Syntax