ML-Vorhersagen aus scikit-learn- oder XGBoost-Modellen abrufen

Der Onlinevorhersagedienst AI Platform Prediction verwaltet Rechenressourcen in der Cloud zur Ausführung von Modellen. Diese Modelle können scikit-learn- oder XGBoost-Modelle sein, die Sie an anderer Stelle (lokal oder über einen anderen Dienst) trainiert und in eine Datei exportiert haben. Auf dieser Seite wird der Prozess zum Abrufen von Onlinevorhersagen aus diesen exportierten Modellen mithilfe von AI Platform Prediction beschrieben.

Hinweis

Überblick

In dieser Anleitung trainieren Sie mit dem Iris-Dataset ein einfaches Modell zur Vorhersage von Blumenarten. Nachdem Sie das Modell lokal trainiert und gespeichert haben, stellen Sie es auf AI Platform Prediction bereit und senden Anfragen, um Onlinevorhersagen zu erhalten.

Vorbereitung

Führen Sie die folgenden Schritte aus, um ein GCP-Konto einzurichten, die AI Platform Prediction API zu aktivieren und das Cloud SDK zu installieren und zu aktivieren.

GCP-Projekt einrichten

  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. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Umgebung einrichten

Wählen Sie eine der folgenden Optionen aus, um Ihre Umgebung entweder lokal auf macOS oder in einer Remote-Umgebung in Cloud Shell einzurichten.

Nutzern von macOS wird empfohlen, ihre Umgebung mit dem folgenden MACOS-Tab einzurichten. Cloud Shell ist unter macOS, Linux und Windows verfügbar. Die entsprechende Anleitung finden Sie auf dem Tab CLOUD SHELL. Cloud Shell bietet eine schnelle Möglichkeit für den Test von AI Platform Prediction, eignet sich jedoch nicht für fortlaufende Entwicklungsarbeiten.

macOS

  1. Python-Installation prüfen.
    Prüfen Sie, ob Python installiert ist, und installieren Sie es gegebenenfalls.

    python -V
  2. pip-Installation prüfen.
    pip ist der Paketmanager von Python, der in aktuellen Versionen von Python enthalten ist. Prüfen Sie, ob Sie pip bereits installiert haben. Dazu führen Sie pip --version aus. Ist das nicht der Fall, lesen Sie die Anleitung zum Installieren von pip.

    Mit diesem Befehl können Sie ein Upgrade von pip ausführen:

    pip install -U pip

    Weitere Informationen finden Sie in der Dokumentation zu pip.

  3. virtualenv installieren
    virtualenv ist ein Tool, mit dem sich isolierte Python-Umgebungen erstellen lassen. Prüfen Sie, ob Sie virtualenv bereits installiert haben. Dazu führen Sie virtualenv --version aus. Ist dies nicht der Fall, installieren Sie virtualenv:

    pip install --user --upgrade virtualenv

    Zur Einrichtung einer isolierten Entwicklungsumgebung für diese Anleitung erstellen Sie in virtualenv eine neue virtuelle Umgebung. Mit dem folgenden Befehl wird beispielsweise eine Umgebung mit dem Namen aip-env aktiviert:

    virtualenv aip-env
    source aip-env/bin/activate
  4. Führen Sie für diese Anleitung die übrigen Befehle in Ihrer virtuellen Umgebung aus.

    Hier finden Sie weitere Informationen zur Verwendung von virtualenv. Zum Beenden von virtualenv führen Sie deactivate aus.

Cloud Shell

  1. Öffnen Sie die Google Cloud Console.

    Google Cloud Console

  2. Klicken Sie oben auf Cloud Shell aktivieren.

    Google Cloud Shell aktivieren

    In einem neuen Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet und darin eine Eingabeaufforderung angezeigt. Die Initialisierung der Shell-Sitzung kann einige Sekunden dauern.

    Cloud Shell-Sitzung

    Die Cloud Shell-Sitzung kann jetzt verwendet werden.

  3. Für die Verwendung Ihres ausgewählten Projekts konfigurieren Sie das gcloud-Befehlszeilentool.

    gcloud config set project [selected-project-id]

    Dabei ist [selected-project-id] Ihre Projekt-ID. Diese geben Sie ohne die Klammern ein.

Frameworks installieren

macOS

