nshtrainer 0.37.0__tar.gz → 0.39.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/PKG-INFO +1 -1
  2. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/pyproject.toml +1 -1
  3. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/checkpoint/_base.py +3 -2
  4. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/checkpoint/best_checkpoint.py +13 -2
  5. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/early_stopping.py +1 -1
  6. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/config.py +1 -1
  7. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/_config.py +1 -1
  8. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/README.md +0 -0
  9. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/__init__.py +0 -0
  10. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_callback.py +0 -0
  11. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_checkpoint/loader.py +0 -0
  12. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_checkpoint/metadata.py +0 -0
  13. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_checkpoint/saver.py +0 -0
  14. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_directory.py +0 -0
  15. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_experimental/__init__.py +0 -0
  16. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/_hf_hub.py +0 -0
  17. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/__init__.py +0 -0
  18. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/_throughput_monitor_callback.py +0 -0
  19. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/actsave.py +0 -0
  20. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/base.py +0 -0
  21. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/checkpoint/__init__.py +0 -0
  22. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/checkpoint/last_checkpoint.py +0 -0
  23. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/checkpoint/on_exception_checkpoint.py +0 -0
  24. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/debug_flag.py +0 -0
  25. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/directory_setup.py +0 -0
  26. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/ema.py +0 -0
  27. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/finite_checks.py +0 -0
  28. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/gradient_skipping.py +0 -0
  29. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/interval.py +0 -0
  30. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/log_epoch.py +0 -0
  31. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/norm_logging.py +0 -0
  32. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/print_table.py +0 -0
  33. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/rlp_sanity_checks.py +0 -0
  34. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/shared_parameters.py +0 -0
  35. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/throughput_monitor.py +0 -0
  36. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/timer.py +0 -0
  37. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/wandb_upload_code.py +0 -0
  38. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/callbacks/wandb_watch.py +0 -0
  39. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/data/__init__.py +0 -0
  40. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/data/balanced_batch_sampler.py +0 -0
  41. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/data/transform.py +0 -0
  42. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/__init__.py +0 -0
  43. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/_experimental.py +0 -0
  44. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/actsave.py +0 -0
  45. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/callbacks.py +0 -0
  46. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/config.py +0 -0
  47. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/data.py +0 -0
  48. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/log.py +0 -0
  49. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/lr_scheduler.py +0 -0
  50. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/model.py +0 -0
  51. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/nn.py +0 -0
  52. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/optimizer.py +0 -0
  53. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/runner.py +0 -0
  54. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/snapshot.py +0 -0
  55. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/snoop.py +0 -0
  56. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/trainer.py +0 -0
  57. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/typecheck.py +0 -0
  58. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/ll/util.py +0 -0
  59. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/loggers/__init__.py +0 -0
  60. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/loggers/_base.py +0 -0
  61. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/loggers/csv.py +0 -0
  62. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/loggers/tensorboard.py +0 -0
  63. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/loggers/wandb.py +0 -0
  64. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/lr_scheduler/__init__.py +0 -0
  65. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/lr_scheduler/_base.py +0 -0
  66. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/lr_scheduler/linear_warmup_cosine.py +0 -0
  67. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/lr_scheduler/reduce_lr_on_plateau.py +0 -0
  68. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/metrics/__init__.py +0 -0
  69. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/metrics/_config.py +0 -0
  70. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/model/__init__.py +0 -0
  71. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/model/base.py +0 -0
  72. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/model/config.py +0 -0
  73. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/model/mixins/callback.py +0 -0
  74. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/model/mixins/logger.py +0 -0
  75. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/nn/__init__.py +0 -0
  76. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/nn/mlp.py +0 -0
  77. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/nn/module_dict.py +0 -0
  78. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/nn/module_list.py +0 -0
  79. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/nn/nonlinearity.py +0 -0
  80. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/optimizer.py +0 -0
  81. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/profiler/__init__.py +0 -0
  82. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/profiler/_base.py +0 -0
  83. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/profiler/advanced.py +0 -0
  84. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/profiler/pytorch.py +0 -0
  85. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/profiler/simple.py +0 -0
  86. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/runner.py +0 -0
  87. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/scripts/find_packages.py +0 -0
  88. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/__init__.py +0 -0
  89. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/_runtime_callback.py +0 -0
  90. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/checkpoint_connector.py +0 -0
  91. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/signal_connector.py +0 -0
  92. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/trainer/trainer.py +0 -0
  93. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/_environment_info.py +0 -0
  94. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/_useful_types.py +0 -0
  95. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/bf16.py +0 -0
  96. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/config/__init__.py +0 -0
  97. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/config/dtype.py +0 -0
  98. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/config/duration.py +0 -0
  99. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/environment.py +0 -0
  100. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/path.py +0 -0
  101. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/seed.py +0 -0
  102. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/slurm.py +0 -0
  103. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/typed.py +0 -0
  104. {nshtrainer-0.37.0 → nshtrainer-0.39.0}/src/nshtrainer/util/typing_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nshtrainer
