Mit den integrierten Algorithmen von AI Platform Training senden Sie Trainingsdaten und wählen einen Algorithmus aus – die Vorverarbeitung sowie das Training übernimmt dann AI Platform Training für Sie. Sie brauchen keinen Code für eine Trainingsanwendung zu schreiben.
Überblick
In dieser Anleitung trainieren Sie ein TabNet-Modell, ohne dafür Code zu schreiben. Sie senden dabei das Census Income Dataset (Dataset zur Einkommenserhebung) zur Vorverarbeitung und zum Training an AI Platform Training und stellen dann das Modell in AI Platform Training für Vorhersagen bereit. Das trainierte Modell sagt die Wahrscheinlichkeit voraus, dass das jährliche Einkommen einer Person mehr als 50.000 $ beträgt.
Hinweis
Wenn Sie diese Anleitung über die Befehlszeile ausführen möchten, verwenden Sie entweder Cloud Shell oder eine Umgebung, in der das Google Cloud CLI installiert ist.
Führen Sie die folgenden Schritte aus, um ein GCP-Konto einzurichten, die erforderlichen APIs zu aktivieren und das Google Cloud CLI zu installieren und zu aktivieren.
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
AI Platform Training & Prediction and Compute Engine APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
AI Platform Training & Prediction and Compute Engine APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Einrichtung
Wenn Sie tabellarische 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 Dataset der Einkommenserhebung für die Verwendung in dieser Anleitung geändert und im öffentlichen Cloud Storage-Bucket gs://cloud-samples-data/ai-platform/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
Laden Sie zuerst die Trainings- und Testdaten aus unserem öffentlichen Cloud Storage-Bucket herunter.
Rufen Sie unseren öffentlichen Cloud Storage-Bucket auf:
Laden Sie sowohl
test.csv
als auchtrain.csv
herunter:Klicken Sie auf den Dateinamen.
Klicken Sie auf der Seite Objektdetails auf Herunterladen. Diese Dateien werden in Ihre lokale Umgebung als
ai-platform_census_algorithms_data_test.csv
oderai-platform_census_algorithms_data_train.csv
heruntergeladen.
Laden Sie anschließend die Trainings- und Testdaten in Ihren Cloud Storage-Bucket hoch.
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:
Klicken Sie auf den Namen des Buckets, den Sie verwenden möchten, oder erstellen Sie einen neuen Bucket. Wenn Sie einen neuen erstellen, muss es sich um einen regionalen Bucket handeln. Wählen Sie die Region aus, in der Sie den AI Platform Training-Trainingsjob ausführen.
(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. "Daten") und klicken Sie auf Erstellen. Klicken Sie anschließend auf den Namen des neuen Ordners, um ihn zu öffnen.
Klicken Sie auf Dateien hochladen, um sowohl die Trainings- als auch die Testdateien hochzuladen und
ai-platform_census_algorithms_data_train.csv
sowieai-platform_census_algorithms_data_test.csv
zu Ihrem Bucket hinzuzufügen.
Nachdem die Daten in Ihren Bucket kopiert wurden, können Sie einen Trainingsjob starten. Wählen Sie dazu den gewünschten Algorithmustyp aus.
Algorithmus auswählen
Rufen Sie in der Google Cloud Console die AI Platform Training-Seite „Jobs” auf:
Klicken Sie auf die Schaltfläche Neuer Trainingsjob. Klicken Sie in den darunter angezeigten Optionen auf Integriertes Algorithmustraining. Anschließend wird die Seite Neuen Trainingsjob erstellen aufgerufen.
Das Erstellen eines Trainingsjobs gliedert sich in vier Schritte. Der erste Schritt lautet Trainingsalgorithmus. Wählen Sie TabNet 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 Training 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/ai-platform/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/tab_net:latest"
Trainingsjob senden
Zum Senden eines Jobs müssen Sie sowohl für das Training als auch den TabNet-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 Training die Trainingsdateien nach Abschluss eines erfolgreichen Trainingsjobs speichert. |
scale-tier |
Gibt Maschinentypen für das Training an. 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 genutzt werden soll. Verwenden Sie den Container für den integrierten TabNet-Algorithmus, der zuvor als IMAGE_URI definiert wurde.
|
region |
Geben Sie die verfügbare Region an, in der Ihr Trainingsjob ausgeführt werden soll. In dieser Anleitung können Sie die Region us-central1 verwenden.
|
Spezifische Argumente für den integrierten TabNet-Algorithmus:
Algorithmusargumente | |
---|---|
Argument | Beschreibung |
preprocess |
Boolesches Argument, das angibt, ob AI Platform Training die Daten vorverarbeiten soll. |
model_type |
Gibt den Typ des zu trainierenden Modells an: Klassifizierung oder Regression. |
training_data_path |
Cloud Storage-Speicherort für die Trainingsdaten, die in einer CSV-Datei vorliegen müssen. |
learning_rate |
Die vom linearen Optimierungstool verwendete Lernrate. |
max_steps |
Anzahl der Schritte, für die das Training ausgeführt werden soll. |
batch_size |
Anzahl der Beispiele, die pro Trainingsschritt verwendet werden sollen. |
feature_dim |
Dimensionalität der versteckten Darstellung im Feature-Transformationsblock. |
feature_dim_ratio |
Das Verhältnis der Ausgabedimension (Dimensionalität der Ausgaben der einzelnen Entscheidungsschritte) zur Featuredimension. |
num_decision_steps |
Anzahl der aufeinanderfolgenden Entscheidungsschritte. |
relaxation_factor |
Entspannungsfaktor, der die Wiederverwendung der einzelnen Funktionen in verschiedenen Entscheidungsschritten fördert. Bei Verwendung von 1 wird eine Funktion erzwungen und nur bei einem Entscheidungsschritt verwendet. Wenn eine Funktion erhöht wird, bietet sie in mehreren Entscheidungsschritten mehr Flexibilität. |
num_transformer_layers |
Die Anzahl der Transformator-Ebenen für jeden Entscheidungsschritt. |
num_transformer_layers_ratio |
Das Verhältnis der Ebene des freigegebenen Transformators zu den Ebenen des Transformators. |
eval_steps |
Anzahl der Schritte (in Batches), für die die Bewertung ausgeführt wird. Wenn nichts angegeben ist, wird eine Bewertung des gesamten Validierungs-Datasets ausgeführt. |
Eine genaue Liste aller anderen TabNet-Algorithmus-Flags finden Sie in der Referenz zum integrierten TabNet.
Console
Lassen Sie das Kästchen Automatische Datenvorverarbeitung aktivieren angeklickt.
Klicken Sie für Trainingsdatenpfad auf Durchsuchen. Klicken Sie im rechten Bereich auf den Namen des Buckets, in den Sie die Trainingsdaten hochgeladen haben, und wechseln Sie zur Datei
ai-platform_census_algorithms_data_train.csv
.Übernehmen Sie für die Felder Validierungsdaten und Testdaten die Standardeinstellungen.
Geben Sie unter Ausgabeverzeichnis den Pfad zu Ihrem Cloud Storage-Bucket ein, in dem AI Platform Training 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 Next (Weiter).
Wählen Sie für Modelltyp die Option Klassifizierung aus.
Übernehmen Sie für alle anderen Felder die Standardeinstellungen und klicken Sie auf Weiter.
Gehen Sie auf der Seite Jobeinstellungen so vor:
- Geben Sie eine eindeutige Job-ID ein, zum Beispiel "tabnet_example".
- Geben Sie eine verfügbare Region wie "us-central1" ein.
- Wählen Sie "BASIC" als Skalierungsstufe aus.
Klicken Sie auf Fertig, um den Trainingsjob zu senden.
gcloud
Richten Sie alle Argumente für den Trainingsjob und den Algorithmus ein, bevor Sie den Job mit
gcloud
senden:DATASET_NAME="census" ALGORITHM="tabnet" 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}"
Senden Sie den Job:
gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC \ --job-dir=$JOB_DIR \ -- \ --max_steps=2000 \ --preprocess \ --model_type=$MODEL_TYPE \ --batch_size=4096 \ --learning_rate=0.01 \ --training_data_path=$TRAINING_DATA_PATH
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 Training ein trainiertes Modell sowie einige andere Artefakte in Ihrem Cloud Storage-Bucket. Ihr JOB_DIR
hat folgende Verzeichnisstruktur:
- Artefakte/
- metadata.json
- Model/ (ein TensorFlow ARRAY-Verzeichnis, das auch eine
deployment_config.yaml
-Datei enthält)- saved_model.pb
- deployment_config.yaml
- verarbeitete_Daten/
- test.csv
- training.csv
- validation.csv
Das Jobverzeichnis enthält auch verschiedene Modellprüfpunktdateien in einem Verzeichnis namens "experiment".
Bestätigen Sie, dass die Verzeichnisstruktur in Ihrem JOB_DIR
hiermit übereinstimmt:
gsutil ls -a $JOB_DIR/*
Trainiertes Modell bereitstellen
AI Platform Training verwaltet Ihre trainierten Modelle mithilfe von Modell- und Versionsressourcen. Ein AI Platform Training-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 Training 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 Training finden Sie unter TensorFlow-Modell bereitstellen.
Console
Auf der Seite Jobs sind alle Trainingsjobs aufgelistet. Klicken Sie auf den Namen des gerade gesendeten Trainingsjobs ("tab_net_example" oder den von Ihnen verwendeten Jobnamen).
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.
Wenn die Jobausführung erfolgreich war, wird oben die Schaltfläche Modell bereitstellen eingeblendet. Klicken Sie auf Modell bereitstellen.
Wählen Sie Als neues Modell bereitstellen aus und geben Sie einen Modellnamen ein, z. B. "algorithms_tab_net_model". Klicken Sie anschließend auf Bestätigen.
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 TabNet-Algorithmus wird die Datei deployment_config.yaml
erstellt. Diese Datei vereinfacht das Bereitstellen Ihres Modells für Vorhersagen in AI Platform Training.
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
Ihre
deployment_config.yaml
-Datei sollte in etwa so aussehen:deploymentUri: gs://BUCKET_NAME/algorithms_training/census_tab_net_classification/model framework: TENSORFLOW labels: global_step: '1000' job_id: census_tab_net_classification_20190227060114 runtimeVersion: '1.14'
Erstellen Sie das Modell und die Version in AI Platform Training:
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 Training vorverarbeitet. Dabei werden sie in den Korpus von metadata.json
umgewandelt.
Das TabNet-Modell wendet auf Ihre Eingabedaten eine ähnliche Vorverarbeitung an, bevor Vorhersagen ausgeführt werden.
Console
Auf der Seite Versionsdetails für die gerade erstellte Version "v1" können Sie eine Beispielvorhersageanfrage senden.
Wählen Sie den Tab Test und Nutzung aus.
Kopieren Sie das folgende Beispiel in das Eingabefeld:
{ "instances": [ {"csv_row": "44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States", "key": "dummy-key"} ] }
Klicken Sie auf Test.
Das Ergebnis der Beispielvorhersage enthält mehrere Felder. Die Liste
classes
enthält die vorhergesagte Klasse1'
:{ "predictions": [ { ... "predicted_classes": [ "1" ], ... } ] }
In diesem Fall prognostiziert das bereitgestellte Modell für die Person, deren Informationen Sie angegeben haben, ein Gehalt von mehr als 50.000 $. (Da das Training nicht deterministisch ist, kann Ihr Modell abweichen.)
gcloud
Schauen Sie sich die letzten Zeilen von
metadata.json
an:gsutil cat $JOB_DIR/artifacts/metadata.json | tail
Das Objekt
target_column.mapping
zeigt, wie die vorhergesagten Klassen in den Vorhersageergebnissen angezeigt werden:"target_algorithm": "TensorFlow", "target_column": { "mapping": { "0": "<=50K", "1": ">50K" }, "num_category": 2, "type": "classification" } }
Bereiten Sie die Vorhersageeingabe für eine Dateninstanz vor: Beachten Sie, dass Sie jede Dateninstanz als JSON-Objekt mit den folgenden Feldern angeben müssen:
csv_row
: ein String mit einer durch Kommas getrennten Reihe von Merkmalen im gleichen Format wie die Instanzen, die während des Trainings verwendet werden.key
: eine String-ID, die für jede Instanz eindeutig ist. Diese dient als Instanzschlüssel, der als Teil der Vorhersageausgabe angezeigt wird. Damit können Sie jede Vorhersage der entsprechenden Eingabeinstanz zuordnen.Dies ist für Batchvorhersagen erforderlich, da eine Batchvorhersage in einer zufälligen Reihenfolge die Eingabe verarbeitet und die Ausgabe speichert.
Bei Onlinevorhersagen, bei denen die Ausgabe in der gleichen Reihenfolge wie in der bereitgestellten Eingabe erfolgt, sind Instanzschlüssel weniger wichtig. In diesem Beispiel wird nur eine Vorhersage für eine einzelne Instanz ausgeführt, sodass der Wert des Instanzschlüssels keine Rolle spielt.
Zum Senden einer Onlinevorhersageanfrage mit Google Cloud CLI, wie in diesem Beispiel, schreiben Sie jede Instanz in eine eigene Zeile in einer durch Zeilenumbruch getrennten JSON-Datei.
Führen Sie die folgenden Befehle in Ihrem Terminal aus, um eine Eingabe für eine einzelne Instanz zu erstellen, die Sie an AI Platform Prediction senden können:
# A sample record from census dataset. 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' # Create a prediction request file echo "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json # Check the prediction request file. cat sample_input.json
Senden Sie die Vorhersageanfrage:
gcloud ai-platform predict \ --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances sample_input.json \ --format "value(predictions[0].predicted_classes[0])"
Diese Vorhersageausgabe wird so gefiltert, dass nur die vorhergesagte Klasse angezeigt wird:
1
Höchstwahrscheinlich ist die Vorhersageausgabe 1
, d. h. >50K
als Zuordnung in metadata.json
. Das bereitgestellte Modell prognostiziert für die Person, deren Informationen Sie angegeben haben, ein Gehalt von mehr als 50.000 $. (Da das Training nicht deterministisch ist, kann Ihr Modell abweichen.)
Vorhersage und Erläuterung der Ausgabe
Nachdem Sie die Anfrage für die Onlinevorhersage gesendet haben, erhalten Sie sowohl Vorhersagen als auch Erläuterungen. Die Ausgabe enthält predicted_classes
für Klassifizierungsprobleme und predicted_values
für Regressionsprobleme.
Vorhersage
Hier sehen Sie die Beispielausgabe einer einzelnen Vorhersageanfrage für Zensusdaten:
{"predicted_classes": [1], "logits": [0.4880162477493286], "aggregated_mask_values": [0.7823681235313416, 0.0, 0.0, 0.5490312576293945, 0.0, 1.0856571197509766, 0.22187761962413788, 0.0, 0.0, 0.0, 0.23591244220733643, 0.0, 0.0, 0.0], "key": ["4"]}
Bei einem Klassifizierungsproblem hat predicted_classes
einen Wert von 0 bis N-1 (N ist die Anzahl der Klassen).
Die Zuordnung zwischen predicted_classes
und dem tatsächlichen Klassennamen finden Sie in den Einträgen target_column
in der Datei metadata.json
. Beispielsweise wird die Klasse <=50K
im Zensus-Dataset dem Wert 0
so zugeordnet:
"target_column": {
"mapping": {
"0": "<=50K",
"1": ">50K"
},
"num_category": 2,
"type": "classification"
Erklärung
Die Vorhersage enthält auch das aggregated_mask_values
, mit dem das Modell erläutert wird. Die Maskenwerte sind ein Vektor mit einer Dimension, die der Anzahl der Merkmale im Problem entspricht. Je höher der Wert der Maske, desto wichtiger ist das entsprechende Feature.
In der obigen Beispielausgabe werden die 14 Werte in aggregated_mask_values
der 14 Eingabefeatures des Zensus-Datasets zugeordnet. In diesem Fall ist das sechste Element die wichtigste Funktion.
Sie können auch ein Notebook sehen, um die Merkmalwichtigkeit basierend auf dem aggregated_mask_values
zu visualisieren.
Ü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.