Erste Schritte mit dem integrierten XGBoost-Algorithmus

Mit den integrierten Algorithmen von AI Platform (AI Platform) können Sie Trainingsdaten senden, einen Algorithmus auswählen und die Vorverarbeitung sowie das Training von AI Platform ausführen lassen, ohne Code für eine Trainingsanwendung schreiben zu müssen.

Überblick

In dieser Anleitung trainieren Sie ein XGBoost-Modell, ohne dafür Code zu schreiben. Sie senden dabei das Census Income Data Set (Dataset zur Einkommenserhebung) zur Vorverarbeitung und zum Training an AI Platform und stellen dann das Modell in AI Platform für Vorhersagen bereit. Das trainierte Modell sagt die Wahrscheinlichkeit voraus, mit der das jährliche Einkommen einer Person mehr als 50.000 $ beträgt.

Vorbereitung

Zur Ausführung dieser Anleitung über die Befehlszeile verwenden Sie entweder Cloud Shell oder eine Umgebung, in der das Cloud SDK installiert ist.

Führen Sie die folgenden Schritte aus, um ein GCP-Konto einzurichten, die erforderlichen APIs zu aktivieren und das Cloud SDK zu installieren bzw. zu aktivieren:

  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. Rufen Sie in der GCP Console die Seite Ressourcen verwalten auf und wählen Sie ein Projekt aus.

    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.

Wenn Sie bereits ein Konto zur Verwendung mit AI Platform eingerichtet und das Cloud SDK installiert haben, aktualisieren Sie gcloud beta:

gcloud components install beta

Einrichtung

Wenn Sie integrierte Algorithmen verwenden möchten, müssen Sie die Kopfzeile aus der CSV-Datei entfernen und die Zielwerte in die erste Spalte verschieben. Wir haben das ursprüngliche Census-Dataset für diese Anleitung modifiziert und im öffentlichen Cloud Storage-Bucket gs://cloud-samples-data/ml-engine/census/algorithms/data/ gehostet.

Console

Bevor Sie mit dem Trainingsjob beginnen, müssen Sie die Daten aus unserem öffentlichen Cloud Storage-Bucket in Ihren Cloud Storage-Bucket kopieren.

Beispieldaten in Ihren Cloud Storage-Bucket kopieren

  1. Laden Sie zuerst die Trainings- und Testdaten aus unserem öffentlichen Cloud Storage-Bucket herunter.

    1. Rufen Sie unseren öffentlichen Cloud Storage-Bucket auf:

      Beispieldaten abrufen

    2. Klicken Sie auf die Namen der Dateien test.csv und train.csv. Diese Dateien werden als ml-engine_census_algorithms_data_test.csv bzw. ml-engine_census_algorithms_data_train.csv in Ihre lokale Umgebung heruntergeladen.

  2. Laden Sie anschließend die Trainings- und Testdaten in Ihren Cloud Storage-Bucket hoch.

    1. Rufen Sie die Browserseite für Ihren Cloud Storage-Bucket auf. Wählen Sie Ihr Projekt in der Drop-down-Liste Projekt auswählen aus oder öffnen Sie es in einem neuen Tab:

      Cloud Storage-Browserseite

    2. Klicken Sie auf den Namen des Buckets, den Sie verwenden möchten, oder erstellen Sie einen neuen Bucket. Wenn Sie einen neuen Bucket erstellen, muss es sich um einen regionalen Bucket handeln. Wählen Sie die Region aus, in der Sie den AI Platform-Trainingsjob ausführen.

    3. (Optional) Klicken Sie auf Ordner erstellen, um einen Ordner für die hochgeladenen Dateien zu erstellen. Geben Sie einen Namen für den Ordner ein (z. B. "data") und klicken Sie auf Erstellen. Klicken Sie anschließend auf den Namen des neuen Ordners, um ihn zu öffnen.

    4. Klicken Sie auf Dateien hochladen, um die beiden Trainings- und Testdateien ml-engine_census_algorithms_data_train.csv und ml-engine_census_algorithms_data_test.csv in Ihren Bucket hochzuladen.

Nachdem die Daten in Ihren Bucket kopiert wurden, können Sie einen Trainingsjob starten. Wählen Sie dazu den Algorithmustyp aus, den Sie verwenden möchten.

Algorithmus auswählen

  1. Rufen Sie die Seite "AI Platform-Jobs" in der Google Cloud Platform Console auf:

    Seite "AI Platform-Jobs" aufrufen

  2. Klicken Sie auf die Schaltfläche Neuer Trainingsjob. Klicken Sie in den darunter angezeigten Optionen auf Integriertes Modelltraining. Die Seite Neuen Trainingsjob erstellen wird angezeigt.

  3. Das Erstellen eines Trainingsjobs gliedert sich in vier Schritte. Der erste Schritt lautet Trainingsalgorithmus. Wählen Sie Integrierter XGBoost-Algorithmus aus und klicken Sie auf Weiter.

gcloud

Richten Sie Umgebungsvariablen für Ihre Projekt-ID, Ihren Cloud Storage-Bucket, den Cloud Storage-Pfad zu den Trainingsdaten und den ausgewählten Algorithmus ein.

Die integrierten Algorithmen von AI Platform befinden sich in Docker-Containern, die in Container Registry gehostet werden.

PROJECT_ID="[YOUR-PROJECT-ID]"
BUCKET_NAME="[YOUR-BUCKET-NAME]"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE="gs://cloud-samples-data/ml-engine/census/algorithms/data/train.csv"
TRAINING_DATA_PATH="gs://$BUCKET_NAME/algorithms-demo/data/train.csv"
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/boosted_trees:latest"

Trainingsjob senden

Zum Senden eines Jobs müssen Sie sowohl für das Training als auch den XGBoost-Algorithmus einige grundlegende Argumente angeben.

Allgemeine Argumente für den Trainingsjob:

Argumente für Trainingsjobs
Argument Beschreibung
job-id Eindeutige ID für den Trainingsjob; anhand dieser ID können Sie nach dem Senden des Trainingsjobs nach Logs zu seinem Status suchen.
job-dir Cloud Storage-Pfad, in dem AI Platform die Trainingsdateien nach Abschluss eines erfolgreichen Trainingsjobs speichert.
scale-tier AI Platform-Maschinentypen für das Training. Verwenden Sie BASIC, um eine Konfiguration mit nur einer Maschine auszuwählen.
master-image-uri Container Registry-URI zur Angabe des Docker-Containers, der für den Trainingsjob verwendet werden soll. Verwenden Sie den Container für den integrierten XGBoost-Algorithmus, der zuvor als IMAGE_URI definiert wurde.
region Geben Sie die verfügbare Region an, in der Ihr Trainingsjob ausgeführt werden soll. Für diese Anleitung können Sie die Region us-central1 verwenden.

Spezifische Argumente für den integrierten XGBoost-Algorithmus:

Algorithmusargumente
Argument Beschreibung
preprocess Boolesches Argument, das angibt, ob AI Platform die Daten vorverarbeiten soll.
objective Angabe der Lernaufgabe und des entsprechenden Lernziels, in diesem Beispiel "binary:logistic".
training_data_path Cloud Storage-Speicherort für die Trainingsdaten, die in einer CSV-Datei vorliegen müssen.

Eine detaillierte Liste aller anderen Flags des XGBoost-Algorithmus finden Sie in der Referenz zum integrierten XGBoost-Algorithmus.

Console

  1. Lassen Sie das Kästchen Automatische Datenvorverarbeitung aktivieren angeklickt.

  2. Klicken Sie für Trainingsdatenpfad auf Durchsuchen. Klicken Sie im rechten Feld auf den Namen des Buckets, in den Sie die Trainingsdaten hochgeladen haben, und suchen Sie die Datei ml-engine_census_algorithms_data_train.csv.

  3. Übernehmen Sie für die Felder Validierungsdaten und Testdaten die Standardeinstellungen.

  4. Geben Sie unter Ausgabeverzeichnis den Pfad zu Ihrem Cloud Storage-Bucket ein, in dem AI Platform die Ausgaben Ihres Trainingsjobs speichern soll. Sie können den Pfad zu Ihrem Cloud Storage-Bucket direkt eingeben oder auf die Schaltfläche Durchsuchen klicken und ihn auswählen.

    Erstellen Sie in Ihrem Cloud Storage-Bucket zur besseren Übersichtlichkeit ein neues Verzeichnis für diesen Trainingsjob. Dazu können Sie das Feld Durchsuchen verwenden.

    Klicken Sie auf Weiter.

  5. Wählen Sie für Ziel den Eintrag "binary:logistic" aus. Damit wird angegeben, dass die Lernaufgabe binär und das Ziel eine logistische Regression ist.

  6. Wählen Sie für Modelltyp die Option Klassifikation aus.

  7. Übernehmen Sie für alle anderen Felder die Standardeinstellungen und klicken Sie auf Weiter.

  8. Gehen Sie auf der Seite Jobeinstellungen so vor:

    1. Geben Sie eine eindeutige Job-ID wie "xboost_example" ein.
    2. Geben Sie eine verfügbare Region wie "us-central1" ein.
    3. Wählen Sie "BASIC" als Skalierungsstufe aus.

    Klicken Sie auf Fertig, um den Trainingsjob zu senden.

gcloud

  1. Richten Sie alle Argumente für den Trainingsjob und den Algorithmus ein, bevor Sie den Job mithilfe von gcloud senden:

    DATASET_NAME="census"
    ALGORITHM="xgboost"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. Senden Sie den Job:

    gcloud beta ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
          -- \
          --preprocess --objective=binary:logistic \
          --training_data_path=$TRAINING_DATA_PATH
    

  3. Nachdem der Job erfolgreich gesendet wurde, können Sie die Logs mit folgenden gcloud-Befehlen aufrufen:

    gcloud ai-platform jobs describe $JOB_ID
    gcloud ai-platform jobs stream-logs $JOB_ID
    

Struktur des Jobverzeichnisses

Nach erfolgreicher Ausführung eines Trainingsjobs erstellt AI Platform ein trainiertes Modell sowie einige andere Artefakte in Ihrem Cloud Storage-Bucket. Ihr Jobverzeichnis JOB_DIR hat folgende Verzeichnisstruktur:

  • model/
    • model.pkl
    • deployment_config.yaml
  • artifacts/
    • instance_generator.py
    • metadata.json
  • processed_data/
    • training.csv
    • validation.csv
    • test.csv

Bestätigen Sie, dass die Verzeichnisstruktur in Ihrem JOB_DIR hiermit übereinstimmt:

gsutil ls -a $JOB_DIR/*

Trainiertes Modell bereitstellen

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

Zur Bereitstellung eines Modells legen Sie eine Modellressource in AI Platform an, erstellen eine Version dieses Modells und rufen dann mithilfe des Modells und der Version Onlinevorhersagen ab.

Weitere Informationen zum Bereitstellen von Modellen in AI Platform finden Sie unter scikit-learn- oder XGBoost-Modell bereitstellen.

Console

  1. Auf der Seite Jobs sind alle Trainingsjobs aufgelistet. Klicken Sie auf den Namen des gerade gesendeten Trainingsjobs ("xgboost_example" oder den von Ihnen verwendeten Jobnamen).

  2. Auf der Seite Jobdetails sehen Sie den allgemeinen Fortschritt Ihres Jobs. Sie können auch auf Logs ansehen klicken, um eine detailliertere Ansicht des Fortschritts aufzurufen.

  3. Wenn die Jobausführung erfolgreich war, wird oben die Schaltfläche Modell bereitstellen eingeblendet. Klicken Sie auf Modell bereitstellen.

  4. Wählen Sie "Als neues Modell bereitstellen" aus und geben Sie einen Modellnamen wie "xgboost_model" ein. Klicken Sie anschließend auf Bestätigen.

  5. Geben Sie auf der Seite Version erstellen einen Versionsnamen wie "v1" ein und übernehmen Sie für alle anderen Felder die Standardeinstellungen. Klicken Sie auf Speichern.

gcloud

Beim Training mit dem integrierten XGBoost-Algorithmus wird die Datei deployment_config.yaml erstellt. Diese Datei vereinfacht das Bereitstellen Ihres Modells für Vorhersagen in AI Platform.

  1. Kopieren Sie die Datei in Ihr lokales Verzeichnis und rufen Sie ihren Inhalt auf:

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    Die Datei deployment_config.yaml sollte in etwa so aussehen:

    deploymentUri: gs://BUCKET_NAME/algorithms_training/census_xgboost_classification/20190227060114/model
    framework: XGBOOST
    labels:
      job_id: census_xgboost_classification_20190227060114
      error_percentage: '14'
    runtimeVersion: '1.12'
    
  2. Erstellen Sie das Modell und die Version in AI Platform:

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    Das Erstellen der Version dauert einige Minuten.

Onlinevorhersagen abrufen

Wenn Sie Vorhersagen abrufen, müssen die Eingabedaten genauso formatiert sein wie die Trainingsdaten. Vor dem Training werden Ihre Daten von AI Platform vorverarbeitet. Dabei werden Sie in den Korpus von metadata.json umgewandelt.

Sie können mit instance_generator.py Ihren Eingabeinstanzen die gleichen Transformationen zur Vorverarbeitung zuordnen, die AI Platform für Ihre Trainingsdaten anwendet. Diese Datei liest die in der Datei metadata.json gespeicherten Zuordnungsinformationen. Sie können auch die Funktion transform_string_instance im Modul verwenden, um Ihre Rohstrings in ein Format umzuwandeln, das vom Modell akzeptiert wird.

  1. Laden Sie die Dateien mit den Trainingsartefakten herunter und überprüfen Sie metadata.json:

    gsutil cp $JOB_DIR/artifacts/* .
    
    # Let's look at the metadata.json file
    head metadata.json
    
  2. Verwenden Sie instance_generator.py, um die Vorhersageeingabe für eine einzelne Dateninstanz vorzubereiten:

     # ground truth is >50K
    RAW_DATA_POINT="44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States"
    
     # Now let's create a JSON prediction request
    python instance_generator.py --raw_data_string="${RAW_DATA_POINT}" > sample_input.json
    
    # Let's look at the prediction request file.
    cat sample_input.json
    
  3. Senden Sie die Vorhersageanfrage:

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

Die resultierende Vorhersage sollte eine Zahl über 0,5 sein, was darauf hinweist, dass die Person höchstwahrscheinlich mehr als 50.000 $ verdient.

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

Weitere Informationen

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

Feedback geben zu...