HPC (High Performance Computing) in Azure

Introduzione all'HPC

HpC (High Performance Computing), detto anche big compute, usa un numero elevato di computer basati su CPU o GPU per risolvere attività matematiche complesse.

In molti settori ci si avvale dell'HPC per risolvere i problemi più difficili, che includono carichi di lavoro come:

  • Genomica
  • Simulazioni di petrolio e gas
  • Dati finanziari
  • Progettazione di semiconduttori
  • Ingegneria
  • Modellazione meteo

Quali sono le differenze dell'HPC sul cloud?

Una delle principali differenze tra un sistema HPC locale e una nel cloud è la possibilità di aggiungere e rimuovere in modo dinamico le risorse man mano che sono necessarie. La scalabilità dinamica rimuove il collo di bottiglia della capacità di calcolo e consente invece ai clienti di dimensionare correttamente l'infrastruttura per i loro requisiti.

Gli articoli seguenti contengono altri dettagli sulla scalabilità dinamica.

Elenco di controllo per l'implementazione

Quando si vuole implementare una soluzione HPC personalizzata in Azure, assicurarsi di aver esaminato gli argomenti seguenti:

  • Scegliere l'architettura appropriata in base ai requisiti
  • Identificare le opzioni di calcolo appropriate per uno specifico carico di lavoro
  • Identificare la soluzione di archiviazione che soddisfi specifiche esigenze
  • Decidere come gestire tutte le risorse
  • Ottimizzare l'applicazione per il cloud
  • Proteggere l'infrastruttura

Infrastruttura

Per creare un sistema HPC sono necessari molti componenti dell'infrastruttura. Calcolo, archiviazione e rete forniscono i componenti sottostanti, indipendentemente dal modo in cui si sceglie di gestire i carichi di lavoro HPC.

Calcolo

Azure offre una gamma di dimensioni ottimizzate sia per CPU che per Carichi di lavoro a elevato utilizzo di GPU.

Macchine virtuali basate su CPU

Macchine virtuali abilitate per GPU

Le VM serie N sono dotate di GPU con tecnologia NVIDIA progettate per applicazioni a elevato utilizzo di calcolo o di grafica, inclusi apprendimento e visualizzazione basati sull'intelligenza artificiale (AI).

Spazio di archiviazione

I carichi di lavoro Batch e HPC su larga scala hanno richieste di archiviazione dati e di accesso che superano le capacità dei tradizionali file system cloud. Esistono molte soluzioni che gestiscono sia la velocità che le esigenze di capacità delle applicazioni HPC in Azure:

Per altre informazioni sul confronto tra Lustre, GlusterFS e BeeGFS su Azure, consultare l'e-book Parallel Files Systems on Azure e il blog Lustre on Azure.

Rete

Le VM H16r, H16mr, A8, e A9 possono connettersi a una rete RDMA back-end a velocità effettiva elevata. Questa rete può migliorare le prestazioni delle applicazioni parallele strettamente associate in esecuzione in Microsoft Message Passing Interface meglio nota come MPI o Intel MPI.

Gestione

Fai da te

La creazione di un sistema HPC da zero su Azure offre una notevole flessibilità, ma è spesso molto intensivo per la manutenzione.

  1. Configurare un ambiente cluster personalizzato in macchine virtuali Azure o Virtual Machine Scale Sets.
  2. Utilizzare i modelli di Azure Resource Manager per distribuire gestori di carichi di lavoro, infrastruttura e applicazioni.
  3. Scegliere dimensioni delle VM basate su CPU e GPU che includano hardware specializzato e connessioni di rete specifiche per carichi di lavoro MPI o GPU.
  4. Aggiungere un'archiviazione ad alte prestazioni per carichi di lavoro con utilizzo intensivo di I/O.

Scalabilità Ibrida e nel Cloud

Se si dispone di un sistema HPC locale esistente che si vuole connettersi a Azure, sono disponibili diverse risorse per iniziare.

Esaminare prima di tutto l'articolo Options per la connessione di una rete locale a Azure nella documentazione. Da qui è possibile trovare informazioni aggiuntive su queste opzioni di connettività:

Dopo aver stabilito la connettività di rete, è possibile iniziare a usare le risorse di calcolo del cloud su richiesta con le funzionalità burst dell'attuale soluzione di gestione dei carichi di lavoro.

Soluzioni del Marketplace

Esistono molti gestori dei carichi di lavoro offerti nel Microsoft Marketplace.

Azure Batch

Azure Batch è un servizio di piattaforma per l'esecuzione efficiente di applicazioni parallele e HPC su larga scala nel cloud. Azure Batch pianifica operazioni a elevato utilizzo di calcolo da eseguire in un pool gestito di macchine virtuali e può ridimensionare automaticamente le risorse di calcolo per soddisfare le esigenze dei processi.

I provider o gli sviluppatori SaaS possono usare gli SDK e gli strumenti di Batch per integrare applicazioni HPC o carichi di lavoro dei contenitori con Azure, preparare i dati di staging per Azure e compilare pipeline di esecuzione dei processi.

In Azure Batch tutti i servizi sono in esecuzione nel cloud. L'immagine seguente mostra l'aspetto dell'architettura con Azure Batch, con le configurazioni di scalabilità e pianificazione dei processi in esecuzione nel cloud, mentre i risultati e i report possono essere inviati all'ambiente locale.

Diagram mostra un'architettura HPC di esempio per Azure Batch.

Azure CycleCloud

