Erste Schritte

Bevor Sie AI Platform mit dieser Anleitung verwenden, sollten Sie mit maschinellem Lernen und TensorFlow vertraut sein. Weitere Informationen finden Sie unter Crash-Kurs für maschinelles Lernen mit TensorFlow APIs. Viele weitere Informationen zu maschinellem Lernen finden Sie unter Learn with Google AI.

Übersicht

Mit diesem Dokument steht Ihnen eine einführende, durchgängige Komplettlösung für Training und Vorhersagen mit AI Platform zur Verfügung. Anhand eines Beispiels mit einem Erhebungs-Dataset erarbeiten wir uns folgende Punkte:

  • Eine TensorFlow-Trainingsanwendung erstellen und lokal validieren
  • Einen Trainingsjob in einer einzelnen Worker-Instanz in der Cloud ausführen
  • Einen Trainingsjob als verteilten Trainingsjob in der Cloud ausführen
  • Hyperparameter anhand einer Hyperparameter-Abstimmung optimieren
  • Modell für Vorhersagen erstellen
  • Onlinevorhersage anfordern und Ergebnis ansehen
  • Batchvorhersage anfordern

Das werden Sie tun

Im Beispiel wird ein breitgefasstes und tiefgehendes Modell für die Vorhersage der Einkommenskategorie auf Basis des Datasets der Einkommenserhebung in den USA erstellt. Die zwei Einkommenskategorien (auch bekannt als Labels) sind:

  • > 50.000 – mehr als 50.000 $
  • <= 50.000 – weniger als oder gleich 50.000 $

Breitgefasste und tiefgehende Modelle nutzen tiefe neuronale Netze (Deep Neural Networks, DNN) zum Erlernen übergeordneter Abstraktionen über komplexe Funktionen oder Interaktionen zwischen solchen Funktionen. Diese Modelle kombinieren dann die Ausgaben des DNN mit einer linearen Regression, die auf Basis einfacherer Funktionen ausgeführt wird. Dies sorgt für ein Gleichgewicht zwischen Leistung und Geschwindigkeit, das bei vielen Problemen mit strukturierten Daten wirksam ist.

Weitere Informationen zu breitgefassten und tiefgehenden Modellen finden Sie im Blogpost Wide & Deep Learning: Better Together with TensorFlow im Google Research Blog.

Im Beispiel wird das Modell mithilfe der vordefinierten Klasse DNNCombinedLinearClassifier von TensorFlow definiert. Ebenso werden die Datentransformationen definiert, die für das Dataset der Volkszählung spezifisch sind. Diese (möglicherweise) transformierten Funktionen werden dann entweder dem DNN oder dem linearen Teil des Modells zugewiesen.

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten der Cloud Platform verwendet, darunter:

  • AI Platform für:
    • Schulung
    • Vorhersagen
  • Cloud Storage für:
    • Speichern von Eingabedaten für das Training
    • Aufteilen des Trainingsanwendungspakets in Phasen
    • Schreiben von Trainingsartefakten
    • Speichern von Eingabedaten für Batchvorhersagen

Sie können mithilfe des Preisrechners eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.

Cloudumgebung einrichten und testen

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 GCP-Projekt aus oder erstellen Sie eines.

    Zur Seite "Ressourcen verwalten"

  3. Die Abrechnung für Ihr Projekt muss aktiviert sein.

    Informationen zum Aktivieren von Abrechnungen

  4. Aktivieren Sie die AI Platform and Compute Engine erforderlichen APIs.

    Aktivieren Sie die APIs.

  5. Cloud SDK installieren und initialisieren.

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 auf dem Tab CLOUD SHELL verfügbar. Es bietet eine schnelle Möglichkeit für den Test der 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. Sollte das nicht der Fall sein, erfahren Sie hier, wie Sie pip installieren.

    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 durch Ausführen von virtualenv --version, ob virtualenv bereits installiert ist. Sollte dies nicht der Fall sein, 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 z. B. eine Umgebung mit dem Namen cmle-env aktiviert:

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

    Hier finden Sie weitere Informationen zur Verwendung von virtualenv. Mit deactivate beenden Sie virtualenv.

Cloud Shell

  1. Öffnen Sie die Google Cloud Platform Console.

    Zur Google Cloud Platform Console

  2. Klicken Sie im oberen Fensterbereich der Konsole auf Google 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 ml-engine 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

TensorFlow installieren

Führen Sie den folgenden Befehl aus, um TensorFlow zu installieren:

pip install --user --upgrade tensorflow

Installation prüfen:

python -c "import tensorflow as tf; print('TensorFlow version {} is installed.'.format(tf.VERSION))"

Sie können die Warnungen ignorieren, dass die TensorFlow-Bibliothek nicht für die Verwendung bestimmter Anweisungen kompiliert wurde.

Weitere Informationen zum Installieren von TensorFlow sowie weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der TensorFlow-Dokumentation.

Unterstützung von Python-Versionen

AI Platform führt standardmäßig Python 2.7 aus. Das Beispiel für dieses Lernprogramm verwendet Python 2.7.

Python 3.5 ist für das Training verfügbar, wenn Sie die AI Platform-Laufzeitversion ab 1.4 verwenden. Online- und Batchvorhersage verwenden trainierte Modelle, unabhängig davon, ob sie mit Python 2 oder Python 3 trainiert wurden.

Weitere Informationen zum Senden eines Trainingsjobs mithilfe von Python 3.5

Code für diese Anleitung herunterladen

  1. Laden Sie das Beispiel vom GitHub-Repository herunter.

macOS

  1. Laden Sie die Beispiel-ZIP-Datei für AI Platform herunter und extrahieren Sie sie.

    ZIP-Datei herunterladen

  2. Öffnen Sie ein Terminalfenster und gehen Sie zu dem Verzeichnis, das das extrahierte Verzeichnis cloudml-samples-master enthält.

  3. Wechseln Sie zum Verzeichnis cloudml-samples-master > census > estimator. Die Befehle in dieser Anleitung müssen im Verzeichnis estimator ausgeführt werden.

    cd cloudml-samples-master/census/estimator
    

Cloud Shell

  1. Laden Sie die Beispiel-ZIP-Datei für AI Platform mit folgendem Befehl herunter:

    wget https://github.com/GoogleCloudPlatform/cloudml-samples/archive/master.zip
    
  2. Dekomprimieren Sie die Datei in das Verzeichnis cloudml-samples-master:

    unzip master.zip
    
  3. Wechseln Sie zum Verzeichnis cloudml-samples-master > census > estimator. Die Befehle in dieser Anleitung müssen im Verzeichnis estimator ausgeführt werden.

    cd cloudml-samples-master/census/estimator
    

Trainingsanwendung lokal entwickeln und validieren

Bevor Sie Ihre Trainingsanwendung in der Cloud ausführen, testen Sie die Ausführung in der lokalen Umgebung. Lokale Umgebungen bieten einen effizienten Entwicklungs- und Validierungsworkflow, der schnelle Iterationen ermöglicht. Außerdem fallen dann auch keine Kosten für Cloudressourcen an, wenn Sie Fehler in Ihrer Anwendung beheben.

Trainingsdaten abrufen

Die relevanten Datendateien adult.data und adult.test werden in einem öffentlichen Cloud Storage-Bucket gehostet. Verwenden Sie für dieses Beispiel die Versionen in Cloud Storage anstelle der Originalquelldaten. Diese Versionen wurden geringfügig bereinigt. Weitere Informationen zu den Daten finden Sie weiter unten.

Sie können die Dateien direkt aus Cloud Storage lesen oder in Ihre lokale Umgebung kopieren. Für dieses Beispiel laden Sie die Beispieldaten für lokales Training herunter und laden sie dann für das Cloudtraining in Ihren eigenen Cloud Storage-Bucket hoch.

  1. Laden Sie die Daten in ein lokales Dateiverzeichnis herunter und legen Sie Variablen fest, die auf die heruntergeladenen Datendateien verweisen.

    mkdir data
    gsutil -m cp gs://cloud-samples-data/ml-engine/census/data/* data/
    
  2. Legen Sie für die Variablen TRAIN_DATA UND EVAL_DATA Ihre lokalen Dateipfade fest. Mit den folgenden Befehlen werden beispielsweise lokale Pfade für die Variablen festgelegt.

    TRAIN_DATA=$(pwd)/data/adult.data.csv
    EVAL_DATA=$(pwd)/data/adult.test.csv
    

Die Daten werden im CSV-Format gespeichert, wie die folgende Vorschau der Datei adult.data zeigt:

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K
38, Private, 215646, HS-grad, 9, Divorced, Handlers-cleaners, Not-in-family, White, Male, 0, 0, 40, United-States, <=50K
53, Private, 234721, 11th, 7, Married-civ-spouse, Handlers-cleaners, Husband, Black, Male, 0, 0, 40, United-States, <=50K
...

