Lavori paralleli multinodo - AWS Batch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Lavori paralleli multinodo

Puoi utilizzare processi paralleli a più nodi per eseguire singoli processi che si estendono su più istanze Amazon EC2. Con i processi paralleli AWS Batch multinodo, puoi eseguire applicazioni di elaborazione su larga scala e ad alte prestazioni e addestrare modelli GPU distribuiti senza la necessità di avviare, configurare e gestire direttamente le risorse Amazon EC2. Un job parallelo AWS Batch multinodo è compatibile con qualsiasi framework che supporti la comunicazione tra nodi basata su IP. Gli esempi includono Apache MXNet TensorFlow, Caffe2 o Message Passing Interface (MPI).

I processi paralleli a più nodi vengono inviati come un singolo processo. Tuttavia, la definizione del processo (o sostituzioni del nodo di invio del processo) specifica il numero di nodi da creare per il processo e quali gruppi di nodo creare. Ogni processo parallelo a più nodi contiene un nodo principale, che viene avviato prima. Una volta che il nodo principale è disponibile, i nodi figlio vengono lanciati e avviati. Il processo è terminato solo se il nodo principale viene chiuso. Tutti i nodi secondari vengono quindi interrotti. Per ulteriori informazioni, consulta Gruppi di nodi.

I nodi di lavoro paralleli multinodo sono single-tenant. Ciò significa che su ogni istanza Amazon EC2 viene eseguito un solo contenitore di job.

Lo stato del processo finale (SUCCEEDED o FAILED) è determinato dallo stato del processo finale del nodo principale. Per conoscere lo stato di un processo parallelo a più nodi, descrivi il lavoro utilizzando l'ID del lavoro restituito al momento dell'invio del lavoro. Se hai bisogno dei dettagli per i nodi secondari, descrivi ogni nodo figlio singolarmente. È possibile indirizzare i nodi utilizzando la #N notazione (a partire da 0). Ad esempio, per accedere ai dettagli del secondo nodo di un lavoro, descrivi aws_batch_job_id #1 utilizzando l'operazione API. AWS Batch DescribeJobs Le informazioni started, stoppedAt, statusReason e exit per un processo parallelo a più nodi, vengono popolate dal nodo principale.

Se si specificano nuovi tentativi di lavoro, un errore del nodo principale causa un altro tentativo. Gli errori dei nodi secondari non causano ulteriori tentativi. Ogni nuovo tentativo di un processo parallelo a più nodi aggiorna il tentativo corrispondente dei suoi nodi figlio associati.

Per eseguire lavori paralleli a più nodi AWS Batch, il codice dell'applicazione deve contenere i framework e le librerie necessari per la comunicazione distribuita.

Variabili di ambiente

In fase di esecuzione, ogni nodo è configurato in base alle variabili di ambiente standard ricevute da tutti AWS Batch i job. Inoltre, i nodi sono configurati con le seguenti variabili di ambiente specifiche per i lavori paralleli a più nodi:

AWS_BATCH_JOB_MAIN_NODE_INDEX

Questa variabile è impostata sul numero d'indice del nodo principale del processo. Il codice dell'applicazione può essere confrontato AWS_BATCH_JOB_MAIN_NODE_INDEX con quello di un singolo nodo per determinare se si tratta del nodo principale. AWS_BATCH_JOB_NODE_INDEX

AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS

Questa variabile è impostata solo nei nodi figlio del lavoro parallelo a più nodi. Questa variabile non è presente nel nodo principale. Questa variabile è impostata sull'indirizzo privato IPv4 del nodo principale del processo. Il codice di applicazione del nodo figlio può utilizzare questo indirizzo per comunicare con il nodo principale.

AWS_BATCH_JOB_NODE_INDEX

Questa variabile è impostata sul numero d'indice del nodo. L'indice del nodo inizia con 0 e a ciascun nodo viene assegnato un numero d'indice univoco. Ad esempio, un processo parallelo a più nodi con 10 figli ha valori d'indice compresi tra 0 e 9.

AWS_BATCH_JOB_NUM_NODES

Questa variabile è impostata sul numero di nodi che hai richiesto per il tuo processo parallelo a più nodi.

Gruppi di nodi

Un gruppo di nodi è un gruppo identico di nodi di lavoro che condividono tutti le stesse proprietà del contenitore. È possibile utilizzare AWS Batch per specificare fino a cinque gruppi di nodi distinti per ogni job.

Ogni gruppo può avere immagini container, comandi, variabili d'ambiente propri. Ad esempio, è possibile inviare un processo che richiede una singola c5.xlarge istanza per il nodo principale e cinque nodi figlio di c5.xlarge istanza. Ciascuno di questi gruppi di nodi distinti può specificare diverse immagini o comandi del contenitore da eseguire per ogni processo.

In alternativa, tutti i nodi del job possono utilizzare un singolo gruppo di nodi. Inoltre, il codice dell'applicazione può differenziare i ruoli dei nodi, come il nodo principale e il nodo secondario. A tale scopo, confronta la variabile di AWS_BATCH_JOB_MAIN_NODE_INDEX ambiente con il proprio valore diAWS_BATCH_JOB_NODE_INDEX. È possibile avere fino a 1.000 nodi in un singolo processo. Questo è il limite predefinito per le istanze in un cluster Amazon ECS. Puoi richiedere di aumentare questo limite.

Nota

Attualmente tutti i gruppi di nodi in un processo parallelo a più nodi devono utilizzare lo stesso tipo di istanza.

Ciclo di vita del lavoro

