Domande frequenti AWS Batch

Informazioni generali

AWS Batch è un set di funzionalità di gestione dei batch che consente a sviluppatori, ricercatori e ingegneri di eseguire in maniera semplice ed efficace centinaia di migliaia di processi di elaborazione in batch su AWS. AWS Batch esegue il provisioning dinamico della quantità e dei tipi di risorse di calcolo ottimali (ad esempio, CPU o risorse di calcolo ottimizzate per la memoria) in base al volume e ai requisiti specifici di risorse per le attività in batch inviate. Con AWS Batch, non c'è bisogno di installare e gestire software di elaborazione in batch o cluster di server e questo ti consente invece di concentrarti sull'analisi dei risultati e la risoluzione di problemi. Batch AWS pianifica, programma ed esegue carichi di lavoro di elaborazione in batch tramite Amazon ECS, Amazon EKS e AWS Fargate con la possibilità di utilizzare le istanze spot.

L'elaborazione in batch è l'esecuzione di una serie di programmi ("attività") su uno o più computer senza interventi manuali. I parametri di input sono predefiniti tramite script, argomenti a riga di comando, file di controllo o linguaggi di controllo delle attività. Una determinata attività in batch può dipendere dal completamento delle attività precedenti oppure dalla disponibilità di determinati input, il che rende fondamentale il sequenziamento e la programmazione di più attività, nonché incompatibile con l'elaborazione interattiva.

  • Può permettere di posticipare il momento dell'elaborazione delle attività a periodi in cui è disponibile una capacità maggiore o meno costosa.
  • Evita l'inattività delle risorse di calcolo a causa di frequenti interventi manuali e supervisione.
  • Aumenta l'efficienza promuovendo un maggiore utilizzo delle risorse di calcolo.
  • Consente la prioritizzazione delle attività, allineando l'allocazione delle risorse agli obiettivi di business.

Devi eseguire le attività in Fargate quando desideri che AWS Batch gestisca il provisioning dei calcoli in modo completamente astratto dall'infrastruttura ECS. Devi eseguire le attività in ECS se desideri accedere a particolari configurazioni dell'istanza (particolari processori, GPU o architettura) o per carichi di lavoro su scala molto ampia. Se hai scelto Kubernetes come tecnologia di orchestrazione dei container, puoi standardizzare i tuoi carichi di lavoro batch utilizzando l'integrazione Batch con EKS.

A seconda del caso d'uso, attualmente le attività Fargate inizieranno più rapidamente nel caso di scalabilità orizzontale iniziale del lavoro, in quanto non esiste alcuna necessità di attendere l'avvio dell'istanza o dei pod EC2. Per carichi di lavoro più grandi, tuttavia, EKS o ECS potrebbero essere più rapidi, in quanto Batch riutilizza le istanze e le immagini del container per eseguire le attività successive.

Devi eseguire le attività in Fargate quando desideri che AWS Batch gestisca il provisioning dei calcoli in modo completamente astratto dall'infrastruttura EC2. Devi eseguire i processi in EC2 se desideri accedere a particolari configurazioni dell'istanza (particolari processori, GPU o architettura) o per carichi di lavoro su scala molto ampia.

In base al caso di utilizzo, le attività possono iniziare più rapidamente utilizzando EC2 o Fargate. Le attività Fargate inizieranno più rapidamente nel caso di scalabilità orizzontale iniziale del lavoro, in quanto non esiste alcuna necessità di attendere l'avvio dell'istanza EC2. Per carichi di lavoro più grandi, tuttavia, le istanze EC2 potrebbero essere più rapide, in quanto Batch riutilizza le istanze e le immagini del contenitore per eseguire i processi successivi.

Sì. Puoi impostare i CE Fargate in modo da avere una vCPU massima, che corrisponde alla quantità totale di vCPU di tutte le attività attualmente in esecuzione in quel CE. Quando il conteggio della vCPU raggiunge la vCPU massima in un CE, Batch inizierà a programmare le attività nel CE Fargate successivo, nell'ordine collegato alla coda, se esistente. Questa operazione è utile, ad esempio, se vuoi impostare un CE Fargate su un requisito aziendale minimo ed eseguire il resto del carico di lavoro su Fargate Spot.

Quando si imposta un CE Fargate Spot come primo, seguito da un CE Fargate, Batch passerà a Fargate solo quando la vCPU utilizzata dalle attività è maggiore della vCPU massima per quel CE. Nel caso in cui Fargate Spot venga disattivato, la vCPU massima non verrà raggiunta e Batch non richiederà le risorse Fargate nel CE successivo per gestire le attività.

