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 multinodo per eseguire singoli processi che si estendono su più istanze AmazonEC2. Con i processi paralleli a AWS Batch più nodi (noti anche come pianificazione di gruppo), puoi eseguire applicazioni di elaborazione su larga scala e ad alte prestazioni e addestrare GPU modelli 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 EC2 istanza Amazon 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' AWS Batch DescribeJobsAPIoperazione. 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'IPv4indirizzo privato del nodo principale del lavoro. 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, ad esempio 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 ECS cluster Amazon. 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, effettua il AWS Batch provisioning della 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 lo stesso RUNNING stato dopo l'esecuzione del contenitore del nodo, il codice dell'applicazione può eseguire una query AWS Batch API per ottenere informazioni sul nodo principale e sul nodo figlio. 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 Placement Groups nella Amazon EC2 User Guide.

  • 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 ECS awsvpc rete Amazon, che offre ai contenitori di lavori paralleli multinodo le stesse proprietà di rete delle istanze AmazonEC2. Ogni container di job parallelo multinodo ottiene la propria interfaccia di rete elastica, un indirizzo IP privato primario e un nome DNS host interno. L'interfaccia di rete viene creata nella stessa VPC sottorete della risorsa di elaborazione 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 elaborazione devono essere avviate in una sottorete privata configurata per utilizzare un gateway. NAT Per ulteriori informazioni, consulta NATGateways nella Amazon VPC User Guide. La comunicazione tra nodi deve utilizzare l'indirizzo IP o il DNS nome host privato del 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 gateway VPC con sottoreti private, vedi. NAT Creazione di un cloud privato virtuale

  • Le interfacce di rete elastiche create e collegate alle tue 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.

  • L'ambiente di elaborazione deve avere una quantità massima sufficiente vCPUs per supportare il processo parallelo multinodo.

  • La quota di EC2 istanze Amazon 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.