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.

nvtop riporta 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:

Python Lab (su docs.edu-al)

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.TXT o INSTALL.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 pip non 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.


Back to top

Copyright © 2025 UPO - Università del Piemonte Orientale