Conda

Conda è un sistema per poter gestire più progetti basati su diverse versioni di python e di librerie.

L'idea di base è quella di creare un “ambiente” personale (environment) basato su una certa versione di python e caricarci le librerie necessarie per il proprio progetto. Gli ambienti sono indipendenti.

Di norma, conda è pensato per utenti singoli, ma su John è stato installato in modalità condivisa, così da poter creare diversi enviroment preconfigurati standard che possono essere usati clonati o usati direttamente, se non serve aggiungere librerie.

Quando l'utente si logga sul sistema, conda non è caricato. Non viene caricato di default perché - per funzionare - viene inserito all'inizio del path, sostituendo diversi comandi di sistema coi suoi.

Per caricarlo, l'utente deve eseguire esplicitamente:

loadconda

È un alias caricato tramite .bashrc e quindi disponibile per tutti gli script eseguiti dalla shell, compresi quelli da passare a slurm. Fatto questo conda è disponibile, compresa la bash completion.

Per elencare gli environment:

conda env list

Sono stati creati environment base con le varie versioni di python. Per alcuni, sono stati aggiunti anche torch e cuda, anche questi in varie versioni. I nomi degli environment sono, per quanto possibilie, significativi. Se ne possono ovviamente creare altri che l'utente può configurare come meglio crede.

L'utente può usare uno degli environment esistenti, ma non può aggiungere librerie a meno che l'environment non sia suo. Oppure può clonare un environment esistente dandogli un nome sensato. L'environment clonato è il suo e può farci quel che vuole, senza influenzare gli altri utenti.

Per clonare un environment:

conda create --name ilmiopy312 --clone py312

Per usare un environment bisogna attivarlo:

conda activate ilmiopy312

Il prompt della bash viene modificato aggiungendo il nome dell'environment per ricordare che è attivo. Si possono installare librerie con pip, pipx, eseguire gli script e fare tutto quello che si farebbe normalmente.

Per disattivare l'environment:

conda deactivate

Che con questo sistema è anche possibile installare applicazioni e utilizzarle. È stato installato per esempio, whisperx e insanely-fast-whisper in due environment dedicati. Chiunque, attivando quel environment, può usare l'applicazione senza doverla re-installare e le diverse dipendenze delle due non creano problemi a livello di sistema operativo. Per esempio:

conda activate whisperx

L'eseguibile finirà nel path ed eventuali variabili di sistema necessarie per lo specifico applicativo vengono pescate dal environment dell'utente.

Esempio:

whisperx --language en --model large-v3 --diarize \ --hf_token $HF_TOKEN \ DesertIslandDiscs-20220313-RobertPlantSingerAndSongwriter.mp3

Oppure (dopo averlo attivato con conda):

insanely-fast-whisper --language English \ --hf_token $HF_TOKEN \ --file-name tmp/DesertIslandDiscs-20160110-AlexCrawford.mp3

In entrambi i casi '$HF_TOKEN' è quello definito nel file .bashrc dell'utente.