DGX Hub

Pre prístup k serveru píšte na dgx@helpdesk.tuke.sk

Novinky od 15. 10. 2026
  • Maximálna dĺžka jobu je 4 dni. Job bez --time dostane 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 h short (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 gpu a shard v jednom jobe, takýto job sa odmietne.
  • Spotreba sa eviduje podľa používateľa (accounting), pozri sacct a sshare.

1. Informácie o serveri

Operačný systémUbuntu 24.04 LTS
CPU256 jadier (2 × 64 jadier, 2 vlákna na jadro)
RAM1.0 TiB
Počet GPU8
Model GPUNVIDIA A100-SXM4-40GB
Pamäť na jednu GPU40 GB
Ovládač NVIDIA595.91.07
PlánovačSLURM 25.05
Maximálna dĺžka jobu4 dni

2. Pravidlá

Zákazy

  • Zakázané: používanie Jupyter Notebook a JupyterLab na 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

  1. Získajte prístup. Napíšte na dgx@helpdesk.tuke.sk. Prihlasujete sa svojím univerzitným loginom (napr. ab123cd) a heslom z AD.
  2. Pripojte sa cez SSH (sekcia 4):
    ssh vas_login@dgx.uvt.tuke.sk
  3. Vyskúšajte GPU krátkou interaktívnou úlohou:
    srun --gres=shard:5 --time=00:10:00 --mem=8G nvidia-smi
  4. Pripravte skript (stačí vygenerovať generátorom) a odošlite ho:
    sbatch moja_uloha.slurm
  5. 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.slurmodoslanie úlohy
squeue -u $USERvaše úlohy vo fronte
scancel JOB_IDzrušenie úlohy
sinfostav partície a uzla
seff JOB_IDefektivita skončenej úlohy (CPU, pamäť)
sacct -u $USER -S 2026-10-01 -o JobID,JobName,State,Elapsed,ReqMem,MaxRSShistória vašich úloh
sshare -u $USERváš 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

StavVý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 jobu4 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ľamax. 4 GPU alebo 120 shardov
Jobov v rademax. 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:

QOSKedy sa priradíPrioritaPoužitie
short--time do 4 hodínnajvyššiatesty, ladenie, krátke behy
normalod 4 hodín do 1 dňastrednábežné trénovanie
longnad 1 deň (max. 4 dni)najnižšiadlhé 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):

  1. 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.
  2. Fronta (QOS) – short pred normal a normal pred long. Dlhé joby majú teda nižšiu prioritu.
  3. 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ú.
  4. 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:

ZdrojVáha za jednotkuPríklad
1 GPU (--gres=gpu:1)301 GPU na 1 hodinu = 30 jednotiek
1 shard (--gres=shard:1)130 shardov (celá GPU) = 30 jednotiek
1 jadro CPU120 jadier = 20 jednotiek
1 GB RAM0,05200 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=gpu a --gres=shard v 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%): 30 shardov pre plný výkon a ~40 GB VRAM.
    #SBATCH --gres=shard:30
  • Tri štvrtiny GPU (~75%): 22 shardov pre ~30 GB VRAM.
    #SBATCH --gres=shard:22
  • Polovica GPU (50%): 15 shardov pre ~20 GB VRAM.
    #SBATCH --gres=shard:15
  • Štvrtina GPU (~25%): 8 shardov pre ~10 GB VRAM.
    #SBATCH --gres=shard:8

9. E-mail notifikácie

SLURM vás môže informovať o stave vašich úloh e-mailom.

  • --mail-user: Vaša e-mailová adresa (alebo viac adries oddelených čiarkou).
  • --mail-type: Typ udalostí, o ktorých chcete byť informovaný (napr. BEGIN, END, FAIL, alebo ALL pre všetky).

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ítePríč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

Stav servera a fronty môžete sledovať cez webové rozhrania (dostupné z univerzitnej siete):

  • Slurm-web – fronta jobov, využitie uzla a GPU.
  • Grafana – grafy využitia CPU, RAM, GPU a Slurm.

Svoje joby a ich efektivitu overíte príkazmi squeue -u $USER a seff JOB_ID.

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 (short do 4 h, long nad 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 short a long. 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.

1. Nastavenia úlohy

Formát D-HH:MM:SS alebo HH:MM:SS. Max. 4 dni.
Napr. 16G. Prázdne = 4000 MB na jadro.
1 GPU = 30 shardov. Limit na používateľa je 120 shardov.
Zadajte celý príkaz, ktorý sa má vykonať.
Podržte Ctrl/Cmd pre viacero možností.

2. Výsledný skript

Stiahnuť súbor