Questa pagina spiega in che modo i container personalizzati supportano la struttura dell'addestramento distribuito in AI Platform Training.
Con i container personalizzati, puoi eseguire l'addestramento distribuito con qualsiasi framework ML che supporta la distribuzione. Sebbene la terminologia utilizzata qui sia basata sul modello distribuito di TensorFlow, puoi utilizzare qualsiasi altro framework ML con una struttura di distribuzione simile. Ad esempio, la formazione distribuita in MXNet utilizza uno scheduler, worker e server. Questo corrisponde alla struttura di addestramento distribuito dei container personalizzati di AI Platform Training, che utilizza un master, worker e server dei parametri.
Struttura del cluster di addestramento
Se esegui un job di addestramento distribuito con AI Platform Training, specifica più macchine (nodi) in un cluster di addestramento. Il servizio di addestramento alloca le risorse per i tipi di macchine specificati. Il job in esecuzione su un determinato nodo è chiamato replica. In conformità con il modello TensorFlow distribuito, a ogni replica del cluster di addestramento viene assegnato un singolo ruolo o compito nell'addestramento distribuito:
Master worker: esattamente una replica è designata come master worker (noto anche come chief worker). Questa attività gestisce le altre e segnala lo stato del job nel suo complesso.
Worker: una o più repliche possono essere designate come worker. Queste repliche svolgono la propria parte di lavoro come indicato nella configurazione del job.
Server dei parametri: una o più repliche possono essere designate come server dei parametri. Queste repliche memorizzano i parametri del modello e coordinano lo stato del modello condiviso tra i worker.
Valutatori: una o più repliche possono essere designate come valutatori. Queste repliche possono essere utilizzate per valutare il modello. Se utilizzi TensorFlow, tieni presente che in genere TensorFlow prevede di utilizzare non più di uno valutatore.
Mappatura dell'API
I quattro diversi ruoli che puoi assegnare alle macchine nel cluster di addestramento
corrispondono a quattro campi che puoi specificare in TrainingInput
,
che rappresenta i parametri di input per un job di addestramento:
masterConfig.imageUri
rappresenta l'URI dell'immagine del container da eseguire sul worker master.workerConfig.imageUri
,parameterServerConfig.imageUri
eevaluatorConfig.imageUri
rappresentano gli URI delle immagini container da eseguire su rispettivamente i worker, i server di parametri e gli valutatori. Se non viene impostato alcun valore per questi campi, AI Platform Training utilizza il valore dimasterConfig.imageUri
.
Puoi anche impostare i valori per ciascuno di questi campi con i relativi flag in gcloud ai-platform jobs submit training
:
- Per la configurazione del worker principale, utilizza
--master-image-uri
. - Per la configurazione del worker, utilizza
--worker-image-uri
. - Per la configurazione del server dei parametri, utilizza
--parameter-server-image-uri
. - Al momento non esiste un flag per specificare l'URI dell'immagine container per i valutatori. Puoi specificare
evaluatorConfig.imageUri
in un file di configurazione config.yaml.
Guarda un esempio di come inviare un job di addestramento distribuito con container personalizzati.
Informazioni su CLUSTER_SPEC
AI Platform Training compila una variabile di ambiente, CLUSTER_SPEC
, su ogni replica per descrivere la configurazione complessiva del cluster. Come TF_CONFIG
di TensorFlow, CLUSTER_SPEC
descrive ogni replica del cluster, incluso l'indice e il ruolo (master worker, worker, parameter server o evaluator).
Quando esegui l'addestramento distribuito con TensorFlow, TF_CONFIG
viene analizzato per compilare tf.train.ClusterSpec
.
Analogamente, quando esegui l'addestramento distribuito con altri framework ML, devi analizzare CLUSTER_SPEC
per compilare eventuali variabili o impostazioni di ambiente richieste dal framework.
Il formato di CLUSTER_SPEC
La variabile di ambiente CLUSTER_SPEC
è una stringa JSON con il seguente formato:
Chiave | Descrizione | |
---|---|---|
"cluster"
|
La descrizione del cluster per il contenitore personalizzato. Come per "TF_CONFIG", questo oggetto è formattato come specifica del cluster TensorFlow e può essere passato al costruttore di tf.train.ClusterSpec. | |
"task"
|
Descrive l'attività del nodo specifico su cui viene eseguito il codice. Puoi utilizzare queste informazioni per scrivere codice per worker specifici in un compito distribuito. Questa voce è un dizionario con le seguenti chiavi: | |
"type"
|
Il tipo di attività svolta da questo nodo. I valori possibili sono
master , worker , ps e
evaluator .
|
|
"index"
|
L'indice a partire da zero dell'attività. La maggior parte dei job di addestramento distribuiti ha una singola attività principale, uno o più server di parametri e uno o più worker. | |
"trial"
|
L'identificatore della prova di ottimizzazione degli iperparametri attualmente in esecuzione. Quando configuri l'ottimizzazione degli iperparametri per il tuo job, imposti un numero di prove da eseguire per l'addestramento. Questo valore ti consente di distinguere nel codice tra le prove in esecuzione. L'identificatore è un valore di stringa contenente il numero della prova, a partire da 1. | |
"job"
|
I parametri del job che hai utilizzato per avviarlo. Nella maggior parte dei casi, puoi ignorare questa voce, in quanto replica i dati passati alla tua applicazione tramite gli argomenti della riga di comando. |
Confronto con TF_CONFIG
Tieni presente che AI Platform Training imposta anche la variabile di ambienteTF_CONFIG
su ogni replica di tutti i job di addestramento. AI Platform Training imposta la variabile di ambiente CLUSTER_SPEC
solo sulle repliche dei job di addestramento dei container personalizzati. Le due variabili di ambiente condividono alcuni valori, ma hanno formati diversi.
Quando esegui l'addestramento con contenitori personalizzati, per impostazione predefinita la replica principale viene etichettata nella variabile di ambiente TF_CONFIG
con il nome dell'attività master
. Puoi
configurarlo in modo che venga etichettato con il nome dell'attività chief
invece impostando il
campo
trainingInput.useChiefInTfConfig
su true
quando crei il job di addestramento o utilizzando una o più
repliche di valutatori nel job. Questa opzione è particolarmente utile se il tuo
container personalizzato utilizza TensorFlow 2.
Oltre a questa opzione di configurazione, l'addestramento distribuito con TensorFlow funziona allo stesso modo quando utilizzi container personalizzati o una versione di runtime di AI Platform Training. Scopri di più e consulta esempi su come utilizzare TF_CONFIG
per l'addestramento distribuito su AI Platform Training.
Passaggi successivi
- Scopri come utilizzare i container personalizzati per i job di addestramento.
- Addestra un modello PyTorch utilizzando container personalizzati.