Abhängigkeiten installieren

macOS

Wir empfehlen die Verwendung einer virtuellen Umgebung, um TensorFlow lokal zu installieren. Anleitungen finden Sie hier:

Wenn Sie mit Docker vertraut sind, können Sie diese Anleitung in einem TensorFlow-Container ausführen. Informationen zur Installation von TensorFlow mit Docker erhalten Sie hier.

Das Beispiel enthält eine Datei mit dem Namen requirements.txt, die Sie zum Installieren der für das Projekt nötigen Abhängigkeiten verwenden können. Dafür geben Sie in Ihrer virtuellen Umgebung den folgenden Befehl ein:

  pip install --user -r ../requirements.txt

Durch Ausführen dieses Befehls wird TensorFlow 1.10 installiert (die in der Anleitung verwendete Version).

Cloud Shell

Obwohl TensorFlow in der Cloud Shell installiert ist, müssen Sie die Datei requirements.txt des Beispiels ausführen, um sicherzustellen, dass Sie dieselbe Version von TensorFlow verwenden, die für das Beispiel erforderlich ist.

  pip install --user -r ../requirements.txt

Durch Ausführen dieses Befehls wird TensorFlow 1.10 installiert (die in der Anleitung verwendete Version).

Lokalen Trainingsjob ausführen

