Skip to content

Tecniche di early stopping sostenibili per modelli di raccomandazione, mirate a ridurre le emissioni di CO2 durante l’addestramento senza compromettere in maniera significativa le performance. Basato su RecBole e CodeCarbon.

License

Notifications You must be signed in to change notification settings

swapUnibaAcademy/Sustainable-Early-Stop-Techniques

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

♻️ Sustainable-Early-Stop-Techniques

Questa tesi esplora nuove strategie di early stopping per ridurre l'impatto ambientale (e dunque le emissioni di CO2) durante l'addestramento di modelli di raccomandazione, senza cercare di compromettere in modo sostanziale le performance (rispetto al metodo "classico" di early stopping).

Il lavoro è ereditato dalla seguente repository: sustainability-of-recsys


🎯 Obiettivo

L’obiettivo principale di questo lavoro è analizzare e migliorare il trade-off tra emissioni e performance nei sistemi di raccomandazione, concentrandosi sulla tecnica dell’early stopping.


🔧 Funzionamento

Il sistema tiene traccia delle emissioni di un determinato algoritmo di raccomandazione e su un determinato dataset.
Esegue il modello di raccomandazione applicando il set di iperparametri predefiniti (o in alternativa si potrebbe eseguire una Grid Search per fare il tuning degli iperparametri grazie allo script src/tuning_tracker.py, più informazioni sono presenti nella Repo citata).
Vengono salvate durante l'esecuzione di ogni modello: le metriche, le emissioni e la configurazione dei parametri usati.

I modelli, i dataset e le metriche fanno riferimento all'implementazione di @Recbole.
Il tracciamento delle emissioni è stato reso possibile attraverso la libreria @CodeCarbon.


🛠️ Requisiti

Ambiente di sviluppo usato in fase sperimentale:
python/3.10.8--gcc--8.5.0 + (opzionale) cuda/12.1

Requisiti di sistema: requirements.txt

pip install -r requirements.txt


📁 Struttura del progetto

├── data/                   # Sono contenuti i dataset usati
├── deps/                   # Directory contenente dipendenze specifiche
│   ├── __other/            # Contiene script utili per visualizzare funzionamento delle tecniche sviluppate
│   ├── codecarbon/         # File e configurazioni relativi alla libreria CodeCarbon
│   ├── ema_files/          # File inerenti alla strategia di early stopping EMA (con limite superiore)
│   ├── ema_no_cap_files/   # File inerenti alla strategia di early stopping EMA (SENZA limite superiore)
│   └── utility_files/      # File inerenti alla strategia di early stopping Utility
├── experiment_results/     # Directory per i risultati dettagliati di ciascun esperimento
├── graphs/                 # Contiene tutti i grafici relativi ai risultati ottenuti
├── log/                    # Directory per i file di log relativi all'esecuzione degli script.
├── log_tensorboard/        # Directory per i log di TensorBoard
├── results/                # Directory principale per il salvataggio dei risultati
├── saved/                  # Directory per salvare i modelli addestrati
├── src/                    # Contiene il codice sorgente del progetto
│   ├── . . .
│   ├── graphs.py           # Script Python per generare i grafici presenti nella cartella "graphs/"
│   ├── ema_no_cap_files/   # File inerenti alla strategia di early stopping EMA (SENZA limite superiore)
│   └── utility_files/      # File inerenti alla strategia di early stopping Utility
├── LICENSE.md
├── README.md
└── requirements.txt        # Elenco delle dipendenze Python

Spostare la cartella codecarbon/ presente nella cartella deps/ nella cartella delle dipendenze dell'ambiente di lavoro.

Selezionare una delle strategie di Early Stopping sviluppata, presente nalla cartella deps/ [ema_files/, ema_no_cap_files/, utility_files/] e spostare i file contenuti della cartella della strategia nelle cartelle corrispondenti:

  • deps/<nome_strategia>/recbole nelle dipendenze dell'ambiente di lavoro

  • deps/<nome_strategia>/src nella cartella root del progetto [verranno sostituiti dunque i file run.py e tracker.py]

Di default nella cartella src/ presente nella root del progetto sono presenti i file run.py e tracker.py inerenti alla strategia Utility.


Per eseguire l'intero programma è possibile runnare direttamente il run.py presente nella cartella src:

python src/run.py 

Oppure se si volesse eseguire un modello/i e dataset in particolare (specificando debitamente i paramentri della metodo early stopping in uso), ecco dei "template" del codice da eseguire:

[Utility]

python src/tracker.py --dataset={dataset} --model={model} --max_emission_step={max_emission_step} --trade_off={trade_off}

[EMA]

python src/tracker.py --dataset={dataset} --model={model} --tolerance_step={tolerance_step} --smoothing_factor={smoothing_factor}


💻⚙️ Informazioni su hardware

Esperimenti effettutati sul seguente hardware:

  • CPU: 1 x Intel Xeon Platinum 8358
  • GPU: 1 x NVIDIA A100
  • RAM: 512GB DDR4 (3200 MHz)


📊🤖 Informazioni su modelli e dataset

Gli esperimenti sono stati effettuati su i seguenti dataset e modelli di raccomandazione SOTA:

  • Dataset: amazon_books_60core e movielens_1m
  • Modelli: BPR, CFKG, CKE, DMF, KGCN, KGNNLS, LINE, MultiDAE, LightGCN, NFCF e DGCF


👨‍🎓 Informazioni autore

Vincenzo Monopoli

Corso di Laurea in Informatica
Università degli Studi di Bari “Aldo Moro”

Tesi triennale in "Metodi per il Ritrovamento dell’Informazione"
Anno Accademico 2023/2024

📫 Contatti: monovinci@gmail.com
🔗 GitHub: github.com/Vincy02

About

Tecniche di early stopping sostenibili per modelli di raccomandazione, mirate a ridurre le emissioni di CO2 durante l’addestramento senza compromettere in maniera significativa le performance. Basato su RecBole e CodeCarbon.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages