Onlinevorhersagen mit XGBoost abrufen

In diesem Beispiel wird ein einfaches Modell zur Vorhersage des Einkommensniveaus einer Person basierend auf dem Census Income Data Set (Dataset zur Einkommenserhebung) trainiert. Nachdem Sie das Modell lokal trainiert und gespeichert haben, stellen Sie es in AI Platform bereit und rufen damit Onlinevorhersagen ab.

Dieser Inhalt ist auch auf GitHub als Jupyter Notebook verfügbar.

Modell in AI Platform bereitstellen

So stellen Sie ein Modell in fünf Schritten in AI Platform bereit, um Vorhersagen abzurufen:

  • Speichern Sie Ihr Modell in einer Datei
  • Laden Sie das gespeicherte Modell in Cloud Storage hoch
  • Erstellen Sie eine Modellressource in AI Platform
  • Erstellen Sie eine Modellversion durch Verknüpfung Ihres gespeicherten Modells
  • Treffen Sie eine Onlinevorhersage

Vorbereitung

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

GCP-Projekt einrichten

  1. Melden Sie sich in Ihrem Google-Konto an.

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

  2. Wählen Sie ein Google Cloud Platform-Projekt aus oder erstellen Sie eines.

    Zur Seite "Ressourcen verwalten"

  3. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Platform-Projekt aktiviert ist.

    Informationen zum Aktivieren der Abrechnung

  4. Aktivieren Sie die AI Platform ("Cloud Machine Learning Engine") and Compute Engine erforderlichen APIs.

    Aktivieren Sie die APIs.

  5. Installieren und initialisieren Sie das Cloud SDK.

Umgebung einrichten

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

Nutzern von macOS wird empfohlen, ihre Umgebung mit dem Tab MACOS 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, eignet sich jedoch nicht für fortlaufende Entwicklungsarbeiten.

macOS

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

    python -V
  2. pip-Installation überprüfen
    pip ist der Paketmanager von Python, der in aktuellen Versionen von Python enthalten ist. Mit pip --version können Sie prüfen, ob pip bereits installiert ist. Ist dies nicht der Fall, lesen Sie die Anleitung zum Installieren von pip.

    Mit dem folgenden 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. Überprüfen Sie mit virtualenv --version, ob virtualenv bereits installiert ist. 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 cmle-env aktiviert:

    virtualenv cmle-env
    source cmle-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. Führen Sie zum Beenden von virtualenv deactivate aus.

Cloud Shell

  1. Öffnen Sie die Google Cloud Platform Console.

    Zur Google Cloud Platform Console

  2. Klicken Sie im oberen Fensterbereich der Konsole auf Cloud Shell aktivieren.

    Google Cloud Shell aktivieren

    In einem neuen Frame im unteren Teil der Konsole 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. Konfigurieren Sie das Befehlszeilentool gcloud für die Verwendung Ihres ausgewählten Projekts:

    gcloud config set project [selected-project-id]

    Dabei ist [selected-project-id] die Projekt-ID. Geben Sie diese ohne die Klammern ein.

Google Cloud SDK-Komponenten überprüfen

So prüfen Sie, ob die Google Cloud SDK-Komponenten installiert sind:

  1. Listen Sie Ihre Modelle auf:

    gcloud ai-platform models list
  2. Wenn Sie noch keine Modelle erstellt haben, gibt der Befehl eine leere Liste zurück:

    Listed 0 items.

    Nach dem Erstellen von Modellen können Sie diese mit diesem Befehl auflisten.

  3. Wenn Sie gcloud schon installiert haben, aktualisieren Sie gcloud:

    gcloud components update

Frameworks installieren

macOS

Führen Sie in Ihrer virtuellen Umgebung den folgenden Befehl aus, um scikit-learn, XGBoost, pandas und joblib zu installieren:

(cmle-env)$ pip install scikit-learn xgboost pandas

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, pandas und joblib 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:

Daten herunterladen