Non è consentito collegare una coda di attività AWS Batch su un CE Fargate/Fargate Spot e un CE EC2 o Spot.

Perché AWS Batch

AWS Batch gestisce l'esecuzione delle attività e delle risorse di calcolo, consentendoti di concentrarti sullo sviluppo di applicazioni o l'analisi dei risultati, anziché sulla configurazione e gestione dell'infrastruttura. Se stai pensando di eseguire o trasferire carichi di lavoro in batch in AWS, dovresti prendere in considerazione l'utilizzo di AWS Batch.

AWS Batch è ottimizzato per l'elaborazione in batch e le applicazioni che permettono di scalare mediante l'esecuzione di molteplici attività in parallelo. Apprendimento profondo, analisi genomica, modelli di rischi finanziari, simulazioni Monte Carlo, rendering delle animazioni, transcodifica dei media, elaborazione immagini e simulazioni ingegneristiche sono tutti ottimi esempi di applicazioni di elaborazione in batch.

Processi multi-container

È consigliabile utilizzare la funzionalità di processi multi-container se si desidera modellare il carico di lavoro in Batch AWS come se fosse un insieme di elementi logicamente distinti; come, ad esempio, l'ambiente di simulazione e il sistema in prova (SUT), l'applicazione principale o la sidecar di telemetria. L'utilizzo di questa funzionalità semplifica le operazioni, facilita il rispetto delle migliori pratiche architettoniche econsente di allineare le simulazioni all'architettura multi-container del tuo Sistema di Sistemi (SoS) in produzione. Non è più necessario ormai combinare tutti gli elementi del carico di lavoro in un container monolitico e ricostruirlo dopo ogni modifica del codice; non importa se si desidera eseguire container separati per i SUT e l'ambiente di simulazione o se si ha bisogno di aggiungere un sidecar ausiliario. Il risultato è una semplificazione del DevOps, un container piccolo e veloce da scaricare e una facilitazione della parallelizzazione del lavoro.

Batch AWS supporta l'esecuzione di più container su tutti i tipi di processi, tra cui quelli standard a nodo singolo, quelli ad array e quelli paralleli multi-nodo (MNP).

Puoi eseguire processi multi-container in tutti gli ambienti di calcolo di Batch AWS, inclusi Amazon ECS, Amazon EC2, AWS Fargate e Amazon EKS.

Funzionalità

Batch AWS gestisce gli ambienti di calcolo e le code di attività, permettendo di eseguire con facilità migliaia di attività di qualsiasi scala, utilizzando Amazon ECS, Amazon EKS e AWS Fargate con la possibilità di scegliere tra risorse spot e on-demand. Basta definire e inoltrare le tue attività in batch in una coda. In risposta, AWS Batch sceglie dove eseguire le attività, lanciando capacità AWS aggiuntiva, se necessario. AWS Batch monitora l'avanzamento dei processi. Quando la capacità non è più necessaria, AWS Batch la rimuove. Inoltre, AWS Batch offre la possibilità di inviare attività che fanno parte di una pipeline o di un flusso di lavoro, così puoi indicare eventuali interdipendenze esistenti tra le attività al momento dell'invio.

AWS Batch supporta qualsiasi processo che possa essere eseguito come container Docker. I requisiti di memoria e il numero di vCPU dipenderanno dal singolo processo.  

Una risorsa di calcolo AWS Batch è un'istanza EC2 o una risorsa di calcolo AWS Fargate.

Un ambiente di calcolo AWS Batch è una raccolta di risorse di calcolo su cui sono eseguite delle attività. AWS Batch supporta due tipi di ambienti di calcolo: gli ambienti di calcolo gestiti, con provisioning e gestione di AWS, e gli ambienti di calcolo non gestiti, con gestione da parte dei clienti. Gli ambienti di calcolo non gestiti forniscono un meccanismo per sfruttare risorse specializzate come glihost dedicati, le configurazioni di storage più grandi e Amazon EFS.

Una definizione di attività descrive il processo da eseguire, i parametri, le variabili ambientali, i requisiti di calcolo e altre informazioni utilizzate per ottimizzare l'esecuzione di un processo. Le definizioni attività sono definite prima dell'invio di un'attività e possono essere condivise con altri.

