Descrivere l'integrazione di Slurm con Azure CycleCloud

Completato

Dopo aver completato questa unità, è necessario essere in grado di descrivere come Slurm si integra con Azure CycleCloud e descrivere le aree di integrazione principali tra Slurm e Azure CycleCloud.

What is Azure CycleCloud? (Cos'è Azure CycleCloud?)

Azure CycleCloud è uno strumento per distribuire i cluster HPC in Azure e gestire i carichi di lavoro. Offre un'ampia gamma di funzionalità HPC, tra cui:

  • Distribuzione basata su modelli dei cluster HPC. Azure CycleCloud offre modelli predefiniti personalizzabili per la distribuzione delle più comuni utilità di pianificazione dei cluster, tra cui Slurm, OpenPBS, LSF, Grid Engine e HTCondor. Molti altri modelli predefiniti, che è possibile importare nell'istanza di Azure CycleCloud, sono disponibili nel repository GitHub di CycleCloud.
  • Ridimensionamento manuale e automatizzato dei nodi del cluster. Azure CycleCloud consente il ridimensionamento orizzontale manuale e automatizzato dei cluster gestiti in base alla lunghezza delle code di processi e ai criteri di governance. Offre anche un'API REST per lo sviluppo di adattatori di scalabilità automatica per le utilità di pianificazione personalizzate.
  • Configurazione dei nodi tramite gli script cloud-init. Azure CycleCloud supporta la gestione della configurazione basata su script personalizzati che vengono eseguiti all'interno dei nodi del cluster gestiti prima di qualsiasi altra attività di configurazione specifica di CycleCloud.
  • Gestione dell'archiviazione cluster interna ed esterna. Azure CycleCloud consente di configurare l'archiviazione cluster tramite il provisioning, il montaggio e la formattazione dei dischi gestiti di Azure e dei dispositivi NAS, quali server NFS o cluster BeeGFS.
  • Monitoraggio, registrazione e avvisi. Azure CycleCloud offre il monitoraggio predefinito dei cluster e si integra con Monitoraggio di Azure. È anche possibile archiviare i dati dei log dai cluster di CycleCloud a Log Analytics e creare dashboard di metriche personalizzati. È anche possibile creare notifiche tramite posta elettronica e avvisi personalizzati che vengono attivati dai dati di telemetria. Tutte le attività di Azure CycleCloud vengono registrate.
  • Autenticazione e autorizzazione. Azure CycleCloud supporta l'autenticazione locale predefinita. In alternativa, è possibile integrarlo con Active Directory Domain Services o altri provider di identità basati su LDAP (Lightweight Directory Access Protocol). Per impostazione predefinita, gli utenti definiti in locale hanno accesso al sistema operativo nei nodi del cluster gestiti, ma è possibile amministrare gli utenti del cluster separatamente. Per la gestione delle risorse in una sottoscrizione di Azure, è possibile usare un'entità servizio o un'identità gestita di Microsoft Entra.
  • Controlli e creazione di report sui costi quasi in tempo reale. Azure CycleCloud tiene traccia dell'utilizzo del cluster e stima il costo corrispondente. Questa funzionalità consente di configurare avvisi relativi al budget attivati quando il costo del cluster supera l'importo specificato. Azure CycleCloud si integra anche con Gestione costi di Microsoft.

Azure CycleCloud e Azure Batch

Azure CycleCloud e Azure Batch sono servizi di Azure progettati per gestire ed eseguire carichi di lavoro paralleli e ad alte prestazioni su larga scala nel cloud. Questi servizi differiscono per i destinatari, i set di funzionalità e i casi d'uso.

Azure CycleCloud è incentrato sulla creazione, la gestione e l'ottimizzazione di cluster HPC e HTC in Azure. CycleCloud è destinato a carichi di lavoro HPC e HTC specifici del dominio, ad esempio fluidità computazionale, genomica e simulazioni di progettazione. CycleCloud supporta vari utilità di pianificazione del cluster, ad esempio Slurm, Grid Engine, LSF e HTCondor. Si integra anche con i servizi di Azure come Archiviazione BLOB di Azure, Azure Managed Disks e Azure NetApp Files per soluzioni di archiviazione.

Azure Batch è un servizio gestito progettato per l'esecuzione di carichi di lavoro paralleli e batch su larga scala in Azure. Azure Batch è adatto per vari tipi di attività di elaborazione batch, ad esempio l'elaborazione dei dati, il rendering e il training del modello di Machine Learning. Azure Batch si occupa della gestione delle risorse, della pianificazione delle attività e del ridimensionamento dei nodi di calcolo in base ai requisiti del carico di lavoro.

Azure CycleCloud è progettato specificamente per carichi di lavoro HPC e HTC con supporto per più utilità di pianificazione del cluster, mentre Azure Batch è più generico, supportando vari tipi di attività di elaborazione parallela e batch.

Informazioni sulle partizioni HPC e HTC

Una partizione di Azure CycleCloud è un raggruppamento logico di nodi di calcolo con una configurazione, uno scopo o un tipo di carico di lavoro specifico. I termini "partizione HPC" e "partizione HTC" fanno riferimento alle partizioni configurate per gestire carichi di lavoro high-performance computing e high-throughput computing.

Le partizioni HPC usano un numero elevato di macchine virtuali basate su CPU o GPU per eseguire attività complesse. HTC è un'architettura che usa molte risorse di calcolo per lunghi periodi di tempo per eseguire un numero elevato di attività ad accoppiamento libero. Le partizioni HPC vengono usate quando è necessario eseguire calcoli complessi e di grandi dimensioni, ad esempio quelli coinvolti in simulazioni scientifiche e di ingegneria.

Le partizioni HTC usano un numero elevato di nodi di macchine virtuali basate su CPU o GPU per risolvere attività matematiche complesse che richiedono un accoppiamento stretto e una comunicazione veloce. I processi HTC sono in genere indipendenti, sequenziali e possono essere pianificati su diverse risorse di calcolo in più siti. I processi HPC sono in genere paralleli, interdipendenti e devono essere eseguiti in un singolo sito con interconnessioni a bassa latenza. HTC è adatto per l'elaborazione di grandi volumi di attività più piccole ed è utile per l'elaborazione batch di attività a elevato utilizzo di dati che possono essere suddivise in piccoli elementi. L'elaborazione batch in HTC consente l'elaborazione di grandi quantità di dati o attività di calcolo dividendole in gruppi più piccoli e gestibili noti come "batch". I cluster elaborano questi batch in parallelo allocando ogni batch a un nodo diverso nel cluster di calcolo.

Negli ambienti basati sul cloud, ad esempio Azure CycleCloud, HTC e HPC possono essere eseguiti nella stessa architettura del cluster.

Implementazione di Azure CycleCloud

CycleCloud viene implementato come applicazione Web basata su Linux, che può essere installata in qualsiasi posizione da cui è possibile accedere all'ambiente Azure. Il modo più semplice per configurarlo consiste nel distribuire una macchina virtuale di Azure usando l'immagine corrispondente di Azure Marketplace, con la possibilità di automatizzare la distribuzione usando un modello di Azure Resource Manager (ARM). In alternativa, è possibile usare pacchetti yum o apt oppure un'immagine del contenitore disponibile in Microsoft Container Registry.

Durante la configurazione iniziale, sarà possibile specificare una chiave SSH per proteggere l'accesso al sistema operativo che ospita l'applicazione CycleCloud e ai nodi del cluster distribuiti successivamente. Per consentire all'applicazione CycleCloud di interagire con ARM, sarà necessario scegliere un'identità di Microsoft Entra che fornirà il contesto di protezione per questa interazione e le assegnerà autorizzazioni sufficienti nella sottoscrizione di Azure di destinazione usando il controllo degli accessi in base al ruolo di Azure. Questa identità può essere un'entità servizio o, se ospita l'applicazione Azure CycleCloud in una macchina virtuale di Azure, un'identità gestita.

Un'istanza di Azure CycleCloud richiede anche un account di archiviazione di Azure e un contenitore BLOB associato. Questo contenitore, definito "locker", fornisce l'area di gestione temporanea per la distribuzione dei progetti nei nodi del cluster.

Una volta installata, l'applicazione Azure CycleCloud fornisce un'interfaccia utente grafica che consente a un utente di gestire e monitorare i sistemi HPC e un'interfaccia della riga di comando che facilita l'automazione e l'integrazione di CycleCloud nei flussi di lavoro esistenti. È anche possibile usare l'interfaccia della riga di comando per importare i modelli, automatizzare il provisioning dei cluster ed eseguire attività di gestione più avanzate.

Informazioni sulla scalabilità automatica del cluster CycleCloud

Azure CycleCloud facilita la distribuzione delle utilità di pianificazione in Azure, che a loro volta distribuiscono e gestiscono i processi in esecuzione nei cluster costituiti dalle risorse di Azure. Azure CycleCloud non funziona come utilità di pianificazione, ma come intermediario tra le utilità di pianificazione e la piattaforma sottostante. Azure CycleCloud semplifica anche lo sviluppo della funzionalità di scalabilità automatica per le utilità di pianificazione corrispondenti fornendo un'interfaccia di programmazione basata sull'API REST e una libreria client basata su Python.

Azure CycleCloud consente di correlare il comportamento dei cluster gestiti a livello di scalabilità automatica con la lunghezza delle code dei processi del cluster. È possibile personalizzare ulteriormente questo comportamento definendo i parametri dei modelli che controllano, ad esempio, l'intervallo di tempo dopo il quale i nodi inattivi vengono terminati o la frequenza dei controlli di arresto automatico.

Tutti i modelli predefiniti espongono le impostazioni di scalabilità automatica direttamente nell'interfaccia grafica di Azure CycleCloud. In ogni caso, le impostazioni includono l'opzione per specificare i limiti minimo e massimo dell'intervallo di scalabilità automatica, espresso come numero di core CPU. Il limite massimo consente di ridurre al minimo la possibilità di addebiti imprevisti. È possibile limitare ulteriormente le conseguenze di questo rischio impostando avvisi relativi al budget.

Con la soglia minima impostata su 0, la creazione di un cluster comporterà solo il provisioning del nodo head dell'utilità di pianificazione. Quando tuttavia l'utilità di pianificazione rileva processi accodati, avvia il provisioning dei nodi di calcolo necessari per eseguire il carico di lavoro corrispondente, fino al limite definito. Per supportare processi in parallelo o ad accoppiamento debole, in cui le singole attività vengono eseguite indipendentemente l'una dall'altra, i processi inizieranno a essere eseguiti non appena il primo nodo diventerà disponibile. Per i processi strettamente accoppiati, ad esempio quelli che usano la funzionalità MPI (Message Passing Interface), il tempo di attesa sarà più lungo, a seconda della portata delle dipendenze tra i nodi. Dopo che la coda di processi sarà rimasta vuota per un periodo di tempo superiore al tempo di inattività consentito, i nodi di calcolo inizieranno ad arrestarsi automaticamente e il cluster sarà costituito ancora una volta solo dal nodo head dell'utilità di pianificazione.

Integrazione slurm con CycleCloud

È possibile integrare Slurm con Azure CycleCloud configurando un cluster basato su Slurm in CycleCloud, in cui CycleCloud gestisce l'infrastruttura sottostante e Slurm si occupa della pianificazione dei processi e della gestione delle risorse.

Slurm si integra con Azure CycleCloud nel modo seguente:

  • Configurazione cluster. Quando si crea un nuovo cluster in Azure CycleCloud, è possibile scegliere Slurm come utilità di pianificazione del cluster. Ciò significa che CycleCloud configurerà le risorse del cluster, ad esempio macchine virtuali, archiviazione, rete, e distribuirà l'utilità di pianificazione Slurm nel nodo master (o nodo controller) del cluster.
  • Distribuzione cluster. Azure CycleCloud distribuisce il cluster Slurm in Azure, creando le macchine virtuali necessarie per il nodo master e i nodi di calcolo. Il nodo master esegue il daemon del controller Slurm (slurmctld) e i nodi di calcolo eseguono il daemon Slurm (slurmd) responsabile dell'esecuzione dei processi. CycleCloud configura le risorse di rete e archiviazione e configura il cluster Slurm in base alle impostazioni specificate.
  • Ridimensionamento automatico. Azure CycleCloud può ridimensionare dinamicamente i cluster Slurm aggiungendo o rimuovendo nodi di calcolo in base ai requisiti del carico di lavoro e ai criteri di scalabilità automatica definiti. In questo modo è possibile ottimizzare l'utilizzo delle risorse e controllare i costi. Quando vengono inviati nuovi processi e le risorse non sono sufficienti, CycleCloud può effettuare automaticamente il provisioning di nodi di calcolo aggiuntivi e aggiungerli al cluster Slurm. Analogamente, quando il carico di lavoro diminuisce, CycleCloud può rimuovere automaticamente i nodi di calcolo inattive per risparmiare sui costi.
  • Monitoraggio e gestione. Azure CycleCloud offre funzionalità di monitoraggio e gestione per il cluster Slurm, ad esempio il monitoraggio delle prestazioni del cluster, l'utilizzo delle risorse e lo stato del processo. È anche possibile gestire il ciclo di vita del cluster, avviare/arrestare il cluster e applicare gli aggiornamenti in base alle esigenze.
  • Invio di processi. È possibile inviare processi al cluster Slurm usando comandi Slurm standard come sbatch, srun e salloc. Questi processi vengono quindi pianificati ed eseguiti nelle macchine virtuali di Azure che comprendono i nodi di calcolo del cluster Slurm.