Quando si invia un processo parallelo multinodo, il lavoro entra nello SUBMITTED stato. Quindi, il lavoro attende il completamento di eventuali dipendenze tra i lavori. Il lavoro passa anche allo stato. RUNNABLE Infine, AWS Batch fornisce la capacità dell'istanza necessaria per eseguire il job e avvia queste istanze.

Ogni processo parallelo a più nodi contiene un nodo principale. Il nodo principale è una singola sottoattività che AWS Batch monitora per determinare l'esito del processo multinodo inviato. Il nodo principale viene avviato prima e passa allo stato STARTING. Il valore di timeout specificato nel attemptDurationSeconds parametro si applica all'intero processo e non ai nodi.

Quando il nodo principale raggiunge lo RUNNING stato dopo l'esecuzione del contenitore del nodo, i nodi secondari vengono avviati e anch'essi passano allo STARTING stato. I nodi figlio si presentano in ordine casuale. Non ci sono garanzie sui tempi e sull'ordine di avvio del nodo secondario. Per garantire che tutti i nodi dei job abbiano RUNNING lo stato dopo l'esecuzione del contenitore del nodo, il codice dell'applicazione può interrogare l' AWS Batch API per ottenere le informazioni sul nodo principale e sul nodo secondario. In alternativa, il codice dell'applicazione può attendere che tutti i nodi siano online prima di avviare qualsiasi attività di elaborazione distribuita. L'indirizzo IP privato del nodo principale è disponibile come la variabile d'ambiente AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS in ogni nodo figlio. Il tuo codice dell'applicazione può utilizzare queste informazioni per coordinare e comunicare i dati tra ciascuna operazione.

Quando i nodi singoli escono, passano allo stato SUCCEEDED o FAILED, a seconda del loro codice di uscita. Se il nodo principale esce, il processo viene considerato completo e tutti i nodi figlio vengono arrestati. Se un nodo figlio muore, AWS Batch non esegue alcuna azione sugli altri nodi del job. Se non vuoi che il tuo lavoro continui con un numero ridotto di nodi, devi tenerne conto nel codice dell'applicazione. In questo modo si interrompe o si annulla il lavoro.

Considerazioni sull'ambiente di calcolo

Durante la configurazione di ambienti di calcolo per eseguire processi paralleli a più nodi con AWS Batch, è necessario tenere presenti diversi aspetti.

  • I lavori paralleli multinodo non sono supportati negli ambienti di UNMANAGED elaborazione.

  • Se desideri inviare lavori paralleli multinodo a un ambiente di elaborazione, crea un gruppo di posizionamento del cluster in una singola zona di disponibilità e associalo alle tue risorse di elaborazione. In questo modo i processi paralleli multinodo su un raggruppamento logico di istanze restano vicini con un elevato potenziale di flusso di rete. Per ulteriori informazioni, consulta Gruppi di collocamento nella Guida per l'utente di Amazon EC2.

  • I lavori paralleli multinodo non sono supportati negli ambienti di elaborazione che utilizzano istanze Spot.

  • AWS Batch i lavori paralleli a più nodi utilizzano la modalità di awsvpc rete Amazon ECS, che offre ai contenitori di lavori paralleli multinodo le stesse proprietà di rete delle istanze Amazon EC2. Ogni container di processo parallelo a più nodi ottiene la propria interfaccia di rete elastica, un indirizzo IP primario privato e un nome host DNS interno. L'interfaccia di rete viene creata nella stessa sottorete VPC della risorsa di calcolo host. A questa vengono applicati anche tutti i gruppi di sicurezza applicati alle risorse di calcolo. Per ulteriori informazioni, consulta Task Networking with the awsvpc Network Mode nella Amazon Elastic Container Service Developer Guide.

  • Il tuo ambiente di elaborazione potrebbe non avere più di cinque gruppi di sicurezza associati.

  • La modalità awsvpc di rete non fornisce le interfacce di rete elastiche per lavori paralleli a più nodi con indirizzi IP pubblici. Per accedere a Internet, le risorse di calcolo devono essere avviate in una sottorete privata configurata per l'utilizzo di un gateway NAT. Per ulteriori informazioni, consulta Gateway NAT nella Guida per l'utente di Amazon VPC. Le comunicazioni tra nodi devono utilizzare l'indirizzo IP privato o il nome host DNS per il nodo. I lavori paralleli multinodo eseguiti su risorse di calcolo all'interno di sottoreti pubbliche non hanno accesso alla rete in uscita. Per creare un VPC con sottoreti private e un gateway NAT, consulta Creazione di un cloud privato virtuale .

  • Le interfacce di rete elastiche create e collegate alle risorse di calcolo non possono essere scollegate manualmente o modificate dal tuo account. Questo serve a prevenire l'eliminazione accidentale di un'interfaccia elastica di rete associata a un processo in esecuzione. Per rilasciare le interfacce di rete elastiche per un'attività, interrompere il processo.

  • Il tuo ambiente di calcolo deve disporre di un numero massimo sufficiente di vCPU per supportare il processo parallelo a più nodi.

  • La quota di istanze Amazon EC2 include il numero di istanze necessarie per eseguire il processo. Ad esempio, supponiamo che il tuo processo richieda 30 istanze, ma che il tuo account possa eseguire solo 20 istanze in una regione. Quindi, il tuo lavoro rimarrà bloccato. RUNNABLE

  • Se si specifica un tipo di istanza per un gruppo di nodi in un processo parallelo a più nodi, l'ambiente di calcolo deve avviare quel tipo di istanza.