Architettura della pipeline

Progettare pipeline di forecasting per la produzione

Rami Krispin

Senior Manager, Data Science and Engineering

Deployment del modello

Processo di sperimentazione

Progettare pipeline di forecasting per la produzione

Deployment del modello

Pipeline ETL e ML

Progettare pipeline di forecasting per la produzione

Requisiti delle pipeline

Ingestione dati

  • Frequenza aggiornamento: giornaliera

Aggiornamento forecast

  • Frequenza aggiornamento: giornaliera
  • Orizzonte: 72 ore

Robustezza

  • Unit test e step di validazione
  • Log
  • Facile da mantenere
Progettare pipeline di forecasting per la produzione

Design della pipeline

Requisiti della pipeline: richieste API, trasformazione dati, refresh forecast e logging

Progettare pipeline di forecasting per la produzione

Design della pipeline

Processo di ingestione dati

Progettare pipeline di forecasting per la produzione

Design della pipeline

Automazione del forecasting

Progettare pipeline di forecasting per la produzione

Design della pipeline

Archiviazione dati

Progettare pipeline di forecasting per la produzione

Design della pipeline

Logging

Progettare pipeline di forecasting per la produzione

Design della pipeline

Strumenti usati nella pipeline - Airflow, mlflow, nixtla

Progettare pipeline di forecasting per la produzione

Model registry

Approcci

  • Registra tutti i modelli
  • Registra solo il modello top

Requisiti

  • Flavor MLflow
  • Funzione personalizzata
  • Oggetto fittato
  • Metodo predict
Progettare pipeline di forecasting per la produzione

Model registry

from lightgbm import LGBMRegressor
from mlforecast import MLForecast
import mlflow
import mlforecast.flavor


experiment_name = "ml_forecast" mlflow_path = "file:///mlruns"
meta = mlflow.get_experiment_by_name(experiment_name)
Progettare pipeline di forecasting per la produzione

Model registry

model = LGBMRegressor(n_estimators = 500, learning_rate= 0.05)


params = { "freq": "h", "lags": list(range(1, 24)), "date_features": ["month", "day", "dayofweek", "week", "hour"] }
Progettare pipeline di forecasting per la produzione

Model registry

mlf = MLForecast(
    models= model,  
    freq= params["freq"], 
    lags=params["lags"],
    date_features=params["date_features"]
)

mlf.fit(ts)
Progettare pipeline di forecasting per la produzione

Model registry

run_time = datetime.datetime.now().strftime("%Y-%m-%d %H-%M-%S")
run_name = f"lightGBM6_{run_time}"


print(run_name)
'lightGBM6_2025-05-19 05-12-16'
with mlflow.start_run(experiment_id=meta.experiment_id, 
                      run_name=run_name) as run:
  mlforecast.flavor.log_model(model=mlf, artifact_path="prod_model")
Progettare pipeline di forecasting per la produzione

Model registry

Model registry con run name evidenziato

Progettare pipeline di forecasting per la produzione

Model registry

Model registry con model name evidenziato

Progettare pipeline di forecasting per la produzione

Model registry

Metadata del model registry

Progettare pipeline di forecasting per la produzione

Passiamo alla pratica !

Progettare pipeline di forecasting per la produzione

Preparing Video For Download...