Skip to content

Reference for ultralytics/utils/callbacks/hub.py

Improvements

This page is sourced from https://github.com/ultralytics/ultralytics/blob/main/ultralytics/utils/callbacks/hub.py. Have an improvement or example to add? Open a Pull Request — thank you! 🙏


function ultralytics.utils.callbacks.hub.on_pretrain_routine_start

def on_pretrain_routine_start(trainer)

Create a remote Ultralytics HUB session to log local model training.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_pretrain_routine_start(trainer):
    """Create a remote Ultralytics HUB session to log local model training."""
    if RANK in {-1, 0} and SETTINGS["hub"] is True and SETTINGS["api_key"] and trainer.hub_session is None:
        trainer.hub_session = HUBTrainingSession.create_session(trainer.args.model, trainer.args)





function ultralytics.utils.callbacks.hub.on_pretrain_routine_end

def on_pretrain_routine_end(trainer)

Initialize timers for upload rate limiting before training begins.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_pretrain_routine_end(trainer):
    """Initialize timers for upload rate limiting before training begins."""
    if session := getattr(trainer, "hub_session", None):
        # Start timer for upload rate limit
        session.timers = {"metrics": time(), "ckpt": time()}  # start timer for session rate limiting





function ultralytics.utils.callbacks.hub.on_fit_epoch_end

def on_fit_epoch_end(trainer)

Upload training progress metrics to Ultralytics HUB at the end of each epoch.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_fit_epoch_end(trainer):
    """Upload training progress metrics to Ultralytics HUB at the end of each epoch."""
    if session := getattr(trainer, "hub_session", None):
        # Upload metrics after validation ends
        all_plots = {
            **trainer.label_loss_items(trainer.tloss, prefix="train"),
            **trainer.metrics,
        }
        if trainer.epoch == 0:
            from ultralytics.utils.torch_utils import model_info_for_loggers

            all_plots = {**all_plots, **model_info_for_loggers(trainer)}

        session.metrics_queue[trainer.epoch] = json.dumps(all_plots)

        # If any metrics failed to upload previously, add them to the queue to attempt uploading again
        if session.metrics_upload_failed_queue:
            session.metrics_queue.update(session.metrics_upload_failed_queue)

        if time() - session.timers["metrics"] > session.rate_limits["metrics"]:
            session.upload_metrics()
            session.timers["metrics"] = time()  # reset timer
            session.metrics_queue = {}  # reset queue





function ultralytics.utils.callbacks.hub.on_model_save

def on_model_save(trainer)

Upload model checkpoints to Ultralytics HUB with rate limiting.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_model_save(trainer):
    """Upload model checkpoints to Ultralytics HUB with rate limiting."""
    if session := getattr(trainer, "hub_session", None):
        # Upload checkpoints with rate limiting
        is_best = trainer.best_fitness == trainer.fitness
        if time() - session.timers["ckpt"] > session.rate_limits["ckpt"]:
            LOGGER.info(f"{PREFIX}Uploading checkpoint {HUB_WEB_ROOT}/models/{session.model.id}")
            session.upload_model(trainer.epoch, trainer.last, is_best)
            session.timers["ckpt"] = time()  # reset timer





function ultralytics.utils.callbacks.hub.on_train_end

def on_train_end(trainer)

Upload final model and metrics to Ultralytics HUB at the end of training.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_train_end(trainer):
    """Upload final model and metrics to Ultralytics HUB at the end of training."""
    if session := getattr(trainer, "hub_session", None):
        # Upload final model and metrics with exponential standoff
        LOGGER.info(f"{PREFIX}Syncing final model...")
        session.upload_model(
            trainer.epoch,
            trainer.best,
            map=trainer.metrics.get("metrics/mAP50-95(B)", 0),
            final=True,
        )
        session.alive = False  # stop heartbeats
        LOGGER.info(f"{PREFIX}Done ✅\n{PREFIX}View model at {session.model_url} 🚀")





function ultralytics.utils.callbacks.hub.on_train_start

def on_train_start(trainer)

Run events on train start.

Args

NameTypeDescriptionDefault
trainerrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_train_start(trainer):
    """Run events on train start."""
    events(trainer.args, trainer.device)





function ultralytics.utils.callbacks.hub.on_val_start

def on_val_start(validator)

Run events on validation start.

Args

NameTypeDescriptionDefault
validatorrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_val_start(validator):
    """Run events on validation start."""
    if not validator.training:
        events(validator.args, validator.device)





function ultralytics.utils.callbacks.hub.on_predict_start

def on_predict_start(predictor)

Run events on predict start.

Args

NameTypeDescriptionDefault
predictorrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_predict_start(predictor):
    """Run events on predict start."""
    events(predictor.args, predictor.device)





function ultralytics.utils.callbacks.hub.on_export_start

def on_export_start(exporter)

Run events on export start.

Args

NameTypeDescriptionDefault
exporterrequired
Source code in ultralytics/utils/callbacks/hub.pyView on GitHub
def on_export_start(exporter):
    """Run events on export start."""
    events(exporter.args, exporter.device)





📅 Created 2 years ago ✏️ Updated 2 days ago
glenn-jocherjk4eBurhan-Q