U vraagt, wij geven antwoord!

MLperf stapel: Slurm, Pyxis, Enroot

MLPerf stapel belangrijkste illustratie

De MLperf benchmark wordt beschouwd als een van de benchmark test sets die het mogelijk maakt om nauwkeurig de prestaties van servers met GPU's en AI-versnellers te beoordelen. Helaas is het niet de benchmark die iedereen gewend is, waarin het voldoende is om een uitvoerbaar bestand te draaien en na enige tijd het afgewerkte resultaat te krijgen. MLperf is een set van scripts die het testen op verschillende datasets mogelijk maakt. De datasets zelf zijn niet opgenomen in de benchmark kit. Het moet apart worden gedownload en voorbereid om te werken.

In moderne versies van MLperf kan deze set van scripts niet worden uitgevoerd op een schoon systeem. Om de benchmark in actie te testen, moet je de omgeving dienovereenkomstig voorbereiden voor de meeste tests. De auteurs van MLperf kozen Slurm Workload Manager als een taakbeheerstool, die gebruikt wordt in de meeste supercomputers in de wereld. Deze open source applicatie maakt flexibel beheer van workloads mogelijk door berekeningstaken te verdelen onder alle leden van het cluster.

Een minimale Slurm-cluster bestaat uit één rekeneenheid en één beheereenheid. Idealiter zijn dit twee verschillende servers die met elkaar communiceren via hostnamen, die in het geval van Linux zijn opgegeven in het /etc/hosts bestand. Naast de geconfigureerde cluster, vereist MLperf twee plug-ins: Pyxis en Enroot. De eerste is een extensie die een niet-geprivilegieerde gebruiker toestaat om gecontaineriseerde workloads te draaien. De tweede verwijdert de meeste isolatiemechanismen van gewone containers, waardoor bijna alle prestatiekosten worden geëlimineerd terwijl de scheiding van het bestandssysteem wordt gehandhaafd.

Stap 1. Bereid het systeem voor

Begin met het bijwerken van de pakketcache repository en geïnstalleerde pakketten:

sudo apt update && sudo apt -y upgrade

Vergeet niet om NVIDIA® drivers te installeren met de autoinstall commando of handmatig, met behulp van onze stap-voor-stap handleiding:

sudo ubuntu-drivers autoinstall

Herstart de server:

sudo shutdown -r now

Stap 2. Installeer Slurm

Voor deze instructies werd Ubuntu 22.04 LTS gekozen als het besturingssysteem, dus Slurm kan direct vanuit de standaard repository worden geïnstalleerd. Het slurm-wlm pakket bevat zowel slurmd voor de berekeningsnode als slurmctld voor de controle-node. Installeer het pakket:

sudo apt install slurm-wlm

Standaard zullen na installatie geen van de daemons werken omdat het hoofdconfiguratiebestand, slurm.conf, ontbreekt. De ontwikkelaars hebben zich ingespannen om de instapdrempel te verlagen door een webpagina met een configurator te maken. Hier kunt u zelfstandig het configuratiebestand in delen samenstellen, met behulp van de hints die voor elk item worden gegeven.

Let erop dat voor een standaard installatie op Ubuntu 22.04 LTS het logisch is om LinuxProc te kiezen in plaats van Cgroup. Na het klikken op de knop Submit onderaan de pagina, krijgt u de definitieve tekst van het configuratiebestand. Kopieer het naar het klembord en voer het volgende commando uit:

sudo nano /etc/slurm/slurm.conf

Plak de inhoud van het klembord en sla het bestand op. Nu kunt u de daemon voor de rekeneenheid opstarten:

sudo systemctl start slurmd.service

U kunt de status van de daemon controleren met het volgende commando:

sudo systemctl status slurmd.service

Stap 3. Stel de Slurm-controller in

Voordat u de controller-daemon kunt starten, moet u een paar extra stappen nemen. Eerst moet u een directory maken waar de daemon service-informatie over lopende taken kan opslaan:

sudo mkdir -p /var/spool/slurmctld

