Molto tempo fa (almeno così si narra) qualcuno diceva che avremmo avuto bisogno solo di cinque computer per il mondo intero. È abbastanza facile sostenere che Azure, Amazon Web Services, Google Cloud Platform e simili siano tutte implementazioni di un cluster di calcolo estremamente scalabile, con ogni server e ogni data center che si sommano per creare un enorme computer su scala planetaria. In effetti, molte delle tecnologie che alimentano i nostri cloud sono state originariamente sviluppate per costruire ed eseguire supercomputer utilizzando hardware di base pronto all’uso.

Perché allora non sfruttare il cloud per costruire, distribuire ed eseguire sistemi HPC (high-performance computing) e farli funzionare solo per il tempo necessario per risolvere determinati problemi? I primi grandi casi di studio dei cloud pubblici si sono concentrati proprio su questa funzionalità e hanno mostrato un notevole risparmio sui costi senza la necessità di investire nello spazio, nell’archiviazione e nell’alimentazione di un data center.

Azure HPC

Le funzionalità HPC rimangono una caratteristica importante per Azure e altre piattaforme cloud, che non si basano più sull’hardware di base ma offrono istanze di calcolo incentrate sull’HPC e collaborano con i fornitori di HPC per offrire i loro strumenti come servizio, trattando l’HPC come un servizio dinamico che può essere lanciato rapidamente e facilmente adattandosi alle vostre esigenze.

Gli strumenti HPC di Azure possono essere considerati come un insieme di principi architetturali, incentrati sulla fornitura di ciò che Microsoft descrive come “grande calcolo”. In pratica state sfruttando la scalabilità di Azure per eseguire attività matematiche su larga scala. Alcune di queste attività potrebbero riguardare i big data, mentre altre potrebbero essere più focalizzate sull’elaborazione, utilizzando ad esempio un numero limitato di input per eseguire una simulazione. Tali attività includono la creazione di simulazioni basate sul tempo utilizzando la fluidodinamica computazionale o la creazione e l’esecuzione di una render farm per gli effetti speciali in computer grafica di un film.

Le funzionalità HPC di Azure hanno quindi lo scopo di rendere l’HPC disponibile a una classe più ampia di utenti, che potrebbero non aver bisogno di un supercomputer ma di un livello di elaborazione comunque più elevato rispetto a una workstation di progettazione o anche di un piccolo cluster di server. In questi casi non si ottiene però un sistema HPC chiavi in mano; sarà comunque necessario creare un’infrastruttura cluster Windows o Linux utilizzando macchine virtuali incentrate su HPC e una piattaforma di storage appropriata, nonché interconnessioni utilizzando le funzionalità di rete RDMA ad alta velocità di Azure.

Costruire un’architettura HPC nel cloud

Tecnologie come ARM e Bicep sono fondamentali per creare e mantenere un ambiente HPC. Non funziona però come per i servizi della piattaforma di Azure, poiché si è responsabili della maggior parte della propria manutenzione. Avere una base di infrastructure-as-code (IaC) per le vostre distribuzioni dovrebbe semplificare la gestione della vostra infrastruttura HPC come qualcosa che può essere costruito e smontato secondo necessità, con infrastrutture identiche ogni volta che distribuite il vostro servizio HPC.

Microsoft fornisce diversi tipi di VM per i carichi di lavoro HPC. La maggior parte delle applicazioni utilizza le macchine virtuali della serie H, ottimizzate per operazioni ad alta intensità di CPU, proprio come quelle che vi aspettereste da carichi di lavoro impegnativi dal punto di vista computazionale incentrati sulla simulazione e sulla modellazione. Sono macchine virtuali decisamente “pesanti”, con la serie HBv3 che offre fino a 120 core AMD e 448 GB di RAM; un singolo server costa 9,12 dollari l’ora per Windows o 3,60 dollari l’ora per Ubuntu. Una rete Nvidia InfiniBand aiuta a creare un cluster a bassa latenza per lo scaling. Altre opzioni offrono hardware meno recente a un costo inferiore, mentre le macchine virtuali serie HC e H più piccole utilizzano processori Intel come alternativa ad AMD. Se è necessario aggiungere delle GPU a un cluster, alcune macchine virtuali della serie N offrono connessioni InfiniBand per creare un cluster ibrido di CPU e GPU.

