mlflow#

Utilidades de registro de MLflow para modelos de PyMC.

Este módulo proporciona utilidades para registrar varios aspectos de los modelos de PyMC en MLflow, que luego se extiende a los modelos de PyMC-Marketing.

El autologging es compatible con modelos de PyMC y modelos de PyMC-Marketing. Esto incluye el registro de diagnósticos del muestreador, información del modelo, datos utilizados en el modelo y objetos de InferenceData.

La autologging se puede habilitar llamando a la función autolog. Las siguientes funciones están parcheadas:

  • pymc.sample:
    • log_versions(): Registra las versiones de PyMC-Marketing, PyMC y ArviZ en MLflow.

    • log_model_derived_info(): Registrar tipos de parámetros, coordenadas, gráfico del modelo, etc.

    • log_sample_diagnostics(): Registrar información derivada del objeto InferenceData.

    • log_arviz_summary(): Tabla de registro de estadísticas resumidas sobre los parámetros estimados

    • log_metadata(): Registra los metadatos de los datos utilizados en el modelo.

    • log_error(): Registra el seguimiento y la excepción si ocurre un error durante el muestreo.

  • pymc.find_MAP:
  • MMM.fit
    • Todos los parámetros, métricas y artefactos de pymc.sample

    • log_mmm_configuration(): Registra la configuración del modelo MMM.

  • CLVModel.fit:
    • Información dependiente del método de ajuste utilizado (MCMC o MAP)

    • Tipo de modelo y método de ajuste

Ejemplos#

Autologging para un modelo de PyMC:

import mlflow

import pymc as pm

import pymc_marketing.mlflow

pymc_marketing.mlflow.autolog()

# Usual PyMC model code
with pm.Model() as model:
    mu = pm.Normal("mu", mu=0, sigma=1)
    obs = pm.Normal("obs", mu=mu, sigma=1, observed=[1, 2, 3])

# Incorporate into MLflow workflow
mlflow.set_experiment("PyMC Experiment")

with mlflow.start_run():
    idata = pm.sample(model=model)

Autologging para un MMM de PyMC-Marketing:

import pandas as pd

import mlflow

from pymc_marketing.mmm import (
    GeometricAdstock,
    LogisticSaturation,
    MMM,
)
from pymc_marketing.paths import data_dir
import pymc_marketing.mlflow

pymc_marketing.mlflow.autolog(log_mmm=True)

# Usual PyMC-Marketing model code

file_path = data_dir / "mmm_example.csv"
data = pd.read_csv(file_path, parse_dates=["date_week"])

X = data.drop("y", axis=1)
y = data["y"]

mmm = MMM(
    adstock=GeometricAdstock(l_max=8),
    saturation=LogisticSaturation(),
    date_column="date_week",
    channel_columns=["x1", "x2"],
    control_columns=[
        "event_1",
        "event_2",
        "t",
    ],
    yearly_seasonality=2,
)

# Incorporate into MLflow workflow

mlflow.set_experiment("MMM Experiment")

with mlflow.start_run():
    idata = mmm.fit(X, y)

    # Additional specific logging
    fig = mmm.plot_components_contributions()
    mlflow.log_figure(fig, "components.png")

Autologging para un modelo CLV de PyMC-Marketing:

import pandas as pd

import mlflow

from pymc_marketing.clv import BetaGeoModel
from pymc_marketing.paths import data_dir

import pymc_marketing.mlflow

pymc_marketing.mlflow.autolog(log_clv=True)

mlflow.set_experiment("CLV Experiment")

file_path = data_dir / "clv_quickstart.csv"
data = pd.read_csv(file_path)
data["customer_id"] = data.index

model = BetaGeoModel(data=data)

with mlflow.start_run():
    model.fit()

Funciones

autolog([log_sampler_info, ...])

Soporte de autolog para modelos PyMC y modelos PyMC-Marketing.

create_log_callback([estadísticas, parámetros, ...])

Cree una función de callback para registrar estadísticas de muestra y valores de parámetros en MLflow durante el muestreo.

load_mmm(run_id[, full_model, keep_idata, ...])

Cargar un modelo MMM de PyMC-Marketing desde MLflow.

log_arviz_summary(idata, path[, var_names])

Registra el resumen de ArviZ como un artefacto en MLflow.

log_error(función, nombre_de_archivo)

Registrar error arbitrario capturado y seguimiento a MLflow.

log_inference_data(idata[, save_file])

Registre el InferenceData en MLflow.

log_likelihood_type(modelo)

Guarde el tipo de probabilidad del modelo en MLflow.

log_metadata(modelo, idata)

Registre los metadatos de los datos utilizados en el modelo en MLflow.

log_mmm(mmm[, ruta_del_artefacto, ...])

Registrar un MMM de PyMC-Marketing como un modelo nativo de MLflow para la ejecución actual.

log_mmm_configuration(mmm)

Registre la configuración del modelo MMM en MLflow.

log_mmm_evaluation_metrics(y_true, y_pred[, ...])

Registrar métricas de evaluación producidas por pymc_marketing.mmm.evaluation.compute_summary_metrics() en MLflow.

log_model_derived_info(modelo)

Registrar varios datos derivados del modelo en MLflow.

log_model_graph(modelo, ruta)

Registra el gráfico del modelo en PDF como artefacto en MLflow.

log_sample_diagnostics(idata[, tune])

Registrar muestras de diagnóstico en MLflow.

log_types_of_parameters(modelo)

Registra los tipos de parámetros en un modelo PyMC en MLflow.

log_versions()

Registre las versiones de PyMC-Marketing, PyMC y ArviZ en MLflow.

Clases

MMMWrapper(modelo[, método_de_predicción, ...])

Una clase para preparar un Modelo de Mezcla de Marketing (MMM) de PyMC para registrar y registrar en MLflow.