Das in diesem Beispiel für das Training verwendete Census Income Data Set (Dataset zur Einkommenserhebung) wird vom UC Irvine Machine Learning Repository gehostet. Weitere Informationen finden Sie unter Informationen zu den Daten.

  • Die Trainingsdatei ist adult.data
  • Die Auswertungsdatei ist adult.test

Modell trainieren und speichern

Mithilfe der folgenden Schritte trainieren und speichern Sie ein Modell:

  1. Laden Sie die Daten in einen Pandas-DataFrame, um sie für die Verwendung mit XGBoost vorzubereiten.
  2. Trainieren Sie ein einfaches Modell in XGBoost.
  3. Speichern Sie das Modell in einer Datei, die in AI Platform hochgeladen werden kann.

Wenn bereits ein trainiertes Modell zum Hochladen vorhanden ist, finden Sie weitere Informationen unter Modell exportieren.

Daten laden und umwandeln

In diesem Schritt erfahren Sie, wie Sie die Trainings- und Testdatensätze in einen Pandas-DataFrame laden und die kategorischen Daten in numerische Merkmale umwandeln, sodass sie für die Verwendung mit Ihrem Modell vorbereitet sind.

import json
import numpy as np
import os
import pandas as pd
import pickle
import xgboost as xgb
from sklearn.preprocessing import LabelEncoder

# these are the column labels from the census data files
COLUMNS = (
    'age',
    'workclass',
    'fnlwgt',
    'education',
    'education-num',
    'marital-status',
    'occupation',
    'relationship',
    'race',
    'sex',
    'capital-gain',
    'capital-loss',
    'hours-per-week',
    'native-country',
    'income-level'
)

# categorical columns contain data that need to be turned into numerical
# values before being used by XGBoost
CATEGORICAL_COLUMNS = (
    'workclass',
    'education',
    'marital-status',
    'occupation',
    'relationship',
    'race',
    'sex',
    'native-country'
)

# load training set
with open('./census_data/adult.data', 'r') as train_data:
    raw_training_data = pd.read_csv(train_data, header=None, names=COLUMNS)
# remove column we are trying to predict ('income-level') from features list
train_features = raw_training_data.drop('income-level', axis=1)
# create training labels list
train_labels = (raw_training_data['income-level'] == ' >50K')

# load test set
with open('./census_data/adult.test', 'r') as test_data:
    raw_testing_data = pd.read_csv(test_data, names=COLUMNS, skiprows=1)
# remove column we are trying to predict ('income-level') from features list
test_features = raw_testing_data.drop('income-level', axis=1)
# create training labels list
test_labels = (raw_testing_data['income-level'] == ' >50K.')

# convert data in categorical columns to numerical values
encoders = {col:LabelEncoder() for col in CATEGORICAL_COLUMNS}
for col in CATEGORICAL_COLUMNS:
    train_features[col] = encoders[col].fit_transform(train_features[col])
for col in CATEGORICAL_COLUMNS:
    test_features[col] = encoders[col].fit_transform(test_features[col])

Modell trainieren und exportieren

Sie können das Modell mithilfe der Methode save_model des Booster-Objekts oder mit der Python-Bibliothek pickle exportieren.

# load data into DMatrix object
dtrain = xgb.DMatrix(train_features, train_labels)
dtest = xgb.DMatrix(test_features)

# train XGBoost model
bst = xgb.train({}, dtrain, 20)
bst.save_model('./model.bst')

Anforderungen an die Benennung von Modelldateien

Je nach verwendeter Bibliothek muss die gespeicherte Modelldatei, die Sie in Cloud Storage hochladen, einen der folgenden Namen haben: model.pkl, model.joblib oder model.bst. Diese Einschränkung gewährleistet, dass AI Platform für die Modellrekonstruktion beim Import das gleiche Muster wie beim Export verwendet.

Zum Export 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, einen dedizierten Cloud Storage-Bucket in demselben Projekt wie die AI Platform zu verwenden.

