Wenn Sie einen Trainingsjob ausführen, legt AI Platform Training für jede VM-Instanz, die Teil Ihres Jobs ist, eine Umgebungsvariable namens TF_CONFIG
fest. Ihr Trainingscode, der auf jeder VM ausgeführt wird, kann mit der Umgebungsvariablen TF_CONFIG
auf Details zum Trainingsjob und zur Rolle der VM zugreifen, auf der er ausgeführt wird.
TensorFlow verwendet die Umgebungsvariable TF_CONFIG
, um verteiltes Training zu ermöglichen, aber Sie müssen wahrscheinlich nicht direkt in Ihrem Trainingscode darauf zugreifen.
In diesem Dokument wird die Umgebungsvariable TF_CONFIG
und ihre Verwendung in verteilten TensorFlow-Jobs und Hyperparameter-Abstimmungsjobs beschrieben.
Format von TF_CONFIG
AI Platform Training legt die Umgebungsvariable TF_CONFIG
auf den einzelnen VMs jedes Trainingsjobs so fest, dass die Spezifikationen erfüllt werden, die TensorFlow für verteiltes Training benötigt.
Bei AI Platform Training werden jedoch zusätzliche Felder in der Umgebungsvariablen TF_CONFIG
festgelegt, die über die Anforderungen von TensorFlow hinausgehen.
Die Umgebungsvariable TF_CONFIG
ist ein JSON-String mit dem folgenden Format:
TF_CONFIG Felder |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
cluster |
Die TensorFlow-Clusterbeschreibung. Ein Wörterbuch, das einen oder mehrere Aufgabennamen ( Dies ist ein gültiges erstes Argument für den Informationen zum Unterschied zwischen |
||||||||||
task |
Die Aufgabenbeschreibung der VM, auf der diese Umgebungsvariable festgelegt ist. Bei einem bestimmten Trainingsjob ist dieses Wörterbuch auf jeder VM unterschiedlich. Anhand dieser Informationen können Sie anpassen, welcher Code auf jeder VM in einem verteilten Trainingsjob ausgeführt wird. Sie können damit auch das Verhalten Ihres Trainingscodes für verschiedene Versuche eines Hyperparameter-Abstimmungsjobs ändern. Dieses Wörterbuch enthält die folgenden Schlüssel/Wert-Paare:
|
||||||||||
job |
Der |
||||||||||
environment |
Der String |
Für benutzerdefinierte Container-Trainingsjobs legt AI Platform Training eine zusätzliche Umgebungsvariable namens CLUSTER_SPEC
fest, die ein ähnliches Format wie TF_CONFIG
hat, aber mit einigen wichtigen Unterschieden. Informationen zur Umgebungsvariable CLUSTER_SPEC
Beispiel
Der folgende Beispielcode gibt die Umgebungsvariable TF_CONFIG
an Ihre Trainingslogs aus:
import json
import os
tf_config_str = os.environ.get('TF_CONFIG')
tf_config_dict = json.loads(tf_config_str)
# Convert back to string just for pretty printing
print(json.dumps(tf_config_dict, indent=2))
Bei einem Hyperparameter-Abstimmungsjob, der in der Laufzeitversion 2.1 oder höher ausgeführt wird und einen Master-Worker, zwei Worker und einen Parameterserver verwendet, erstellt dieser Code während des ersten Hyperparameter-Abstimmungstests für einen der Worker das folgende Log. Die Beispielausgabe blendet das job
-Feld aus Gründen der Übersichtlichkeit aus und ersetzt einige IDs durch generische Werte.
{
"cluster": {
"chief": [
"cmle-training-chief-[ID_STRING_1]-0:2222"
],
"ps": [
"cmle-training-ps-[ID_STRING_1]-0:2222"
],
"worker": [
"cmle-training-worker-[ID_STRING_1]-0:2222",
"cmle-training-worker-[ID_STRING_1]-1:2222"
]
},
"environment": "cloud",
"job": {
...
},
"task": {
"cloud": "[ID_STRING_2]",
"index": 0,
"trial": "1",
"type": "worker"
}
}
chief
im Vergleich zu master
Die Master-Worker-VM in AI Platform Training entspricht dem chief
-Aufgabentyp in TensorFlow. TensorFlow kann eine worker
-Aufgabe ernennen, die als chief
fungiert. Bei AI Platform Training wird jedoch immer explizit ein chief
angegeben.
master
ist in TensorFlow ein verworfener Aufgabentyp. master
war eine Aufgabe, die eine ähnliche Rolle wie chief
erfüllte, aber in einigen Konfigurationen als evaluator
fungierte. TensorFlow 2 unterstützt keine TF_CONFIG
-Umgebungsvariablen, die eine master
-Aufgabe enthalten.
AI Platform Training verwendet chief
in den Feldern cluster
und task
der Umgebungsvariablen TF_CONFIG
, wenn einer der folgenden Punkte zutrifft:
- Sie führen einen Trainingsjob mit Laufzeitversion 2.1 oder höher aus.
- Sie haben den Trainingsjob so konfiguriert, dass mindestens ein Evaluator verwendet wird. Das heißt, Sie haben
trainingInput.evaluatorCount
für den Job auf1
oder höher gesetzt. - Für den Job wird ein benutzerdefinierter Container verwendet und Sie haben
trainingInput.useChiefInTfConfig
für den Job auftrue
festgelegt.
Andernfalls verwendet AI Platform Training aus Gründen der Kompatibilität den verworfenen Aufgabentyp master
anstelle von chief
.
Verwendung von TF_CONFIG
Wie in einem vorherigen Abschnitt erwähnt, müssen Sie wahrscheinlich nicht direkt im Trainingscode mit der Umgebungsvariablen TF_CONFIG
interagieren. Greifen Sie nur dann auf die Umgebungsvariable TF_CONFIG
zu, wenn die Verteilungsstrategien von TensorFlow und der standardmäßige Hyperparameter-Abstimmungsworkflow von AI Platform Training (beides wird in den nächsten Abschnitten beschrieben) nicht für Ihren Job geeignet sind.
Verteiltes Training
AI Platform Training legt die Umgebungsvariable TF_CONFIG
fest, um die Spezifikationen zu erweitern, die TensorFlow für verteiltes Training benötigt.
Verwenden Sie die tf.distribute.Strategy
API, um verteiltes Training mit TensorFlow durchzuführen.
Insbesondere empfehlen wir Ihnen, die Keras API zusammen mit der MultiWorkerMirroredStrategy
oder, wenn Sie Parameterserver für Ihren Job angeben, mit der ParameterServerStrategy
zu verwenden.
Beachten Sie jedoch, dass TensorFlow derzeit nur experimentelle Unterstützung für diese Strategien bietet.
Bei diesen Verteilungsstrategien wird die Umgebungsvariable TF_CONFIG
verwendet, um jeder VM in Ihrem Trainingsjob Rollen zuzuweisen und die Kommunikation zwischen den VMs zu erleichtern. Sie müssen nicht direkt im Trainingscode auf die Umgebungsvariable TF_CONFIG
zugreifen, da TensorFlow das für Sie übernimmt.
Parsen Sie die Umgebungsvariable TF_CONFIG
nur dann direkt, wenn Sie anpassen möchten, wie sich die verschiedenen VMs verhalten, die Ihren Trainingsjob ausführen.
Hyperparameter-Feinabstimmung
Wenn Sie einen Hyperparameter-Abstimmungsjob ausführen, stellt AI Platform Training bei jedem Test verschiedene Argumente für den Trainingscode bereit. Der Trainingscode muss nicht unbedingt wissen, welcher Test gerade ausgeführt wird. Darüber hinaus bietet AI Platform Training Tools zum Beobachten des Fortschritts von Hyperparameter-Abstimmungsjobs.
Bei Bedarf kann Ihr Code die aktuelle Testnummer aus dem Feld trial
des Felds task
der Umgebungsvariablen TF_CONFIG
lesen.
Nächste Schritte
- Anleitung in der TensorFlow-Dokumentation zum Multi-Worker-Training mit Keras
- Mehr zum verteilten Training mit benutzerdefinierten Containern in AI Platform Training
- Hyperparameter-Abstimmung für Ihre Trainingsjobs implementieren