From d1c5717490a09810339baa86f3afa9b7742b63c3 Mon Sep 17 00:00:00 2001 From: vitusbenson Date: Tue, 27 Jan 2026 12:01:00 +0100 Subject: [PATCH] verbosity config printing configurable --- dmlcloud/core/callbacks/diagnostics.py | 28 ++++++++++++++++++++++++-- dmlcloud/core/pipeline.py | 4 +++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/dmlcloud/core/callbacks/diagnostics.py b/dmlcloud/core/callbacks/diagnostics.py index d2231b8..588acf2 100644 --- a/dmlcloud/core/callbacks/diagnostics.py +++ b/dmlcloud/core/callbacks/diagnostics.py @@ -19,8 +19,14 @@ class DiagnosticsCallback(Callback): """ A callback that logs diagnostics information at the beginning of training. + + Args: + verbose_config: If True, print full config. If False, print only key fields (default: False). """ + def __init__(self, verbose_config: bool = False): + self.verbose_config = verbose_config + def _experiment_header( self, name: str | None, @@ -78,8 +84,26 @@ def pre_run(self, pipe): diagnostics = self._general_diagnostics() - diagnostics += '\n* CONFIG:\n' - diagnostics += '\n'.join(f' {line}' for line in OmegaConf.to_yaml(pipe.config, resolve=True).splitlines()) + if self.verbose_config: + # Print full config + diagnostics += '\n* CONFIG:\n' + diagnostics += '\n'.join(f' {line}' for line in OmegaConf.to_yaml(pipe.config, resolve=True).splitlines()) + else: + # Print only key config fields for brevity + diagnostics += '\n* CONFIG SUMMARY:\n' + key_fields = ['name', 'datamodules', 'batch_size', 'lr', 'base_lr', 'epochs', 'loss', 'compile', 'wandb_project'] + for field in key_fields: + if field in pipe.config: + value = pipe.config[field] + # Truncate long values + value_str = str(value) + if len(value_str) > 100: + value_str = value_str[:97] + '...' + diagnostics += f' - {field}: {value_str}\n' + + # Show model modules count + if 'model' in pipe.config and 'modules' in pipe.config.model: + diagnostics += f' - model.modules: {len(pipe.config.model.modules)} modules\n' dml_logging.info(diagnostics) diff --git a/dmlcloud/core/pipeline.py b/dmlcloud/core/pipeline.py index 2e71c13..55eda6d 100644 --- a/dmlcloud/core/pipeline.py +++ b/dmlcloud/core/pipeline.py @@ -161,7 +161,9 @@ def __init__(self, config: Optional[Union[OmegaConf, Dict]] = None, name: Option self.stages = [] self.callbacks = CallbackList() - self.add_callback(DiagnosticsCallback(), CbPriority.DIAGNOSTICS) + # Check config for verbose_config setting (default: False for concise output) + verbose_config = self.config.get('verbose_config', False) + self.add_callback(DiagnosticsCallback(verbose_config=verbose_config), CbPriority.DIAGNOSTICS) self.add_callback(GitDiffCallback(), CbPriority.GIT) self.add_callback(_ForwardCallback(), CbPriority.OBJECT_METHODS) # methods have priority 0 if self.device.type == 'cuda':