Wenn Sie einen Bucket in einem anderen Projekt verwenden, müssen Sie dafür sorgen, dass Ihr AI Platform-Dienstkonto auf das Modell in Cloud Storage zugreifen kann. Ohne die entsprechenden Berechtigungen schlägt die Anfrage zum Erstellen einer AI Platform-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 einrichten. Sie können auch einen vorhandenen Bucket verwenden. Wenn er jedoch nicht Teil des zum Ausführen von AI Platform verwendeten Projekts ist, müssen Sie den AI Platform-Dienstkonten explizit Zugriff darauf 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"

    Verwenden Sie beispielsweise den Projektnamen mit angehängtem -mlengine:

    PROJECT_ID=$(gcloud config list project --format "value(core.project)")
    BUCKET_NAME=${PROJECT_ID}-mlengine
  2. Überprüfen Sie den erstellten Bucket-Namen:

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

    Beispielsweise wird mit dem folgenden Code die Umgebungsvariable REGION erstellt und dafür als Wert us-central1 festgelegt:

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

    gsutil mb -l $REGION gs://$BUCKET_NAME

    Hinweis: Verwenden Sie dieselbe Region, in der die AI Platform-Jobs ausgeführt werden sollen. Im Beispiel ist us-central1 angegeben, da diese Region im Startleitfaden verwendet wird.

Exportierte Modelldatei in 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:

gsutil cp ./model.bst gs://$BUCKET_NAME/model.bst

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

Bevor Sie eine Onlinevorhersageanfrage senden, müssen Sie Ihre Testdaten formatieren, um sie für die Verwendung mit dem Vorhersagedienst von AI Platform vorzubereiten. Sorgen Sie dafür, dass das Format Ihrer Eingabeinstanzen mit dem für Ihr Modell erwarteten Format übereinstimmt.

gcloud

Erstellen Sie die Datei input.json mit jeder Eingabeinstanz in einer separaten Zeile. Im folgenden Beispiel werden die im vorherigen Schritt definierten ersten zehn Dateninstanzen von der Liste test_features verwendet:

    [25, "Private", 226802, "11th", 7, "Never-married", "Machine-op-inspct", "Own-child", "Black", "Male", 0, 0, 40, "United-States"]
    [38, "Private", 89814, "HS-grad", 9, "Married-civ-spouse", "Farming-fishing", "Husband", "White", "Male", 0, 0, 50, "United-States"]
    [28, "Local-gov", 336951, "Assoc-acdm", 12, "Married-civ-spouse", "Protective-serv", "Husband", "White", "Male", 0, 0, 40, "United-States"]
    [44, "Private", 160323, "Some-college", 10, "Married-civ-spouse", "Machine-op-inspct", "Husband", "Black", "Male", 7688, 0, 40, "United-States"]
    [18, "?", 103497, "Some-college", 10, "Never-married", "?", "Own-child", "White", "Female", 0, 0, 30, "United-States"]
    [34, "Private", 198693, "10th", 6, "Never-married", "Other-service", "Not-in-family", "White", "Male", 0, 0, 30, "United-States"]
    [29, "?", 227026, "HS-grad", 9, "Never-married", "?", "Unmarried", "Black", "Male", 0, 0, 40, "United-States"]
    [63, "Self-emp-not-inc", 104626, "Prof-school", 15, "Married-civ-spouse", "Prof-specialty", "Husband", "White", "Male", 3103, 0, 32, "United-States"]
    [24, "Private", 369667, "Some-college", 10, "Never-married", "Other-service", "Unmarried", "White", "Female", 0, 0, 40, "United-States"]
    [55, "Private", 104996, "7th-8th", 4, "Married-civ-spouse", "Craft-repair", "Husband", "White", "Male", 0, 0, 10, "United-States"]

Beachten Sie, dass das Format der Eingabeinstanzen mit dem übereinstimmen muss, was Ihr Modell erwartet. In diesem Beispiel benötigt das Census-Modell 14 Eigenschaften. Ihre Eingabe muss also eine Formmatrix sein (num_instances, 14).

