Microsoft HPC Pack

Completato

Per un maggior controllo dell'infrastruttura con prestazioni elevate o se si vogliono gestire sia le macchine virtuali locali che quelle nel cloud, è consigliabile usare Microsoft HPC Pack.

Nell'azienda di progettazione si vuole eseguire la migrazione di un'infrastruttura con prestazioni elevate dai data center locali in Azure. Poiché questi sistemi sono business critical, la migrazione deve essere eseguita gradualmente. È necessario assicurarsi che sia possibile rispondere tempestivamente alle richieste e gestire in modo flessibile le macchine virtuali durante la migrazione, quando sono presenti VM sia locali che nel cloud.

Questa unità illustra come HPC Pack è in grado di gestire l'infrastruttura HPC.

Che cos'è HPC Pack?

Durante la ricerca di una soluzione appropriata per l'organizzazione di progettazione sono stati presi in considerazione Azure Batch e le istanze HPC di Azure. Ma come procedere se si vuole avere il controllo completo della gestione e della pianificazione dei cluster di macchine virtuali? Cosa fare se si ha un investimento significativo nell'infrastruttura locale nel data center? HPC Pack offre una serie di programmi di installazione per Windows che consente di configurare il proprio piano di gestione e controllo, oltre a distribuzioni altamente flessibili dei nodi locali e cloud. Diversamente da Batch, basato esclusivamente sul cloud, HPC Pack offre la flessibilità necessaria per la distribuzione in locale e nel cloud. Usa un ibrido di entrambi per l'espansione nel cloud quando le riserve locali non sono sufficienti.

Diagram of HPC Pack hybrid.

HPC Pack è una versione del livello di controllo della gestione e della pianificazione di Batch, che offre controllo e responsabilità completi. La distribuzione di HPC Pack richiede Windows Server 2012 o versione successiva.

Pianificare HPC Pack

In genere, è necessario prepararsi per l'installazione di HPC Pack con una revisione completa dei requisiti. Sono necessari SQL Server e un controller Active Directory. È inoltre necessario pianificare una topologia. Quanti nodi head o di controllo devono esserci e quanti nodi di lavoro? È necessaria un'espansione in Azure? In tal caso, effettuare il provisioning preliminare dei nodi di Azure come parte del cluster. Le dimensioni dei computer principali che costituiscono il piano di controllo (nodi head e di controllo, SQL Server e controller di dominio Active Directory) variano a seconda delle dimensioni del cluster progettate.

Quando si installa HPC Pack, viene visualizzata un'utilità di pianificazione dei processi con supporto per i processi HPC e in parallelo. L'utilità di pianificazione viene visualizzata in Microsoft Message Passing Interface. HPC Pack è altamente integrato con Windows, quindi è possibile usare Visual Studio per il debug in parallelo. È possibile visualizzare tutti gli eventi dell'applicazione, della rete e del sistema operativo dai nodi di calcolo del cluster in un'unica vista del debugger.

HPC Pack offre anche un'utilità di pianificazione dei processi avanzata. È possibile eseguire rapidamente la distribuzione, anche in nodi non esclusivamente dedicati a HPC Pack, in nodi basati su Linux e in nodi di Azure. Ciò significa che è possibile usare la capacità di riserva all'interno del data center. HPC Pack costituisce una soluzione ideale per usare gli investimenti nell'infrastruttura esistenti e mantenere un controllo più discreto sul modo in cui viene diviso il lavoro, rispetto a quanto è possibile fare con Batch.

Usare una combinazione di tecnologie

Le opzioni prese in esame in questo modulo non si escludono a vicenda. È possibile usare le macchine virtuali serie H, esaminate nell'unità precedente, come possibili nodi di Azure in una configurazione HPC. Benché siano stati presi in esame casi d'uso ibridi per evidenziare le differenze con Batch, HPC Pack è flessibile. Consente distribuzioni esclusivamente locali e distribuzioni esclusivamente basate sul cloud. Questa flessibilità è utile quando si vuole un controllo più granulare rispetto a quello offerto da Batch.

Distribuzione e gestione di sistemi HPC

Orchestrazione di sistemi HPC

Uno dei concetti chiave del cloud computing è l'Orchestrazione. Il termine fa riferimento alla supervisione della distribuzione, dell'esecuzione e del monitoraggio di tutti i componenti di un'applicazione nel cluster.

