Descrivere come eseguire Slurm con Azure CycleCloud
Dopo aver completato questa unità, si sarà in grado di usare Slurm in Azure CycleCloud.
Abilitazione di Slurm in CycleCloud
È possibile distribuire un cluster High Performance Computing (HPC) tramite Azure CycleCloud eseguendo i passaggi seguenti:
Connettersi a un'istanza distribuita di Azure CycleCloud ed eseguire l'autenticazione.
Nella pagina Crea un nuovo cluster esaminare le opzioni disponibili e nella sezione Utilità di pianificazione selezionare Slurm.
Nella scheda Informazioni della pagina Nuovo cluster Slurm specificare un nome per il cluster Slurm nella casella di testo Nome cluster.
Nella scheda Impostazioni necessarie della pagina Nuovo cluster Slurm, configurare le impostazioni seguenti nella casella di testo nome cluster:
- Area: Definisce quale data center ospiterà i nodi del cluster.
- Tipo di macchina virtuale dell'utilità di pianificazione: Consente di specificare lo SKU della macchina virtuale che ospiterà il pianificatore di processi.
- Tipo di macchina virtuale HPC: Consente di specificare lo SKU della macchina virtuale che ospiterà i carichi di lavoro delle partizioni HPC.
- Tipo di macchina virtuale HTC: Consente di specificare lo SKU della VM che ospiterà i lavori delle partizioni HTC.
- Scalabilità automatica: Consente di abilitare o disabilitare l'avvio e l'arresto delle istanze di macchine virtuali che ospitano nodi delle partizioni quando sono necessarie o non lo sono più.
- Numero massimo di core HPC: Il numero massimo di core di CPU che possono essere allocati alle partizioni HPC quando è abilitata la scalabilità automatica.
- Numero massimo di core HTC: Il numero massimo di core di CPU che possono essere allocati alle partizioni HTC quando è abilitata la scalabilità automatica.
- Numero massimo di macchine virtuali per set di scalabilità: Il numero massimo di macchine virtuali che è possibile usare per ospitare carichi di lavoro di partizione.
- Usare istanze spot: Determina se si vuole consentire l'uso di istanze spot di Azure. Anche se le istanze spot sono notevolmente meno costose da eseguire, possono essere rimosse senza alcun avviso, il che può influire sull'esecuzione dei processi.
- Subnet ID: La subnet della rete virtuale Azure che ospiterà le macchine virtuali dei nodi del cluster.
Nella pagina Archiviazione connessa alla rete configurare se si useranno le opzioni Builtin o External NFS per il montaggio di archiviazione collegato alla rete. Quando si seleziona Builtin, il nodo scheduler viene configurato come server NFS che funge da punto di montaggio per altri nodi. Se si specifica External NFS, è possibile specificare i dettagli di un dispositivo NAS come Azure NetApp Files, Cache HPC o una macchina virtuale appositamente configurata che esegue un server NFS.
Nella pagina Impostazioni avanzate è possibile specificare le impostazioni seguenti:
- Versione Slurm: Scegliere la versione Slurm da usare con il cluster.
- Contabilità dei processi: Specificare se si desidera abilitare la contabilità dei processi e le impostazioni che sceglierete per archiviare i dati contabili.
- Politica di spegnimento: È possibile scegliere se terminare o deallocare l'istanza.
- Credenziali: Credenziali per connettersi alla sottoscrizione di Azure associata.
- Sistema operativo dell'utilità di pianificazione: Scegliere il sistema operativo Linux usato per ospitare l'utilità di pianificazione.
- Sistema operativo HPC: Specificare il sistema operativo da usare per ospitare l'utilità di pianificazione.
- Inizializzazione del Cluster della VM di Pianificazione: Qui, si specificano istruzioni personalizzate da applicare alla macchina virtuale dell'utilità di pianificazione.
- HTC Cluster Init: Specificare istruzioni personalizzate da applicare ai nodi HTC.
- Rete avanzata: Questa opzione consente di abilitare Return Proxy, nonché di specificare se il nodo head è accessibile da indirizzi Internet e se i nodi di esecuzione sono accessibili da Internet.
La pagina Cloud-init consente di passare impostazioni di configurazione personalizzate ai nodi delle macchine virtuali dopo la distribuzione.
Impostazioni di memoria
CycleCloud imposta automaticamente la quantità di memoria disponibile per Slurm da usare a scopo di pianificazione. Poiché la quantità di memoria disponibile può cambiare leggermente in base alle diverse opzioni del kernel Linux e il sistema operativo e la macchina virtuale possono usare una piccola quantità di memoria che altrimenti sarebbe disponibile per i processi, CycleCloud riduce automaticamente la quantità di memoria nella configurazione Slurm. Per impostazione predefinita, CycleCloud mantiene il 5% della memoria disponibile segnalata in una macchina virtuale, ma è possibile eseguire l'override di questo valore nel modello di cluster impostando slurm.dampen_memory sulla percentuale di memoria da conservare. Ad esempio, per conservare il 20% della memoria di una macchina virtuale, usare:
slurm.dampen_memory=20
Configurazione delle partizioni Slurm
Il modello predefinito fornito con Azure CycleCloud include due partizioni (HPC e HTC) ed è possibile definire matrici di nodi personalizzate mappate direttamente alle partizioni Slurm. Ad esempio, per creare una partizione GPU, aggiungere la sezione seguente al modello di cluster:
[[nodearray gpu]]
MachineType = $GPUMachineType
ImageName = $GPUImageName
MaxCoreCount = $MaxGPUExecuteCoreCount
Interruptible = $GPUUseLowPrio
AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
[[[cluster-init cyclecloud/slurm:execute:2.0.1]]]
[[[network-interface eth0]]]
AssociatePublicIpAddress = $ExecuteNodesPublic
Modifica di cluster Slurm esistenti
Se si modificano e si applicano modifiche a un cluster Slurm esistente, è necessario ricompilare il file slurm.conf e aggiornare i nodi esistenti nel cluster. A tale scopo, è possibile usare uno script presente nei cluster Slurm distribuiti in Azure cyclecloud usando uno script speciale denominato cyclecloud_slurm.sh. Lo script si trova nella directory /opt/cycle/slurm nel nodo dell'utilità di pianificazione Slurm. Dopo aver apportato modifiche al cluster, eseguire lo script seguente come radice con il parametro apply_changes. Ad esempio, usare /opt/cycle/slurm/cyclecloud_slurm.sh apply_changes se si apportano modifiche che influiscono su nodi che partecipano a una partizione MPI (Message Passing Interface).
Disabilitazione della scalabilità automatica per nodi o partizioni
È possibile disabilitare la scalabilità automatica per un cluster Slurm in esecuzione modificando direttamente il file slurm.conf. È possibile escludere singoli nodi o intere partizioni dalla scalabilità automatica.
Per escludere un nodo o più nodi dalla scalabilità automatica, aggiungere SuspendExcNodes=<listofnodes> al file di configurazione Slurm. Ad esempio, per escludere i nodi 1 e 2 dalla partizione HPC, aggiungere quanto segue a /sched/slurm.conf e quindi riavviare il servizio slurmctld:
SuspendExcNodes=hpc-pg0-[1-2]
Per escludere le partizioni, modificare anche il file /sched/slurm.conf. Ad esempio, per escludere la partizione HPC dalla scalabilità automatica, aggiungere la riga seguente a slurm.conf e riavviare il servizio slurmctld:
SuspendExcParts=hpc