De directory is succesvol aangemaakt, maar op dit moment kan de slurm gebruiker, namens wie de controller wordt uitgevoerd, daar niets in schrijven. Laten we het de eigenaar van de directory maken:

sudo chown slurm:slurm /var/spool/slurmctld

Nu kunt u de controller daemon starten:

sudo systemctl start slurmctld.service

Om de operationele status van de controller te controleren, kun je het standaard commando gebruiken:

sudo systemctl status slurmctld.service

Je kunt ook direct de huidige status van het systeem bekijken, met name hoeveel rekennodes zijn aangesloten op de controller en hun huidige staat bepalen:

sinfo
PARTITIE BESCHIKBAAR  TIJDSLIMIET  KNOPEN  STAAT NODELIST                                                                                                                                                                                         
debug*       up   oneindig      1   inactief gpuserver

Stap 4. Installeer Pyxis

Slurm breidt zijn mogelijkheden uit met behulp van het SPANK mechanisme (Slurm Plug-in Architectuur voor Node en Job [K]controle). Het hoeft niet afzonderlijk te worden geïnstalleerd of geconfigureerd vanaf de hoofdtoepassing. Het is echter raadzaam om beide daemons tijdelijk te stoppen voor de installatie van een plug-in:

sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service

Omdat het installatieproces van Pyxis het bouwen vanuit de broncode omvat, moet je eerst een pakket installeren dat de ontwikkelaarbibliotheken bevat:

sudo apt -y install libslurm-dev

Het bouwproces van Pyxis gaat ervan uit dat de toepassing wordt geïnstalleerd vanuit de bron en het zal naar sommige bestanden zoeken in het absolute pad /use/include/slurm. In ons voorbeeld plaatste het slurm-wlm pakket ze in de verschillende directory /usr/include/slurm-wlm. Om dit probleem op te lossen, maak je eenvoudigweg een symbolische link:

sudo ln -s /usr/include/slurm-wlm /usr/include/slurm

Kloon de broncode van de plug-in van de officiële NVIDIA® repository:

git clone https://github.com/NVIDIA/pyxis

Open de gedownloade directory:

cd pyxis

Start het compilatieproces:

sudo make install

Eenmaal de compilatie voltooid, moet je nog een symbolische link creëren:

sudo ln -s /usr/local/share/pyxis/pyxis.conf /etc/slurm/plugstack.conf.d/pyxis.conf

Nu is alles klaar om beide daemons te starten:

sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service

Als alles correct is gedaan, zal je bij het uitvoeren van het volgende commando nieuwe opties zien gemarkeerd [pyxis]:

srun --help

Stap 5. Installeer Enroot

Net als bij de vorige plug-in, is het aan te raden om eerst de daemons te stoppen:

sudo systemctl stop slurmd.service && sudo systemctl stop slurmctld.service

Gebruik vervolgens de feature van de command shell om de CPU-architectuurdata op te slaan in een aparte variabele. Dit is handig voor het uitvoeren van volgende commando's, omdat het automatisch de opgeslagen waarde vervangt, in plaats van handmatige bewerking te vereisen:

arch=$(dpkg --print-architecture)

Download het DEB pakket:

curl -fSsL -O https://github.com/NVIDIA/enroot/releases/download/v3.4.1/enroot_3.4.1-1_${arch}.deb

Je kunt het installeren met behulp van de dpkg hulpprogramma:

sudo dpkg -i enroot_3.4.1-1_${arch}.deb

Als het systeem rapporteert dat er enkele afhankelijkheden ontbreken, kunt u deze handmatig installeren:

sudo apt-get -f install

Start ten slotte beide daemons:

sudo systemctl start slurmd.service && sudo systemctl start slurmctld.service

Dit is de minimale set van stappen die nodig zijn om een simpele Slurm cluster met Pyxis en Enroot plugins te implementeren. Aanvullende informatie is te vinden in de officiële documentatie op de project website.

Zie ook:



Bijgewerkt: 28.03.2025

Gepubliceerd: 09.07.2024


Hebt u nog vragen? Schrijf ons!

By clicking «I Accept» you confirm that you have read and accepted the website Terms and Conditions, Privacy Policy, and Moneyback Policy.