Eseguire carichi di lavoro intrinsecamente paralleli con Batch

Azure Batch è un servizio di piattaforma per eseguire in modo efficiente applicazioni parallele e HPC (High Performance Computing) su larga scala nel cloud. Azure Batch pianifica l'esecuzione del lavoro a elevato utilizzo di calcolo su una raccolta gestita di macchine virtuali e può ridimensionare automaticamente le risorse di calcolo in base alle esigenze dei processi.

Con Azure Batch, è possibile definire facilmente le risorse di calcolo di Azure per eseguire le applicazioni in parallelo e su larga scala. Non è necessario creare, configurare e gestire manualmente un cluster HPC, singole macchine virtuali, reti virtuali o un'infrastruttura complessa di pianificazione di processi e attività. Azure Batch automatizza o semplifica queste attività.

Casi d'uso di Batch

Batch è un servizio gestito di Azure usato per l'elaborazione batch o batch computing, ovvero l'esecuzione di un volume elevato di attività simili per un risultato previsto. Il batch computing viene in genere usato dalle aziende che devono elaborare, trasformare e analizzare regolarmente volumi di dati di grandi dimensioni.

Batch funziona bene con applicazioni e carichi di lavoro intrinsecamente paralleli, a volte definiti "imbarazzantemente paralleli", che possono essere suddivisi facilmente in più attività ed eseguiti contemporaneamente in più computer.

Attività parallele

Di seguito sono riportati alcuni esempi di carichi di lavoro in genere elaborati con questa tecnica:

  • Modellazione dei rischi finanziari
  • Analisi dei dati climatici e idrologici
  • Rendering, analisi ed elaborazione di immagini
  • Codifica e transcodifica multimediale
  • Analisi delle sequenze genetiche
  • Analisi delle sollecitazioni in fase di progettazione
  • Test di software

Batch può anche eseguire calcoli paralleli con un passaggio di riduzione alla fine e carichi di lavoro HPC più complessi, ad esempio applicazioni MPI (Message Passing Interface) .

Per un confronto tra Batch e altre soluzioni HPC in Azure, vedere Soluzioni Batch e HPC nel cloud di Azure.

Prezzi

Azure Batch è un servizio gratuito. Non vengono effettuati addebiti per l'account Batch in sé. Vengono addebitati i costi per le risorse di calcolo di Azure sottostanti utilizzate dalle soluzioni Batch e per le risorse utilizzate da altri servizi durante l'esecuzione dei carichi di lavoro. Vengono ad esempio addebitati i costi per i nodi di calcolo (VM) nei pool e per i dati archiviati in Archiviazione di Azure come input o output per le attività. Analogamente, se si usa la funzionalità dei pacchetti dell'applicazione di Batch, vengono addebitati i costi per le risorse di Archiviazione di Azure usate per archiviare i pacchetti dell'applicazione. Per altre informazioni, vedere Prezzi di Batch.

Con le macchine virtuali a bassa priorità è possibile ridurre significativamente i costi dei carichi di lavoro di Azure Batch. Per informazioni sui prezzi per le macchine virtuali a bassa priorità, vedere Prezzi di Batch.

Scenario: scalabilità orizzontale di un carico di lavoro parallelo

Una soluzione comune che usa le API Batch per interagire con il servizio Batch comporta l'aumento del numero di istanze di lavoro intrinsecamente parallelo, ad esempio nel rendering di immagini per scene 3D, in un pool di nodi di calcolo. Il pool di nodi di calcolo può essere usato, ad esempio, come una "farm di rendering" che può fornire fino a migliaia di core per il processo di rendering.

Il diagramma seguente mostra un normale flusso di lavoro di Batch con un'applicazione client o un servizio ospitato che usa Batch per l'esecuzione di un carico di lavoro parallelo.

Flusso di lavoro della soluzione Batch

In questo scenario comune l'applicazione o il servizio elabora un carico di lavoro di calcolo in Azure Batch, seguendo questa procedura:

  1. Caricare i file di input e l'applicazione che elaborerà i file nell'account di archiviazione di Azure. I file di input elaborati dall'applicazione possono essere, ad esempio, dati di modellazione finanziaria o file video da transcodificare. L'applicazione può essere una qualsiasi applicazione usata per l'elaborazione dei dati, ad esempio un'applicazione per il rendering 3D o un transcodificatore di file multimediali.
  2. Creare un pool di nodi di calcolo di Batch nell'account Batch. Questi nodi sono le macchine virtuali che eseguiranno le attività. Specificare le proprietà, ad esempio le dimensioni dei nodi, il sistema operativo e il percorso in Archiviazione di Azure dell'applicazione da installare quando i nodi vengono aggiunti al pool. Si tratta dell'applicazione caricata nel passaggio 1. È anche possibile configurare il pool per la scalabilità automatica in risposta al carico di lavoro generato dalle attività. La scalabilità automatica adegua in modo dinamico il numero di nodi di calcolo nel pool.
  3. Creare un processo di Batch per eseguire il carico di lavoro nel pool di nodi di calcolo. Quando si crea un processo, lo si associa a un pool di Batch.
  4. Aggiungere attività al processo. Quando si aggiungono attività a un processo, il servizio Batch pianifica automaticamente le attività per l'esecuzione nei nodi di calcolo del pool. Ogni attività usa l'applicazione caricata per elaborare i file di input.

    • 4a. Prima dell'esecuzione, l'attività può scaricare i dati, ovvero i file di input, che dovrà elaborare nel nodo di calcolo a cui è assegnata. Se l'applicazione non è già installata nel nodo, come indicato nel passaggio 2, è possibile scaricarla a questo punto. Al termine del download le attività vengono eseguite nei nodi a cui sono assegnate.
  5. Durante l'esecuzione delle attività è possibile eseguire query sul servizio Batch per monitorare lo stato del processo e le relative attività. L'applicazione o il servizio client comunica con il servizio Batch tramite HTTPS. Poiché è possibile che si monitorino migliaia di attività in esecuzione in migliaia di nodi di calcolo, assicurarsi di effettuare una query del servizio Batch in modo efficiente.
  6. Man mano che vengono completate, le attività possono caricare i dati dei risultati in Archiviazione di Azure. È anche possibile recuperare i file direttamente dal file system in un nodo di calcolo.
  7. Quando il monitoraggio rileva che sono state completate le attività nel processo, l'applicazione o il servizio client può scaricare i dati di output per una seconda elaborazione o valutazione.

Tenere presente che questo è soltanto uno dei modi in cui è possibile usare Batch e che questo scenario descrive solo alcune delle funzionalità disponibili. È ad esempio possibile eseguire più attività in parallelo in ogni nodo di calcolo, nonché usare attività di preparazione e completamento di processi per preparare i nodi per i processi e quindi eseguire la pulizia in un secondo momento.

Passaggi successivi

Ora che è stata esaminata una panoramica generale del servizio Batch è necessario un approfondimento per imparare a usare il servizio per l'elaborazione di carichi di lavoro paralleli a elevato utilizzo di calcolo.