Eseguire carichi di lavoro intrinsecamente paralleli con BatchRun intrinsically parallel workloads with 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 is a platform service for running large-scale parallel and high-performance computing (HPC) applications efficiently in the 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.Azure Batch schedules compute-intensive work to run on a managed collection of virtual machines, and can automatically scale compute resources to meet the needs of your jobs.

Con Azure Batch, è possibile definire facilmente le risorse di calcolo di Azure per eseguire le applicazioni in parallelo e su larga scala.With Azure Batch, you can easily define Azure compute resources to execute your applications in parallel, and at scale. 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à.There's no need to manually create, configure, and manage an HPC cluster, individual virtual machines, virtual networks, or a complex job and task scheduling infrastructure. Azure Batch automatizza o semplifica queste attività.Azure Batch automates or simplifies these tasks for you.

Casi d'uso di BatchUse cases for 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.Batch is a managed Azure service that is used for batch processing or batch computing--running a large volume of similar tasks for a desired result. Il batch computing viene in genere usato dalle aziende che devono elaborare, trasformare e analizzare regolarmente volumi di dati di grandi dimensioni.Batch computing is most commonly used by organizations that regularly process, transform, and analyze large volumes of data.

Batch funziona bene con applicazioni e carichi di lavoro intrinsecamente paralleli, a volte definiti "imbarazzantemente paralleli",Batch works well with intrinsically parallel (also known as "embarrassingly parallel") applications and workloads. che possono essere suddivisi facilmente in più attività ed eseguiti contemporaneamente in più computer.Intrinsically parallel workloads are those that are easily split into multiple tasks that perform work simultaneously on many computers.

Attività parallele

Di seguito sono riportati alcuni esempi di carichi di lavoro in genere elaborati con questa tecnica:Some examples of workloads that are commonly processed using this technique are:

  • Modellazione dei rischi finanziariFinancial risk modeling
  • Analisi dei dati climatici e idrologiciClimate and hydrology data analysis
  • Rendering, analisi ed elaborazione di immaginiImage rendering, analysis, and processing
  • Codifica e transcodifica multimedialeMedia encoding and transcoding
  • Analisi delle sequenze geneticheGenetic sequence analysis
  • Analisi delle sollecitazioni in fase di progettazioneEngineering stress analysis
  • Test di softwareSoftware testing

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) .Batch can also perform parallel calculations with a reduce step at the end, and execute more complex HPC workloads such as Message Passing Interface (MPI) applications.

Per un confronto tra Batch e altre soluzioni HPC in Azure, vedere HPC, Batch, and Big Compute solutions (Soluzioni HPC, Batch e Big Compute).For a comparison between Batch and other HPC solution options in Azure, see HPC, Batch, and Big Compute solutions.

PrezziPricing

Azure Batch è un servizio gratuito. Non vengono effettuati addebiti per l'account Batch in sé.Azure Batch is a free service; you aren't charged for the Batch account itself. 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.You are charged for the underlying Azure compute resources that your Batch solutions consume, and for the resources consumed by other services when your workloads run. 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à.For example, you are charged for the compute nodes (VMs) in your pools and for the data you store in Azure Storage as input or output for your tasks. 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.Similarly, if you use the application packages feature of Batch, you are charged for the Azure Storage resources used for storing your application packages. Per altre informazioni, vedere Prezzi di Batch.See Batch pricing for more information.

Con le macchine virtuali a bassa priorità è possibile ridurre significativamente i costi dei carichi di lavoro di Azure Batch.Low-priority VMs can significantly reduce the cost of Batch workloads. Per informazioni sui prezzi per le macchine virtuali a bassa priorità, vedere Prezzi di Batch.For information about pricing for low-priority VMs, see Batch Pricing.

