Development GPUs - aimagelab/aimagelab-srv GitHub Wiki
AImageLab mette a disposizione GPU di sviluppo utilizzabili tramite debugging remoto. Gli host contenenti GPU di sviluppo replicano la stessa configurazione di tutti i nodi aimagelab-srv.
Accesso alle GPU di sviluppo
Possono accedere alle GPU di sviluppo tutti gli utenti di AImageLab-SRV. Le risorse di sviluppo sono gestite da SLURM, all'interno delle partizioni dev
e students-dev
, rispettivamente dedicate allo staff di ricerca (strutturati, dottorandi, assegnisti, collaboratori) e agli studenti (tesisti e studenti non tesisti).
Limiti
Staff di ricerca: È possibile richiedere fino a 4 GPU di sviluppo contemporaneamente. Ogni sessione di sviluppo dura al massimo 4 ore.
Studenti: È possibile richiedere fino a 3 GPU di sviluppo contemporaneamente. Ogni sessione di sviluppo dura al massimo 2 ore.
ℹ️ Politiche di scheduling: le richieste di GPU di sviluppo da parte dello staff di ricerca hanno precedenza sulle sessioni di debug degli studenti.
Uso da shell
⚠️ Attenzione: è vietato accedere alle specifiche GPU sui nodi di sviluppo senza passare per lo scheduler SLURM. Quindi, chi si connette via ssh a un nodo di sviluppo non può lanciare script in GPU.
Per ottenere una shell con una GPU di sviluppo, utilizzare il seguente comando dal nodo di login o da un nodo di sviluppo:
Staff di ricerca: srun --partition=all_serial --gres=gpu:1 --pty bash
Studenti: srun --partition=all_serial --gres=gpu:1 --pty bash
Uso da IDE
Visual Studio Code
- Dal tab
Extensions
, installare le estensioniRemote - SSH
eRemote - SSH: Editing Configuration Files
- Connettersi a
aimagelab-srv-00.ing.unimore.it
(ad es.:F1
,Remote-SSH: Connect to Host...
) ed entrare nella folder del proprio progetto (ad es. tramite:F1
,File: Open Folder...
) - Dal tab
Extensions
, sull'host remoto installare le estensioniPython
ePylance
- Creare il file
$projectFolder/bash.sh
, dove$projectFolder
indica la folder del progetto, contenente:
Staff di ricerca:srun -Q --immediate=10 --partition=dev --gres=gpu:1 --time 60:00 --pty bash
Studenti:srun -Q --immediate=10 --partition=students-dev --gres=gpu:1 --time 60:00 --pty bash
Controllare che il file $projectFolder/bash.sh
abbia tutti i permessi di esecuzione. In caso contrario eseguire chmod +x $projectFolder/bash.sh
-
Aprire (o creare se inesistente) il file
$projectFolder/.vscode/settings.json
, ed assicurarsi che contenga la seguente coppia chiave-valore:"terminal.integrated.automationProfile.linux": { "path": "$projectFolder/bash.sh" }
PyCharm
Creazione di un nuovo progetto
Creare un nuovo progetto con una location sul proprio PC.
Configurazione di deployment
Andare in File->Settings->Build, Execution, Deployment->Deployment
Cliccare sul simbolo + verde per aggiungere un nuovo server di deployment. Il nome del server è aimagelab-srv-00.ing.unimore.it
, e il type è SFTP
.
Aggiungere le informazioni di connessione, come segue. Utilizzate il vostro username e la vostra password di Aimagelab-srv. Potete scegliere di salvare la password.
Nel tab Mappings collegate la path locale del progetto con la path remota (ad es., una folder nella vostra home)
Se serve, potete escludere la copia di alcuni file dal tab "Excluded Paths".
Nella stessa scheda, selezionate questa configurazione di Deployment come quella di default, utilizzando l'ultimo pulsante della riga in cui è presente il + verde (diventerà in grassetto).
Nella scheda Options (sotto Deployment), controllate che il valore del campo "Upload changed files automatically to the default server" sia "Always", in modo che i file locali siano sempre sincronizzati con quelli remoti.
Cliccate su "Apply".
Configurazione interprete remoto
Passate poi alla scheda "Project interpreter" e aggiungete un nuovo project interpreter cliccando sul simbolo della ruota dentata. Scegliete "SSH Interpreter", "New server configuration", e inserite host e username come prima.
Nella schermata successiva, inserite poi la password.
Selezionate l'interprete:
/usr/local/anaconda3/slurm/dev/python3
Se utilizzate un virtualenv, copiate uno dei due file di cui sopra nella vostra home folder e aggiustate il path del binario di Python di conseguenza (vedi esempio).
Aggiornate anche le sync folders come sopra.
Cliccate OK e uscite dai Settings. PyCharm impiegherà qualche minuto per sincronizzarsi con il server.
Esempio interprete custom
Interprete da poter creare nella home folder e che permette di utilizzare un numero variabile di GPU.
#!/bin/bash
python="/usr/local/anaconda3/bin/python"
n_gpu=${GPU:-1}
if [ $1 == "--version" ]] ](/aimagelab/aimagelab-srv/wiki/|-[[-$1-==-"-V"-); then
$python "$1"
elif [ $@ == *"generator3.py"* ]] ](/aimagelab/aimagelab-srv/wiki/|-[[-$@-==-*"import-socket"*-) || [ $n_gpu == 0 ]] ](/aimagelab/aimagelab-srv/wiki/|-[[-$@-==-*"packaging_tool.py"*-); then
$python "$@"
else
/usr/bin/srun -Q --immediate=10 --partition=all_serial --gres=gpu:$n_gpu $python "$@"
fi
Debugging
A questo punto, potete creare un file Python e debuggarlo. Dovreste vedere correttamente le informazioni di debug: