MLperf stapel: Slurm, Pyxis, Enroot

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