Führen Sie in Ihrer virtuellen Umgebung den folgenden Befehl aus, um die Installation durchzuführen. die Versionen von scikit-learn, XGBoost und pandas, die in AI Platform Prediction verwendet werden Laufzeitversion 2,11:

(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5

Durch die Angabe von Versionsnummern im vorherigen Befehl sorgen Sie dafür, dass die Abhängigkeiten in Ihrer virtuellen Umgebung mit den Abhängigkeiten in der Laufzeitversion übereinstimmen. Dies hilft, unerwartetes Verhalten zu vermeiden, wenn Ihr Code in AI Platform Prediction ausgeführt wird.

Weitere Informationen, Hinweise zu weiteren Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in den Installationsanleitungen für die einzelnen Frameworks:

Cloud Shell

Führen Sie den folgenden Befehl aus, um scikit-learn, XGBoost und pandas zu installieren:

pip install --user scikit-learn xgboost pandas

Weitere Informationen, Hinweise zu weiteren Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in den Installationsanleitungen für die einzelnen Frameworks:

Versionen von scikit-learn und XGBoost

Die AI Platform Prediction-Laufzeitversionen werden regelmäßig aktualisiert, um neue Releases von scikit-learn und XGBoost zu unterstützen. Beachten Sie die vollständigen Details zu jeder Laufzeitversion.

Modell trainieren und speichern

Beginnen Sie mit dem Training eines einfachen Modells für das Iris-Dataset.

scikit-learn

Nach dem scikit-learn-Beispiel zur Modellpersistenz können Sie ein Modell so trainieren und exportieren:

from sklearn.externals import joblib
from sklearn import datasets
from sklearn import svm

# Load the Iris dataset
iris = datasets.load_iris()

# Train a classifier
classifier = svm.SVC()
classifier.fit(iris.data, iris.target)

# Export the classifier to a file
joblib.dump(classifier, 'model.joblib')

Sie haben auch die Möglichkeit, die Pickle-Bibliothek zu verwenden, um das Modell zu exportieren:

import pickle
with open('model.pkl', 'wb') as model_file:
  pickle.dump(classifier, model_file)

XGBoost

Sie können das Modell mithilfe der Methode "save_model" des Booster-Objekts exportieren.

Zum Zweck dieser Anleitung wird scikit-learn mit XGBoost nur zum Importieren des Iris-Datasets verwendet.

from sklearn import datasets
import xgboost as xgb

# Load the Iris dataset
iris = datasets.load_iris()

# Load data into DMatrix object
dtrain = xgb.DMatrix(iris.data, label=iris.target)

# Train XGBoost model
bst = xgb.train({}, dtrain, 20)

# Export the classifier to a file
bst.save_model('./model.bst')

Sie haben auch die Möglichkeit, die Pickle-Bibliothek zu verwenden, um das Modell zu exportieren:

import pickle
with open('model.pkl', 'wb') as model_file:
  pickle.dump(bst, model_file)

Anforderungen an die Benennung von Modelldateien

Bei Onlinevorhersagen muss je nach verwendeter Bibliothek die gespeicherte Modelldatei, die Sie in Cloud Storage hochladen, einen der folgenden Namen haben: model.pkl, model.joblib oder model.bst. Diese Einschränkung sorgt dafür, dass AI Platform Prediction zur Modellrekonstruktion beim Importieren das gleiche Muster verwendet, das auch beim Exportieren verwendet wurde.

Die Anforderung gilt nicht, wenn Sie eine benutzerdefinierte Vorhersageroutine (Beta) erstellen.

scikit-learn

Zum Exportieren des Modells verwendete Bibliothek Korrekter Modellname
pickle model.pkl
sklearn.externals.joblib model.joblib

XGBoost

Zum Exportieren des Modells verwendete Bibliothek Korrekter Modellname
pickle model.pkl
joblib model.joblib
xgboost.Booster model.bst

Organisieren Sie bei zukünftigen Iterationen Ihres Modells den Cloud Storage-Bucket so, dass jedes neue Modell ein eigenes Verzeichnis hat.

Modell in Cloud Storage speichern

Für diese Anleitung ist es am einfachsten, wenn Sie einen dedizierten Cloud Storage-Bucket in demselben Projekt wie AI Platform Prediction verwenden.

Wenn Sie einen Bucket in einem anderen Projekt verwenden, müssen Sie dafür sorgen, dass Ihr AI Platform Prediction-Dienstkonto auf das Modell in Cloud Storage zugreifen kann. Ohne die entsprechenden Berechtigungen schlägt die Anfrage zum Erstellen einer AI Platform Prediction-Modellversion fehl. Weitere Informationen zum Gewähren von Berechtigungen für Cloud Storage.

Cloud Storage-Bucket einrichten

In diesem Abschnitt erfahren Sie, wie Sie einen neuen Bucket erstellen. Sie können auch einen vorhandenen Bucket verwenden. Dieser muss sich aber in der Region befinden, in der Sie AI Platform-Jobs ausführen. Hinzu kommt: Wenn der Bucket nicht zu dem Projekt gehört, das Sie für die Ausführung von AI Platform Prediction verwenden, müssen Sie den AI Platform Prediction-Dienstkonten explizit Zugriff gewähren.

  1. Geben Sie einen Namen für den neuen Bucket an. Der Name muss sich von allen anderen Bucket-Namen in Cloud Storage unterscheiden:

    BUCKET_NAME="YOUR_BUCKET_NAME"

    Beispielsweise verwenden Sie den Projektnamen mit angehängtem -aiplatform:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-aiplatform
  2. Prüfen Sie den erstellten Bucketnamen.

    echo $BUCKET_NAME
  3. Wählen Sie eine Region für den Bucket aus und legen Sie eine Umgebungsvariable REGION fest.

    Verwenden Sie die Region, in der Sie auch AI Platform Prediction-Jobs ausführen möchten. Hier finden Sie die verfügbaren Regionen für AI Platform Prediction-Dienste.

    Mit dem folgenden Code wird beispielsweise REGION erstellt und dafür us-central1 festgelegt:

    REGION=us-central1
  4. Erstellen Sie den neuen Bucket:

    gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION

Exportierte Modelldatei nach Cloud Storage hochladen

Führen Sie den folgenden Befehl aus, um das Modell, das Sie zuvor in dieser Anleitung exportiert haben, in Ihren Bucket in Cloud Storage hochzuladen:

gcloud storage cp ./model.joblib gs://$BUCKET_NAME/model.joblib

Sie können für mehrere Modelldateien denselben Cloud Storage-Bucket verwenden. Jede Modelldatei muss sich innerhalb des Buckets in einem eigenen Verzeichnis befinden.

Daten für die Vorhersage formatieren

gcloud

Erstellen Sie eine input.json-Datei mit je einer Eingabeinstanz in einer separaten Zeile:

[6.8,  2.8,  4.8,  1.4]
[6.0,  3.4,  4.5,  1.6]

Das Format der Eingabeinstanzen muss mit dem übereinstimmen, was Ihr Modell erwartet. In diesem Beispiel benötigt das Iris-Modell vier Funktionen. Ihre Eingabe muss also eine Matrix in der Form (num_instances, 4) sein.

REST API

Erstellen Sie eine Datei input.json, die als einfache Liste aus Gleitkommazahlen formatiert ist und in der sich jede Eingabeinstanz in einer separaten Zeile befindet:

{
  "instances": [

    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]

  ]
}