3
- Version: 0.37.0
3
+ Version: 0.39.0
4
4
  Summary:
5
5
  Author: Nima Shoghi
6
6
  Author-email: nimashoghi@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "nshtrainer"
3
- version = "0.37.0"
3
+ version = "0.39.0"
4
4
  description = ""
5
5
  authors = ["Nima Shoghi <nimashoghi@gmail.com>"]
6
6
  readme = "README.md"
@@ -41,7 +41,7 @@ class BaseCheckpointCallbackConfig(CallbackConfigBase, ABC):
41
41
  self,
42
42
  root_config: "BaseConfig",
43
43
  dirpath: Path,
44
- ) -> "CheckpointBase": ...
44
+ ) -> "CheckpointBase | None": ...
45
45
 
46
46
  @override
47
47
  def create_callbacks(self, root_config):
@@ -50,7 +50,8 @@ class BaseCheckpointCallbackConfig(CallbackConfigBase, ABC):
50
50
  or root_config.directory.resolve_subdirectory(root_config.id, "checkpoint")
51
51
  )
52
52
 
53
- yield self.create_checkpoint(root_config, dirpath)
53
+ if (callback := self.create_checkpoint(root_config, dirpath)) is not None:
54
+ yield callback
54
55
 
55
56
 
56
57
  TConfig = TypeVar("TConfig", bound=BaseCheckpointCallbackConfig, infer_variance=True)
@@ -20,15 +20,26 @@ class BestCheckpointCallbackConfig(BaseCheckpointCallbackConfig):
20
20
  metric: MetricConfig | None = None
21
21
  """Metric to monitor, or `None` to use the default metric."""
22
22
 
23
+ throw_on_no_metric: bool = True
24
+ """
25
+ Whether to throw an error if no metric is provided and no primary metric is found in the root config.
26
+ """
27
+
23
28
  @override
24
29
  def create_checkpoint(self, root_config, dirpath):
25
30
  # Resolve metric
26
31
  if (metric := self.metric) is None and (
27
32
  metric := root_config.primary_metric
28
33
  ) is None:
29
- raise ValueError(
30
- "No metric provided and no primary metric found in the root config"
34
+ error_msg = (
35
+ "No metric provided and no primary metric found in the root config. "
36
+ "Cannot create BestCheckpointCallback."
31
37
  )
38
+ if self.throw_on_no_metric:
39
+ raise ValueError(error_msg)
40
+ else:
41
+ log.warning(error_msg)
42
+ return None
32
43
 
33
44
  return BestCheckpoint(self, dirpath, metric)
34
45
 
@@ -51,7 +51,7 @@ class EarlyStoppingConfig(CallbackConfigBase):
51
51
  metric := root_config.primary_metric
52
52
  ) is None:
53
53
  raise ValueError(
54
- "Either `metric` or `root_config.primary_metric` must be set."
54
+ "Either `metric` or `root_config.primary_metric` must be set to use EarlyStopping."
55
55
  )
56
56
 
57
57
  yield EarlyStopping(self, metric)
@@ -65,13 +65,13 @@ from nshtrainer.callbacks.wandb_upload_code import (
65
65
  WandbUploadCodeConfig as WandbUploadCodeConfig,
66
66
  )
67
67
  from nshtrainer.callbacks.wandb_watch import WandbWatchConfig as WandbWatchConfig
68
- from nshtrainer.config import LRSchedulerConfig as LRSchedulerConfig
69
68
  from nshtrainer.loggers._base import BaseLoggerConfig as BaseLoggerConfig
70
69
  from nshtrainer.loggers.csv import CSVLoggerConfig as CSVLoggerConfig
71
70
  from nshtrainer.loggers.tensorboard import (
72
71
  TensorboardLoggerConfig as TensorboardLoggerConfig,
73
72
  )
74
73
  from nshtrainer.loggers.wandb import WandbLoggerConfig as WandbLoggerConfig
74
+ from nshtrainer.lr_scheduler import LRSchedulerConfig as LRSchedulerConfig
75
75
  from nshtrainer.lr_scheduler._base import LRSchedulerConfigBase as LRSchedulerConfigBase
76
76
  from nshtrainer.lr_scheduler.linear_warmup_cosine import (
77
77
  DurationConfig as DurationConfig,
@@ -263,7 +263,7 @@ class CheckpointSavingConfig(CallbackConfigBase):
263
263
  """Enable checkpoint saving."""
264
264
 
265
265
  checkpoint_callbacks: Sequence[CheckpointCallbackConfig] = [
266
- BestCheckpointCallbackConfig(),
266
+ BestCheckpointCallbackConfig(throw_on_no_metric=False),
267
267
  LastCheckpointCallbackConfig(),
268
268
  OnExceptionCheckpointCallbackConfig(),
269
269
  ]
File without changes