Saltar al contenido

Referencia para ultralytics/utils/callbacks/mlflow.py

Nota

Este archivo est谩 disponible en https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/callbacks/mlflow .py. Si detectas alg煤n problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 馃洜锔. 隆Gracias 馃檹!



ultralytics.utils.callbacks.mlflow.on_pretrain_routine_end(trainer)

Registra los par谩metros de entrenamiento en MLflow al final de la rutina de preentrenamiento.

Esta funci贸n configura el registro MLflow bas谩ndose en variables de entorno y argumentos del entrenador. Establece el URI de seguimiento el nombre del experimento y el nombre de la ejecuci贸n, y luego inicia la ejecuci贸n de MLflow si no est谩 ya activa. Por 煤ltimo, registra los par谩metros del entrenador.

Par谩metros:

Nombre Tipo Descripci贸n Por defecto
trainer BaseTrainer

El objeto de entrenamiento con argumentos y par谩metros para registrar.

necesario
Global

mlflow: El m贸dulo mlflow importado que se utilizar谩 para el registro.

Variables de entorno

MLFLOW_TRACKING_URI: El URI para el seguimiento de MLflow. Si no se establece, por defecto es 'runs/mlflow'. MLFLOW_NOMBRE_EXPERIMENTO: El nombre del experimento MLflow. Si no se establece, por defecto es trainer.args.project. EJECUCI脫N_MLFLOW: El nombre de la ejecuci贸n MLflow. Si no se establece, por defecto es trainer.args.name. MLFLOW_KEEP_RUN_ACTIVE: booleano que indica si se debe mantener activa la ejecuci贸n de MLflow una vez finalizado el entrenamiento.

C贸digo fuente en ultralytics/utils/callbacks/mlflow.py
def on_pretrain_routine_end(trainer):
    """
    Log training parameters to MLflow at the end of the pretraining routine.

    This function sets up MLflow logging based on environment variables and trainer arguments. It sets the tracking URI,
    experiment name, and run name, then starts the MLflow run if not already active. It finally logs the parameters
    from the trainer.

    Args:
        trainer (ultralytics.engine.trainer.BaseTrainer): The training object with arguments and parameters to log.

    Global:
        mlflow: The imported mlflow module to use for logging.

    Environment Variables:
        MLFLOW_TRACKING_URI: The URI for MLflow tracking. If not set, defaults to 'runs/mlflow'.
        MLFLOW_EXPERIMENT_NAME: The name of the MLflow experiment. If not set, defaults to trainer.args.project.
        MLFLOW_RUN: The name of the MLflow run. If not set, defaults to trainer.args.name.
        MLFLOW_KEEP_RUN_ACTIVE: Boolean indicating whether to keep the MLflow run active after the end of training.
    """
    global mlflow

    uri = os.environ.get("MLFLOW_TRACKING_URI") or str(RUNS_DIR / "mlflow")
    LOGGER.debug(f"{PREFIX} tracking uri: {uri}")
    mlflow.set_tracking_uri(uri)

    # Set experiment and run names
    experiment_name = os.environ.get("MLFLOW_EXPERIMENT_NAME") or trainer.args.project or "/Shared/YOLOv8"
    run_name = os.environ.get("MLFLOW_RUN") or trainer.args.name
    mlflow.set_experiment(experiment_name)

    mlflow.autolog()
    try:
        active_run = mlflow.active_run() or mlflow.start_run(run_name=run_name)
        LOGGER.info(f"{PREFIX}logging run_id({active_run.info.run_id}) to {uri}")
        if Path(uri).is_dir():
            LOGGER.info(f"{PREFIX}view at http://127.0.0.1:5000 with 'mlflow server --backend-store-uri {uri}'")
        LOGGER.info(f"{PREFIX}disable with 'yolo settings mlflow=False'")
        mlflow.log_params(dict(trainer.args))
    except Exception as e:
        LOGGER.warning(f"{PREFIX}WARNING 鈿狅笍 Failed to initialize: {e}\n" f"{PREFIX}WARNING 鈿狅笍 Not tracking this run")



ultralytics.utils.callbacks.mlflow.on_train_epoch_end(trainer)

Registra las m茅tricas de entrenamiento al final de cada 茅poca de entrenamiento en MLflow.

C贸digo fuente en ultralytics/utils/callbacks/mlflow.py
def on_train_epoch_end(trainer):
    """Log training metrics at the end of each train epoch to MLflow."""
    if mlflow:
        mlflow.log_metrics(
            metrics={
                **SANITIZE(trainer.lr),
                **SANITIZE(trainer.label_loss_items(trainer.tloss, prefix="train")),
            },
            step=trainer.epoch,
        )



ultralytics.utils.callbacks.mlflow.on_fit_epoch_end(trainer)

Registra las m茅tricas de entrenamiento al final de cada 茅poca de ajuste en MLflow.

C贸digo fuente en ultralytics/utils/callbacks/mlflow.py
def on_fit_epoch_end(trainer):
    """Log training metrics at the end of each fit epoch to MLflow."""
    if mlflow:
        mlflow.log_metrics(metrics=SANITIZE(trainer.metrics), step=trainer.epoch)



ultralytics.utils.callbacks.mlflow.on_train_end(trainer)

Registra los artefactos del modelo al final del entrenamiento.

C贸digo fuente en ultralytics/utils/callbacks/mlflow.py
def on_train_end(trainer):
    """Log model artifacts at the end of the training."""
    if mlflow:
        mlflow.log_artifact(str(trainer.best.parent))  # log save_dir/weights directory with best.pt and last.pt
        for f in trainer.save_dir.glob("*"):  # log all other files in save_dir
            if f.suffix in {".png", ".jpg", ".csv", ".pt", ".yaml"}:
                mlflow.log_artifact(str(f))
        keep_run_active = os.environ.get("MLFLOW_KEEP_RUN_ACTIVE", "False").lower() == "true"
        if keep_run_active:
            LOGGER.info(f"{PREFIX}mlflow run still alive, remember to close it using mlflow.end_run()")
        else:
            mlflow.end_run()
            LOGGER.debug(f"{PREFIX}mlflow run ended")

        LOGGER.info(
            f"{PREFIX}results logged to {mlflow.get_tracking_uri()}\n"
            f"{PREFIX}disable with 'yolo settings mlflow=False'"
        )





Creado 2023-11-12, Actualizado 2024-05-18
Autores: glenn-jocher (5), Burhan-Q (1), Laughing-q (1)