Scenario: scalabilità orizzontale di un carico di lavoro paralleloScenario: Scale out a parallel workload

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.A common solution that uses the Batch APIs to interact with the Batch service involves scaling out intrinsically parallel work--such as the rendering of images for 3D scenes--on a pool of compute nodes. 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.This pool of compute nodes can be your "render farm" that provides tens, hundreds, or even thousands of cores to your rendering job, for example.

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.The following diagram shows a common Batch workflow, with a client application or hosted service using Batch to run a parallel workload.

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:In this common scenario, your application or service processes a computational workload in Azure Batch by performing the following steps:

  1. Caricare i file di input e l'applicazione che elaborerà i file nell'account di archiviazione di Azure.Upload the input files and the application that will process those files to your Azure Storage account. I file di input elaborati dall'applicazione possono essere, ad esempio, dati di modellazione finanziaria o file video da transcodificare.The input files can be any data that your application will process, such as financial modeling data, or video files to be transcoded. 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.The application files can be any application that is used for processing the data, such as a 3D rendering application or media transcoder.
  2. Creare un pool di nodi di calcolo di Batch nell'account Batch. Questi nodi sono le macchine virtuali che eseguiranno le attività.Create a Batch pool of compute nodes in your Batch account--these nodes are the virtual machines that will execute your tasks. 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.You specify properties such as the node size, their operating system, and the location in Azure Storage of the application to install when the nodes join the pool (the application that you uploaded in step #1). È anche possibile configurare il pool per la scalabilità automatica in risposta al carico di lavoro generato dalle attività.You can also configure the pool to automatically scale in response to the workload that your tasks generate. La scalabilità automatica adegua in modo dinamico il numero di nodi di calcolo nel pool.Auto-scaling dynamically adjusts the number of compute nodes in the pool.
  3. Creare un processo di Batch per eseguire il carico di lavoro nel pool di nodi di calcolo.Create a Batch job to run the workload on the pool of compute nodes. Quando si crea un processo, lo si associa a un pool di Batch.When you create a job, you associate it with a Batch pool.
  4. Aggiungere attività al processo.Add tasks to the job. Quando si aggiungono attività a un processo, il servizio Batch pianifica automaticamente le attività per l'esecuzione nei nodi di calcolo del pool.When you add tasks to a job, the Batch service automatically schedules the tasks for execution on the compute nodes in the pool. Ogni attività usa l'applicazione caricata per elaborare i file di input.Each task uses the application that you uploaded to process the input files.

    • 4a.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.Before a task executes, it can download the data (the input files) that it is to process to the compute node it is assigned to. Se l'applicazione non è già installata nel nodo, come indicato nel passaggio 2, è possibile scaricarla a questo punto.If the application has not already been installed on the node (see step #2), it can be downloaded here instead. Al termine del download le attività vengono eseguite nei nodi a cui sono assegnate.When the downloads are complete, the tasks execute on their assigned nodes.
  5. Durante l'esecuzione delle attività è possibile eseguire query sul servizio Batch per monitorare lo stato del processo e le relative attività.As the tasks run, you can query Batch to monitor the progress of the job and its tasks. L'applicazione o il servizio client comunica con il servizio Batch tramite HTTPS.Your client application or service communicates with the Batch service over 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.Because you may be monitoring thousands of tasks running on thousands of compute nodes, be sure to query the Batch service efficiently.
  6. Man mano che vengono completate, le attività possono caricare i dati dei risultati in Archiviazione di Azure.As the tasks complete, they can upload their result data to Azure Storage. È anche possibile recuperare i file direttamente dal file system in un nodo di calcolo.You can also retrieve files directly from the file system on a compute node.
  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.When your monitoring detects that the tasks in your job have completed, your client application or service can download the output data for further processing or evaluation.

Tenere presente che questo è soltanto uno dei modi in cui è possibile usare Batch e che questo scenario descrive solo alcune delle funzionalità disponibili.Keep in mind this is just one way to use Batch, and this scenario describes only a few of its available features. È 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.For example, you can execute multiple tasks in parallel on each compute node, and you can use job preparation and completion tasks to prepare the nodes for your jobs, then clean up afterward.

Passaggi successiviNext steps

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.Now that you have a high-level overview of the Batch service, it's time to dig deeper to learn how you can use it to process your compute-intensive parallel workloads.

  • Vedere Panoramica sulle funzionalità di Batch per sviluppatoriper informazioni essenziali per chiunque si prepari all'uso di Batch.Read the Batch feature overview for developers, essential information for anyone preparing to use Batch. L'articolo contiene informazioni più dettagliate sulle risorse del servizio Batch, ad esempio pool, nodi, processi e attività, e sulle numerose funzionalità delle API che è possibile usare durante la compilazione dell'applicazione Batch.The article contains more detailed information about Batch service resources like pools, nodes, jobs, and tasks, and the many API features that you can use while building your Batch application.
  • Informazioni sulle API e gli strumenti di Batch disponibili per la compilazione di soluzioni Batch.Learn about the Batch APIs and tools available for building Batch solutions.
  • Introduzione alla libreria di Azure Batch per .NET .Get started with the Azure Batch library for .NET to learn how to use C# and the Batch .NET library to execute a simple workload using a common Batch workflow. È consigliabile leggere questo articolo nelle prime fasi dell'apprendimento dell'uso del servizio Batch.This article should be one of your first stops while learning how to use the Batch service. È anche disponibile una versione Python dell'esercitazione.There is also a Python version of the tutorial.
  • Scaricare gli esempi di codice in GitHub per vedere come C# e Python possono interfacciarsi con Batch per pianificare ed elaborare carichi di lavoro di esempio.Download the code samples on GitHub to see how both C# and Python can interface with Batch to schedule and process sample workloads.
  • Per conoscere le risorse disponibili per imparare a usare Batch, vedere il percorso di apprendimento per Batch.Check out the Batch Learning Path to get an idea of the resources available to you as you learn to work with Batch.