Progettare esperimenti riproducibili

Sviluppare modelli di Machine Learning per la produzione

Sinan Ozdemir

Data Scientist and Author

Esperimenti riproducibili

  • Garantire accuratezza e affidabilità.
  • Più facile replicare i risultati.
  • Migliora la collaborazione.
  • Riduce il rischio di bias nei modelli ML.
  • Rafforza l’integrità della ricerca.
Sviluppare modelli di Machine Learning per la produzione

MLflow

Una piattaforma open source per tracciare e gestire esperimenti di machine learning. MLflow può:

  • Creare pipeline ML riproducibili
  • Tracciare e gestire:
    • dipendenze dei package
    • versioni del codice
    • impostazioni dell’esperimento
  • Consentire a più utenti di accedere agli esperimenti

mlflow

1 https://www.databricks.com/blog/2018/06/05/introducing-mlflow-an-open-source-machine-learning-platform.html
Sviluppare modelli di Machine Learning per la produzione

Esempio di uso di Mlflow

# standard scikit-learn imports
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# new imports from MLflow
import mlflow
import mlflow.sklearn
Sviluppare modelli di Machine Learning per la produzione

Esempio di uso di MLflow (cont.)

with mlflow.start_run():  # Start an MLflow run assuming we have data prepared

    # Build and train model
    rf = RandomForestClassifier()
    rf.fit(X_train, y_train)

    # Log parameters and model information
    mlflow.log_param("n_estimators", rf.n_estimators)
    mlflow.sklearn.log_model(rf, "model")

    y_pred = rf.predict(X_test)  # Evaluate model
    accuracy = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", accuracy)  # log the test accuracy metric
Sviluppare modelli di Machine Learning per la produzione

Tracciamento del codice

  • Registrare versioni e modifiche del codice con MLflow
  • Confrontare diverse versioni di codice
  • Identificare quale versione ha prodotto certi risultati
  • Riprodurre gli esperimenti facilmente
  • Facilitare debug e troubleshooting
Sviluppare modelli di Machine Learning per la produzione

Registry dei modelli

  • Repository centralizzato di modelli e metadati
  • MLflow può registrare, salvare e confrontare diverse versioni di modelli
  • Riprodurre intere pipeline ML
  • Usato per confrontare modelli
  • Garantire accuratezza e affidabilità dei modelli

archiviazione

Sviluppare modelli di Machine Learning per la produzione

Riproducibilità degli esperimenti

  • Tracciare e registrare dati in input, codice e impostazioni
  • Riprodurre intere pipeline ML
  • Aumentare la fiducia nei risultati dei modelli
  • Permettere ad altri di verificare e riusare il lavoro
  • Assicurare risultati coerenti tra run diversi

Sviluppare modelli di Machine Learning per la produzione

Rivedere la documentazione

  • La documentazione è essenziale per ML riproducibile e dovrebbe includere:
    • Dati di input dei modelli.
    • Il codice usato per creare i modelli.
    • Qualsiasi impostazione usata nell’esperimento.
    • I risultati (modello scelto, ecc.)
  • La documentazione deve essere accessibile
  • Deve essere un registro completo dell’esperimento
Sviluppare modelli di Machine Learning per la produzione

Passiamo alla pratica!

Sviluppare modelli di Machine Learning per la produzione

Preparing Video For Download...