Un agente di orchestrazione può eseguire anche altre attività, ad esempio la riparazione (gestione degli errori), il ridimensionamento e la registrazione. Gli agenti di orchestrazione come i ben noti Kubernetes o Mesos possono accedere direttamente alle risorse del cluster cloud tramite la virtualizzazione.

Distribuzione di sistemi HPC

Le distribuzioni HPC in Azure possono variare in base alle specifiche esigenze del carico di lavoro e al budget. Tutte le distribuzioni prevedono alcuni componenti standard, tra cui:

  • Azure Resource Manager: consente di distribuire applicazioni all'interno di cluster usando modelli o file di script.
  • Nodo head HPC: abilita la pianificazione di processi e carichi di lavoro nei nodi di lavoro. Si tratta di una macchina virtuale usata per gestire i cluster HPC.
  • Rete virtuale: consente di creare una rete isolata di cluster e risorse di archiviazione tramite connessioni sicure con VPN IPsec o ExpressRoute. È possibile integrare gli indirizzi IP e i server DNS esistenti nella rete e controllare in modo granulare il traffico tra le subnet.
  • Set di scalabilità di macchine virtuali: consente di effettuare il provisioning di macchine virtuali di cluster e include funzionalità per la scalabilità automatica, le distribuzioni multizona e il bilanciamento del carico. È possibile usare i set di scalabilità per eseguire diversi database, tra cui MongoDB, Cassandra e Hadoop.
  • Archiviazione: consente il montaggio di cluster di archiviazione permanente sotto forma di archiviazione BLOB, su disco, di file, ibrida o data lake.

Gestione delle distribuzioni HPC di Azure

Azure offre alcuni servizi nativi che semplificano la gestione delle distribuzioni HPC. Questi strumenti offrono flessibilità nella gestione e consentono di pianificare i carichi di lavoro in Azure e nelle risorse ibride.

  • Microsoft HPC Pack è un set di utilità per la configurazione e la gestione di cluster di macchine virtuali, il monitoraggio delle operazioni e la pianificazione dei carichi di lavoro. HPC Pack include funzionalità che consentono di eseguire la migrazione di carichi di lavoro locali o di continuare a operare con una distribuzione ibrida. L'utilità non esegue automaticamente il provisioning o la gestione di macchine virtuali o dell'infrastruttura di rete.
  • Azure CycleCloud è un'interfaccia per la propria utilità di pianificazione preferita. È possibile usare Azure CycleCloud con svariate soluzioni native e di terze parti, tra cui HPC Pack, Grid Engine, Slurm e Symphony. CycleCloud consente di gestire e orchestrare i carichi di lavoro, definire i controlli di accesso con Active Directory e personalizzare i criteri dei cluster.
  • Azure Batch è uno strumento gestito che è possibile usare per ridimensionare automaticamente le distribuzioni e impostare criteri per la pianificazione dei processi. Il servizio Azure Batch gestisce il provisioning, l'assegnazione, i runtime e il monitoraggio dei carichi di lavoro. Per usarlo è sufficiente caricare i carichi di lavoro e configurare il pool di macchine virtuali.

I carichi di lavoro HPC di Azure offrono Machine Learning, visualizzazione e rendering, tutti elementi che potenziano le applicazioni nel settore dei semiconduttori. Consentono l'integrazione semplice e resiliente nel cloud dei carichi di lavoro del settore petrolifero e del gas, nonché del sequenziamento genomico e della progettazione di semiconduttori basati sul cloud.

Procedure consigliate per le distribuzioni HPC di Azure