Das Format der Eingabeinstanzen muss mit dem übereinstimmen, was Ihr Modell erwartet. In diesem Beispiel benötigt das Iris-Modell vier Funktionen. Ihre Eingabe muss also eine Matrix in der Form (num_instances, 4) sein.

AI Platform Prediction unterstützt keine dünnbesetzte Darstellung von Eingabeinstanzen für XGBoost. Wenn der Wert einer Funktion null ist, verwenden Sie in der entsprechenden Eingabe 0.0. Wenn der Wert einer Funktion fehlt, verwenden Sie in der entsprechenden Eingabe NaN.

Weitere Informationen finden Sie unter Eingabe für Onlinevorhersagen formatieren.

Modell mit lokalen Vorhersagen testen

Mit dem Befehl gcloud ai-platform local predict können Sie testen, wie das Modell Vorhersagen durchführt, bevor Sie es für AI Platform-Vorhersage bereitstellen. Der Befehl verwendet für Vorhersagen Abhängigkeiten in Ihrer lokalen Umgebung und gibt Ergebnisse im selben Format zurück, das gcloud ai-platform predict für Onlinevorhersagen verwendet. Wenn Sie Vorhersagen in Ihrer lokalen Umgebung testen, können Sie Fehler erkennen und somit Kosten in Verbindung mit Anfragen für Onlinevorhersagen vermeiden.

