RosaSantelia/rosa-twitter-sentiment
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
- Che modello viene usato? Viene utilizzato il modello cardiffnlp/twitter-roberta-base-sentiment-latest di HuggingFace, specificamente addestrato su dati di Twitter.
- Come viene testato? Il modello Γ¨ testato automaticamente utilizzando un sottoinsieme del dataset pubblico TweetEval per verificare le sue performance in modo continuo.
- 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.
- 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.