Le procedure consigliate seguenti consentono di ottenere le prestazioni e il valore previsti.

  • Ripartire le distribuzioni tra più servizi cloud: ripartire le distribuzioni di grandi dimensioni tra servizi cloud consente di evitare le limitazioni causate dal sovraccarico o semplicemente dall'uso di un unico servizio. Suddividendo la distribuzione in segmenti più piccoli, è possibile:

    • Arrestare le istanze inattive dopo il completamento del processo senza interrompere altri processi
    • Avviare e arrestare in modo flessibile i cluster di nodi
    • Trovare più facilmente nodi disponibili nei cluster
    • Usare più data center per garantire il ripristino di emergenza
  • Usare più account di archiviazione di Azure per le distribuzioni di nodi: come per la ripartizione delle distribuzioni tra più servizi, è consigliabile collegare a ogni distribuzione più account di archiviazione. Questo può offrire prestazioni migliori per le distribuzioni di grandi dimensioni, le applicazioni limitate da operazioni di input/output e le applicazioni personalizzate. Quando si configurano gli account di archiviazione, è opportuno usare un account per il provisioning dei nodi e un altro per lo spostamento dei dati di processi o attività, per garantire coerenza e bassa latenza.

  • Aumentare le istanze di nodi proxy in base alle dimensioni della distribuzione: i nodi proxy consentono la comunicazione tra i nodi head che operano in locale e i nodi di lavoro di Azure. Questi nodi vengono collegati automaticamente quando si distribuiscono i ruoli di lavoro in Azure. Se si eseguono processi di grandi dimensioni che richiedono tutte o più delle risorse fornite dai nodi proxy, è consigliabile aumentare il numero in esecuzione. L'aumento è particolarmente importante man mano che la distribuzione cresce.

  • Connettersi al nodo head con le utilità client di HPC:
    le utilità client di HPC Pack sono il metodo consigliato per la connessione al nodo head, in particolare se si eseguono processi di grandi dimensioni. È possibile installare queste utilità nelle workstation degli utenti e accedere in remoto al nodo head in base alle esigenze anziché utilizzare Servizi Desktop remoto. Sono particolarmente utili se molti utenti si connettono contemporaneamente.

Pianificazione delle attività

Un altro servizio HPC disponibile è la pianificazione delle attività. È possibile inviare il lavoro mediante l'utilità di pianificazione presente nell'applicazione, per un'esecuzione efficiente dei processi batch. In generale, gli scopi principali dell'utilità di pianificazione sono i seguenti:

  • Ridurre al minimo il tempo tra l'invio di un processo e il completamento. Nessun processo dovrebbe rimanere nella coda per lunghi periodi di tempo.
  • Ottimizzare l'utilizzo della CPU. In particolare, ridurre il tempo di inattività della CPU.
  • Ottimizzare la velocità effettiva dei processi, ovvero il numero di processi per unità di tempo.

Informazioni sulla pianificazione delle attività

Gli utenti inviano i processi batch non interattivi all'utilità di pianificazione. L'utilità di pianificazione archivia i processi batch, valuta le priorità e i requisiti in termini di risorse, quindi distribuisce i processi ai nodi di calcolo appropriati. Compongono la maggior parte dei cluster HPC (circa il 98%) e sono quelli che consumano più energia.

A differenza dei nodi di accesso e del relativo utilizzo interattivo, i nodi di calcolo non sono direttamente accessibili tramite SSH. L'utilità di pianificazione nel nodo di accesso funge da interfaccia tra il nodo di calcolo e l'utente. L'utente deve specificare l'applicazione all'interno di uno script di processo in funzione delle risorse di tempo e memoria.

Lo script di processo inviato tramite l'utilità di pianificazione aggiunge il processo a una coda di processi. In base alle risorse disponibili tra quelle necessarie per il processo, l'utilità di pianificazione stabilisce quando il processo deve lasciare la coda e in quali nodi di back-end (o parte di essi) sarà eseguito.

L'utente deve assicurarsi che le risorse richieste siano entro i limiti del sistema. Ad esempio:

  1. L'utilità di pianificazione termina il processo una volta esaurito il tempo allocato, anche se il processo richiederebbe più tempo.
  2. Se il processo richiede una quantità di memoria maggiore rispetto a quella disponibile nel sistema, resterà bloccato nella coda.

Diagram of User accessing the batch system.

Illustrazione

Supponendo che il sistema batch in uso sia costituito da sei nodi, l'utilità di pianificazione lo usa per inserire i nove processi nella coda nei nodi disponibili. L'obiettivo è eliminare le risorse sprecate, rappresentate nel diagramma seguente dalle aree vuote nei nodi senza alcun processo in esecuzione.

Pertanto, i processi potrebbero non essere distribuiti tra i nodi nello stesso ordine in cui sono stati inseriti nella coda. Il tempo e il numero di nodi necessari per l'esecuzione di un'attività determinano lo spazio occupato da un processo. L'utilità di pianificazione svolge una funzione di rotazione multidimensionale per riempire in modo uniforme i nodi del cluster, bilanciando i requisiti in termini di risorse di tutti i processi con le risorse disponibili nel cluster.

Diagram of Scheduler distribution of jobs onto nodes.

Algoritmi di pianificazione

Le strategie di base seguite dalle utilità di pianificazione per determinare il processo successivo da eseguire sono due. Le utilità di pianificazione moderne non si limitano esclusivamente a uno di questi algoritmi, ma ne usano una combinazione. Inoltre, esistono molti altri aspetti che un'utilità di pianificazione deve prendere in considerazione, ad esempio il carico corrente del sistema.

  • First Come, First Served I processi vengono eseguiti nello stesso ordine in cui sono stati inseriti nella coda. Il vantaggio è che ogni processo viene sicuramente eseguito. Un piccolo set di processi, tuttavia, potrebbe attendere un tempo eccessivamente lungo rispetto al tempo di esecuzione effettivo.

  • Shortest Job First In base al tempo di esecuzione dichiarato nello script del processo, l'utilità di pianificazione stima il tempo di esecuzione del processo. I processi vengono classificati nell'ordine crescente in base al tempo di esecuzione. Anche se i processi brevi verranno avviati dopo un breve periodo di attesa, i processi a esecuzione prolungata, o dichiarati come tali, potrebbero non essere mai avviati.

  • Backfilling: l'utilità di pianificazione mantiene il concetto di First Come, First Serve senza impedire l'esecuzione dei processi a esecuzione prolungata. L'utilità di pianificazione esegue il processo solo quando è possibile eseguire il primo processo nella coda. In caso contrario, esamina il resto della coda per verificare se è possibile eseguire un altro processo senza estendere il tempo di attesa del primo processo in coda. Se lo trova un processo che risponde a queste caratteristiche, l'utilità di pianificazione lo esegue. I processi di piccole dimensioni hanno in genere tempi di attesa in coda brevi.

Gestione del flusso di lavoro

  • Pipelining e automazione delle attività

    Le operazioni ripetute, ad esempio, l'utilizzo degli strumenti e le esecuzioni delle sequenze di attività dei processi software, possono essere organizzate in una pipeline. L'automazione può rendere più efficiente l'utilizzo generale del software e degli strumenti. Crea efficienza rendendo più veloce l'attività stessa e riducendo il carico di lavoro del knowledge worker per la gestione.

    L'automazione può ridurre la frequenza degli errori di un processo, eliminando la varianza nel modo in cui viene eseguito. Il pipelining con automazione di un'attività può aprire la strada ad ulteriori innovazioni del processo, ad esempio la parallelizzazione e la distribuzione cloud.

  • Strumenti per la gestione del flusso di lavoro

Usare Azure Batch

Usare Azure Batch per eseguire in modo efficiente processi batch paralleli e HPC (High Performance Computing) su larga scala in Azure. Azure Batch crea e gestisce un pool di nodi di calcolo (macchine virtuali), installa le applicazioni da eseguire e pianifica l'esecuzione dei processi nei nodi. Non è necessario installare, gestire o dimensionare cluster o software di pianificazione dei processi. Si usano invece API e strumenti Batch, script della riga di comando o il portale di Azure per configurare, gestire e monitorare i processi.

Per informazioni dettagliate su Azure Batch, incluse altre funzionalità e funzionamento, vedere Azure Batch.

Usare Azure CycleCloud

Azure CycleCloud è uno strumento semplice per le aziende per l'orchestrazione e la gestione di ambienti High Performance Computing (HPC) in Azure. Con CycleCloud, gli utenti possono pianificare l'infrastruttura per i sistemi HPC, distribuire utilità di pianificazione HPC con cui hanno già familiarità e ridimensionare automaticamente l'infrastruttura per eseguire i processi in modo efficiente su qualsiasi scala. Tramite CycleCloud, gli utenti possono creare diversi tipi di file system e montarli nei nodi del cluster di calcolo per supportare i carichi di lavoro HPC.

Per altre informazioni su Azure CycleCloud, vedere Azure CycleCloud.

Verificare le conoscenze

1.

Si sta tentando di consigliare all'organizzazione se scegliere Azure Batch o Microsoft HPC Pack. Quale potrebbe essere un fattore chiave nella scelta di HPC Pack?

2.

Si sta tentando di configurare una topologia HPC Pack, a partire dalle risorse locali. Quale versione di Windows Server è consigliabile usare per il nodo head?