Spaces:
Running
Running
| # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license | |
| """Base callbacks.""" | |
| from collections import defaultdict | |
| from copy import deepcopy | |
| # Trainer callbacks ---------------------------------------------------------------------------------------------------- | |
| def on_pretrain_routine_start(trainer): | |
| """Called before the pretraining routine starts.""" | |
| pass | |
| def on_pretrain_routine_end(trainer): | |
| """Called after the pretraining routine ends.""" | |
| pass | |
| def on_train_start(trainer): | |
| """Called when the training starts.""" | |
| pass | |
| def on_train_epoch_start(trainer): | |
| """Called at the start of each training epoch.""" | |
| pass | |
| def on_train_batch_start(trainer): | |
| """Called at the start of each training batch.""" | |
| pass | |
| def optimizer_step(trainer): | |
| """Called when the optimizer takes a step.""" | |
| pass | |
| def on_before_zero_grad(trainer): | |
| """Called before the gradients are set to zero.""" | |
| pass | |
| def on_train_batch_end(trainer): | |
| """Called at the end of each training batch.""" | |
| pass | |
| def on_train_epoch_end(trainer): | |
| """Called at the end of each training epoch.""" | |
| pass | |
| def on_fit_epoch_end(trainer): | |
| """Called at the end of each fit epoch (train + val).""" | |
| pass | |
| def on_model_save(trainer): | |
| """Called when the model is saved.""" | |
| pass | |
| def on_train_end(trainer): | |
| """Called when the training ends.""" | |
| pass | |
| def on_params_update(trainer): | |
| """Called when the model parameters are updated.""" | |
| pass | |
| def teardown(trainer): | |
| """Called during the teardown of the training process.""" | |
| pass | |
| # Validator callbacks -------------------------------------------------------------------------------------------------- | |
| def on_val_start(validator): | |
| """Called when the validation starts.""" | |
| pass | |
| def on_val_batch_start(validator): | |
| """Called at the start of each validation batch.""" | |
| pass | |
| def on_val_batch_end(validator): | |
| """Called at the end of each validation batch.""" | |
| pass | |
| def on_val_end(validator): | |
| """Called when the validation ends.""" | |
| pass | |
| # Predictor callbacks -------------------------------------------------------------------------------------------------- | |
| def on_predict_start(predictor): | |
| """Called when the prediction starts.""" | |
| pass | |
| def on_predict_batch_start(predictor): | |
| """Called at the start of each prediction batch.""" | |
| pass | |
| def on_predict_batch_end(predictor): | |
| """Called at the end of each prediction batch.""" | |
| pass | |
| def on_predict_postprocess_end(predictor): | |
| """Called after the post-processing of the prediction ends.""" | |
| pass | |
| def on_predict_end(predictor): | |
| """Called when the prediction ends.""" | |
| pass | |
| # Exporter callbacks --------------------------------------------------------------------------------------------------- | |
| def on_export_start(exporter): | |
| """Called when the model export starts.""" | |
| pass | |
| def on_export_end(exporter): | |
| """Called when the model export ends.""" | |
| pass | |
| default_callbacks = { | |
| # Run in trainer | |
| "on_pretrain_routine_start": [on_pretrain_routine_start], | |
| "on_pretrain_routine_end": [on_pretrain_routine_end], | |
| "on_train_start": [on_train_start], | |
| "on_train_epoch_start": [on_train_epoch_start], | |
| "on_train_batch_start": [on_train_batch_start], | |
| "optimizer_step": [optimizer_step], | |
| "on_before_zero_grad": [on_before_zero_grad], | |
| "on_train_batch_end": [on_train_batch_end], | |
| "on_train_epoch_end": [on_train_epoch_end], | |
| "on_fit_epoch_end": [on_fit_epoch_end], # fit = train + val | |
| "on_model_save": [on_model_save], | |
| "on_train_end": [on_train_end], | |
| "on_params_update": [on_params_update], | |
| "teardown": [teardown], | |
| # Run in validator | |
| "on_val_start": [on_val_start], | |
| "on_val_batch_start": [on_val_batch_start], | |
| "on_val_batch_end": [on_val_batch_end], | |
| "on_val_end": [on_val_end], | |
| # Run in predictor | |
| "on_predict_start": [on_predict_start], | |
| "on_predict_batch_start": [on_predict_batch_start], | |
| "on_predict_postprocess_end": [on_predict_postprocess_end], | |
| "on_predict_batch_end": [on_predict_batch_end], | |
| "on_predict_end": [on_predict_end], | |
| # Run in exporter | |
| "on_export_start": [on_export_start], | |
| "on_export_end": [on_export_end], | |
| } | |
| def get_default_callbacks(): | |
| """ | |
| Return a copy of the default_callbacks dictionary with lists as default values. | |
| Returns: | |
| (defaultdict): A defaultdict with keys from default_callbacks and empty lists as default values. | |
| """ | |
| return defaultdict(list, deepcopy(default_callbacks)) | |
| def add_integration_callbacks(instance): | |
| """ | |
| Add integration callbacks from various sources to the instance's callbacks. | |
| Args: | |
| instance (Trainer, Predictor, Validator, Exporter): An object with a 'callbacks' attribute that is a dictionary | |
| of callback lists. | |
| """ | |
| # Load HUB callbacks | |
| from .hub import callbacks as hub_cb | |
| callbacks_list = [hub_cb] | |
| # Load training callbacks | |
| if "Trainer" in instance.__class__.__name__: | |
| from .clearml import callbacks as clear_cb | |
| from .comet import callbacks as comet_cb | |
| from .dvc import callbacks as dvc_cb | |
| from .mlflow import callbacks as mlflow_cb | |
| from .neptune import callbacks as neptune_cb | |
| from .raytune import callbacks as tune_cb | |
| from .tensorboard import callbacks as tb_cb | |
| from .wb import callbacks as wb_cb | |
| callbacks_list.extend([clear_cb, comet_cb, dvc_cb, mlflow_cb, neptune_cb, tune_cb, tb_cb, wb_cb]) | |
| # Add the callbacks to the callbacks dictionary | |
| for callbacks in callbacks_list: | |
| for k, v in callbacks.items(): | |
| if v not in instance.callbacks[k]: | |
| instance.callbacks[k].append(v) | |