Pre prístup k serveru píšte na dgx@helpdesk.tuke.sk
- Maximálna dĺžka jobu je 4 dni. Job bez
--timedostane predvolene 1 deň. - Limit na jedného používateľa: 4 GPU alebo 120 shardov naraz, najviac 200 jobov v rade.
- Fronta (QOS) sa priraďuje automaticky podľa
--time: do 4 hshort(vyššia priorita), nad 1 deňlong(nižšia). Pozri sekciu 7. - Priorita sa teraz počíta aj podľa využitia GPU a spotreba sa pamätá 7 dní. Kto nedávno spotreboval veľa, má nižšiu prioritu.
- Nemiešajte
gpuashardv jednom jobe, takýto job sa odmietne. - Spotreba sa eviduje podľa používateľa (accounting), pozri
sacctasshare.
1. Informácie o serveri
| Operačný systém | Ubuntu 24.04 LTS |
|---|---|
| CPU | 256 jadier (2 × 64 jadier, 2 vlákna na jadro) |
| RAM | 1.0 TiB |
| Počet GPU | 8 |
| Model GPU | NVIDIA A100-SXM4-40GB |
| Pamäť na jednu GPU | 40 GB |
| Ovládač NVIDIA | 595.91.07 |
| Plánovač | SLURM 25.05 |
| Maximálna dĺžka jobu | 4 dni |
2. Pravidlá
Zákazy
- Zakázané: používanie
Jupyter NotebookaJupyterLabna výpočtových uzloch.
Politika „spiacich jobov“ (sleeping)
Systém automaticky monitoruje a spravuje neaktívne úlohy, aby sa zabezpečilo férové využitie zdrojov.
- Zrušenie spiacej úlohy po:
172800 s(48 hodín). - Upozornenia sú zasielané 8 hodín a 1 hodinu pred automatickým zrušením.
Využívanie zdrojov
Zvážte efektívne využívanie zdrojov CPU a GPU. Pri nadmernom zaťažovaní servera môže byť váš proces ukončený. Pri opakovanom porušovaní vám môže byť zablokovaný prístup.
Disková kvóta
Maximálna disková kvóta pre jedného používateľa je stanovená na 1 TB. Po prekročení tohto limitu vám bude automaticky doručený e-mail s notifikáciou a žiadosťou o uvoľnenie priestoru. Nepotrebné dáta mažte, /home je zdieľaný pre všetkých.
3. Rýchly štart
- Získajte prístup. Napíšte na dgx@helpdesk.tuke.sk. Prihlasujete sa svojím univerzitným loginom (napr.
ab123cd) a heslom z AD. - Pripojte sa cez SSH (sekcia 4):
ssh vas_login@dgx.uvt.tuke.sk - Vyskúšajte GPU krátkou interaktívnou úlohou:
srun --gres=shard:5 --time=00:10:00 --mem=8G nvidia-smi - Pripravte skript (stačí vygenerovať generátorom) a odošlite ho:
sbatch moja_uloha.slurm - Sledujte úlohu:
squeue -u $USER # fronta a stav tail -f vystup.log # priebežný výstup seff JOB_ID # efektivita po skončení
Výpočty spúšťajte vždy cez SLURM (sbatch/srun), nie priamo v SSH relácii. Procesy, ktoré používajú GPU mimo SLURM, sa môžu po skončení vášho jobu ukončiť.
4. Pripojenie cez SSH
Linux, macOS a Windows (PowerShell)
Moderné Windows 10/11, Linux aj macOS majú SSH klienta priamo v termináli:
ssh vas_login@dgx.uvt.tuke.sk
PuTTY (Windows)
- Host Name:
dgx.uvt.tuke.sk - Port:
22, Connection type: SSH - Po pripojení zadajte svoj login a heslo.
Prihlásenie kľúčom (voliteľné, pohodlnejšie)
# na vašom počítači
ssh-keygen -t ed25519
ssh-copy-id vas_login@dgx.uvt.tuke.sk
Pri dlhých úlohách používajte screen alebo tmux, aby vás nezrušilo prerušenie spojenia. Samotné úlohy odoslané cez sbatch bežia nezávisle na SSH relácii.
5. Prenos súborov
WinSCP (Windows)
Hostiteľ: dgx.uvt.tuke.sk
Port: 22
Používateľ: vas_login
Protokol: SFTP (alebo SCP)
Z príkazového riadka
# na server
scp dataset.zip vas_login@dgx.uvt.tuke.sk:~/
# zo servera
scp vas_login@dgx.uvt.tuke.sk:~/vysledky.tar.gz .
# veľké adresáre, s možnosťou pokračovať
rsync -avP data/ vas_login@dgx.uvt.tuke.sk:~/data/
Veľké datasety najprv zbaľte (tar) a po spracovaní nepotrebné dáta zmažte. Disk /home je zdieľaný a takmer plný.
6. Práca so SLURM
Základné príkazy
| Príkaz | Účel |
|---|---|
sbatch job.slurm | odoslanie úlohy |
squeue -u $USER | vaše úlohy vo fronte |
scancel JOB_ID | zrušenie úlohy |
sinfo | stav partície a uzla |
seff JOB_ID | efektivita skončenej úlohy (CPU, pamäť) |
sacct -u $USER -S 2026-10-01 -o JobID,JobName,State,Elapsed,ReqMem,MaxRSS | história vašich úloh |
sshare -u $USER | váš fairshare a spotreba |
Príklad skriptu
#!/bin/bash
#SBATCH --job-name=test_uloha
#SBATCH --output=vystup_%j.log
#SBATCH --error=chyby_%j.log
#SBATCH --partition=dgx
#SBATCH --time=0-06:00:00
#SBATCH --cpus-per-task=20
#SBATCH --mem=32G
#SBATCH --gres=shard:10
#SBATCH --mail-user=tvoj@email.sk
#SBATCH --mail-type=END,FAIL
python3 test_cuda.py
Vždy uvádzajte --time a --mem. Realistický čas pomáha plánovaču zaradiť váš job skôr. %j v názve súboru sa nahradí číslom úlohy.
Interaktívna relácia s GPU
srun --gres=shard:10 --cpus-per-task=4 --mem=16G --time=02:00:00 --pty bash
Po skončení práce reláciu ukončite (exit), inak blokuje zdroje až do konca časového limitu.
Pole úloh (array)
#SBATCH --array=0-9%2 # 10 úloh, najviac 2 naraz
python3 trenuj.py --seed $SLURM_ARRAY_TASK_ID
Stavy úloh
| Stav | Význam |
|---|---|
PD (PENDING) | čaká vo fronte, dôvod je v stĺpci NODELIST(REASON) |
R (RUNNING) | beží |
CD (COMPLETED) | skončila úspešne |
F (FAILED) | skončila s chybou, pozrite chybový log |
TO (TIMEOUT) | prekročila --time |
OOM (OUT_OF_MEMORY) | prekročila --mem |
7. Limity a fronty (QOS)
Základné limity
| Maximálna dĺžka jobu | 4 dni (4-00:00:00). Po uplynutí sa job zruší. |
|---|---|
Predvolená dĺžka (bez --time) | 1 deň |
| Predvolená pamäť | 4000 MB na jadro CPU (bez --mem) |
| Naraz na používateľa | max. 4 GPU alebo 120 shardov |
| Jobov v rade | max. 200 na používateľa |
Ak prekročíte limit zdrojov, ďalšie joby ostanú v stave PENDING a spustia sa, keď sa vaše staršie joby skončia.
Fronty (QOS) a ich automatické priradenie
Frontu (QOS) nemusíte zadávať. Ak ju neuvediete, systém ju vyberie sám podľa dĺžky, ktorú žiadate v --time:
| QOS | Kedy sa priradí | Priorita | Použitie |
|---|---|---|---|
short | --time do 4 hodín | najvyššia | testy, ladenie, krátke behy |
normal | od 4 hodín do 1 dňa | stredná | bežné trénovanie |
long | nad 1 deň (max. 4 dni) | najnižšia | dlhé tréningy |
Kratší job sa teda dostane na rad skôr. Frontu môžete aj vynútiť (napr. #SBATCH --qos=short), ale short povoľuje najviac 4 hodiny a --time musí tomu zodpovedať.
#SBATCH --time=02:00:00 # automaticky QOS short
Ako sa určuje poradie jobov (priorita)
Keď je uzol plný, rozhoduje o poradí čakajúcich jobov priorita. Skladá sa z niekoľkých častí (od najdôležitejšej):
- Spravodlivosť (fairshare) – najväčšia váha. Sleduje, koľko ste v poslednom čase spotrebovali vy v porovnaní s ostatnými. Kto nedávno minul veľa, má nižšiu prioritu, kto menej, vyššiu. Spotreba sa postupne „zabúda“, každých 7 dní sa počíta na polovicu, takže po týždni bez záťaže sa priorita vracia.
- Fronta (QOS) –
shortprednormalanormalpredlong. Dlhé joby majú teda nižšiu prioritu. - Vek jobu – čakajúci job pomaly získava prioritu. Platí to však len pre prvých 5 čakajúcich jobov na používateľa, ostatné vek nezbierajú.
- Veľkosť jobu a partícia – malá váha.
Čo presne sa do spotreby počíta
Počíta sa skutočne využité zdroje krát čas, nie počet odoslaných jobov. Zdroje majú tieto váhy:
| Zdroj | Váha za jednotku | Príklad |
|---|---|---|
1 GPU (--gres=gpu:1) | 30 | 1 GPU na 1 hodinu = 30 jednotiek |
1 shard (--gres=shard:1) | 1 | 30 shardov (celá GPU) = 30 jednotiek |
| 1 jadro CPU | 1 | 20 jadier = 20 jednotiek |
| 1 GB RAM | 0,05 | 200 GB = 10 jednotiek |
Celá GPU stojí rovnako, či si ju vypýtate ako gpu:1, alebo ako shard:30. Veľké žiadosti o GPU teda znižujú prioritu najviac. Žiadajte preto len toľko, koľko naozaj potrebujete.
Posiela niekto veľa jobov? Samotný počet jobov nie je trestaný. Veľa krátkych, malých jobov spotrebuje málo, a teda nezníži prioritu. Ak však pošlete stovky jobov, vek nezbierajú nad prvých 5 a limit je 200 jobov v rade.
Ako zistiť svoju prioritu
sshare -u $USER # FairShare: 1.0 = nič ste nespotrebovali (najvyššia priorita), blízko 0 = veľká spotreba
sprio -u $USER # rozpis priority čakajúcich jobov podľa častí
squeue -u $USER -o "%i %T %Q %r" # číslo, stav, priorita a dôvod čakania
Ako sa dostať na rad skôr
- Uvádzajte realistický
--time. Krátke joby dostanú vyššiu frontu a plánovač ich vie zaradiť do medzier (backfill). - Žiadajte len potrebné zdroje: menej shardov, CPU a RAM znamená nižšiu spotrebu aj skoršie spustenie.
- Dlhé tréningy rozdeľte na kratšie úseky s checkpointmi.
- Vyššia priorita nezastaví už bežiace joby. Týka sa iba poradia vo fronte.
Dôležité
- Nemiešajte
--gres=gpua--gres=shardv jednom jobe, takýto job sa odmietne. Používajte buď celé GPU, alebo shardy. - Po skončení jobu sa čistia len jeho procesy. Vaše ďalšie bežiace joby a SSH relácie ostávajú nedotknuté.
- Procesy používajúce GPU mimo SLURM sa po skončení vášho posledného jobu môžu ukončiť.
- Každý používateľ má vlastný SLURM účet pomenovaný podľa loginu. Nový používateľ ho dostane automaticky do hodiny od prvého prihlásenia.
8. GPU Sharding (Zdieľanie GPU)
Čo sú to GPU Shardy? (Vysvetlenie pre laika)
Predstavte si, že jedna výkonná grafická karta (GPU) je ako veľká, chutná pizza. Štandardne, keď si objednáte úlohu, dostanete celú túto pizzu len pre seba, aj keď možno zjete len jeden alebo dva kúsky. Zvyšok pizze zostane nevyužitý, kým dojete.
GPU Sharding je ako krájanie tejto pizze na menšie, presne definované kúsky (shardy). Namiesto toho, aby ste si museli zobrať celú GPU, si môžete vypýtať presne toľko „kúskov“ (shardov), koľko vaša úloha naozaj potrebuje.
Výhody
- Efektivita: Viacerí používatelia môžu súčasne pracovať na jednej fyzickej GPU, každý so svojimi vlastnými „kúskami“.
- Kratšie čakanie: Keďže sa zdroje lepšie využívajú, je väčšia šanca, že sa vaša úloha spustí skôr.
Pozor na pamäť GPU
Shardy delia výkon a rezervujú podiel, ale pamäť VRAM sa medzi úlohami na jednej GPU striktne neizoluje. Ak vaša úloha zaberie viac VRAM, než zodpovedá jej shardom, môže spôsobiť chybu CUDA out of memory aj cudzím jobom na tej istej GPU. Nežiadajte preto menej shardov, než potrebujete.
Ako to funguje na našom serveri?
Náš server má 8 grafických kariet NVIDIA A100, každá s 40 GB pamäte. Každá GPU je rozdelená na 30 shardov.
- Celkom dostupných: 8 GPU × 30 shardov/GPU = 240 shardov.
- Každý shard má približne: 40 GB / 30 ≈ 1.33 GB VRAM.
- Limit na používateľa: 120 shardov (zodpovedá 4 GPU).
Príklady bežných požiadaviek
Použite parameter --gres=shard:X, kde X je počet shardov.
- Celá GPU (100%):
30shardov pre plný výkon a ~40 GB VRAM.#SBATCH --gres=shard:30 - Tri štvrtiny GPU (~75%):
22shardov pre ~30 GB VRAM.#SBATCH --gres=shard:22 - Polovica GPU (50%):
15shardov pre ~20 GB VRAM.#SBATCH --gres=shard:15 - Štvrtina GPU (~25%):
8shardov pre ~10 GB VRAM.#SBATCH --gres=shard:8
10. Python a Anaconda
Inštalácia Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
Prostredie pre GPU (príklad PyTorch)
conda create --name moje_prostredie python=3.11
conda activate moje_prostredie
pip install torch torchvision # zvoľte build podľa pytorch.org
python -c "import torch; print(torch.cuda.is_available())"
Použitie prostredia v SLURM skripte
#!/bin/bash
#SBATCH --time=02:00:00
#SBATCH --mem=16G
#SBATCH --gres=shard:10
source ~/miniconda3/etc/profile.d/conda.sh
conda activate moje_prostredie
python3 trenuj.py
Správa prostredí
conda deactivate
conda env list
conda remove --name moje_prostredie --all
Prostredia zaberajú desiatky GB. Nepotrebné odstráňte a vyčistite cache príkazom conda clean --all.
11. Časté problémy
| Čo vidíte | Príčina | Čo robiť |
|---|---|---|
Invalid account or account/partition combination |
Nemáte ešte SLURM účet. Vytvára sa automaticky do hodiny od prvého prihlásenia. | Počkajte, prípadne napíšte na dgx@helpdesk.tuke.sk. |
Requested time limit is invalid |
--time presahuje 4 dni alebo limit zvolenej QOS (short max. 4 h). |
Skráťte čas, alebo použite QOS long. |
Úloha je PD s dôvodom QOSMax…PerUser |
Využívate limit 4 GPU / 120 shardov. | Počkajte, kým vaše staršie úlohy skončia, alebo žiadajte menej. |
Úloha je PD s dôvodom Resources alebo Priority |
Uzol je plný, alebo majú prednosť úlohy s vyšším fairshare. | Kratší --time a menšia požiadavka vám pomôžu zaradiť sa skôr (backfill). Prioritu zistíte cez sprio a sshare, pozri sekciu 7. |
Stav OUT_OF_MEMORY |
Úloha potrebovala viac RAM, ako ste žiadali. | Zvýšte --mem, skutočnú spotrebu ukáže seff JOB_ID. |
Stav TIMEOUT |
Úloha nestihla dobehnúť v --time. |
Predĺžte čas (max. 4 dni), alebo ukladajte checkpointy. |
CUDA out of memory |
Úloha potrebuje viac VRAM, ako zodpovedá vašim shardom. | Žiadajte viac shardov (30 = celá GPU), alebo zmenšite batch size. |
Job bol odmietnutý pri zadaní gpu aj shard |
Tieto dva typy sa nesmú miešať. | Použite iba --gres=gpu:N alebo iba --gres=shard:N. |
No space left on device / Disk quota exceeded |
Zaplnený disk alebo vaša kvóta. | Skontrolujte du -sh ~/* | sort -h a zmažte nepotrebné dáta. |
12. Monitoring
13. Changelog
- 2026-10-15: Nové pravidlá priority: do fairshare sa počíta aj GPU (1 GPU = 30 jednotiek, 1 shard = 1), spotreba sa pamätá 7 dní (predtým 1 deň) a už sa nenuluje mesačne. QOS sa priraďuje automaticky podľa
--time(shortdo 4 h,longnad 1 deň), vek jobu zbiera len prvých 5 čakajúcich jobov. - 2026-10-15: Nový vzhľad stránky, prepísané návody (rýchly štart, časté problémy), odstránené emoji. Základná stránka je na porte 80, Slurm-web na porte 8080 (skratka
/slurm). - 2026-10-15: Aktualizácia systému (kernel 6.8.0-147, ovládač NVIDIA 595.91.07). Zapnuté accounting a vynucovanie účtov. Max. dĺžka jobu 4 dni, predvolene 1 deň. Limity 4 GPU / 120 shardov na používateľa. Nové QOS
shortalong. Po skončení jobu sa už nezabíjajú ostatné procesy používateľa. - 2025-08-13: Zavedené nové pravidlá pre Jupyter a spiace joby.
- 2025-07-30: Pridaný návod na e-mailové notifikácie.
Generátor SLURM skriptov
Vyplňte parametre a okamžite si vygenerujte SLURM skript pripravený na spustenie.