
Ez a kézikönyv a Mesterséges Intelligencia Műszerközpont által üzemeltetett SZTE Szuperszámítógép használatához nyújt alapvető információkat. A klaszter kifejezetten mesterséges intelligencia (AI) célú, illetve nagy GPU-igényű számítási feladatok támogatására lett kialakítva.
A rendszerben a felhasználóknak önmagukban nincsenek dedikált számítási erőforrásaik. A számítási kapacitás kizárólag jóváhagyott projekteken keresztül érhető el.
● Igénylés: Új projektet és erőforrás-keretet (GPU óra, tárhely) az Alkalmazott Mesterséges Intelligencia Kompetencia Központon (AMI KK) keresztül lehet igényelni. Szükség esetén az AMI KK szakértői támogatást is tud biztosítani a projektekhez.
● Azonosító: A belépéshez az SZTE azonosítóra van szükség (@szte.hu végződéssel). A felhasználónév is ez lesz.
○ Hallgatóknak: Neptun vagy CooSpace azonosító.
○ Dolgozóknak: Nexon azonosító. (Amennyiben mindkettővel rendelkezik, az olvashatóság érdekében a Nexon azonosító használata a preferált).
● SLURM Account: Minden jóváhagyott projekthez tartozik egy SLURM account (fiók), amelynek neve megegyezik a projekt és a projekt mappa nevével. Ez a fiók szigorúan felügyeli és korlátozza a projekt számára az igénylés során engedélyezett GPU keretet.
A felhasználók egy dedikált Login node-on keresztül léphetnek interakcióba az infrastruktúrával. Innen lehet menedzselni az adatokat és beküldeni a számítási feladatokat.
● Hálózati korlátozás: A gép kizárólag az egyetem belső hálózatáról érhető el. Külső helyszínről SZTE VPN használata szükséges.
● Belépés: Terminálból, SSH kliens segítségével. Fontos, hogy a felhasználónévhez hozzá kell fűzni a @szte.hu részt is!
Példa a belépésre:
| ssh felhasznalonev@szte.hu@mil.eserv.u-szeged.hu |
|---|
(Kérjük, cserélje le a felhasznalonev-et a saját Neptun/Nexon azonosítójára)
A rendszer egy elosztott fájlrendszert használ, amelyet minden node lát. Minden számítási feladatot és adatkezelést ezen a fájlrendszeren érdemes végezni.
● Útvonal: /home/<felhasznalo>
● Kapacitás: 10 GB (szigorú korlát)
● Célja: Személyes beállítások, gyakran újrahasznált kódok, szkriptek és kisebb fájlok tárolása. Ide nem szabad nagy méretű adathalmazokat tölteni.
● Útvonal: /project/<projekt_neve>
● Kapacitás: A projekt igénylésekor meghatározott kvóta szerint.
● Életciklus:
A klaszter összesen 6 számítási csomópontból áll, amelyek két partícióra vannak osztva. A GPU-k igénylésekor automatikusan dedikált vCPU és RAM "csomag" is jár az alábbiak szerint:
| Partíció | Node-ok | Elérhető GPU-k / Node | Erőforrás csomag / GPU |
|---|---|---|---|
| compute | cn01-cn05 | 4x Nvidia H100 (94 GB) | 32 vCPU és 182 GB RAM |
| fat | fat01 | Nvidia H100 (80 GB) | 24 vCPU és 246 GB RAM |
Mivel a számítási kapacitás projektekhez kötött, minden feladat beküldésénél kötelező megadni a projekt SLURM account nevét, hiszen egy felhasználó egyszerre több projekten is dolgozhat.
● sinfo: A partíciók és csomópontok aktuális állapotának lekérdezése.
● squeue: A futó és várakozó feladatok (job-ok) listázása.
| squeue -u felhasznalonev@szte.hu |
|---|
● scancel <job_id>: Egy saját futó vagy várakozó feladat leállítása.
Ha parancssoros tesztelést kíván végezni egy GPU-s node-on:
| srun --account=<projekt_neve> --partition=compute --gres=gpu:1 --pty bash |
|---|
Automatizált futtatáshoz hozzon létre egy szkriptet (pl. run.sh), majd küldje be az sbatch run.sh paranccsal.
Példa run.sh fájl:
| #!/bin/bash #SBATCH --job-name=ai_tanitas #SBATCH --account=SajatProjektNevem #SBATCH --partition=compute #SBATCH --gres=gpu:1 #SBATCH --time=02:00:00 #SBATCH --output=eredmeny_%j.txt echo "Job elindult." # Ide jönnek a futtatandó parancsok, pl. Apptainer hívás, Python kód # apptainer exec ... echo "Job befejeződött." |
# Job neve # KÖTELEZŐ: A projekt/account neve! # KÖTELEZŐ: Partíció (compute vagy fat) # KÖTELEZŐ: Igényelt GPU-k száma # Maximális futási idő (óra:perc:mp) # Standard output fájl (%j a job ID-t jelöli) |
|---|
A szoftverkörnyezetek (pl. PyTorch, TensorFlow) izolálására és kezelésére az Apptainer-t (korábbi nevén Singularity) használjuk.
Gyakran előfordul, hogy egy alap image-re (pl. az NVIDIA által biztosítottra) további
csomagokat kell telepíteni. Ehhez egy definíciós fájlt (pl. pytorch.def) kell készíteni.
Példa pytorch.def fájl (NVIDIA PyTorch alapokon):
| Bootstrap: docker From: nvcr.io/nvidia/pytorch:24.01-py3 %post # Itt lehet további rendszerszintű és Python csomagokat telepíteni apt-get update && apt-get install -y htop git pip install transformers wandb pandas %environment # Környezeti változók beállítása, ha szükséges export LC_ALL=C export WANDB_PROJECT="szte-ai-project" %runscript # Ez fut le, ha az 'apptainer run' parancsot hívják meg a konténeren python "$@" |
|---|
Konténer építése a definíciós fájlból: A fakeroot opció használatával rendszergazdai jogosultság nélkül is felépíthető a konténer.
| apptainer build --fakeroot my_pytorch.sif pytorch.def |
|---|
● Kész konténer közvetlen letöltése (pl. Docker Hub-ról):
| apptainer pull ubuntu.sif docker://ubuntu:latest |
|---|
● GPU használata a konténerben:
Mindig használja az --nv flaget, ha a konténernek hozzá kell férnie az Nvidia GPU-hoz!
| apptainer exec --nv my_pytorch.sif python train.py |
|---|
● Könyvtárak felcsatolása (Bind mount):
Alapértelmezésben a konténer nem biztos, hogy látja a projekt mappáját. A --bind flaggel teheti elérhetővé az adatokat a konténer számára.
| apptainer exec --nv --bind /lustre1/project/<projekt_neve>:/workspace my_pytorch.sif python /workspace/train.py |
|---|
● Interaktív shell nyitása a konténerben (teszteléshez):
| apptainer shell --nv --bind /lustre1/project/<projekt_neve>:/workspace my_pytorch.sif |
|---|
SZTE Mesterséges Intelligencia