Skip to content

on_pretrain_routine_end


Logs info before starting timer for upload rate limit.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_pretrain_routine_end(trainer):
    """Logs info before starting timer for upload rate limit."""
    session = getattr(trainer, 'hub_session', None)
    if session:
        # Start timer for upload rate limit
        LOGGER.info(f'{PREFIX}View model at https://hub.ultralytics.com/models/{session.model_id} 🚀')
        session.timers = {'metrics': time(), 'ckpt': time()}  # start timer on session.rate_limit



on_fit_epoch_end


Uploads training progress metrics at the end of each epoch.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_fit_epoch_end(trainer):
    """Uploads training progress metrics at the end of each epoch."""
    session = getattr(trainer, 'hub_session', None)
    if session:
        # Upload metrics after val end
        all_plots = {**trainer.label_loss_items(trainer.tloss, prefix='train'), **trainer.metrics}
        if trainer.epoch == 0:
            all_plots = {**all_plots, **model_info_for_loggers(trainer)}
        session.metrics_queue[trainer.epoch] = json.dumps(all_plots)
        if time() - session.timers['metrics'] > session.rate_limits['metrics']:
            session.upload_metrics()
            session.timers['metrics'] = time()  # reset timer
            session.metrics_queue = {}  # reset queue



on_model_save


Saves checkpoints to Ultralytics HUB with rate limiting.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_model_save(trainer):
    """Saves checkpoints to Ultralytics HUB with rate limiting."""
    session = getattr(trainer, 'hub_session', None)
    if session:
        # 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 https://hub.ultralytics.com/models/{session.model_id}')
            session.upload_model(trainer.epoch, trainer.last, is_best)
            session.timers['ckpt'] = time()  # reset timer



on_train_end


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

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_train_end(trainer):
    """Upload final model and metrics to Ultralytics HUB at the end of training."""
    session = getattr(trainer, 'hub_session', None)
    if session:
        # 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'
                    f'{PREFIX}View model at https://hub.ultralytics.com/models/{session.model_id} 🚀')



on_train_start


Run events on train start.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_train_start(trainer):
    """Run events on train start."""
    events(trainer.args)



on_val_start


Runs events on validation start.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_val_start(validator):
    """Runs events on validation start."""
    events(validator.args)



on_predict_start


Run events on predict start.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_predict_start(predictor):
    """Run events on predict start."""
    events(predictor.args)



on_export_start


Run events on export start.

Source code in ultralytics/yolo/utils/callbacks/hub.py
def on_export_start(exporter):
    """Run events on export start."""
    events(exporter.args)




Created 2023-04-16, Updated 2023-05-17
Authors: Glenn Jocher (3)