REST API

Erstellen Sie die Datei input.json mit jeder Eingabeinstanz in einer separaten Zeile. Im folgenden Beispiel werden die im vorherigen Schritt definierten ersten zehn Dateninstanzen von der Liste test_features verwendet:

{
  "instances": [

    [25, "Private", 226802, "11th", 7, "Never-married", "Machine-op-inspct", "Own-child", "Black", "Male", 0, 0, 40, "United-States"],
    [38, "Private", 89814, "HS-grad", 9, "Married-civ-spouse", "Farming-fishing", "Husband", "White", "Male", 0, 0, 50, "United-States"],
    [28, "Local-gov", 336951, "Assoc-acdm", 12, "Married-civ-spouse", "Protective-serv", "Husband", "White", "Male", 0, 0, 40, "United-States"],
    [44, "Private", 160323, "Some-college", 10, "Married-civ-spouse", "Machine-op-inspct", "Husband", "Black", "Male", 7688, 0, 40, "United-States"],
    [18, "?", 103497, "Some-college", 10, "Never-married", "?", "Own-child", "White", "Female", 0, 0, 30, "United-States"],
    [34, "Private", 198693, "10th", 6, "Never-married", "Other-service", "Not-in-family", "White", "Male", 0, 0, 30, "United-States"],
    [29, "?", 227026, "HS-grad", 9, "Never-married", "?", "Unmarried", "Black", "Male", 0, 0, 40, "United-States"],
    [63, "Self-emp-not-inc", 104626, "Prof-school", 15, "Married-civ-spouse", "Prof-specialty", "Husband", "White", "Male", 3103, 0, 32, "United-States"],
    [24, "Private", 369667, "Some-college", 10, "Never-married", "Other-service", "Unmarried", "White", "Female", 0, 0, 40, "United-States"],
    [55, "Private", 104996, "7th-8th", 4, "Married-civ-spouse", "Craft-repair", "Husband", "White", "Male", 0, 0, 10, "United-States"]
  ]
}

Das Format der Eingabeinstanzen muss mit dem übereinstimmen, was Ihr Modell erwartet. In diesem Beispiel benötigt das Census-Modell 14 Merkmale. Ihre Eingabe muss also eine Formmatrix sein (num_instances, 14).

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

Modell mit lokalen Vorhersagen testen

Sie können das Modell für lokale Vorhersagen mit gcloud bereitstellen. Durch diesen optionalen Schritt lässt sich das Modell vor dem Bereitstellen auf AI Platform überprüfen und dadurch Zeit sparen. Mit der in Cloud Storage hochgeladenen Modelldatei können Sie Onlinevorhersagen lokal ausführen und eine Vorschau der Ergebnisse abrufen, die der AI Platform-Vorhersageserver zurückgeben würde.

Verwenden Sie eine lokale Vorhersage mit einer kleinen Teilmenge Ihrer Testdaten, damit Sie Diskrepanzen zwischen Trainings- und Bereitstellungsfunktionen beheben können. Wenn beispielsweise die Daten, die Sie mit Ihrer Vorhersageanfrage senden, nicht mit den Daten übereinstimmen, die Ihr Modell erwartet, können Sie dies feststellen, bevor Kosten für Onlinevorhersageanfragen in der Cloud anfallen.

Weitere Informationen zur Verwendung von gcloud ai-platform local predict.

  1. Legen Sie, falls noch nicht geschehen, Umgebungsvariablen für das Cloud Storage-Verzeichnis, das das Modell ("gs://your-bucket/") enthält, für den Namen der Eingabedatei und für das Framework fest:

    MODEL_DIR="gs://your-bucket/"
    INPUT_FILE="input.json"
    FRAMEWORK="XGBOOST"
    
  2. Senden Sie die Vorhersageanfrage:

    gcloud ai-platform local predict --model-dir=$MODEL_DIR \
        --json-instances $INPUT_FILE \
        --framework $FRAMEWORK
    

Modelle und Versionen bereitstellen