Azure CycleCloud Fornisce il modo più semplice per gestire i carichi di lavoro HPC usando qualsiasi utilità di pianificazione (ad esempio Slurm, Grid Engine, HPC Pack, HTCondor, LSF, PBS Pro o Symphony) in Azure

CycleCloud consente di:

  • Distribuire cluster completi e altre risorse, tra cui scheduler, VM di calcolo, archiviazione, rete e cache
  • Orchestrare processi, dati e flussi di lavoro sul cloud
  • Offrire agli amministratori il controllo completo su quali utenti possono eseguire i processi, dove e a quale costo
  • Personalizzare e ottimizzare i cluster tramite funzionalità avanzate di governance e criteri, inclusi i controlli dei costi, l'integrazione Active Directory, il monitoraggio e la creazione di report
  • Usare il pianificatore di processi e le applicazioni correnti senza modifiche
  • Sfruttare i vantaggi della scalabilità automatica predefinita e di architetture di riferimento convalidate per una vasta gamma di carichi di lavoro HPC e di settori
Modello ibrido di cloud bursting

In questo diagramma di esempio ibrido è possibile vedere chiaramente come questi servizi vengono distribuiti tra il cloud e l'ambiente locale. Avere l'opportunità di eseguire attività in entrambi i carichi di lavoro. Diagram mostra un'architettura HPC di esempio per CycleCloud in Azure in un ambiente ibrido.

Modello nativo del cloud

Il diagramma di esempio di modello nativo del cloud seguente illustra come il carico di lavoro nel cloud gestirà tutto mantenendo comunque la connessione all'ambiente locale.

Diagram mostra un'architettura HPC di esempio per CycleCloud in Azure nel modello nativo cloud.

Grafico di confronto

Feature Azure Batch Azure CycleCloud
Scheduler API e strumenti batch e script da riga di comando nel portale di Azure (Cloud Native). Usare utilità di pianificazione HPC standard, ad esempio Slurm, PBS Pro, LSF, Grid Engine e HTCondor o estendere i plug-in di scalabilità automatica CycleCloud per lavorare con un'utilità di pianificazione personalizzata.
Risorse di calcolo Nodi SaaS - PaaS Piattaforma distribuita come servizio : piattaforma distribuita come servizio
Strumenti di monitoraggio Azure Monitor Azure Monitor, Grafana
Personalizzazione Pool di immagini personalizzati, immagini di terze parti, accesso all'API Batch. Usare l'API RESTful completa per personalizzare ed estendere le funzionalità, distribuire un'utilità di pianificazione personalizzata e supportare i responsabili dei carichi di lavoro esistenti
Integrazione Data Factory in Microsoft Fabric, Azure Data Factory, Azure CLI Interfaccia a riga di comando integrata per Windows e Linux
Tipo di utente Gli sviluppatori Amministratori e utenti HPC classici
Tipo di lavoro Batch, flussi di lavoro Strettamente accoppiato (interfaccia per il passaggio di messaggi/MPI).
Supporto di Windows Varia a seconda della scelta del pianificatore

Gestori del carico di lavoro

Di seguito sono riportati esempi di gestori di cluster e carichi di lavoro che possono essere eseguiti nell'infrastruttura di Azure. Creare cluster autonomi in VMs di Azure o effettuare un burst a VMs di Azure da un cluster locale.

Contenitori

È anche possibile usare i contenitori per gestire alcuni carichi di lavoro HPC. I servizi come il Azure Kubernetes Service (AKS) semplificano la distribuzione di un cluster Kubernetes gestito in Azure.

Gestione costi

La gestione dei costi HPC su Azure può essere eseguita in diversi modi. Assicurarsi di aver esaminato le opzioni di acquisto Azure per trovare il metodo più adatto per l'organizzazione.

sicurezza

Per una panoramica delle procedure consigliate per la sicurezza in Azure, vedere la documentazione sulla sicurezza di Azure.

Oltre alle configurazioni di rete disponibili nella sezione Cloud Bursting , è possibile implementare una configurazione hub/spoke per isolare le risorse di calcolo:

Applicazioni HPC

Eseguire applicazioni HPC personalizzate o commerciali in Azure. Per alcuni esempi in questa sezione è disponibile un benchmark per una scalabilità efficiente con altre VM o core di calcolo. Visitare Microsoft Marketplace per soluzioni pronte per la distribuzione.

Annotazioni

Verificare le licenze del fornitore di qualsiasi applicazione commerciale o altre restrizioni per l'esecuzione nel cloud. Non tutti i fornitori offrono licenze con pagamento in base al consumo. Può essere necessario un server di gestione licenze nel cloud per la soluzione o connettersi a un server licenze locale.

Applicazioni tecniche

Grafica e rendering

AI e apprendimento avanzato

Provider di MPI

Visualizzazione remota

Eseguire macchine virtuali basate su GPU in Azure nella stessa regione dell'output HPC per ottenere la minore latenza e migliorare l'accesso, e per visualizzare in remoto tramite Azure Virtual Desktop.

Parametri di prestazione

Altre informazioni importanti

  • Assicurarsi che la quota di CPU virtuali sia stata aumentata prima di provare a eseguire carichi di lavoro su larga scala.

Passaggi successivi

Per gli annunci più recenti, vedere le risorse seguenti:

Esempi di Batch Microsoft

Queste esercitazioni forniscono informazioni dettagliate sull'esecuzione di applicazioni in Microsoft Batch: