Addestramento distribuito con container

Questa pagina spiega in che modo i container personalizzati supportano la struttura dell'addestramento distribuito su AI Platform Training.

Con i container personalizzati puoi eseguire l'addestramento distribuito con qualsiasi framework ML che supporti la distribuzione. Anche se la terminologia utilizzata qui si basa sul modello distribuito di TensorFlow, puoi utilizzare qualsiasi altro framework ML con una struttura di distribuzione simile. Ad esempio, l'addestramento distribuito in MXNet utilizza uno scheduler, worker e server. Ciò corrisponde alla struttura di addestramento distribuito dei container personalizzati di AI Platform Training, che utilizza master, worker e server dei parametri.

Struttura del cluster di addestramento

Se esegui un job di addestramento distribuito con AI Platform Training, devi specificare più macchine (nodi) in un cluster di addestramento. Il servizio di addestramento assegna le risorse ai tipi di macchina specificati. Il job in esecuzione su un determinato nodo è chiamato replica. In base al modello TensorFlow distribuito, a ogni replica nel cluster di addestramento viene assegnato un singolo ruolo o attività nell'addestramento distribuito:

  • Worker master: esattamente una replica è designata come lavoratore master (noto anche come worker principale). Questa attività gestisce le altre attività e segnala lo stato del lavoro nel suo complesso.

  • Worker: una o più repliche possono essere designate come worker. Queste repliche svolgono la propria parte del lavoro in base alle tue esigenze nella configurazione dei job.

  • Server dei parametri: una o più repliche possono essere designate come server dei parametri. Queste repliche archiviano i parametri del modello e coordinano lo stato del modello condiviso tra i worker.

  • Valutatori: una o più repliche potrebbero essere definite come valutatori. Queste repliche possono essere utilizzate per valutare il modello. Se utilizzi TensorFlow, tieni presente che in genere TensorFlow si aspetta di utilizzare non più di un valutatore.

Mappatura delle 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 container da eseguire sul worker master.
  • workerConfig.imageUri, parameterServerConfig.imageUri e evaluatorConfig.imageUri rappresentano gli URI dell'immagine container da eseguire rispettivamente sui worker, sui server dei parametri e sui valutatori. Se non viene impostato alcun valore per questi campi, AI Platform Training utilizza il valore masterConfig.imageUri.

Puoi anche impostare i valori per ciascuno di questi campi con i flag corrispondenti in gcloud ai-platform jobs submit training:

  • Per la configurazione del worker master, utilizza --master-image-uri.
  • Per la configurazione dei 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.

Vedi un esempio di come inviare un job di addestramento distribuito con container personalizzati.

Comprendere CLUSTER_SPEC

AI Platform Training compila una variabile di ambiente, CLUSTER_SPEC, su ogni replica per descrivere come è configurato il cluster nel complesso. Come TF_CONFIG di TensorFlow, CLUSTER_SPEC descrive ogni replica nel cluster, inclusi il relativo indice e il relativo ruolo (lavoratore master, worker, server dei parametri o valutatore).

Quando esegui l'addestramento distribuito con TensorFlow, TF_CONFIG viene analizzato per generare tf.train.ClusterSpec. Allo stesso modo, quando esegui l'addestramento distribuito con altri framework ML, devi analizzare CLUSTER_SPEC per completare eventuali impostazioni o variabili 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 container 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 job distribuito. Questa voce è un dizionario con le seguenti chiavi:
"type" Il tipo di attività eseguita da questo nodo. I valori possibili sono master, worker, ps e evaluator.
"index" L'indice in base zero dell'attività. La maggior parte dei job di addestramento distribuiti ha una singola attività master, uno o più server dei 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 job, imposti un numero di prove da addestrare. Questo valore consente di distinguere nel codice le prove in esecuzione. L'identificatore è un valore stringa contenente il numero di prova, a partire da 1.
"job" I parametri del job utilizzati quando hai avviato il job. Nella maggior parte dei casi, puoi ignorare questa voce poiché replica i dati passati all'applicazione tramite gli argomenti della riga di comando.

Confronto con TF_CONFIG

Tieni presente che AI Platform Training imposta anche la variabile di ambiente TF_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 di container personalizzati. Le due variabili di ambiente condividono alcuni valori, ma hanno formati diversi.

Durante l'addestramento con container personalizzati, la replica master viene etichettata nella variabile di ambiente TF_CONFIG con il nome attività master per impostazione predefinita. Puoi configurarlo in modo che venga etichettato con il nome dell'attività chief impostando il campo trainingInput.useChiefInTfConfig su true quando crei il job di addestramento oppure utilizzando una o più repliche di valutazione nel job. È particolarmente utile se il container personalizzato usa TensorFlow 2.

Oltre a questa opzione di configurazione, l'addestramento distribuito con TensorFlow funziona allo stesso modo per l'uso di container personalizzati e per la versione runtime di AI Platform Training. Vedi maggiori dettagli ed esempi su come utilizzare TF_CONFIG per l'addestramento distribuito su AI Platform Training.

Passaggi successivi