hpc

È importante notare che non tutte le macchine virtuali della serie H sono disponibili in tutte le aree di Azure, quindi potrebbe essere necessario scegliere un’area lontana dalla propria posizione per trovare il giusto equilibrio di hardware per il progetto. Preparatevi in ogni caso a spendere diverse migliaia di dollari al mese per progetti di grandi dimensioni, soprattutto quando aggiungete spazio di archiviazione e rete. Oltre alle macchine virtuali e allo storage, è probabile che abbiate bisogno anche di un collegamento ad Azure con larghezza di banda elevata.

Dopo aver scelto le vostre VM, dovete scegliere un sistema operativo, uno scheduler e un gestore del carico di lavoro. Esistono molte opzioni diverse in Azure Marketplace o, se preferite, potete distribuire una soluzione open source che già conoscete. Questo approccio rende relativamente semplice portare i carichi di lavoro HPC esistenti in Azure o basarsi su set di competenze e toolchain esistenti. Avete anche la possibilità di lavorare con servizi di Azure all’avanguardia come il suo crescente supporto FPGA. C’è anche una partnership con Cray che offre un supercomputer gestito attivabile secondo necessità e in Azure Marketplace sono disponibili diverse applicazioni HPC che semplificano l’installazione.

Gestione dell’HPC con Azure CycleCloud

Non è necessario costruire un’intera architettura da zero; Azure CycleCloud è un servizio che aiuta a gestire sia lo storage, sia gli scheduler, offrendo un ambiente ideale per gestire i vostri strumenti HPC. È forse il migliore rispetto a strumenti come ARM, in quanto è un modo per creare modelli di infrastruttura che si concentrano su un livello superiore rispetto alle VM, trattando la vostra infrastruttura come un insieme di nodi di calcolo e quindi distribuendo le VM secondo necessità, usando la vostra scelta di scheduler e fornendo scaling automatizzato.

Tutto è gestito attraverso un unico pannello di controllo, con il proprio portale che aiuta a controllare le risorse di calcolo e lo storage e che è integrato con gli strumenti di monitoraggio di Azure. C’è anche un’API con cui scrivere le vostre estensioni per aggiungere ulteriore automazione. CycleCloud non fa parte del portale di Azure, ma si installa come una macchina virtuale con la propria interfaccia utente basata sul Web.

Azure Batch

Sebbene la maggior parte degli strumenti di Azure HPC siano un’infrastruttura come servizio (IaaS), è disponibile un’opzione di piattaforma sotto forma di Azure Batch, progettata per carichi di lavoro intrinsecamente paralleli come le simulazioni Monte Carlo, in cui ciascuna parte di un’applicazione parallela è indipendente da ogni altra parte (sebbene possano condividere le stesse origini dati). È un modello adatto per il rendering della computer grafica di un film o per scopi più scientifici come l’analisi di sequenze di DNA.

Non tutti i processi HPC possono essere eseguiti in Azure Batch, ma in caso possano si hanno a disposizione interessanti opzioni di scalabilità che aiutano a ridurre al minimo i costi. È consigliabile preparare i dati in anticipo e utilizzare applicazioni di pre- e post-elaborazione separate per gestire i dati di input e output.

L’uso di Azure come supercomputer fai-da-te ha senso. Le macchine virtuali della serie H sono server potenti che offrono spiccate capacità di calcolo e, con il supporto per strumenti familiari, potete migrare i carichi di lavoro locali ad Azure HPC o creare nuove applicazioni senza dover imparare un set di strumenti completamente nuovo. L’unica vera questione da porsi è quella economica: il costo dell’utilizzo del calcolo ad alte prestazioni su richiesta giustifica il passaggio dal proprio data center a una soluzione come Azure HPC?