Für das Argument --model-dir geben Sie ein Verzeichnis an, das Ihr exportiertes Modell für maschinelles Lernen enthält und sich entweder auf Ihrem lokalen Computer oder in Cloud Storage befindet. Für das Argument --framework geben Sie tensorflow, scikit-learn oder xgboost an. Sie können den Befehl gcloud ai-platform local predict nicht mit einer benutzerdefinierten Vorhersageroutine verwenden.

Das folgende Beispiel zeigt, wie lokale Vorhersagen durchgeführt werden:

gcloud ai-platform local predict --model-dir LOCAL_OR_CLOUD_STORAGE_PATH_TO_MODEL_DIRECTORY/ \
  --json-instances LOCAL_PATH_TO_PREDICTION_INPUT.JSON \
  --framework NAME_OF_FRAMEWORK

Modelle und Versionen bereitstellen

AI Platform Prediction verwaltet Ihre trainierten Modelle mithilfe von Modell- und Versionsressourcen. Ein AI Platform Prediction-Modell ist ein Container für die Versionen Ihres Modells für maschinelles Lernen.

Zum Bereitstellen eines Modells legen Sie eine Modellressource in AI Platform Prediction an, erstellen eine Version dieses Modells und verknüpfen dann die Modellversion mit der in Cloud Storage gespeicherten Modelldatei.

Modellressource erstellen

AI Platform Prediction verwendet Modellressourcen, um verschiedene Versionen Ihres Modells zu organisieren.

Sie müssen zu diesem Zeitpunkt entscheiden, ob Modellversionen, die zu diesem Modell gehören, einen regionalen Endpunkt oder den globalen Endpunkt verwenden sollen. In den meisten Fällen sollten Sie einen regionalen Endpunkt auswählen. Wenn Sie Funktionen benötigen, die nur auf Legacy-Maschinentypen (MLS1) verfügbar sind, verwenden Sie den globalen Endpunkt.

Sie müssen auch zu diesem Zeitpunkt entscheiden, ob die Modellversionen, die zu diesem Modell gehören, Logs bei der Bereitstellung von Vorhersagen exportieren sollen. In den folgenden Beispielen wird das Logging nicht aktiviert. Weitere Informationen zur Logging-Aktivierung

Konsole

  1. Öffnen Sie in der Google Cloud Console die Seite AI Platform Prediction-Modelle:

    Zur Seite "Modelle"

  2. Klicken Sie oben auf der Seite Modelle auf die Schaltfläche Neues Modell. Dadurch gelangen Sie auf die Seite Modell erstellen.

  3. Geben Sie im Feld Modellname einen eindeutigen Namen für Ihr Modell ein.

  4. Wenn das Kästchen Regionalen Endpunkt verwenden angeklickt ist, verwendet AI Platform Prediction einen regionalen Endpunkt. Wenn Sie stattdessen den globalen Endpunkt verwenden möchten, entfernen Sie das Häkchen aus dem Kästchen Regionalen Endpunkt verwenden.

  5. Wählen Sie in der Drop-down-Liste Region einen Standort für Ihre Vorhersageknoten aus. Die verfügbaren Regionen unterscheiden sich je nachdem, ob Sie einen regionalen Endpunkt oder den globalen Endpunkt verwenden.

  6. Klicken Sie auf Erstellen.

  7. Achten Sie darauf, dass Sie wieder auf die Seite Modelle zurückgekehrt sind und Ihr neues Modell in der Liste angezeigt wird.

gcloud

Regionaler Endpunkt

Führen Sie diesen Befehl aus:

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

Ersetzen Sie Folgendes:

Wenn Sie das Flag --region nicht angeben, werden Sie von der gcloud CLI aufgefordert, einen regionalen Endpunkt auszuwählen (oder us-central auf dem globalen Endpunkt zu verwenden).