AI Platform organisiert Ihre trainierten Modelle nach Modell- und Versionsressourcen. Ein AI Platform-Modell ist ein Container für die Versionen Ihres Modells für maschinelles Lernen.

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

Modellressource erstellen

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

Console

  1. Öffnen Sie die Seite der AI Platform-Modelle in der GCP Console.

    Zur Seite "Modelle" in der GCP Console

  2. Erstellen Sie gegebenenfalls das Modell, dem Sie eine neue Version hinzufügen möchten:

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

    2. Geben Sie in das Feld Modellname einen Namen für Ihr Modell ein. Geben Sie optional in das Feld Beschreibung eine Beschreibung für das Modell ein.

    3. Klicken Sie auf Erstellen.

    4. Achten Sie darauf, dass Sie sich wieder auf der Seite Modelle befinden und das neue Modell in der Liste angezeigt wird.

gcloud

Erstellen Sie eine Modellressource für Ihre Modellversionen und geben Sie den gewünschten Namen für das Modell ohne die Klammern ein:

gcloud ai-platform models create "[YOUR-MODEL-NAME]"

REST API

  1. Formatieren Sie die Anfrage, indem Sie das Modellobjekt in den Anfragetext einfügen. Sie müssen mindestens den Namen für das Modell angeben. Geben Sie den gewünschten Namen für das Modell ohne die Klammern ein:

    {"name": "[YOUR-MODEL-NAME]"}
    
  2. Senden Sie den REST API-Aufruf an den folgenden Pfad und ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

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

    Hier sehen Sie ein Beispiel für eine Anfrage mit cURL:

    curl -X POST -H "Content-Type: application/json" \
      -d '{"name": "[YOUR-MODEL-NAME]"}' \
      -H "Authorization: Bearer `gcloud auth print-access-token`" \
      "https://ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models"
    

    Die Ausgabe sollte etwa so aussehen:

    {
      "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]",
      "regions": [
        "us-central1"
      ]
    }
    

Weitere Informationen finden Sie in der AI Platform Model API.

Modellversionen erstellen

Sie können jetzt mit dem trainierten und zuvor in Cloud Storage hochgeladenen Modell eine Modellversion erstellen. Geben Sie dabei die folgenden Parameter an:

  • name: Muss innerhalb des AI Platform-Modells eindeutig sein.
  • deploymentUri: Der Pfad zu dem Verzeichnis, in dem die exportierte Modelldatei gespeichert ist. Achten Sie darauf, dass Sie den Pfad zu dem Verzeichnis angeben, das die Datei enthält, und nicht den Pfad zur Modelldatei selbst.

    • Pfad zum Modell: gs://your_bucket_name/model.pkl
    • Pfad zum Verzeichnis des Modells: gs://your_bucket_name/

    Die Gesamtgröße dieses Verzeichnisses darf maximal 250 MB betragen.

  • framework: SCIKIT_LEARN oder XGBOOST.

  • runtimeVersion: Muss auf "1.4" oder höher festgelegt sein, damit eine Laufzeitversion verwendet wird, die scikit-learn und XGBoost unterstützt.

  • pythonVersion: Muss auf "3.5" festgelegt sein, um mit anhand von Python 3 exportierten Modelldateien kompatibel zu sein. Ist nichts festgelegt, wird standardmäßig "2.7" verwendet.

Weitere Informationen zu diesen Parametern finden Sie im AI Platform-Training und unter der Prediction API für eine Versionsressource.

Beachten Sie die kompletten Details für jede Laufzeitversion.

Console

  1. 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.

    Zur Seite "Modelle" in der GCP Console

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

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

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

    • Wählen Sie die zum Training Ihres Modells verwendete Python-Version aus.
    • Wählen Sie das Framework und die Framework-Version aus.
    • Wählen Sie die ML-Laufzeitversion aus. Weitere Informationen zu AI Platform-Laufzeitversionen finden Sie hier.
  5. Wählen Sie optional einen Maschinentyp für die Onlinevorhersage aus. Der Standardwert in diesem Feld ist "Single-Core-CPU".

  6. 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 finden Sie den richtigen Pfad.

    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 beispielsweise "gs://your_bucket_name/model-dir/" und nicht "gs://your_bucket_name/model-dir/model.pkl".

  7. Wählen Sie eine Skalierungsoption zum Bereitstellen der Onlinevorhersage 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. Der Standardwert in diesem Feld ist "0".

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

      Weitere Informationen finden Sie unter Vorhersagekosten.

  8. 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 Ihre Framework-Auswahl fest.

    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="XGBOOST"
    

  2. Erstellen Sie die Version:

    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --origin $MODEL_DIR \
      --runtime-version=1.13 \
      --framework $FRAMEWORK \
      --python-version=3.5
    

    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: XGBOOST
    machineType: mls1-highmem-1
    name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]
    pythonVersion: '3.5'
    runtimeVersion: '1.13'
    state: READY

REST API

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

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

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

    Hier sehen Sie ein Beispiel für eine Anfrage mit cURL:

        curl -X POST -H "Content-Type: application/json" \
          -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "1.13", "framework": "XGBOOST", "pythonVersion": "3.5"}' \
          -H "Authorization: Bearer `gcloud auth print-access-token`" \
          "https://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": "1.13",
            "framework": "XGBOOST",
            "machineType": "mls1-highmem-1",
            "pythonVersion": "3.5"
          }
        }
      }
    

Anfrage für Onlinevorhersage senden

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

gcloud

  1. Legen Sie Umgebungsvariablen für den Modellnamen, den Versionsnamen und den Namen der Eingabedatei fest: Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

    MODEL_NAME="[YOUR-MODEL-NAME]"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    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 die Python-Client-Bibliothek verwendet, um Vorhersageanfragen für das gesamte Census-Dataset zu senden. Die ersten zehn Ergebnisse werden ausgegeben. Hier finden Sie weitere Informationen für die Verwendung der Python-Client-Bibliothek.

Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

import googleapiclient.discovery

# Fill in your PROJECT_ID, VERSION_NAME and MODEL_NAME before running
# this code.

PROJECT_ID = [YOUR PROJECT_ID HERE]
VERSION_NAME = [YOUR VERSION_NAME HERE]
MODEL_NAME = [YOUR MODEL_NAME HERE]

service = googleapiclient.discovery.build('ml', 'v1')
name = 'projects/{}/models/{}'.format(PROJECT_ID, MODEL_NAME)
name += '/versions/{}'.format(VERSION_NAME)

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

if 'error' in response:
  print (response['error'])
else:
  online_results = response['predictions']

Für XGBoost sind die Ergebnisse Gleitkommazahlen und müssen in boolesche Werte umgewandelt werden, je nachdem, welcher Schwellenwert für Ihr Modell geeignet ist. Beispiel:

# convert floats to booleans
converted_responses = [x > 0.5 for x in online_results]

Weitere Informationen zu den Eingabeparametern für eine Vorhersage finden Sie in den Details zu AI Platform API-Vorhersageanfragen.

Über die Daten

Das in diesem Beispiel für das Training verwendete Census Income Data Set (Dataset zur Einkommenserhebung) wird vom UC Irvine Machine Learning Repository gehostet.

Erhebungsdaten mit freundlicher Genehmigung von: Lichman, M. (2013). UCI Machine Learning Repository http://archive.ics.uci.edu/ml. Irvine, CA: University of California, School of Information and Computer Science. Dieses Dataset ist öffentlich verfügbar und kann unter den folgenden von der Dataset-Quelle angegebenen Bedingungen verwendet werden: http://archive.ics.uci.edu/ml. Das Dataset wird im vorhandenen Zustand ohne ausdrückliche oder stillschweigende Garantie von Google bereitgestellt. Google lehnt jegliche Haftung für direkte oder indirekte Schäden ab, die aus der Verwendung des Datasets resultieren.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

AI Platform für scikit-learn und XGBoost