AWS Batch utilizza Amazon ECS per eseguire attività nei contenitori e, pertanto, richiede l'installazione dell'agente ECS sulle risorse di calcolo all'interno degli ambienti di calcolo di AWS Batch. L'agente ECS è preinstallato negli ambienti di calcolo gestiti.

Gli ambienti di calcolo di AWS Batch possono essere composti da istanze Spot EC2. Al momento della creazione di un ambiente di calcolo gestito, semplicemente specifica che vorresti utilizzare istanze Spot EC2 e indica la percentuale dei prezzi on demand che sei disposto a pagare e AWS Batch si occuperà di tutto il resto. Gli ambienti di calcolo non gestiti possono anche includere istanze spot lanciate dall'utente, comprese quelle lanciate da EC2 Spot Fleet.

Prezzi

Non sono previsti costi aggiuntivi per l'utilizzo di AWS Batch. I prezzi sono calcolati in base alle risorse AWS, ad esempio istanze EC2 o AWS Fargate, che vengono create per memorizzare e gestire le attività in batch.

Pianificazione GPU

Sì, puoi utilizzare Batch per specificare il numero e il tipo di acceleratori che i tuoi lavori richiedono come variabili di input della definizione di lavoro, insieme alle opzioni correnti di vCPU e memoria. AWS Batch ridimensiona le istanze adatte ai tuoi lavori in base agli acceleratori richiesti e isola gli acceleratori in base alle esigenze di ciascun lavoro, affinché solo i contenitori corretti possano accedervi.

L'uso di acceleratori con Batch ti consente di pianificare in modo dinamico e di eseguire il provisioning dei tuoi lavori in base alle loro esigenze di accelerazione; Batch assicura infatti che venga riservato il numero corretto di acceleratori a fronte dei lavori esistenti. Batch aumenta le istanze di elaborazione accelerata EC2 quando servono e le riduce al termine, consentendoti di concentrarti sulle tue applicazioni. Batch dispone dell'integrazione nativa con le istanze Spot EC2, vale a dire che i lavori accelerati possono sfruttare fino al 90% dei risparmi quando si utilizzano istanze di elaborazione accelerata.

Attualmente puoi utilizzare i GPU sulle istanze accelerate P e G.

Puoi specificare il numero e il tipo di acceleratori nella definizione del lavoro. Per specificare l'acceleratore, occorre descriverne il tipo (ad es. GPU, attualmente l'unico acceleratore supportato) e il numero di quel tipo che il lavoro richiede. Il tipo di acceleratore specificato deve essere presente in uno dei tipi di istanza specificati nel tuo ambiente informatico. Ad esempio, se al tuo lavoro servono 2 GPU, assicurati anche di avere specificato un'istanza di tipo P nel tuo ambiente informatico.

Dall'API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

Analogamente a quanto accade con vCPU e requisiti di memoria, puoi sovrascrivere il numero e il tipo degli acceleratori al momento dell'invio del lavoro.

Con il comportamento attuale, Batch evita di pianificare ove possibile i lavori che non richiedono accelerazione su istanze accelerate. Ciò avviene per evitare i casi in cui lavori di lunga durata occupano l'istanza con accelerazione senza sfruttare l'acceleratore, causando così un incremento dei costi. In alcuni rari casi, con prezzi Spot e istanze con accelerazione come tipi consentiti, è possibile che Batch stabilisca che un'istanza accelerata sia il metodo meno costoso per eseguire i lavori, a prescindere dalle esigenze di accelerazione.

Se si invia un lavoro a un CE che consente a Batch di avviare unicamente le istanze con accelerazione, Batch esegue i lavori su quelle istanze, a prescindere dalle loro esigenze di accelerazione.

Da questo momento in poi, le istanze di tipo p si avviano di default con l'AMI ECS ottimizzata per GPU. Questa AMI contiene librerie e runtime necessari per eseguire le applicazioni basate su GPU. Puoi sempre puntare a un'AMI personalizzata secondo esigenza durante la creazione di un CE.

Nozioni di base

Per iniziare, segui la Guida alle operazioni di base nella nostra documentazione.

Non è necessario effettuare il lancio manuale delle tue risorse di calcolo personali per iniziare. La console Web AWS Batch ti guida lungo il processo di creazione del tuo primo ambiente di calcolo e coda di attività, in modo da permetterti di inviare la tua prima attività. Le risorse all'interno del tuo ambiente di calcolo aumenteranno man mano che attività aggiuntive sono pronte per l'esecuzione e si ridurranno di pari passo con il diminuire del numero di attività eseguibili.