Alternativ können Sie das Attribut ai_platform/region auf eine bestimmte Region festlegen, damit die gcloud CLI immer den entsprechenden regionalen Endpunkt für AI Platform Prediction verwendet, auch wenn Sie das Flag --region nicht angeben. (Diese Konfiguration gilt nicht für Befehle in der Befehlsgruppe gcloud ai-platform operations.)

Globaler Endpunkt

Führen Sie diesen Befehl aus:

gcloud ai-platform models create MODEL_NAME \
  --regions=REGION

Ersetzen Sie Folgendes:

Wenn Sie das Flag --regions nicht angeben, werden Sie von der gcloud CLI aufgefordert, einen regionalen Endpunkt auszuwählen (oder us-central1 auf dem globalen Endpunkt zu verwenden).

REST API

Regionaler Endpunkt

  1. Formatieren Sie die Anfrage, indem Sie das Modellobjekt in den Anfragetext einfügen. Geben Sie mindestens einen Namen für Ihr Modell an. Ersetzen Sie dazu MODEL_NAME in dem folgenden Beispiel:

    {
      "name": "MODEL_NAME"
    }
    
  2. Machen Sie einen REST API-Aufruf an die folgende URL und ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID:

    POST https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Dabei gilt:

    Sie können beispielsweise die folgende Anfrage mit dem Befehl curl stellen. Mit diesem Befehl wird die Anfrage mithilfe der Anmeldedaten autorisiert, die mit der Google Cloud CLI-Installation verknüpft sind.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    Die API gibt in etwa folgende Antwort zurück:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Globaler Endpunkt

  1. Formatieren Sie die Anfrage, indem Sie das Modellobjekt in den Anfragetext einfügen. Geben Sie mindestens einen Namen für Ihr Modell an. Ersetzen Sie dazu MODEL_NAME im folgenden Beispiel und geben Sie eine Region an, indem Sie REGION durch eine Region ersetzen, die Legacy-Maschinentypen (MLS1) unterstützt:

    {
      "name": "MODEL_NAME",
      "regions": ["REGION"]
    }
    
  2. Machen Sie einen REST API-Aufruf an die folgende URL und ersetzen Sie PROJECT_ID durch Ihre Google Cloud-Projekt-ID:

    POST https://ml.googleapis.com/v1/projects/PROJECT_ID/models/
    

    Sie können beispielsweise die folgende Anfrage mit dem Befehl curl stellen. Mit diesem Befehl wird die Anfrage mithilfe der Anmeldedaten autorisiert, die mit der Google Cloud CLI-Installation verknüpft sind.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "MODEL_NAME", "regions": ["REGION"]}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://ml.googleapis.com/v1/projects/PROJECT_ID/models"
    

    Die API gibt in etwa folgende Antwort zurück:

    {
      "name": "projects/PROJECT_ID/models/MODEL_NAME",
      "regions": [
        "REGION"
      ]
    }
    

Weitere Informationen finden Sie in der API für AI Platform Prediction-Modelle.

Modellversionen erstellen

Jetzt können Sie mit dem trainierten und zuvor in Cloud Storage hochgeladenen Modell eine Modellversion erstellen. Beim Erstellen einer Version können Sie eine Reihe von Parametern angeben. In der folgenden Liste werden allgemeine Parameter beschrieben, von denen einige erforderlich sind:

  • name: Muss innerhalb des AI Platform Prediction-Modells einmalig sein.
  • deploymentUri: Der Pfad zu Ihrem Modellverzeichnis in Cloud Storage.

    • Wenn Sie ein TensorFlow-Modell bereitstellen, ist dies ein SavedModel-Verzeichnis.
    • Wenn Sie ein scikit-learn- oder XGBoost-Modell bereitstellen, ist dies das Verzeichnis, in dem sich die Datei model.joblib, model.pkl oder model.bst befindet.
    • Wenn Sie eine benutzerdefinierte Vorhersageroutine bereitstellen, ist dies das Verzeichnis, in dem sich alle Modellartefakte befinden. Die Gesamtgröße dieses Verzeichnisses darf maximal 500 MB betragen.
  • framework: TENSORFLOW, SCIKIT_LEARN oder XGBOOST.

  • runtimeVersion: Eine Laufzeitversion auf der Basis der Abhängigkeiten, die Ihr Modell benötigt. Wenn Sie ein scikit-learn-Modell oder ein XGBoost-Modell bereitstellen, muss dies mindestens Version 1.4 sein. Wenn Sie die Modellversion für die Batchvorhersage verwenden möchten, müssen Sie die Laufzeitversion 2.1 oder früher verwenden.

  • pythonVersion: Muss auf "3.5" (für Laufzeitversionen 1.4 bis 1.14) oder "3.7" festgelegt sein (für Laufzeitversionen 1.15 und höher), um mit von Python 3 exportierten Modelldateien kompatibel zu sein. Kann bei Laufzeitversion 1.15 oder früher auch auf "2.7" festgelegt werden.

  • machineType (optional): Der Typ der virtuellen Maschine, den AI Platform-Vorhersage für die Knoten verwendet, die Vorhersagen bereitstellen. Weitere Informationen zu Maschinentypen Wenn nicht festgelegt, wird für regionale Endpunkte standardmäßig n1-standard-2 und für den globalen Endpunkt mls1-c1-m2 verwendet.

Weitere Informationen zu jedem dieser Parameter sowie zu zusätzlichen weniger gebräuchlichen Parametern finden Sie in der API-Referenz für die Versionsressource.

Wenn Sie Ihr Modell darüber hinaus an einem regionalen Endpunkt erstellt haben, müssen Sie die Version auch an demselben regionalen Endpunkt erstellen.

Konsole

  1. Öffnen Sie in der Google Cloud Console die Seite AI Platform Prediction-Modelle:

    Zur Seite "Modelle"

  2. Wählen Sie auf der Seite Modelle den Namen der Modellressource aus, die Sie zur Erstellung der Version verwenden möchten. Dadurch gelangen Sie auf die Seite Modelldetails.

  3. Klicken Sie oben auf der Seite Modelldetails auf die Schaltfläche Neue Version. Dadurch gelangen Sie auf die Seite Version erstellen.

  4. Geben Sie in das Feld Name den Versionsnamen ein. Geben Sie optional in das Feld Beschreibung eine Beschreibung für die Version ein.

  5. Geben Sie die Informationen über das Training des Modells in den entsprechenden Drop-down-Menüs ein:

  6. Wählen Sie einen Maschinentyp für die Onlinevorhersage aus.

  7. Geben Sie im Feld Modell-URI den Standort des Cloud Storage-Buckets ein, in den Sie die Modelldatei hochgeladen haben. Mit der Schaltfläche Durchsuchen können Sie den richtigen Pfad suchen.

    Achten Sie darauf, dass Sie den Pfad zu dem Verzeichnis angeben, das die Datei enthält, und nicht den Pfad zur Modelldatei selbst. Verwenden Sie z. B. gs://your_bucket_name/model-dir/ statt gs://your_bucket_name/model-dir/saved_model.pb oder gs://your_bucket_name/model-dir/model.pkl.

  8. Zum Bereitstellen der Onlinevorhersage wählen Sie eine Skalierungsoption aus:

    • Wenn Sie "Automatische Skalierung" auswählen, wird das optionale Feld Mindestanzahl von Knoten angezeigt. Geben Sie hier die Mindestanzahl der Knoten ein, die auch dann jederzeit aktiv bleiben sollen, wenn der Dienst herunterskaliert wurde.

    • Wenn Sie "Manuelle Skalierung" auswählen, geben Sie die Anzahl der Knoten ein, die ständig ausgeführt werden sollen.

    Weitere Informationen zu den Skalierungsoptionen je nach Maschinentyp

    Weitere Informationen finden Sie unter Preise für Vorhersagen.

  9. Zum Erstellen Ihrer Modellversion klicken Sie auf Speichern.

