Source code for mlflow.tracing.destination

from dataclasses import dataclass
from typing import Optional

from mlflow.exceptions import MlflowException
from mlflow.utils.annotations import experimental


[docs]@experimental @dataclass class TraceDestination: """A configuration object for specifying the destination of trace data.""" @property def type(self) -> str: """Type of the destination.""" raise NotImplementedError
[docs]@experimental @dataclass class MlflowExperiment(TraceDestination): """ A destination representing an MLflow experiment. By setting this destination in the :py:func:`mlflow.tracing.set_destination` function, MLflow will log traces to the specified experiment. Attributes: experiment_id: The ID of the experiment to log traces to. If not specified, the current active experiment will be used. tracking_uri: The tracking URI of the MLflow server to log traces to. If not specified, the current tracking URI will be used. """ experiment_id: Optional[str] = None tracking_uri: Optional[str] = None @property def type(self) -> str: return "experiment"
[docs]@experimental @dataclass class Databricks(TraceDestination): """ A destination representing a Databricks tracing server. By setting this destination in the :py:func:`mlflow.tracing.set_destination` function, MLflow will log traces to the specified experiment. If neither experiment_id nor experiment_name is specified, an active experiment when traces are created will be used as the destination. If both are specified, they must refer to the same experiment. Attributes: experiment_id: The ID of the experiment to log traces to. experiment_name: The name of the experiment to log traces to. """ experiment_id: Optional[str] = None experiment_name: Optional[str] = None def __post_init__(self): if self.experiment_id is not None: self.experiment_id = str(self.experiment_id) if self.experiment_name is not None: from mlflow.tracking._tracking_service.utils import _get_store # NB: Use store directly rather than fluent API to avoid dependency on MLflowClient experiment_id = _get_store().get_experiment_by_name(self.experiment_name).experiment_id if self.experiment_id is not None and self.experiment_id != experiment_id: raise MlflowException.invalid_parameter_value( "experiment_id and experiment_name must refer to the same experiment" ) self.experiment_id = experiment_id @property def type(self) -> str: return "databricks"