Module neuralops.experiment_logging.callbacks
HuggingFace Trainer callback for automatic metric logging.
Classes
class LoggingCallback (tracker: MetricsTracker,
logger: logging.Logger)-
Expand source code
class LoggingCallback(TrainerCallback): """ Automatically captures training/evaluation logs and stores them in a MetricsTracker. Usage: tracker = MetricsTracker("metrics.json") trainer.add_callback(LoggingCallback(tracker, logger)) """ def __init__(self, tracker: MetricsTracker, logger: logging.Logger) -> None: self.tracker = tracker self.logger = logger def on_log(self, args, state, control, logs=None, **kwargs) -> None: """On log.""" if logs: step = state.global_step self.tracker.log(logs, step=step) # Log key metrics to the console/file logger loss = logs.get("loss", None) eval_loss = logs.get("eval_loss", None) lr = logs.get("learning_rate", None) msg = f"Step {step}: " if loss is not None: msg += f"loss={loss:.4f} " if eval_loss is not None: msg += f"eval_loss={eval_loss:.4f} " if lr is not None: msg += f"lr={lr:.2e}" self.logger.info(msg) def on_evaluate(self, args, state, control, metrics=None, **kwargs) -> None: """On evaluate.""" if metrics: self.logger.info("=== Evaluation ===") for k, v in metrics.items(): if isinstance(v, (int, float)): self.logger.info(f" {k}: {v:.4f}") else: self.logger.info(f" {k}: {v}") self.tracker.log(metrics, step=state.global_step) self.tracker.flush() def on_train_end(self, args, state, control, **kwargs) -> None: """On train end.""" self.tracker.save() self.logger.info("Training finished. Metrics saved.")Automatically captures training/evaluation logs and stores them in a MetricsTracker.
Usage -----= tracker = MetricsTracker("metrics.json") trainer.add_callback(LoggingCallback(tracker, logger))
Ancestors
- transformers.trainer_callback.TrainerCallback
Methods
def on_evaluate(self, args, state, control, metrics=None, **kwargs) ‑> None-
Expand source code
def on_evaluate(self, args, state, control, metrics=None, **kwargs) -> None: """On evaluate.""" if metrics: self.logger.info("=== Evaluation ===") for k, v in metrics.items(): if isinstance(v, (int, float)): self.logger.info(f" {k}: {v:.4f}") else: self.logger.info(f" {k}: {v}") self.tracker.log(metrics, step=state.global_step) self.tracker.flush()On evaluate.
def on_log(self, args, state, control, logs=None, **kwargs) ‑> None-
Expand source code
def on_log(self, args, state, control, logs=None, **kwargs) -> None: """On log.""" if logs: step = state.global_step self.tracker.log(logs, step=step) # Log key metrics to the console/file logger loss = logs.get("loss", None) eval_loss = logs.get("eval_loss", None) lr = logs.get("learning_rate", None) msg = f"Step {step}: " if loss is not None: msg += f"loss={loss:.4f} " if eval_loss is not None: msg += f"eval_loss={eval_loss:.4f} " if lr is not None: msg += f"lr={lr:.2e}" self.logger.info(msg)On log.
def on_train_end(self, args, state, control, **kwargs) ‑> None-
Expand source code
def on_train_end(self, args, state, control, **kwargs) -> None: """On train end.""" self.tracker.save() self.logger.info("Training finished. Metrics saved.")On train end.