nshtrainer 1.0.0b51__tar.gz → 1.0.0b53__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 (159) hide show
  1. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/PKG-INFO +1 -1
  2. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/pyproject.toml +1 -1
  3. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_checkpoint/metadata.py +2 -2
  4. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_checkpoint/saver.py +2 -2
  5. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/metric_validation.py +6 -0
  6. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/_config.py +1 -3
  7. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/path.py +42 -1
  8. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/README.md +0 -0
  9. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/.nshconfig.generated.json +0 -0
  10. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/__init__.py +0 -0
  11. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_callback.py +0 -0
  12. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_directory.py +0 -0
  13. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_experimental/__init__.py +0 -0
  14. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/_hf_hub.py +0 -0
  15. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/__init__.py +0 -0
  16. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/actsave.py +0 -0
  17. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/base.py +0 -0
  18. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/checkpoint/__init__.py +0 -0
  19. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/checkpoint/_base.py +0 -0
  20. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/checkpoint/best_checkpoint.py +0 -0
  21. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/checkpoint/last_checkpoint.py +0 -0
  22. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/checkpoint/on_exception_checkpoint.py +0 -0
  23. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/debug_flag.py +0 -0
  24. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/directory_setup.py +0 -0
  25. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/early_stopping.py +0 -0
  26. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/ema.py +0 -0
  27. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/finite_checks.py +0 -0
  28. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/gradient_skipping.py +0 -0
  29. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/interval.py +0 -0
  30. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/log_epoch.py +0 -0
  31. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/lr_monitor.py +0 -0
  32. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/norm_logging.py +0 -0
  33. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/print_table.py +0 -0
  34. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/rlp_sanity_checks.py +0 -0
  35. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/shared_parameters.py +0 -0
  36. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/timer.py +0 -0
  37. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/wandb_upload_code.py +0 -0
  38. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/callbacks/wandb_watch.py +0 -0
  39. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/.gitattributes +0 -0
  40. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/__init__.py +0 -0
  41. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/_checkpoint/__init__.py +0 -0
  42. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/_checkpoint/metadata/__init__.py +0 -0
  43. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/_directory/__init__.py +0 -0
  44. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/_hf_hub/__init__.py +0 -0
  45. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/__init__.py +0 -0
  46. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/actsave/__init__.py +0 -0
  47. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/base/__init__.py +0 -0
  48. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/checkpoint/__init__.py +0 -0
  49. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/checkpoint/_base/__init__.py +0 -0
  50. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/checkpoint/best_checkpoint/__init__.py +0 -0
  51. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/checkpoint/last_checkpoint/__init__.py +0 -0
  52. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/checkpoint/on_exception_checkpoint/__init__.py +0 -0
  53. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/debug_flag/__init__.py +0 -0
  54. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/directory_setup/__init__.py +0 -0
  55. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/early_stopping/__init__.py +0 -0
  56. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/ema/__init__.py +0 -0
  57. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/finite_checks/__init__.py +0 -0
  58. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/gradient_skipping/__init__.py +0 -0
  59. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/log_epoch/__init__.py +0 -0
  60. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/lr_monitor/__init__.py +0 -0
  61. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/metric_validation/__init__.py +0 -0
  62. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/norm_logging/__init__.py +0 -0
  63. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/print_table/__init__.py +0 -0
  64. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/rlp_sanity_checks/__init__.py +0 -0
  65. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/shared_parameters/__init__.py +0 -0
  66. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/timer/__init__.py +0 -0
  67. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/wandb_upload_code/__init__.py +0 -0
  68. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/callbacks/wandb_watch/__init__.py +0 -0
  69. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/__init__.py +0 -0
  70. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/actsave/__init__.py +0 -0
  71. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/base/__init__.py +0 -0
  72. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/csv/__init__.py +0 -0
  73. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/tensorboard/__init__.py +0 -0
  74. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/loggers/wandb/__init__.py +0 -0
  75. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/lr_scheduler/__init__.py +0 -0
  76. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/lr_scheduler/base/__init__.py +0 -0
  77. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/lr_scheduler/linear_warmup_cosine/__init__.py +0 -0
  78. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/lr_scheduler/reduce_lr_on_plateau/__init__.py +0 -0
  79. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/metrics/__init__.py +0 -0
  80. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/metrics/_config/__init__.py +0 -0
  81. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/nn/__init__.py +0 -0
  82. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/nn/mlp/__init__.py +0 -0
  83. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/nn/nonlinearity/__init__.py +0 -0
  84. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/optimizer/__init__.py +0 -0
  85. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/profiler/__init__.py +0 -0
  86. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/profiler/_base/__init__.py +0 -0
  87. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/profiler/advanced/__init__.py +0 -0
  88. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/profiler/pytorch/__init__.py +0 -0
  89. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/profiler/simple/__init__.py +0 -0
  90. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/__init__.py +0 -0
  91. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/_config/__init__.py +0 -0
  92. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/accelerator/__init__.py +0 -0
  93. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/__init__.py +0 -0
  94. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/base/__init__.py +0 -0
  95. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/environment/__init__.py +0 -0
  96. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/io/__init__.py +0 -0
  97. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/layer_sync/__init__.py +0 -0
  98. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/plugin/precision/__init__.py +0 -0
  99. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/strategy/__init__.py +0 -0
  100. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/trainer/trainer/__init__.py +0 -0
  101. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/util/__init__.py +0 -0
  102. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/util/_environment_info/__init__.py +0 -0
  103. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/util/config/__init__.py +0 -0
  104. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/util/config/dtype/__init__.py +0 -0
  105. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/configs/util/config/duration/__init__.py +0 -0
  106. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/data/__init__.py +0 -0
  107. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/data/balanced_batch_sampler.py +0 -0
  108. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/data/datamodule.py +0 -0
  109. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/data/transform.py +0 -0
  110. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/__init__.py +0 -0
  111. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/actsave.py +0 -0
  112. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/base.py +0 -0
  113. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/csv.py +0 -0
  114. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/tensorboard.py +0 -0
  115. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/loggers/wandb.py +0 -0
  116. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/lr_scheduler/__init__.py +0 -0
  117. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/lr_scheduler/base.py +0 -0
  118. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/lr_scheduler/linear_warmup_cosine.py +0 -0
  119. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/lr_scheduler/reduce_lr_on_plateau.py +0 -0
  120. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/metrics/__init__.py +0 -0
  121. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/metrics/_config.py +0 -0
  122. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/model/__init__.py +0 -0
  123. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/model/base.py +0 -0
  124. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/model/mixins/callback.py +0 -0
  125. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/model/mixins/debug.py +0 -0
  126. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/model/mixins/logger.py +0 -0
  127. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/nn/__init__.py +0 -0
  128. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/nn/mlp.py +0 -0
  129. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/nn/module_dict.py +0 -0
  130. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/nn/module_list.py +0 -0
  131. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/nn/nonlinearity.py +0 -0
  132. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/optimizer.py +0 -0
  133. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/profiler/__init__.py +0 -0
  134. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/profiler/_base.py +0 -0
  135. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/profiler/advanced.py +0 -0
  136. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/profiler/pytorch.py +0 -0
  137. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/profiler/simple.py +0 -0
  138. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/__init__.py +0 -0
  139. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/_runtime_callback.py +0 -0
  140. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/accelerator.py +0 -0
  141. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/__init__.py +0 -0
  142. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/base.py +0 -0
  143. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/environment.py +0 -0
  144. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/io.py +0 -0
  145. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/layer_sync.py +0 -0
  146. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/plugin/precision.py +0 -0
  147. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/signal_connector.py +0 -0
  148. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/strategy.py +0 -0
  149. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/trainer/trainer.py +0 -0
  150. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/_environment_info.py +0 -0
  151. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/bf16.py +0 -0
  152. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/config/__init__.py +0 -0
  153. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/config/dtype.py +0 -0
  154. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/config/duration.py +0 -0
  155. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/environment.py +0 -0
  156. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/seed.py +0 -0
  157. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/slurm.py +0 -0
  158. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/typed.py +0 -0
  159. {nshtrainer-1.0.0b51 → nshtrainer-1.0.0b53}/src/nshtrainer/util/typing_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: nshtrainer
3
- Version: 1.0.0b51
3
+ Version: 1.0.0b53
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 = "1.0.0-beta51"
3
+ version = "1.0.0-beta53"
4
4
  description = ""
5
5
  authors = ["Nima Shoghi <nimashoghi@gmail.com>"]
6
6
  readme = "README.md"
@@ -11,7 +11,7 @@ import numpy as np
11
11
  import torch
12
12
 
13
13
  from ..util._environment_info import EnvironmentConfig
14
- from ..util.path import compute_file_checksum, try_symlink_or_copy
14
+ from ..util.path import compute_file_checksum, path_exists, try_symlink_or_copy
15
15
 
16
16
  if TYPE_CHECKING:
17
17
  from ..trainer.trainer import Trainer
@@ -154,7 +154,7 @@ def remove_checkpoint_metadata(checkpoint_path: Path):
154
154
  def remove_checkpoint_metadata_link(ckpt_link_path: Path):
155
155
  path = _metadata_path(ckpt_link_path)
156
156
  # If the metadata does not exist, we can safely ignore this
157
- if not path.exists(follow_symlinks=False):
157
+ if not path_exists(path, follow_symlinks=False):
158
158
  # This is EXTREMELY important here
159
159
  # Otherwise, we've already deleted the file that the symlink
160
160
  # used to point to, so this always returns False
