Nodi GPU
La sezione ha a disposizione due nodi con GPU Nvidia L40:
- dottorandi.di.unipmn.it (con Ubuntu 24.04 LTS)
- gpu2.di.unipmn.it (con AlmaLinux 9)
Si tratta di macchine multi-utente, generalmente utilizzate in modo interattivo, per creare i prototipi, e non per la sottomissione di lunghi job.
Sulle macchine ci sono delle quote disco di 180/200 GB (soft/hard limits).
I progetti che hanno necessità maggiori di spazio disco possono concordare un’estensione di quota disco, solitamente per un periodo limitato di tempo.
Le macchine sono raggiungibili in SSH dalla rete di Ateneo; per accedere dall’esterno occorre prima attivare la VPN di Ateneo.
Per l’utilizzo di container, la macchina con AlmaLinux ha podman / buildah (invece di docker).
Gli utenti finali non hanno privilegi di amministratore.
Tranne alcuni utenti della macchina dottorandi.di, che hanno mantenuto i privilegi che erano stati assegnati sulla macchina inferendo.di.
NVTop
Quando si lancia un nuovo esperimento, è caldamente consigliato verificare che la parte di calcolo stia effettivamente girando sulla GPU, e non sulla CPU.
Basta una piccola svista per configurare male qualcosa, o prendere la versione sbagliata di qualche libreria, e ritrovarsi poi ad eseguire un esperimento che non sfrutta affatto la GPU.
(Il codice che non sfrutta la GPU va eseguito su altri nodi, non sui due nodi che offrono una GPU.)
Per poter verificare l’occupazione e l’utilizzo della GPU è possibile lanciare il tool:
nvtop
Nella seconda parte della finestra c’è l’elenco dei processi che stanno utilizzando la GPU, con indicato il proprietario.
Controllare che siano riportati i processi del proprio progetto.
A volte i progetti comprendono una parte di preparazione dei dati, che non sfrutta la GPU. Il processo non viene elencato finché non inizia ad utilizzare le risorse della GPU, ma è una situazione normale.
È possibile anche avere una parte finale di analisi, non accelerata. In questi casi però è importante rilasciare la memoria eventualmente allocata sulla scheda GPU, in modo che gli altri utenti la possano utilizzare.
nvtopriporta nel suo grafico sia l’utilizzo della parte di calcolo della GPU che l’utilizzo della memoria della GPU; nel resoconto per processo ci sono le informazioni relative all’utilizzo della GPU e della CPU (anche qui, distinte in calcolo e memoria).
Conviene aggiungere ai propri programmi un output, a video o meglio ancora su file, per capire a che punto sono dell’elaborazione, specialmente quando questa può durare per ore o giorni.
Avere questa traccia su file la rende consultabile anche da un altra sessione, e consente anche di capire se il programma era terminato correttamente quando si scopre che nel frattempo il nodo è stato riavviato, per aggiornamenti urgenti o per problemi, e la sessione originale è andata persa.
Ollama
Sulla macchina è già presente e attivo Ollama, con un suo utente, e una sua quota disco.
Sul nodo gpu2 al momento sono disponibili questi modelli:
NAME ID SIZE MODIFIED
gpt-oss:latest 17052f91a42e 13 GB 2 hours ago
mxbai-embed-large:latest 468836162de7 669 MB 3 hours ago
llama3:latest 365c0bd3c000 4.7 GB 3 hours ago
llama3.2:latest a80c4f17acd5 2.0 GB 2 weeks ago
nomic-embed-text:latest 0a109f422b47 274 MB 2 weeks ago
gemma3:4b a2af6cc3eb7f 3.3 GB 2 weeks ago
gemma3:12b f4031aab637d 8.1 GB 2 weeks ago
phi4-reasoning:latest 47e2630ccbcd 11 GB 2 months ago
magistral:latest 27bcbbf6d324 14 GB 2 months ago
Osmosis/Osmosis-Structure-0.6B:latest f24ec096ac55 1.2 GB 2 months ago
alibayram/medgemma:27b 391385363ee9 16 GB 2 months ago
qwen2.5vl:32b 3edc3a52fe98 21 GB 5 months ago
qwen3:8b e4b5fd7f8af0 5.2 GB 6 months ago
Se ne possono aggiungere altri, ma bisogna fare attenzione allo spazio disco occupato.
Python-lab
Visto che abbiamo creato un ambiente Python per il laboratorio, con un po’ di tool e moduli a disposizione, è stato ricreato anche su queste macchine, ma con le librerie per l’utilizzo della GPU.
Programmi inclusi:
spyder
jupiter-notebook
Moduli inclusi:
TensorFlow
PyTorch
scikit-learn & scikit-image
matplotlib, bokeh, holoviews, plotly, seaborn
Flask, SQLAlchemy
Scrapy
imblearn
pm4py
graphviz
biopython
umap-learn
tabulate
datasets
sentence_transformers
Nota: per ora l’ambiente è attivo solo sul nodo gpu2.
La relativa pagina di documentazione per il laboratorio:
Nota: l’ambiente descritto in quella pagina è quello installato sulle macchine del laboratorio. Quello presente sui nodi GPU non è sincronizzato, e potrebbe essere leggermente indietro come configurazione; ad esempio gli ultimi moduli aggiunti in lab potrebbero non essere ancora presenti sui nodi.
In caso di necessità, chiedete, sia per riallineare i due ambienti, sia per eventualmente aggiungere qualcosa.
L’ambiente utilizza il Python di sistema, che è una versione un po’ vecchia (3.9 o 3.10, a seconda della macchina), e che potrebbe non esser compatibile con programmi e moduli più recenti.
Vedi sotto per alcune alternative.
pyenv
Quando è necessario utilizzare una versione di Python specifica, è possibile utilizzare PyEnv.
Sulla macchina l’installer è in /usr/local/bin.
Per maggiori informazioni, vedi la pagina specifica relativa a pyenv.
uv
uv può sostituire pyenv, pip e venv con un unico comando, che è pure più rapido nell’esecuzione.
Come per pyenv, in /usr/local/bin c’è un installer, che ogni utente può lanciare per aggiungere uv al proprio ambiente.
Micromamba
Sulla macchina è anche presente micromamba, come alternativa ad Anaconda.
Probabilmente è meglio utilizzare PyEnv e creare i virtual environment per i progetti, o python-lab se sufficiente.
Python tips
Versione GPU di TensorFlow e PyTorch
I comandi per installare la versione accelerata in GPU di tensorflow e pytorch al momento sono:
pip install tensorflow[and-cuda]
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
Le versioni più vecchie di pytorch richiedevano un comando di questo tipo:
pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
Il parametro utilizzato da
pipè cambiato.
Versione CPU di TensorFlow e PyTorch
Per completezza, questi sono i corrispondenti comandi per installare la versione di tensorflow o pytorch che gira sulla CPU:
pip install tensorflow
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu
Evitare di utilizzare questi comandi sui nodi con la GPU, perché installano una versione delle librerie che non utilizza la GPU.
Requirements e freeze
Conviene elencare tutte le dipendenze del proprio progetto in un file requirements.txt, in modo da poterle poi installare in un secondo momento con:
pip install -r requirements.txt
Questo sfortunatamente non vale per i pacchetti che richiedono l’utilizzo di un index-url particolare, come
PyTorch.In queste situazioni conviene aggiungere in un file
README.TXToINSTALL.TXT, nella radice del progetto, un paragrafo di installazione che spiega i comandi da lanciare per poter utilizzare il progetto stesso.
Per essere sicuri di poter riprodurre un esperimento, recuperando le stesse versioni delle dipendenze, è possibile elencarle con:
pip freeze
L’output prodotto può essere utilizzato come requirements.txt.
Siccome i moduli disponibili dipendono anche dalla versione di Python, conviene specificare nel README.txt anche la versione esatta utilizzata per l’esperimento. Ad esempio: test effettuati con Python 3.12.3.
Il fatto che un esperimento sia correttamente riprodotto dipende anche dalla aspettativa, non sempre realizzata, che gli autori dei vari moduli utilizzati non riassegnino in un secondo tempo il numero di versione richiesta a del codice differente.
Il comando
pipnon tutela in alcun modo da queste situazioni.Quando però gli autori si comportano nel modo atteso, e questo avviene nella maggior parte dei casi, i comandi indicati sono sufficienti per ricreare correttamente l’ambiente Python.