CoolFace
Apppublic

RosaSantelia/rosa-twitter-sentiment

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
App README

MLOps per l'Analisi del Sentiment su Twitter

πŸ† Panoramica del Progetto

Questo repository presenta una soluzione end-to-end di MLOps per l'analisi del sentiment su Twitter. Il progetto Γ¨ stato costruito per dimostrare le pratiche di ingegneria del machine learning, includendo la containerizzazione con Docker, l'automazione del testing e del deployment con GitHub Actions e il monitoraggio continuo del modello.

L'obiettivo Γ¨ classificare il sentiment di un testo in una delle tre categorie: positivo, neutrale o negativo, utilizzando un modello pre-addestrato basato su RoBERTa.

πŸš€ Caratteristiche Principali

Analisi del Sentiment: Utilizzo del modello cardiffnlp/twitter-roberta-base-sentiment-latest per predizioni accurate.

  • β€”API (FastAPI): Un'API RESTful robusta per l'inferenza del modello in tempo reale.
  • β€”Containerizzazione (Docker): Un ambiente isolato e riproducibile per l'applicazione e le sue dipendenze.
  • β€”Automazione CI/CD: Pipeline di GitHub Actions per l'integrazione e il deployment continuo.
  • β€”Monitoraggio Continuo: Un sistema di monitoraggio automatizzato per valutare periodicamente le performance del modello e prevenire la deriva (model drift).

πŸ“‚ Struttura del Progetto

La struttura del progetto Γ¨ organizzata in modo modulare per separare le diverse fasi del ciclo di vita MLOps.

. β”œβ”€β”€ .github/ β”‚ └── workflows/ β”‚ β”œβ”€β”€ ci-cd.yml β”‚ └── monitoring.yml β”œβ”€β”€ app/ β”‚ β”œβ”€β”€ _init.py β”‚ β”œβ”€β”€ evaluate.py β”‚ β”œβ”€β”€ main.py β”‚ β”œβ”€β”€ model.py β”‚ └── schema.py β”œβ”€β”€ data/ β”œβ”€β”€ docs/ β”‚ └── TROUBLESHOOTING.md β”œβ”€β”€ monitoring/ β”‚ β”œβ”€β”€ reports/ β”‚ └── monitoring.py β”œβ”€β”€ rosa-twitter-sentiment/ β”œβ”€β”€ tests/ β”‚ β”œβ”€β”€ pytest.ini β”‚ β”œβ”€β”€ testapi.py β”‚ └── testmodel.py β”œβ”€β”€ training/ β”‚ β”œβ”€β”€ pushtohub.py β”‚ └── train.py β”œβ”€β”€ .gitignore β”œβ”€β”€ Dockerfile β”œβ”€β”€ environment.yml β”œβ”€β”€ README.md β”œβ”€β”€ requirements.txt β”œβ”€β”€ runtests.sh └── setup_conda.sh

πŸ›  Guida Rapida per gli Sviluppatori

Prerequisiti

Assicurati di avere installati i seguenti strumenti:

  • β€”Git
  • β€”Docker

Avvio dell'API (con Docker)

Segui questi passaggi per avviare l'API di sentiment analysis in locale.

Clona il repository:

git clone https://github.com/RosaSantelia/AIEngineeringProjectMLOps.git cd AIEngineeringProjectMLOps

Costruisci l'immagine Docker:

docker build -t sentiment-analysis .

Avvia l'API:

docker run -p 8000:8000 sentiment-analysis

L'API sarΓ  disponibile all'indirizzo a cui sarai dirottato dal popup a monitor e potrai testare gli endopoint (ricordati di configurare che la porta sia aperta e non privata).

Test degli Endpoint dell'API

Per testare l'endpoint di predizione /predict dell'API, puoi utilizzare lo strumento curl con il seguente comando:

curl -X POST "http://localhost:8000/predict" -H "Content-Type: application/json" -d '{"text":"I love this new project!"}'

Questo comando invierΓ  una richiesta POST all'API con un testo di esempio e riceverai una risposta con il sentiment predetto.

πŸ“ˆ Pipeline CI/CD e Monitoraggio

Il progetto integra due pipeline di GitHub Actions per automatizzare il ciclo di vita del modello.

CI_CD PIPELINE:

Esegue i test, addestra il modello ed effettua il deploy su Hugging Face Spaces se tutti i passaggi sono superati.

MONITORING PIPELINE:

Esegue lo script monitoring.py periodicamente per valutare le performance del modello in produzione.

Lo script monitoring/monitoring.py esegue predizioni batch, salva i risultati in CSV, genera matrici di confusione e un report HTML.

La pipeline Γ¨ automatizzata tramite GitHub Actions (.github/workflows/monitoring.yml), eseguita:

  • β€”Su ogni push al branch main
  • β€”Ogni giorno alle 2:00 UTC
  • β€”Manualmente tramite trigger manuale

I report sono caricati come artifact scaricabili dall’interfaccia Actions di GitHub.

Avvio manuale del monitoraggio:

Dal tab Actions su GitHub, seleziona il workflow Monitoring TweetEval e clicca su Run workflow.

❓ FAQ Utenti Finali

  1. 1.Che modello viene usato? Viene utilizzato il modello cardiffnlp/twitter-roberta-base-sentiment-latest di HuggingFace, specificamente addestrato su dati di Twitter.
  1. 1.Come viene testato? Il modello Γ¨ testato automaticamente utilizzando un sottoinsieme del dataset pubblico TweetEval per verificare le sue performance in modo continuo.
  1. 1.Qual Γ¨ l'ambiente di sviluppo e testing? La fase di sviluppo Γ¨ stata testata inizialmente con Conda. Per garantire la portabilitΓ  e la riproducibilitΓ , l'intero progetto Γ¨ stato poi containerizzato con Docker.
  1. 1.Come posso avviare il monitoraggio manualmente? Dalla sezione Actions del repository su GitHub, devi selezionare il workflow Monitoring TweetEval e cliccare sul pulsante Run workflow.