Wenn Sie integrierte Algorithmen für das Training in AI Platform Training verwenden, können Sie Ihr Dataset zum Trainieren eines Modells einreichen, ohne Trainingscode schreiben zu müssen. Auf dieser Seite wird erläutert, wie der integrierte Wide-and-Deep-Algorithmus funktioniert und verwendet wird.
Überblick
Der integrierte Algorithmus führt die Vorverarbeitung und das Training aus:
- Vorverarbeitung: Zur Vorbereitung des Trainings verarbeitet AI Platform Training Ihren Mix aus kategorialen und numerischen Daten zu einem komplett numerischen Dataset.
- Training: AI Platform Training führt mit dem Dataset und den von Ihnen angegebenen Modellparametern das Training mithilfe von Wide and Deep Estimator von TensorFlow aus.
Beschränkungen
Die folgenden Funktionen werden für das Training mit dem integrierten Wide-and-Deep-Algorithmus nicht unterstützt:
- Training mit mehreren GPUs: Integrierte Algorithmen verwenden immer nur eine GPU. Damit Sie die Vorteile eines Trainings mit mehreren GPUs auf einer Maschine komplett nutzen können, müssen Sie eine Trainingsanwendung erstellen. Weitere Informationen zu Maschinentypen finden Sie unter Maschinentypen oder Skalierungsstufen angeben.
- Training mit TPUs: Für das Training mit TPUs müssen Sie eine Trainingsanwendung erstellen. Weitere Informationen zum Ausführen eines Trainingsjobs mit TPUs finden Sie unter Modelle mit TPUs trainieren.
- Verteiltes Training: Für die Ausführung eines verteilten Trainingsjobs in AI Platform Training müssen Sie eine Trainingsanwendung erstellen.
Unterstützte Maschinentypen
Folgende AI Platform Training-Skalierungsstufen und -Maschinentypen werden unterstützt:
BASIC
Skalierungsstufe- Skalierungsstufe
CUSTOM
mit beliebigen von AI Platform Training unterstützten Compute Engine-Maschinentypen CUSTOM
-Skalierungsstufe mit einem der folgenden Legacy-Maschinentypen:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
Eingabedaten formatieren
Jede Zeile eines Datasets stellt eine Instanz dar und jede Spalte eines Datasets einen Merkmalswert. Die Zielspalte enthält den Wert, den Sie vorhersagen möchten.
CSV-Datei vorbereiten
Ihre Eingabedaten müssen in einer CSV-Datei mit UTF-8-Codierung vorliegen. Wenn Ihre Trainingsdaten nur aus kategorialen und numerischen Werten bestehen, können Sie mithilfe unseres Vorverarbeitungsmoduls fehlende numerische Werte auffüllen, das Dataset aufteilen und Zeilen entfernen, in denen mehr als 10 % der Werte fehlen. Andernfalls können Sie das Training auch ohne automatische Vorverarbeitung ausführen.
Damit Ihre CSV-Eingabedatei die Anforderungen erfüllt, müssen Sie sie so vorbereiten:
- Die Kopfzeile muss entfernt werden. Die Kopfzeile enthält die Labels für die einzelnen Spalten. Entfernen Sie sie, damit sie nicht mit dem Rest der Dateninstanzen als Teil der Trainingsdaten gesendet wird.
- Die Zielspalte muss die erste Spalte sein. Die Zielspalte enthält den Wert, den Sie vorhersagen möchten. Bei einem Klassifizierungsalgorithmus werden alle Werte in der Zielspalte als Klasse oder Kategorie dargestellt. Bei einem Regressionsalgorithmus sind alle Werte in der Zielspalte numerische Werte.
Ganzzahlige Werte verarbeiten
Da Ganzzahlwerte mehrdeutig sein können, gestaltet sich die automatische Vorverarbeitung bei Spalten mit Ganzzahlwerten problematisch. AI Platform Training bestimmt automatisch, wie Ganzzahlwerte verarbeitet werden. Standard:
- Wenn jeder Ganzzahlwert eindeutig ist, wird die Spalte als Instanzschlüssel behandelt.
- Wenn es nur wenige eindeutige Ganzzahlwerte gibt, wird die Spalte als kategorial behandelt.
- Andernfalls werden die Werte in der Spalte in eine Gleitkommazahl umgewandelt und als numerisch behandelt.
So überschreiben Sie diese Standardbestimmungen:
- Wenn die Daten als numerisch behandelt werden sollen, konvertieren Sie alle Ganzzahlwerte in der Spalte in einen Gleitkommawert, z. B. {101.0, 102.0, 103.0}.
- Wenn die Daten als kategorial behandelt werden sollen, stellen Sie allen Ganzzahlwerten in der Spalte ein nicht numerisches Präfix voran, z. B. {code_101, code_102, code_103}
Cloud Storage-Bucket-Berechtigungen prüfen
Speichern Sie Ihre Daten in einem Cloud Storage-Bucket desselben Google Cloud-Projekts, in dem Sie AI Platform Training-Jobs ausführen. Andernfalls gewähren Sie AI Platform Training Zugriff auf den Cloud Storage-Bucket, in dem Ihre Daten gespeichert sind.
Deep-and-Wide-Trainingsjob senden
In diesem Abschnitt wird erläutert, wie Sie einen Trainingsjob mit dem integrierten Deep-and-Wide-Algorithmus senden.
Eine kurze Erläuterung der einzelnen Hyperparameter finden Sie in der Google Cloud Console. Eine ausführlichere Erläuterung finden Sie in der Referenz zum integrierten Wide-and-Deep-Algorithmus.
Console
Rufen Sie in der Cloud Console die Seite für AI Platform Training-Jobs auf:
Klicken Sie auf die Schaltfläche Neuer Trainingsjob. Klicken Sie in den darunter angezeigten Optionen auf Integriertes Algorithmustraining.
Wählen Sie auf der Seite Create a new training job (Neuen Trainingsjob erstellen) die Option Built-in wide and deep (Integrierter Wide-and-Deep-Algorithmus) aus und klicken Sie auf Weiter.
Weitere Informationen zu allen verfügbaren Parametern finden Sie unter den Links in der Google Cloud Console und in der Referenz zum integrierten Wide-and-Deep-Algorithmus.
gcloud
Legen Sie Umgebungsvariablen für Ihren Job fest und geben Sie für
[VALUES-IN-BRACKETS]
Ihre eigenen Werte ein:# Specify the name of the Cloud Storage bucket where you want your # training outputs to be stored, and the Docker container for # your built-in algorithm selection. BUCKET_NAME='[YOUR-BUCKET-NAME]' IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest' # Specify the Cloud Storage path to your training input data. TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv' DATASET_NAME='census' ALGORITHM='wide_deep' MODEL_TYPE='classification' DATE='date '+%Y%m%d_%H%M%S'' MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" JOB_ID="${MODEL_NAME}_${DATE}" JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
Senden Sie den Trainingsjob mit
gcloud ai-platform jobs training submit
:gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \ --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \ --use_wide --embed_categories \ --max_steps=1000 --training_data_path=$TRAINING_DATA
Prüfen Sie den Status Ihres Trainingsjobs. Rufen Sie dazu Logs mit
gcloud
auf. Weitere Informationen finden Sie untergcloud ai-platform jobs describe
undgcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Funktionsweise der Vorverarbeitung
Die automatische Vorverarbeitung kann für kategoriale und numerische Daten verwendet werden. Mit der Vorverarbeitungsroutine werden die Daten zuerst analysiert und dann transformiert.
Analyse
Als Erstes erfasst AI Platform Training automatisch den Datentyp jeder Spalte. Anschließend stellt der Dienst fest, wie die einzelnen Spalten verarbeitet werden sollen, und berechnet eine Statistik zu den Daten in der Spalte. Diese Informationen werden in der Datei metadata.json
erfasst.
Über die Analyse des Zielspaltentyps stellt AI Platform Training fest, ob das angegebene Dataset zur Regression oder zur Klassifizierung bestimmt ist. Wenn diese Analyse Ihrer Auswahl für model_type
widerspricht, wird ein Fehler ausgegeben. Geben Sie explizit an, wie die Zielspalte verarbeitet werden soll, d. h., formatieren Sie Ihre Daten eindeutig, wenn sie mehrdeutig sind.
Typ: Die Spalte kann numerisch oder kategorial sein.
Verarbeitung: AI Platform Training stellt so die jeweils nötige Verarbeitung jeder Spalte fest:
- Wenn die Spalte in allen Zeilen den gleichen Wert enthält, wird sie als Konstante verarbeitet.
- Wenn die Spalte kategorial ist und in allen Zeilen eindeutige Werte enthält, wird sie als row_identifier verarbeitet.
- Wenn die Spalte numerisch ist und Gleitkommawerte enthält oder wenn sie numerisch ist und ganzzahlige Werte enthält, von denen viele eindeutige Werte sind, wird die Spalte als numerisch verarbeitet.
- Wenn die Spalte numerisch ist und ganzzahlige Werte enthält, von denen nur wenige eindeutige Werte sind, wird die Spalte als kategoriale Spalte verarbeitet. Dabei sind die ganzzahligen Werte entweder die Identität oder das Vokabular.
- Es wird davon ausgegangen, dass eine Spalte nur wenige eindeutige Werte enthält, wenn die Anzahl der eindeutigen Werte in der Spalte bei unter 20 % der Zeilenanzahl im Eingabe-Dataset liegt.
- Wenn die Spalte kategorial ist und eine hohe Kardinalität hat, wird die Spalte mit Hashing verarbeitet. Die Anzahl der Hash-Buckets entspricht dabei der Quadratwurzel der Anzahl von eindeutigen Werten in der Spalte.
- Eine kategoriale Spalte wird als Spalte mit hoher Kardinalität angesehen, wenn die Anzahl der eindeutigen Werte größer ist als die Quadratwurzel der Zeilenanzahl im Dataset.
- Wenn die Spalte kategorial und die Anzahl der eindeutigen Werte kleiner oder gleich der Quadratwurzel der Zeilenanzahl im Dataset ist, wird die Spalte als normale kategoriale Spalte mit Vokabular verarbeitet.
Statistik: AI Platform Training berechnet die folgenden statistischen Werte anhand des ermittelten Spaltentyps und der Verarbeitung für die spätere Transformation der Spalte.
- Wenn die Spalte numerisch ist, werden Mittel- und Varianzwerte berechnet.
- Wenn die Spalte kategorial ist und die Werte als Identität oder Vokabular verarbeitet werden, werden die einzelnen Werte aus der Spalte extrahiert.
- Wenn die Spalte kategorial ist und mit Hashing behandelt wird, wird die Anzahl der Hash-Buckets in Relation zur Kardinalität der Spalte berechnet.
Transformation
Nachdem die erste Analyse des Datasets abgeschlossen ist, transformiert AI Platform Training Ihre Daten anhand der Typen, Verarbeitungen und Statistikdaten, die auf Ihr Dataset angewendet werden. AI Platform Training führt die Transformationen in der folgenden Reihenfolge durch:
- Das Trainings-Dataset wird in Validierungs- und Test-Datasets aufgeteilt, wenn Sie die Teilungsprozentsätze angeben.
- Zeilen, in denen mehr als 10 % der Merkmale fehlen, werden entfernt.
- Fehlende numerische Werte werden anhand des Mittelwerts der Spalte aufgefüllt.
Beispieltransformationen
Zeilen, in denen 10 % der Werte fehlen, werden entfernt. In den folgenden Beispielen wird angenommen, dass die Zeile 10 Werte enthält. Der Einfachheit halber ist jede Beispielzeile abgeschnitten.
Zeilenproblem | Ursprüngliche Werte | Transformierte Werte | Erläuterung |
---|---|---|---|
Beispielzeile ohne fehlende Werte | [3, 0,45, ..., "Früchte", 0, 1] |
[3, 0,45, ..., 1, 0, 0, 0, 1] |
Der String "Früchte" wird in die Werte "1, 0, 0" in One-Hot-Codierung transformiert. Dies geschieht später in der TensorFlow-Grafik. |
Zu viele fehlende Werte | [3, 0,45, ..., "Früchte", __, __] |
Zeile wird entfernt | In der Zeile fehlen mehr als 10 % der Werte. |
Fehlender numerischer Wert | [3, 0.45, ..., "Früchte", 0, __] |
[3, 0,45, ..., 1, 0, 0, 0, 0,54] |
|
Fehlender kategorialer Wert | [3, 0,45, ..., __, 0, 1] |
[3, 0,45, ..., 0, 0, 0, 0, 1] |
|
Merkmalsspalten
Bei der Transformation werden die Spalten nicht verarbeitet. Stattdessen werden die während der Analyse erzeugten Metadaten an AI Platform Training übergeben, um die entsprechenden Featurespalten zu erstellen:
Spaltentyp | Spaltenverarbeitung | Resultierende Merkmalsspalte |
---|---|---|
Numerisch | (Alle Spaltenverarbeitungstypen) |
tf.feature_column.numeric_column
Die Werte für Mittelwert und Varianz werden zur Vereinheitlichung der Werte verwendet: |
Kategorial | Identität |
tf.feature_column.categorical_column_with_identity
|
Kategorial | Vokabular |
tf.feature_column.categorical_column_with_vocabulary_list
|
Kategorial | Hashing |
tf.feature_column.categorical_column_with_hash_bucket
|
Kategorial | Konstante oder Zeilenkennzeichnung | Ignoriert. Es wird keine Merkmalspalte erstellt. |
Zusätzliche Merkmalspalten
Sie haben die Möglichkeit, kategoriale Spalten im "Wide"-Teil des DNN-Modells (use_wide
) zu verwenden oder sie im "Deep"-Teil des Modells einzubetten (embed_categories
). Je nach Auswahl werden die folgenden zusätzlichen Merkmalspalten hinzugefügt:
use_wide aktiviert |
embed_categories aktiviert |
Result |
---|---|---|
True | True oder False | Das Merkmal wird im breitgefassten Teil des Modells verwendet. |
True oder False | Ja | Für die kategoriale Spalte wird eine Einbettungsmerkmalspalte erstellt, bei der die Einbettungsdimension auf die nächstgrößere Ganzzahl der Quadratwurzel der Kategorienanzahl in der Spalte festgelegt wird. Diese Einbettungsmerkmalspalte wird im tiefgehenden Teil des Modells verwendet. |
False | False | Für die kategoriale Spalte wird eine Kennzeichenspalte erstellt. Diese Kennzeichenmerkmalspalte wird im tief gehenden Teil des Modells verwendet. |
Nach Abschluss der automatischen Vorverarbeitung lädt AI Platform Training das vorverarbeitete Dataset wieder in Ihren Cloud Storage-Bucket in das Verzeichnis hoch, das Sie in der Jobanfrage angegeben haben.
Nächste Schritte
- Mehr über die Funktionsweise des integrierten Wide-and-Deep-Algorithmus erfahren
- Mehr über TensorFlow-Merkmalspalten erfahren