Skip to main content

luml.experiments.tracker

ExperimentTracker Objects

class ExperimentTracker()

Local experiment tracking for ML experiments.

Tracks metrics, parameters, artifacts, and traces for machine learning experiments. Supports multiple backend storage options via connection strings.

Arguments:

  • connection_string - Backend connection string. Format: 'backend://config'. Default is 'sqlite://./experiments' for local SQLite storage.

Example:

tracker = ExperimentTracker("sqlite://./my_experiments")
exp_id = tracker.start_experiment(name="my_experiment", tags=["baseline"])
tracker.log_static("learning_rate", 0.001, experiment_id=exp_id)
tracker.log_dynamic("loss", 0.5, step=1, experiment_id=exp_id)
tracker.end_experiment(exp_id)

start_experiment

def start_experiment(experiment_id: str | None = None,
name: str | None = None,
group: str | None = None,
tags: list[str] | None = None) -> str

Start a new experiment tracking session.

Arguments:

  • experiment_id - Unique experiment ID. Auto-generated if not provided.
  • name - Human-readable experiment name.
  • group - Group name to organize related experiments.
  • tags - List of tags for categorizing the experiment.

Returns:

  • str - The experiment ID.

Example:

tracker = ExperimentTracker()
exp_id = tracker.start_experiment(
name="baseline_model",
group="image_classification",
tags=["resnet", "baseline"]
)

end_experiment

def end_experiment(experiment_id: str | None = None) -> None

End an active experiment tracking session.

Arguments:

  • experiment_id - ID of experiment to end. Uses current experiment if not specified.

Example:

tracker = ExperimentTracker()
exp_id = tracker.start_experiment(name="my_exp")
tracker.end_experiment(exp_id)

log_static

def log_static(key: str, value: Any, experiment_id: str | None = None) -> None

Log static parameters or metadata (values that don't change during training).

Arguments:

  • key - Parameter name.
  • value - Parameter value (can be any serializable type).
  • experiment_id - Experiment ID. Uses current experiment if not specified.

Example:

tracker = ExperimentTracker()
exp_id = tracker.start_experiment()
tracker.log_static("learning_rate", 0.001)
tracker.log_static("model_architecture", "resnet50")
tracker.log_static("batch_size", 32)

log_dynamic

def log_dynamic(key: str,
value: int | float,
step: int | None = None,
experiment_id: str | None = None) -> None

Log time-series metrics (values that change during training).

Arguments:

  • key - Metric name.
  • value - Metric value (numeric).
  • step - Training step/epoch number.
  • experiment_id - Experiment ID. Uses current experiment if not specified.

Example:

tracker = ExperimentTracker()
exp_id = tracker.start_experiment()
for epoch in range(10):
loss = train_epoch()
tracker.log_dynamic("train_loss", loss, step=epoch)

log_attachment

def log_attachment(name: str,
data: Any,
binary: bool = False,
experiment_id: str | None = None) -> None

Log files or artifacts to the experiment.

Arguments:

  • name - Attachment name/filename.
  • data - Data to attach (string, bytes, or file path).
  • binary - Whether data is binary. Default is False.
  • experiment_id - Experiment ID. Uses current experiment if not specified.

Example:

tracker = ExperimentTracker()
exp_id = tracker.start_experiment()
tracker.log_attachment("model_config.json", config_json)
tracker.log_attachment("plot.png", image_bytes, binary=True)

list_experiments

def list_experiments() -> list[dict[str, Any]]

List all experiments in the backend.

Returns:

List of experiment dictionaries with metadata.

Example:

tracker = ExperimentTracker()
experiments = tracker.list_experiments()
for exp in experiments:
print(f"{exp['id']}: {exp['name']}")
def link_to_model(model_reference: ModelReference,
experiment_id: str | None = None) -> None

Link experiment data to a saved model.

Attaches experiment tracking data (metrics, parameters, artifacts) to a model for reproducibility and model versioning.

Arguments:

  • model_reference - ModelReference object to link to.
  • experiment_id - Experiment ID. Uses current experiment if not specified.

Example:

from luml.integrations.sklearn import save_sklearn

tracker = ExperimentTracker()
exp_id = tracker.start_experiment(name="sklearn_model")
tracker.log_static("model_type", "RandomForest")

model_ref = save_sklearn(model, X_train)
tracker.link_to_model(model_ref)

enable_tracing

def enable_tracing() -> None

Enable OpenTelemetry tracing for the experiment.

Sets up automatic tracing of function calls and links traces to the experiment. Useful for tracking execution flow in ML pipelines.

Example:

tracker = ExperimentTracker()
tracker.enable_tracing()
exp_id = tracker.start_experiment()
# All traced functions will be logged to this experiment