gcloud

  1. Legen Sie Umgebungsvariablen für den Pfad zum Cloud Storage-Verzeichnis mit der Modellbinärdatei sowie für den Versionsnamen, den Modellnamen und das von Ihnen gewählte Framework fest.

    Wenn Sie eine Version mit der gcloud CLI erstellen, geben Sie den Framework-Namen in Großbuchstaben mit Unterstrichen (z. B. SCIKIT_LEARN) oder in Kleinbuchstaben mit Bindestrichen (z. B. scikit-learn) an. Beide Optionen führen zu identischem Verhalten.

    Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

    MODEL_DIR="gs://your_bucket_name/"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    MODEL_NAME="[YOUR-MODEL-NAME]"
    FRAMEWORK="[YOUR-FRAMEWORK_NAME]"
    

  2. Erstellen Sie die Version:

    gcloud ai-platform versions create $VERSION_NAME \
      --model=$MODEL_NAME \
      --origin=$MODEL_DIR \
      --runtime-version=2.11 \
      --framework=$FRAMEWORK \
      --python-version=3.7 \
      --region=REGION \
      --machine-type=MACHINE_TYPE
    

    Dabei gilt:

    Das Erstellen der Version dauert einige Minuten. Wenn sie fertig ist, sollten Sie die folgende Ausgabe sehen:

    Creating version (this might take a few minutes)......done.
  3. Rufen Sie Informationen über Ihre neue Version ab:

    gcloud ai-platform versions describe $VERSION_NAME \
      --model=$MODEL_NAME
    

    Die Ausgabe sollte etwa so aussehen:

    createTime: '2018-02-28T16:30:45Z'
    deploymentUri: gs://your_bucket_name
    framework: [YOUR-FRAMEWORK-NAME]
    machineType: mls1-c1-m2
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.7'
    runtimeVersion: '2.11'
    state: READY

REST API

  1. Formatieren Sie Ihren Anfragetext so, dass das Versionsobjekt enthalten ist. In diesem Beispiel werden name, deploymentUri, runtimeVersion, framework und machineType der Version angegeben. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

    {
      "name": "[YOUR-VERSION-NAME]",
      "deploymentUri": "gs://your_bucket_name/",
      "runtimeVersion": "2.11",
      "framework": "[YOUR_FRAMEWORK_NAME]",
      "pythonVersion": "3.7",
      "machineType": "[YOUR_MACHINE_TYPE]"
    }
    
  2. Senden Sie den REST API-Aufruf an den folgenden Pfad und ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

    POST https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
    

    Ersetzen Sie REGION durch die Region des regionalen Endpunkts, in dem Sie Ihr Modell erstellt haben. Wenn Sie Ihr Modell auf dem globalen Endpunkt erstellt haben, verwenden Sie ml.googleapis.com.

    Sie können beispielsweise die folgende Anfrage mit dem Befehl curl stellen:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
    

    Das Erstellen der Version dauert einige Minuten. Wenn sie fertig ist, sollte die Ausgabe in etwa so aussehen:

    {
      "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata",
        "createTime": "2018-07-07T02:51:50Z",
        "operationType": "CREATE_VERSION",
        "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
        "version": {
          "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]",
          "deploymentUri": "gs://your_bucket_name",
          "createTime": "2018-07-07T02:51:49Z",
          "runtimeVersion": "2.11",
          "framework": "[YOUR_FRAMEWORK_NAME]",
          "machineType": "[YOUR_MACHINE_TYPE]",
          "pythonVersion": "3.7"
        }
      }
    }
    

Anfrage für Onlinevorhersage senden

Nachdem Sie eine Version erfolgreich erstellt haben, startet AI Platform Prediction einen neuen Server, der Vorhersageanfragen ausführen kann.

gcloud

  1. Legen Sie Umgebungsvariablen für Ihren Modellnamen, den Versionsnamen und den Namen Ihrer Eingabedatei fest:

    MODEL_NAME="iris"
    VERSION_NAME="v1"
    INPUT_FILE="input.json"
    
  2. Senden Sie die Vorhersageanfrage:

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

Python

In diesem Beispiel wird angenommen, dass Sie mit der Google Cloud-Clientbibliothek für Python vertraut sind. Wenn dies nicht der Fall ist, lesen Sie das Thema Python-Clientbibliothek verwenden durch.

import googleapiclient.discovery

def predict_json(project, model, instances, version=None):
    """Send json data to a deployed model for prediction.
    Args:
        project (str): project where the AI Platform Prediction Model is deployed.
        model (str): model name.
        instances ([[float]]): List of input instances, where each input
           instance is a list of floats.
        version: str, version of the model to target.
    Returns:
        Mapping[str: any]: dictionary of prediction results defined by the
            model.
    """
    # Create the AI Platform Prediction service object.
    # To authenticate set the environment variable
    # GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={'instances': instances}
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

Weitere Informationen zu jedem dieser Parameter finden Sie unter der AI Platform Prediction API für die Vorhersageeingabe.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:

Nächste Schritte