Quando esegui un job di addestramento, AI Platform Training imposta una variabile di ambiente chiamata TF_CONFIG
su ogni istanza di macchina virtuale (VM) che fa parte del job. Il codice di addestramento, che viene eseguito su ogni VM, può utilizzare TF_CONFIG
di variabile di ambiente per accedere ai dettagli sul job di addestramento e sul ruolo
alla VM su cui è in esecuzione.
TensorFlow utilizza la variabile di ambiente TF_CONFIG
per semplificare l'addestramento distribuito, ma probabilmente non dovrai accedervi direttamente nel codice di addestramento.
Questo documento descrive la variabile di ambiente TF_CONFIG
e il relativo utilizzo nei job TensorFlow distribuiti e nei job di ottimizzazione degli iperparametri.
Il formato di TF_CONFIG
AI Platform Training imposta la variabile di ambiente TF_CONFIG
su ogni VM di ogni job di addestramento per soddisfare le specifiche richieste da TensorFlow per l'addestramento distribuito.
Tuttavia, AI Platform Training imposta anche campi aggiuntivi nell'ambiente TF_CONFIG
diversa da quella richiesta da TensorFlow.
La variabile di ambiente TF_CONFIG
è una stringa JSON con il seguente formato:
TF_CONFIG campi |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
cluster |
La descrizione del cluster TensorFlow. Un dizionario che mappa uno o più
nomi di attività ( Questo è un primo argomento valido per
Scopri la differenza tra |
||||||||||
task |
La descrizione dell'attività della VM in cui è impostata questa variabile di ambiente. Per un determinato job di addestramento, questo dizionario è diverso su ogni VM. Puoi utilizzare queste informazioni per personalizzare il codice eseguito su ogni VM in un job di addestramento distribuito. Puoi utilizzarlo anche per modificare il comportamento il codice di addestramento per le diverse prove dell'ottimizzazione degli iperparametri lavoro. Questo dizionario include le seguenti coppie chiave-valore:
|
||||||||||
job |
Il |
||||||||||
environment |
La stringa |
Per i job di addestramento container personalizzati,
AI Platform Training imposta una variabile di ambiente aggiuntiva denominata CLUSTER_SPEC
,
che ha un formato simile a TF_CONFIG
ma con diverse importanti
le differenze. Scopri di più sull'ambiente CLUSTER_SPEC
la variabile personalizzata.
Esempio
Il codice di esempio seguente stampa la variabile di ambiente TF_CONFIG
nella tua
log di addestramento:
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))
In un job di ottimizzazione degli iperparametri eseguito nel runtime versione 2.1 o successive e
utilizza un worker master, due worker e un server dei parametri, questo codice produce
il seguente log per uno dei worker durante la prima ottimizzazione degli iperparametri
Google Cloud. L'output di esempio nasconde il campo job
per concisione e sostituisce
alcuni ID con valori generici.
{
"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
rispetto a master
La VM worker principale in AI Platform Training corrisponde al chief
tipo di compito in TensorFlow. Sebbene TensorFlow possa nominare un'attività worker
che agisca come chief
,
AI Platform Training designa sempre esplicitamente un chief
.
master
è un tipo di attività deprecato in TensorFlow. master
rappresentava un'attività
che svolgeva un ruolo simile a chief
, ma fungeva anche da evaluator
in
alcune configurazioni. TensorFlow 2 non supporta l'ambiente TF_CONFIG
che contengono un'attività master
.
AI Platform Training utilizza chief
nei campi cluster
e task
della variabile di ambiente TF_CONFIG
se una delle seguenti condizioni è vera:
- Stai eseguendo un job di addestramento che utilizza la versione dell'ambiente di runtime 2.1 o successiva.
- Hai configurato il job di addestramento in modo da utilizzare uno o più
valutatori. In altre parole, hai impostato
trainingInput.evaluatorCount
del tuo job su1
o superiore. - Il job utilizza un container personalizzato e tu
hai impostato
trainingInput.useChiefInTfConfig
atrue
.
In caso contrario, per motivi di compatibilità, AI Platform Training utilizza il valore master
deprecato
anziché chief
.
Quando utilizzare TF_CONFIG
Come accennato in una sezione precedente, probabilmente non è necessario interagire con la variabile di ambiente TF_CONFIG
direttamente nel codice di addestramento. Accedi solo ai
la variabile di ambiente TF_CONFIG
se le strategie di distribuzione e
il flusso di lavoro di ottimizzazione degli iperparametri standard di AI Platform Training, entrambi descritti in
sezioni successive, non lavorare per il tuo lavoro.
Addestramento distribuito
AI Platform Training imposta la variabile di ambiente TF_CONFIG
per estendere la
specifiche richieste da TensorFlow per gli
addestramento.
Per eseguire l'addestramento distribuito con TensorFlow, utilizza l'tf.distribute.Strategy
API.
In particolare, raccomandiamo di utilizzare l'API Keras insieme
MultiWorkerMirroredStrategy
oppure, se specifichi i server dei parametri per il job,
il
ParameterServerStrategy
.
Tuttavia, tieni presente che al momento TensorFlow fornisce solo il supporto sperimentale per queste strategie.
Queste strategie di distribuzione utilizzano la variabile di ambiente TF_CONFIG
per assegnare
ruoli a ciascuna VM nel tuo job di addestramento e per facilitare la comunicazione
le VM. Non è necessario accedere direttamente alla variabile di ambiente TF_CONFIG
nel codice di addestramento, perché TensorFlow
lo gestisce al posto tuo.
Analizza direttamente la variabile di ambiente TF_CONFIG
solo se vuoi
personalizzare il comportamento delle diverse VM che eseguono il job di addestramento.
Ottimizzazione degli iperparametri
Quando esegui un job di ottimizzazione degli iperparametri, AI Platform Training fornisce diversi argomenti al codice di addestramento per ogni prova. Il tuo codice di addestramento non deve necessariamente sapere quale periodo di prova è attualmente in esecuzione. Nel Inoltre, AI Platform Training offre strumenti per monitorare i progressi ottimizzazione degli iperparametri offerte di lavoro.
Se necessario, il codice può leggere il numero di prova corrente dal campo trial
del campo task
della variabile di ambiente TF_CONFIG
.
Passaggi successivi
- Consulta un tutorial nella documentazione di TensorFlow sull'addestramento con più lavoratori con Keras
- Scopri di più sull'addestramento distribuito con container in AI Platform Training.
- Scopri come implementare l'ottimizzazione degli iperparametri per i job di addestramento.