@@ -7,7 +7,7 @@ from pathlib import Path
7
7
 
8
8
  from lightning.pytorch import Trainer
9
9
 
10
- from ..util.path import try_symlink_or_copy
10
+ from ..util.path import path_exists, try_symlink_or_copy
11
11
  from .metadata import (
12
12
  link_checkpoint_metadata,
13
13
  remove_checkpoint_metadata,
@@ -29,7 +29,7 @@ def link_checkpoint(
29
29
 
30
30
  if remove_existing:
31
31
  try:
32
- if linkpath.exists(follow_symlinks=False):
32
+ if path_exists(linkpath, follow_symlinks=False):
33
33
  # follow_symlinks=False is EXTREMELY important here
34
34
  # Otherwise, we've already deleted the file that the symlink
35
35
  # used to point to, so this always returns False
@@ -77,6 +77,12 @@ class MetricValidationCallback(Callback):
77
77
  case _:
78
78
  assert_never(self.config.error_behavior)
79
79
 
80
+ @override
81
+ def on_sanity_check_end(self, trainer, pl_module):
82
+ super().on_sanity_check_end(trainer, pl_module)
83
+
84
+ self._check_metrics(trainer)
85
+
80
86
  @override
81
87
  def on_validation_end(self, trainer, pl_module):
82
88
  super().on_validation_end(trainer, pl_module)
@@ -698,9 +698,7 @@ class TrainerConfig(C.Config):
698
698
  - The trainer is running in fast_dev_run mode.
699
699
  - The trainer is running a sanity check (which happens before starting the training routine).
700
700
  """
701
- auto_validate_metrics: MetricValidationCallbackConfig | None = (
702
- MetricValidationCallbackConfig()
703
- )
701
+ auto_validate_metrics: MetricValidationCallbackConfig | None = None
704
702
  """If enabled, will automatically validate the metrics before starting the training routine."""
705
703
 
706
704
  lightning_kwargs: LightningTrainerKwargs = LightningTrainerKwargs()
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import errno
3
4
  import hashlib
4
5
  import logging
5
6
  import os
@@ -98,7 +99,7 @@ def try_symlink_or_copy(
98
99
  # If the link already exists, remove it
99
100
  if remove_existing:
100
101
  try:
101
- if link_path.exists(follow_symlinks=False):
102
+ if path_exists(link_path, follow_symlinks=False):
102
103
  # follow_symlinks=False is EXTREMELY important here
103
104
  # Otherwise, we've already deleted the file that the symlink
104
105
  # used to point to, so this always returns False
@@ -132,3 +133,43 @@ def try_symlink_or_copy(
132
133
  else:
133
134
  log.debug(f"Created symlink or copied {file_path} to {link_path}")
134
135
  return True
136
+
137
+
138
+ _WINERROR_NOT_READY = 21 # drive exists but is not accessible
139
+ _WINERROR_INVALID_NAME = 123 # fix for bpo-35306
140
+ _WINERROR_CANT_RESOLVE_FILENAME = 1921 # broken symlink pointing to itself
141
+
142
+ # EBADF - guard against macOS `stat` throwing EBADF
143
+ _IGNORED_ERRNOS = (errno.ENOENT, errno.ENOTDIR, errno.EBADF, errno.ELOOP)
144
+
145
+ _IGNORED_WINERRORS = (
146
+ _WINERROR_NOT_READY,
147
+ _WINERROR_INVALID_NAME,
148
+ _WINERROR_CANT_RESOLVE_FILENAME,
149
+ )
150
+
151
+
152
+ def _ignore_error(exception):
153
+ return (
154
+ getattr(exception, "errno", None) in _IGNORED_ERRNOS
155
+ or getattr(exception, "winerror", None) in _IGNORED_WINERRORS
156
+ )
157
+
158
+
159
+ def path_exists(path: Path, follow_symlinks: bool = True):
160
+ """
161
+ Whether this path exists.
162
+
163
+ This method normally follows symlinks; to check whether a symlink exists,
164
+ add the argument follow_symlinks=False.
165
+ """
166
+ try:
167
+ path.stat(follow_symlinks=follow_symlinks)
168
+ except OSError as e:
169
+ if not _ignore_error(e):
170
+ raise
171
+ return False
172
+ except ValueError:
173
+ # Non-encodable path
174
+ return False
175
+ return True
File without changes