Skip to main content

Model Monitoring

Project description

Status

Repository model_monitoring


La repository contiene il codice per implementare il monitoring dei sistemi di ML in produzione con 8 classi:

  1. PerformancesMeasures per computare le perfomances delle metriche
  2. PerfomancesDrift per computare il drift delle performances tra dati corrrenti e dati storici e generare un sistema di alerting
  3. DataDrift per computare il drift di dati tramite PSI (Population Stability Index) o test statistici (KS e Chi-Quadro) tra dati corrrenti e dati storici e generare un sistema di alerting
  4. ReferenceMetaData per computare un dizionario di metadati a partire da uno di riferimento
  5. FairnessMeasures per computare le performances delle metriche di fairness
  6. FairnessDrift per computare il drift delle performances di fairness tra dati corrrenti e dati storici e generare un sistema di alerting
  7. XAI per computare la spiegabilità di un modello tramite lo scoring delle features nelle predizioni
  8. XAIDrift per computare il drift nella spiegabilità del modello e generare un sistema di alerting

Guida per sviluppatori

  • main branch ha una Policy che evita di inserire codice direttamente su di esso. Sono consentite solo Pull requests. Le Pull requests devono essere approvate da almeno 2 revisori, uno dei quali può essere il richiedente.
  • Come best practice, il nome del ramo dovrebbe seguire questa convenzione di denominazione: NNN-related_work_item dove NNN è il numero assegnato da Azure all'elemento di lavoro correlato al ramo e related_work_item è il nome dell'elemento di lavoro sostituendo ' ' (spazi bianchi) con '_' (underscores). Tra il numero e il nome usa '-' (segno meno).
  • Usa un virtual environment dedicato (guarda le note per il codice).
  • Ricorda di riempire ed installare in modo opportuno i requirements.
pip install -r requirements.txt  --trusted-host artifactory.group.credem.net  -i https://artifactory.group.credem.net/artifactory/api/pypi/virtualPypi/simple
  • Ricorda di intallare il pre-commit (solo per la prima volta)
pre-commit install
  • Si noti che il pacchetto model_monitoring viene installato automaticamente installando i requirements. Se i requirements non vengono utilizzati, eseguire quanto segue per installare in editable mode:
pip install -e .

Documentazione

(Visualizza la documentazione a questo link).

La documentazione del codice viene generata automaticamente utilizzando Sphinx in formato HTML. I passaggi per generare la documetazione sono i seguenti:

  1. Installa Sphinx presente nel file di requirements.txt:
pip install -r requirements.txt
  1. Installa il codice come developer:
pip install -e .
  1. Crea un folder docs/ ed entra digitando da terminale:
cd docs/
  1. Inizializza sphinx, se la prima volta, digitando da terminale:
sphinx-quickstart

Questo comando, dopo alcune domande, creerà una struttura del tipo:

source/          
|
└─── conf.py      
|
└─── index.rst
|
└─── _static/
|
└─── _templates/
build/    
Makefile
make.bat

Nel file docs/source/conf.py, puoi configurare Sphinx. Un esempio di conf.py può essere:

import pathlib
import sys

sys.path.insert(0, pathlib.Path(__file__).parents[2].resolve().as_posix() + "/src/model_monitoring")
project = "Documentazione_Model_Monitoring"
copyright = "2025, Team AIS"
author = "Team AIS"

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = ["sphinx.ext.autodoc", "sphinx.ext.autosummary", "sphinx.ext.napoleon"]

templates_path = ["_templates"]
exclude_patterns = []

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

autosummary_generate = True
html_theme = "classic"
html_static_path = ["_static"]

Nei file index.rst e nei _templates/ si può configurare l'autogenerazione della documentazione e i template da usare per farlo.

  1. Builda la documentazione, digitando da terminale:
sphinx-build -b html source build

Il risultato sarà in docs/build/index.html.

Una volta creata la documentazione questa viene inserita in un progetto GitHub per poterla collegare ad un sito di hosting (es. ReadTheDocs). Per avere un risultato sempre aggiornato bisogna cambiare ad ogni modifica i file html inseriti nel progetto GitHub (ReadTheDocs in automatico si accorge dei cambiamenti e aggiorna la documentazione).

Struttura

model_monitoring/
|
└─── .pre-commit-config.yaml
|
└─── pyproject.toml
|
└─── LICENCE
|
└─── MANIFEST.in
|
└─── README.md
|
└─── requirements.txt
|
└─── setup.py
|
└─── .gitignore
|
└─── docs/
|   |── build/
|   |   └── (Generated HTML output will be here)
|   └── source/
|   |   ├── _static/
|   |   |   └── (Static files)
|   |   ├── _templates/
|   |   |   └── autosummary/
|   |   |       ├── class.rst
|   |   |       ├── base.rst
|   |   |       └── module.rst
|   |   ├── conf.py
|   |   ├── index.rst
|   |   └── modules/
|   |       └── (Autogenerated rst files will be here)
|   |
|   └── Makefile
|   |
|   └── make.bat
|
└─── src/
    |
    └─── model_monitoring/
        |
        └─── __init__.py
        |
        └─── additional_metrics.py
        |
        └─── config.py
        |
        └─── imputer.py
        |
        └─── utils.py
        |
        └─── config
        |       params.yml
        |       algorithm_settings.yml
        └─── model_performance
        |       __init__.py
        |       model_performance.py
        └─── perfomance_measures
        |       __init__.py
        |       performance_measures.py
        └─── data_drift
        |       __init__.py
        |       data_drift.py
        └─── reference_metadata
        |       __init__.py
        |       reference_metadata.py
        └─── fairness_measures
        |       __init__.py
        |       fairness_measures.py
        └─── fairness_drift
        |       __init__.py
        |       fairness_drift.py
        └─── XAI
        |       __init__.py
        |       xai.py
        └─── XAI_drift
        |       __init__.py
        |       XAI_drift.py

Utilizzo

Settare i parametri di configurazione algorithm_settings.yml contenuto in config/ per definire i parametri generali delle classi e il path di salvataggio dei reports. Settare i parametri di configurazione in params.yml contenuto in config/ per cambiare i parametri di threshold di default. Una volta settati i parametri, si può lanciare un eventuale script python main.py che a seconda dei parametri di configurazione printerà gli Alert di Performances, Data Drift, Fairness e XAI se ve ne sono, e salva i report riassuntivi delle classi.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

model_monitoring-2.1.0.tar.gz (76.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

model_monitoring-2.1.0-py3-none-any.whl (82.2 kB view details)

Uploaded Python 3

File details

Details for the file model_monitoring-2.1.0.tar.gz.

File metadata

  • Download URL: model_monitoring-2.1.0.tar.gz
  • Upload date:
  • Size: 76.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.12

File hashes

Hashes for model_monitoring-2.1.0.tar.gz
Algorithm Hash digest
SHA256 885e28ef51c9e85e80794ead8d00fbef295f3618bd02c1d63882f3724a93fc9f
MD5 8ba7a460d16d2e35b2fc8ef016892b9b
BLAKE2b-256 83af88c23bc4d3113df64615a623c3c3128fa649cd4f5f6cd85e3b40aadf6cc3

See more details on using hashes here.

File details

Details for the file model_monitoring-2.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for model_monitoring-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6c561c78ace17b68f2af61d8b8ed2b746f8ae2ede79a612c2e3f67905953ab2
MD5 1236564acb769893aeb1874614c1a84c
BLAKE2b-256 2613798800a4c29684c6906d402d73d844c3fb27a4b02aa3f0951f8581e3bb44

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page