Ein lokaler Trainingsjob lädt Ihr Python-Trainingsprogramm und startet einen Trainingsprozess in einer Umgebung, die einem Live-Cloudtrainingsjob von AI Platform ähnlich ist.

  1. Geben Sie ein Ausgabeverzeichnis an und legen Sie die Variable MODEL_DIR fest. Mit dem folgenden Befehl wird für MODEL_DIR der Wert output festgelegt.

    MODEL_DIR=output
    
  2. Es empfiehlt sich, den Inhalt des Ausgabeverzeichnisses zu löschen, falls noch Daten aus einem vorherigen Trainingslauf vorhanden sind. Mit dem folgenden Befehl werden alle Daten im Verzeichnis output gelöscht.

    rm -rf $MODEL_DIR/*
    
  3. Führen Sie den folgenden Befehl aus, um das Training lokal auszuführen:

    gcloud ml-engine local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

Das ausführliche Logging ist standardmäßig deaktiviert. Sie können es aktivieren, indem Sie das Tag --verbosity auf DEBUG einstellen. Die Aktivierung wird in einem späteren Beispiel beschrieben.

Zusammenfassungs-Logs mit TensorBoard überprüfen

Sie können sich die Auswertungsergebnisse mit dem Visualisierungstool TensorBoard anzeigen lassen. Mit TensorBoard können Sie die TensorFlow-Grafik visualisieren, quantitative Messwerte zur Ausführung der Grafik darstellen und zusätzliche Daten wie Abbildungen in Ihre Grafik einbinden. TensorBoard ist Bestandteil der TensorFlow-Installation.

Führen Sie folgende Schritte aus, um TensorBoard zu starten und auf die Zusammenfassungs-Logs zu verweisen, die während des Trainings sowohl während als auch nach der Ausführung generiert wurden.

macOS

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$MODEL_DIR
    
  2. Nachdem Sie TensorBoard gestartet haben, können Sie über den Browser unter http://localhost:6006 darauf zugreifen.

Cloud Shell

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. Wählen Sie im Menü Webvorschau am oberen Rand der Befehlszeile "Vorschau auf Port 8080" aus.

Klicken Sie auf Genauigkeit, um grafische Darstellungen davon zu sehen, wie sich die Genauigkeit beim Fortschritt des Jobs ändert.

TensorBoard-Grafik zur Genauigkeit

Sie können TensorBoard jederzeit durch Eingabe von ctrl+c in der Befehlszeile beenden.

Lokalen Trainingsjob im verteilten Modus ausführen

Sie können testen, ob Ihr Modell mit der verteilten Ausführungsumgebung von AI Platform funktioniert. Dazu führen Sie einen lokalen Trainingsjob mit dem Flag --distributed aus.

  1. Geben Sie ein Ausgabeverzeichnis an und legen Sie die Variable MODEL_DIR wieder fest. Mit dem folgenden Befehl wird für MODEL_DIR der Wert output-dist festgelegt.

    MODEL_DIR=output-dist
    
  2. Löschen Sie den Inhalt des output-Verzeichnisses für den Fall, dass noch Daten aus einem vorherigen Trainingslauf vorhanden sind.

    rm -rf $MODEL_DIR/*
    
  3. Führen Sie den local train-Befehl mit der --distributed-Option aus. Achten Sie darauf, das Flag über -- zu platzieren, womit die Nutzerargumente von den Befehlszeilenargumenten getrennt werden.

    gcloud ml-engine local train \
        --module-name trainer.task \
        --package-path trainer/ \
        --job-dir $MODEL_DIR \
        --distributed \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100
    

Ausgabe überprüfen

Ausgabedateien werden in das Verzeichnis geschrieben, das von --job-dir angegeben wird und für das output-dist festgelegt wurde:

ls -R output-dist/

Die Ausgabe sollte in etwa so aussehen:

checkpoint
eval
events.out.tfevents.1488577094.<host-name>
export
graph.pbtxt
model.ckpt-1000.data-00000-of-00001
model.ckpt-1000.index
model.ckpt-1000.meta
model.ckpt-2.data-00000-of-00001
model.ckpt-2.index
model.ckpt-2.meta

output-dist//eval:
events.out.tfevents.<timestamp>.<host-name>
events.out.tfevents.<timestamp><host-name>
events.out.tfevents.<timestamp>.<host-name>

output-dist//export:
census

output-dist//export/census:
<timestamp>

output-dist//export/census/<timestamp>:
saved_model.pb
variables
...

Logs überprüfen

Überprüfen Sie die Zusammenfassungs-Logs mit TensorBoard auf die gleiche Weise, wie Sie es für den Einzelinstanz-Trainingsjob getan haben. Der einzige Unterschied ist, dass Sie den Wert --logdir entsprechend dem Namen des Ausgabepfadverzeichnisses anpassen, das Sie für den verteilten Modus verwendet haben.

macOS

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$MODEL_DIR
    
  2. Nachdem Sie TensorBoard gestartet haben, können Sie über den Browser unter http://localhost:6006 darauf zugreifen.

Cloud Shell

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$MODEL_DIR --port=8080
    
  2. Wählen Sie im Menü Webvorschau am oberen Rand der Befehlszeile "Vorschau auf Port 8080" aus.

Cloud Storage-Bucket einrichten

In diesem Abschnitt erfahren Sie, wie Sie einen neuen Bucket erstellen. Sie können einen vorhandenen Bucket verwenden. Wenn er jedoch nicht Teil des Projekts ist, das Sie zum Ausführen von AI Platform verwenden, müssen Sie explizit Zugriff auf die AI Platform-Dienstkonten 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 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.

Die Datendateien laden Sie in Ihren Cloud Storage-Bucket hoch.

  1. Kopieren Sie mit gsutil die beiden Dateien in den Cloud Storage-Bucket.

    gsutil cp -r data gs://$BUCKET_NAME/data
    
  2. Legen Sie die Variablen TRAIN_DATA und EVAL_DATA so fest, dass sie auf die Dateien verweisen.

    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  3. Verwenden Sie wieder gsutil, um die JSON-Testdatei test.json in den Cloud Storage-Bucket zu kopieren.

    gsutil cp ../test.json gs://$BUCKET_NAME/data/test.json
    
  4. Legen Sie die TEST_JSON-Variable so fest, dass sie auf diese Datei verweist.

    TEST_JSON=gs://$BUCKET_NAME/data/test.json
    

Einzelinstanz-Trainingsjob in der Cloud ausführen

Mit einem validierten Trainingsjob, der sowohl im Einzelinstanzmodus als auch im verteilten Modus ausgeführt wird, können Sie jetzt einen Trainingsjob in der Cloud ausführen. Dafür fordern Sie zuerst einen Einzelinstanz-Trainingsjob an.

Zur Ausführung eines Einzelinstanz-Trainingsjobs verwenden Sie die standardmäßige Skalierungsstufe BASIC. Bei der ersten Jobanfrage kann sich der Start um einige Minuten verzögern. Nachfolgende Jobs werden jedoch schneller ausgeführt. Hierdurch wird eine schnelle Iteration bei der Entwicklung und Validierung Ihres Trainingsjobs ermöglicht.

  1. Wählen Sie einen Namen für den ersten Trainingslauf aus, der ihn von den nachfolgenden Trainingsläufen unterscheidet. Sie können beispielsweise eine Zahl anhängen, die für die Iteration steht.

    JOB_NAME=census_single_1
    
  2. Geben Sie ein Verzeichnis für die von AI Platform generierte Ausgabe an. Dazu legen Sie eine Variable OUTPUT_PATH fest, die bei der Anfrage von Trainings- und Vorhersagejobs enthalten sein soll. Der OUTPUT_PATH steht für den voll qualifizierten Cloud Storage-Speicherort für Modellprüfpunkte, Zusammenfassungen und Exporte. Sie können die Variable BUCKET_NAME verwenden, die Sie in einem der vorherigen Schritte definiert haben.

    Es empfiehlt sich, den Jobnamen als Ausgabeverzeichnis zu verwenden. Der folgende OUTPUT_PATH verweist beispielsweise auf ein Verzeichnis mit dem Namen census_single_1.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. Führen Sie den folgenden Befehl aus, um einen Trainingsjob in die Cloud zu senden, der einen einzelnen Prozess verwendet. Setzen Sie das Tag --verbosity dieses Mal auf DEBUG, damit Sie sich die vollständige Logging-Ausgabe ansehen und Messwerte für Genauigkeit, Verluste und mehr abrufen können. Die Ausgabe enthält auch eine Reihe weiterer Warnmeldungen, die Sie für dieses Beispiel ignorieren können.

    gcloud ml-engine jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --eval-steps 100 \
        --verbosity DEBUG
    

Sie können den Fortschritt des Trainingsjobs in der Befehlszeilenausgabe oder unter AI Platform > Jobs in der Google Cloud Platform Console überprüfen.

Ausgabe überprüfen

Beim Cloudtraining werden Ausgaben in Google Cloud Storage erstellt. In diesem Beispiel werden die Ausgaben unter OUTPUT_PATH gespeichert. Führen Sie folgenden Befehl aus, um sie aufzulisten:

gsutil ls -r $OUTPUT_PATH

Die Ausgaben sollten den Ausgaben aus dem lokalen Training ähnlich sein (siehe oben).

Stackdriver-Logs überprüfen

Logs sind ein praktisches Mittel, um sich ein Bild vom Verhalten Ihres Trainingscodes in der Cloud zu machen. Wenn AI Platform einen Trainingsjob ausführt, werden alle Streams und Logberichte von stdout und stderr erfasst. Diese Logs werden in Stackdriver Logging gespeichert und sind sowohl während als auch nach der Ausführung sichtbar.

Am einfachsten finden Sie die Logs für den Job, wenn Sie den Job in der GCP Console unter AI Platform > Jobs auswählen und dann auf "Logs ansehen" klicken.

Wenn "Alle Logs" ausgewählt bleibt, werden sämtliche Logs von allen Workern angezeigt. Sie können auch eine bestimmte Aufgabe auswählen. Mit master-replica-0 erhalten Sie eine Übersicht über die Ausführung des Jobs aus der Sicht des Masters.

Da Sie das ausführliche Logging ausgewählt haben, können Sie die vollständige Logging-Ausgabe überprüfen. Suchen Sie in den Logs nach dem Begriff accuracy:

Screenshot der Stackdriver Logging-Konsole für AI Platform-Jobs

Wenn diese Logs auf Ihrem Terminal angezeigt werden sollen, geben Sie in der Befehlszeile Folgendes ein:

gcloud ml-engine jobs stream-logs $JOB_NAME

Sehen Sie sich dazu alle Optionen für gcloud ml-engine jobs stream-logs an.

Zusammenfassungs-Logs mit TensorBoard überprüfen

Sie können das Verhalten Ihres Trainings überprüfen, indem Sie TensorBoard starten und auf die Zusammenfassungs-Logs verweisen, die während des Trainings erstellt wurden – sowohl während als auch nach der Ausführung.

Da die Trainingsprogramme Zusammenfassungen direkt in einen Cloud Storage-Speicherort schreiben, kann TensorBoard diese automatisch lesen, ohne Ereignisdateien manuell kopieren zu müssen.

macOS

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH
    
  2. Nachdem Sie TensorBoard gestartet haben, können Sie über den Browser unter http://localhost:6006 darauf zugreifen.

Cloud Shell

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. Wählen Sie im Menü Webvorschau am oberen Rand der Befehlszeile "Vorschau auf Port 8080" aus.

Klicken Sie auf Genauigkeit, um grafische Darstellungen davon zu sehen, wie sich die Genauigkeit beim Fortschritt des Jobs ändert.

Sie können TensorBoard jederzeit durch Eingabe von ctrl+c in der Befehlszeile beenden.

Verteiltes Training in der Cloud ausführen

Konfigurieren Sie den Trainingsjob für die Ausführung im verteilten Modus, um die Vorteile der skalierbaren Infrastruktur von Google beim Ausführen von Trainingsjobs zu nutzen.

Zum Ausführen dieses Modells als verteilter Prozess in AI Platform sind keine Änderungen am Code erforderlich.

Zum Ausführen eines verteilten Jobs stellen Sie --scale-tier auf eine beliebige Stufe oberhalb der Basisstufe ein. Weitere Informationen zu Skalierungsstufen finden Sie in der Dokumentation zu Skalierungsstufen.

  1. Wählen Sie einen Namen für den verteilten Trainingsjob aus, der ihn von anderen Trainingsjobs unterscheidet. Sie können beispielsweise dist für "distributed" (verteilt) und eine Zahl für die Iteration verwenden.

    JOB_NAME=census_dist_1
    
  2. Legen Sie den OUTPUT_PATH so fest, dass der Jobname einbezogen wird, damit Sie nicht versehentlich Prüfpunkte zwischen Jobs wiederverwenden. Unter Umständen müssen Sie BUCKET_NAME neu definieren, wenn Sie seit der letzten Definition eine neue Befehlszeilensitzung gestartet haben. Der folgende OUTPUT_PATH verweist beispielsweise auf ein Verzeichnis mit dem Namen census-dist-1.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. Führen Sie den folgenden Befehl aus, um einen Trainingsjob in die Cloud zu senden, der mehrere Worker verwendet. Das Starten des Jobs kann einige Minuten dauern.

    Fügen Sie --scale-tier oberhalb von -- ein, womit die Nutzerargumente von den Befehlszeilenargumenten getrennt werden. Im folgenden Befehl wird beispielsweise die Skalierungsstufe STANDARD_1 verwendet:

    gcloud ml-engine jobs submit training $JOB_NAME \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

Sie können den Fortschritt des Trainingsjobs in der Befehlszeilenausgabe oder unter AI Platform > Jobs in der Google Cloud Platform Console überprüfen.

Logs überprüfen

Überprüfen Sie die Stackdriver-Logs und Zusammenfassungslogs genau so, wie Sie es beim Einzelinstanz-Trainingsjob getan haben.

Für Stackdriver-Logs: Wählen Sie entweder den Job in der GCP Console unter AI Platform > Jobs aus und klicken dann auf Logs ansehen oder führen Sie folgenden Befehl im Terminalfenster aus:

gcloud ml-engine jobs stream-logs $JOB_NAME

Für TensorBoard:

macOS

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH
    
  2. Nachdem Sie TensorBoard gestartet haben, können Sie über den Browser unter http://localhost:6006 darauf zugreifen.

Cloud Shell

  1. Starten Sie TensorBoard:

    tensorboard --logdir=$OUTPUT_PATH --port=8080
    
  2. Wählen Sie im Menü Webvorschau am oberen Rand der Befehlszeile "Vorschau auf Port 8080" aus.

Hyperparameter-Abstimmung

AI Platform bietet die Möglichkeit zur Abstimmung von Hyperparametern, um die Vorhersagegenauigkeit des Modells zu maximieren. Im Erhebungsbeispiel werden die Hyperparameter-Konfigurationseinstellungen in einer YAML-Datei mit dem Namen hptuning_config.yaml gespeichert. Außerdem wird die Datei mit der Variablen --config in die Trainingsanfrage einbezogen.

  1. Wählen Sie einen neuen Jobnamen aus und erstellen Sie eine Variable, die auf die Konfigurationsdatei verweist.

    HPTUNING_CONFIG=../hptuning_config.yaml
    JOB_NAME=census_core_hptune_1
    TRAIN_DATA=gs://$BUCKET_NAME/data/adult.data.csv
    EVAL_DATA=gs://$BUCKET_NAME/data/adult.test.csv
    
  2. Legen Sie den OUTPUT_PATH so fest, dass der Jobname einbezogen wird, damit Sie nicht versehentlich Prüfpunkte zwischen Jobs wiederverwenden. Unter Umständen müssen Sie BUCKET_NAME neu definieren, wenn Sie seit der letzten Definition eine neue Befehlszeilensitzung gestartet haben. Der folgende OUTPUT_PATH verweist beispielsweise auf ein Verzeichnis mit dem Namen census_core_hptune_1.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. Führen Sie den folgenden Befehl aus, um einen Trainingsjob zu senden, der nicht nur mehrere Worker, sondern auch die Hyperparameter-Abstimmung verwendet.

    gcloud ml-engine jobs submit training $JOB_NAME \
        --stream-logs \
        --job-dir $OUTPUT_PATH \
        --runtime-version 1.10 \
        --config $HPTUNING_CONFIG \
        --module-name trainer.task \
        --package-path trainer/ \
        --region $REGION \
        --scale-tier STANDARD_1 \
        -- \
        --train-files $TRAIN_DATA \
        --eval-files $EVAL_DATA \
        --train-steps 1000 \
        --verbosity DEBUG  \
        --eval-steps 100
    

In der Übersicht zur Hyperparameter-Abstimmung finden Sie weitere Informationen dazu.

Modell zur Unterstützung von Vorhersagen erstellen

  1. Wählen Sie einen Namen für das Modell aus. Dieser muss mit einem Buchstaben beginnen und darf nur aus Buchstaben, Zahlen und Unterstrichen bestehen. Beispiel:

    MODEL_NAME=census
    
  2. Erstellen Sie ein AI Platform-Modell:

    gcloud ml-engine models create $MODEL_NAME --regions=$REGION
    
  3. Wählen Sie die zu verwendende Jobausgabe aus. Im folgenden Beispiel wird der Job mit dem Namen census_dist_1 verwendet:

    OUTPUT_PATH=gs://$BUCKET_NAME/census_dist_1
    
  4. Sehen Sie sich den vollständigen Pfad der exportierten, trainierten Modellbinärdateien an:

    gsutil ls -r $OUTPUT_PATH/export
    
  5. Suchen Sie ein Verzeichnis mit dem Namen $OUTPUT_PATH/export/census/<timestamp>, kopieren Sie diesen Verzeichnispfad (ohne den ":" am Ende) und setzen Sie die Umgebungsvariable MODEL_BINARIES auf ihren Wert. Beispiel:

    MODEL_BINARIES=gs://$BUCKET_NAME/census_dist_1/export/census/1487877383942/

    Dabei ist $BUCKET_NAME der Name Ihres Cloud Storage-Buckets und census_dist_1 das Ausgabeverzeichnis.

  6. Führen Sie den folgenden Befehl aus, um eine Version v1 zu erstellen:

    gcloud ml-engine versions create v1 \
        --model $MODEL_NAME \
        --origin $MODEL_BINARIES \
        --runtime-version 1.10
    

Mit dem Befehl models list können Sie eine Liste der Modelle abrufen.

gcloud ml-engine models list

Onlinevorhersageanfrage an ein bereitgestelltes Modell senden

Sie können nun Vorhersageanfragen an Ihr Modell senden. Mit dem folgenden Befehl wird beispielsweise eine Onlinevorhersageanfrage gesendet. Dabei wird die Datei test.json verwendet, die Sie im Rahmen des GitHub-Beispielrepositories heruntergeladen haben.

gcloud ml-engine predict \
    --model $MODEL_NAME \
    --version v1 \
    --json-instances ../test.json

Die Antwort enthält die Wahrscheinlichkeiten jedes Labels (> 50.000 und <= 50.000) basierend auf dem Dateneintrag in test.json. Somit wird angezeigt, ob das prognostizierte Einkommen größer oder kleiner als 50.000 $ ist.

Die Antwort sieht folgendermaßen aus:

CLASSES       PROBABILITIES
[u'0', u'1']  [0.9969545602798462, 0.0030454816296696663]

Batchvorhersagejob senden

Der Batchvorhersagedienst ist nützlich, wenn Sie große Datenmengen, aber keine Latenzanforderungen bezüglich der Lieferung von Vorhersageergebnissen haben. Bei diesem Dienst wird dasselbe Format wie bei Onlinevorhersagen verwendet, Daten müssen aber in Cloud Storage gespeichert sein.

  1. Legen Sie einen Namen für den Job fest.

    JOB_NAME=census_prediction_1
    
  2. Legen Sie den Ausgabepfad fest.

    OUTPUT_PATH=gs://$BUCKET_NAME/$JOB_NAME
    
  3. Senden Sie den Vorhersagejob.

    gcloud ml-engine jobs submit prediction $JOB_NAME \
        --model $MODEL_NAME \
        --version v1 \
        --data-format text \
        --region $REGION \
        --input-paths $TEST_JSON \
        --output-path $OUTPUT_PATH/predictions
    

Im Gegensatz zu den vorherigen Befehlen liefert dieser ein direktes Ergebnis. Überprüfen Sie den Fortschritt des Jobs und warten Sie, bis er abgeschlossen ist:

gcloud ml-engine jobs describe $JOB_NAME

Bei Abschluss des Jobs sollte Ihnen state: SUCCEEDED angezeigt werden. Dies kann allerdings einige Minuten dauern. Sie können die Joblogs auch im Terminal mit folgendem Befehl anzeigen:

gcloud ml-engine jobs stream-logs $JOB_NAME

Alternativ können Sie den Fortschritt unter AI Platform > Jobs in der GCP Console überprüfen.

Nach dem erfolgreichen Abschluss des Jobs können Sie Folgendes tun:

  • Zusammenfassung der Ausgabe lesen.

    gsutil cat $OUTPUT_PATH/predictions/prediction.results-00000-of-00001
    

    Die Ausgabe sollte Folgendem ähneln:

    {"probabilities": [0.9962924122810364, 0.003707568161189556], "logits": [-5.593664646148682], "classes": 0, "logistic": [0.003707568161189556]}
    
  • gsutil ls-Befehl zum Auflisten der anderen Dateien verwenden, die vom Job erstellt wurden.

    gsutil ls -r $OUTPUT_PATH
    

Die Batchvorhersage unterscheidet sich wie folgt von der Onlinevorhersage:

  • Sie ist für eine derart kleine Anzahl von Instanzen langsamer (für eine große Anzahl von Instanzen aber besser geeignet).
  • Die Ausgabe kann in einer anderen Reihenfolge als die Eingabe zurückgegeben werden. Der numerische Index ermöglicht jedoch, dass jede Ausgabe der entsprechenden Eingabeinstanz zugeordnet wird. Dies ist für die Onlinevorhersage nicht erforderlich, da die Ausgaben in derselben Reihenfolge wie die ursprünglichen Eingabeinstanzen zurückgegeben werden.

Sobald Vorhersagen verfügbar sind, besteht der nächste Schritt in der Regel in der Aufnahme dieser Vorhersagen in eine Datenbank oder Datenverarbeitungspipeline.

In diesem Beispiel haben Sie das Modell vor Ausführung der Batchvorhersage bereitgestellt. Dieser Schritt kann übersprungen werden, indem Sie den URI der Modellbinärdateien angeben, wenn Sie den Batchvorhersagejob senden. Ein Vorteil beim Generieren von Vorhersagen auf Basis eines Modells vor dem Deployment besteht darin, dass Sie die Leistung des Modells mit verschiedenen Evaluierungs-Datasets beurteilen können, um zu entscheiden, ob das Modell Ihre Kriterien für das Deployment erfüllt.

Bereinigen

Wenn Sie die Ausgabe Ihrer Trainings- und Vorhersagedurchläufe analysiert haben, können Sie vermeiden, dass Ihrem GCP-Konto zusätzliche Gebühren für die in diesem Leitfaden verwendeten Cloud Storage-Verzeichnisse entstehen:

  1. Öffnen Sie ein Terminalfenster, wenn nicht bereits geschehen.

  2. Löschen Sie mit dem Befehl "gsutil rm" mit dem Flag "-r" das Verzeichnis mit dem letzten Job:

    gsutil rm -r gs://$BUCKET_NAME/$JOB_NAME
    

Wenn der Vorgang erfolgreich war, wird eine Meldung folgender Art angezeigt:

Removing gs://my-awesome-bucket/just-a-folder/cloud-storage.logo.png#1456530077282000...
Removing gs://my-awesome-bucket/...

Wiederholen Sie den Befehl für alle anderen Verzeichnisse, die Sie für dieses Beispiel erstellt haben.

Wenn Sie keine anderen Daten im Bucket gespeichert haben, können Sie alternativ den Befehl gsutil rm -r für den Bucket selbst ausführen.

Informationen zu den 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 Nutzung des Datasets resultieren.

Weitere Informationen

Sie haben nun die Anleitung für ein AI Platform-Beispiel, das Erhebungsdaten für Training und Vorhersage verwendet, durchgearbeitet. Sie haben den Trainingsjob lokal validiert, ihn sowohl im Einzelinstanzmodus als auch im verteilten Modus in der Cloud ausgeführt, das Modell mit Hyperparametern optimiert und das Modell für Onlinevorhersagen und Batchvorhersagen verwendet.

Die folgenden Quellen enthalten weitere Informationen zu AI Platform.

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

Feedback geben zu...

AI Platform für TensorFlow