File size: 1,065 Bytes
9c1c0ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from __future__ import annotations

from typing import Any

from datapilot.config import Settings


def log_to_mlflow(payload: dict[str, Any], settings: Settings) -> bool:
    """Record a run when MLflow is enabled; local demos remain dependency-light."""
    if not settings.enable_mlflow:
        return False
    try:
        import mlflow

        mlflow.set_tracking_uri(settings.mlflow_tracking_uri)
        mlflow.set_experiment("datapilot-ai")
        best = payload["model_results"][0]
        with mlflow.start_run(run_name=payload["run_id"]):
            mlflow.log_params(
                {
                    "dataset": payload["dataset_name"],
                    "task_type": payload["profile"]["task_type"],
                    "target": payload["profile"]["target"],
                    "selected_model": payload["best_model"],
                }
            )
            mlflow.log_metrics({key: float(value) for key, value in best["metrics"].items()})
        return True
    except Exception:
        return False