

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
<a name="multi-node-parallel-jobs"></a>

Puoi utilizzare processi paralleli a più nodi per eseguire singoli processi che si estendono su più istanze Amazon EC2. 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 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 lavori paralleli multinodo vengono inviati come processo singolo. 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. Dopo che il nodo principale è attivo, i nodi secondari vengono avviati 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](mnp-node-groups.md).

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 job, descrivi *aws\$1batch\$1job\$1id* \$11 utilizzando l'operazione AWS Batch [DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)API. 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.

**Topics**
+ [Variabili di ambiente](mnp-env-vars.md)
+ [Gruppi di nodi](mnp-node-groups.md)
+ [Ciclo di vita del lavoro per i lavori MNP](job-lifecycle.md)
+ [Considerazioni sull'ambiente di calcolo per MNP con AWS Batch](mnp-ce.md)

# Variabili di ambiente
<a name="mnp-env-vars"></a>

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' IPv4 indirizzo 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
<a name="mnp-node-groups"></a>

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 di`AWS_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](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

**Nota**  
Attualmente tutti i gruppi di nodi in un processo parallelo multinodo devono utilizzare lo stesso tipo di istanza.

# Ciclo di vita del lavoro per i lavori MNP
<a name="job-lifecycle"></a>

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 per MNP con AWS Batch
<a name="mnp-ce"></a>

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) 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. 
+ Il tuo ambiente di elaborazione potrebbe non avere più di cinque gruppi di sicurezza associati. Le interfacce di rete elastiche create e collegate a un'attività MNP utilizzeranno i gruppi di sicurezza specificati nell'ambiente di calcolo. Se non si specifica un gruppo di sicurezza, viene utilizzato il gruppo di sicurezza predefinito per il VPC.
+ 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](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) nella *Guida per l'utente di Amazon VPC*. La comunicazione tra nodi deve utilizzare l'indirizzo IP privato o il nome host DNS 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 VPC con sottoreti private e un gateway NAT, consulta [Crea un cloud privato virtuale](create-public-private-vpc.md).
+ 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.
+ L'ambiente di elaborazione deve avere un valore massimo di v sufficiente CPUs per supportare il processo parallelo multinodo.
+ 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.