Pipeline architecture

Concevoir des pipelines de prévision pour la production

Rami Krispin

Senior Manager, Data Science and Engineering

Model deployment

Experimentation Process

Concevoir des pipelines de prévision pour la production

Model deployment

ETL and ML Pipelines

Concevoir des pipelines de prévision pour la production

Pipelines requirements

Data ingestion

  • Refresh frequency - daily

Forecast refresh

  • Refresh frequency - daily
  • Forecast horizon - 72 hours

Robust

  • Unit testing and validation steps
  • Logs
  • Easy to maintain
Concevoir des pipelines de prévision pour la production

Pipeline design

Pipeline requirements, including API requests, data transformation, forecast refresh, and logging

Concevoir des pipelines de prévision pour la production

Pipeline design

Data ingestion process

Concevoir des pipelines de prévision pour la production

Pipeline design

Forecasting automation

Concevoir des pipelines de prévision pour la production

Pipeline design

Data storage

Concevoir des pipelines de prévision pour la production

Pipeline design

Logging

Concevoir des pipelines de prévision pour la production

Pipeline design

Tools used in pipeline - Airflow, mlflow, nixtla

Concevoir des pipelines de prévision pour la production

Model registry

Approaches

  • Register all models
  • Register only the top model

Requirements

  • MLflow flavor
  • Customized function
  • Fitted object
  • Predicted method
Concevoir des pipelines de prévision pour la production

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)
Concevoir des pipelines de prévision pour la production

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"] }
Concevoir des pipelines de prévision pour la production

Model registry

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

mlf.fit(ts)
Concevoir des pipelines de prévision pour la production

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")
Concevoir des pipelines de prévision pour la production

Model registry

Model registry with run name highlighted

Concevoir des pipelines de prévision pour la production

Model registry

Model registry with model name highlighted

Concevoir des pipelines de prévision pour la production

Model registry

Model registry metadata

Concevoir des pipelines de prévision pour la production

Let's practice!

Concevoir des pipelines de prévision pour la production

Preparing Video For Download...