lightning 2.6.0.dev20251019__tar.gz → 2.6.0.dev20251102__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 (302) hide show
  1. {lightning-2.6.0.dev20251019/src/lightning.egg-info → lightning-2.6.0.dev20251102}/PKG-INFO +9 -3
  2. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/pyproject.toml +0 -2
  3. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/examples.txt +1 -1
  4. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/test.txt +1 -0
  5. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/examples.txt +1 -1
  6. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/extra.txt +1 -1
  7. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/test.txt +2 -1
  8. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/CHANGELOG.md +1 -1
  9. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/lightning.py +28 -6
  10. lightning-2.6.0.dev20251102/src/lightning/fabric/utilities/port_manager.py +233 -0
  11. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/testing/_runif.py +1 -1
  12. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/CHANGELOG.md +7 -0
  13. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lr_monitor.py +1 -1
  14. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/throughput_monitor.py +12 -3
  15. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/cli.py +7 -0
  16. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/profiler.py +4 -1
  17. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/ddp.py +22 -0
  18. lightning-2.6.0.dev20251102/src/lightning/version.info +1 -0
  19. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102/src/lightning.egg-info}/PKG-INFO +9 -3
  20. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/SOURCES.txt +2 -1
  21. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/requires.txt +6 -0
  22. lightning-2.6.0.dev20251102/src/version.info +1 -0
  23. lightning-2.6.0.dev20251019/src/lightning/version.info +0 -1
  24. lightning-2.6.0.dev20251019/src/version.info +0 -1
  25. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/.actions/assistant.py +0 -0
  26. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/CITATION.cff +0 -0
  27. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/LICENSE +0 -0
  28. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/README.md +0 -0
  29. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/base.txt +0 -0
  30. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/base.txt +0 -0
  31. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/docs.txt +0 -0
  32. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/extra.txt +0 -0
  33. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/strategies.txt +0 -0
  34. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/base.txt +0 -0
  35. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/docs.txt +0 -0
  36. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/strategies.txt +0 -0
  37. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/setup.cfg +0 -0
  38. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/setup.py +0 -0
  39. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__about__.py +0 -0
  40. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__init__.py +0 -0
  41. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__setup__.py +0 -0
  42. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__version__.py +0 -0
  43. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/data/__init__.py +0 -0
  44. /lightning-2.6.0.dev20251019/src/lightning/256693663ae00d53d3d05385a43c15513694835ce1e246f4 → /lightning-2.6.0.dev20251102/src/lightning/e090f7c81f3aed3f1da7cf2744cebb2208a8ba0b6c8d227b +0 -0
  45. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/__init__.py +0 -0
  46. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/_graveyard/__init__.py +0 -0
  47. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/_graveyard/tpu.py +0 -0
  48. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/__init__.py +0 -0
  49. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/accelerator.py +0 -0
  50. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/cpu.py +0 -0
  51. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/cuda.py +0 -0
  52. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/mps.py +0 -0
  53. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/registry.py +0 -0
  54. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/xla.py +0 -0
  55. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/cli.py +0 -0
  56. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/connector.py +0 -0
  57. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/fabric.py +0 -0
  58. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/__init__.py +0 -0
  59. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/csv_logs.py +0 -0
  60. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/logger.py +0 -0
  61. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/tensorboard.py +0 -0
  62. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/__init__.py +0 -0
  63. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/__init__.py +0 -0
  64. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/collective.py +0 -0
  65. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/single_device.py +0 -0
  66. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/torch_collective.py +0 -0
  67. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/__init__.py +0 -0
  68. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/cluster_environment.py +0 -0
  69. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/kubeflow.py +0 -0
  70. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/lsf.py +0 -0
  71. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/mpi.py +0 -0
  72. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/slurm.py +0 -0
  73. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/torchelastic.py +0 -0
  74. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/xla.py +0 -0
  75. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/__init__.py +0 -0
  76. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/checkpoint_io.py +0 -0
  77. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/torch_io.py +0 -0
  78. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/xla.py +0 -0
  79. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/__init__.py +0 -0
  80. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/amp.py +0 -0
  81. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/bitsandbytes.py +0 -0
  82. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/deepspeed.py +0 -0
  83. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/double.py +0 -0
  84. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/fsdp.py +0 -0
  85. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/half.py +0 -0
  86. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/precision.py +0 -0
  87. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/transformer_engine.py +0 -0
  88. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/utils.py +0 -0
  89. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/xla.py +0 -0
  90. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/__init__.py +0 -0
  91. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/ddp.py +0 -0
  92. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/deepspeed.py +0 -0
  93. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/dp.py +0 -0
  94. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/fsdp.py +0 -0
  95. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/__init__.py +0 -0
  96. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/launcher.py +0 -0
  97. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/multiprocessing.py +0 -0
  98. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/subprocess_script.py +0 -0
  99. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/xla.py +0 -0
  100. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/model_parallel.py +0 -0
  101. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/parallel.py +0 -0
  102. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/registry.py +0 -0
  103. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/single_device.py +0 -0
  104. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/single_xla.py +0 -0
  105. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/strategy.py +0 -0
  106. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/xla.py +0 -0
  107. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/xla_fsdp.py +0 -0
  108. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/__init__.py +0 -0
  109. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/apply_func.py +0 -0
  110. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/cloud_io.py +0 -0
  111. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/consolidate_checkpoint.py +0 -0
  112. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/data.py +0 -0
  113. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/device_dtype_mixin.py +0 -0
  114. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/device_parser.py +0 -0
  115. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/distributed.py +0 -0
  116. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/enums.py +0 -0
  117. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/exceptions.py +0 -0
  118. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/imports.py +0 -0
  119. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/init.py +0 -0
  120. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/load.py +0 -0
  121. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/logger.py +0 -0
  122. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/optimizer.py +0 -0
  123. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/rank_zero.py +0 -0
  124. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/registry.py +0 -0
  125. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/seed.py +0 -0
  126. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/spike.py +0 -0
  127. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/testing/__init__.py +0 -0
  128. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/throughput.py +0 -0
  129. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/types.py +0 -0
  130. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/warnings.py +0 -0
  131. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/wrappers.py +0 -0
  132. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/py.typed +0 -0
  133. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/__init__.py +0 -0
  134. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/__init__.py +0 -0
  135. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/_torchmetrics.py +0 -0
  136. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/hpu.py +0 -0
  137. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/precision.py +0 -0
  138. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/tpu.py +0 -0
  139. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/__init__.py +0 -0
  140. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/accelerator.py +0 -0
  141. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/cpu.py +0 -0
  142. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/cuda.py +0 -0
  143. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/mps.py +0 -0
  144. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/xla.py +0 -0
  145. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/__init__.py +0 -0
  146. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/batch_size_finder.py +0 -0
  147. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/callback.py +0 -0
  148. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/checkpoint.py +0 -0
  149. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/device_stats_monitor.py +0 -0
  150. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/early_stopping.py +0 -0
  151. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/finetuning.py +0 -0
  152. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/gradient_accumulation_scheduler.py +0 -0
  153. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lambda_function.py +0 -0
  154. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lr_finder.py +0 -0
  155. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/model_checkpoint.py +0 -0
  156. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/model_summary.py +0 -0
  157. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/on_exception_checkpoint.py +0 -0
  158. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/prediction_writer.py +0 -0
  159. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/__init__.py +0 -0
  160. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/progress_bar.py +0 -0
  161. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/rich_progress.py +0 -0
  162. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/tqdm_progress.py +0 -0
  163. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/pruning.py +0 -0
  164. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/rich_model_summary.py +0 -0
  165. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/spike.py +0 -0
  166. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/stochastic_weight_avg.py +0 -0
  167. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/timer.py +0 -0
  168. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/weight_averaging.py +0 -0
  169. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/__init__.py +0 -0
  170. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/datamodule.py +0 -0
  171. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/hooks.py +0 -0
  172. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/mixins/__init__.py +0 -0
  173. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/mixins/hparams_mixin.py +0 -0
  174. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/module.py +0 -0
  175. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/optimizer.py +0 -0
  176. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/saving.py +0 -0
  177. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/__init__.py +0 -0
  178. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/boring_classes.py +0 -0
  179. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/lstm.py +0 -0
  180. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/mnist_datamodule.py +0 -0
  181. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/transformer.py +0 -0
  182. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/__init__.py +0 -0
  183. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/comet.py +0 -0
  184. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/csv_logs.py +0 -0
  185. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/logger.py +0 -0
  186. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/mlflow.py +0 -0
  187. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/neptune.py +0 -0
  188. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/tensorboard.py +0 -0
  189. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/utilities.py +0 -0
  190. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/wandb.py +0 -0
  191. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/__init__.py +0 -0
  192. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/evaluation_loop.py +0 -0
  193. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/fetchers.py +0 -0
  194. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/fit_loop.py +0 -0
  195. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/loop.py +0 -0
  196. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/__init__.py +0 -0
  197. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/automatic.py +0 -0
  198. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/closure.py +0 -0
  199. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/manual.py +0 -0
  200. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/prediction_loop.py +0 -0
  201. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/progress.py +0 -0
  202. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/training_epoch_loop.py +0 -0
  203. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/utilities.py +0 -0
  204. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/overrides/__init__.py +0 -0
  205. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/overrides/distributed.py +0 -0
  206. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/__init__.py +0 -0
  207. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/environments/__init__.py +0 -0
  208. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/__init__.py +0 -0
  209. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/async_plugin.py +0 -0
  210. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/checkpoint_plugin.py +0 -0
  211. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/torch_plugin.py +0 -0
  212. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/wrapper.py +0 -0
  213. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/xla_plugin.py +0 -0
  214. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/layer_sync.py +0 -0
  215. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/__init__.py +0 -0
  216. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/amp.py +0 -0
  217. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/bitsandbytes.py +0 -0
  218. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/deepspeed.py +0 -0
  219. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/double.py +0 -0
  220. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/fsdp.py +0 -0
  221. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/half.py +0 -0
  222. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/precision.py +0 -0
  223. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/transformer_engine.py +0 -0
  224. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/xla.py +0 -0
  225. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/__init__.py +0 -0
  226. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/advanced.py +0 -0
  227. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/base.py +0 -0
  228. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/pytorch.py +0 -0
  229. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/simple.py +0 -0
  230. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/xla.py +0 -0
  231. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/__init__.py +0 -0
  232. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/servable_module.py +0 -0
  233. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/servable_module_validator.py +0 -0
  234. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/__init__.py +0 -0
  235. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/deepspeed.py +0 -0
  236. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/fsdp.py +0 -0
  237. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/__init__.py +0 -0
  238. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/launcher.py +0 -0
  239. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/multiprocessing.py +0 -0
  240. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/subprocess_script.py +0 -0
  241. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/xla.py +0 -0
  242. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/model_parallel.py +0 -0
  243. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/parallel.py +0 -0
  244. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/single_device.py +0 -0
  245. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/single_xla.py +0 -0
  246. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/strategy.py +0 -0
  247. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/xla.py +0 -0
  248. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/__init__.py +0 -0
  249. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/call.py +0 -0
  250. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/configuration_validator.py +0 -0
  251. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/__init__.py +0 -0
  252. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/accelerator_connector.py +0 -0
  253. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/callback_connector.py +0 -0
  254. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/checkpoint_connector.py +0 -0
  255. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/data_connector.py +0 -0
  256. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/__init__.py +0 -0
  257. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/fx_validator.py +0 -0
  258. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py +0 -0
  259. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/result.py +0 -0
  260. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/signal_connector.py +0 -0
  261. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/setup.py +0 -0
  262. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/states.py +0 -0
  263. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/trainer.py +0 -0
  264. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/__init__.py +0 -0
  265. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/batch_size_scaling.py +0 -0
  266. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/lr_finder.py +0 -0
  267. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/tuning.py +0 -0
  268. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/__init__.py +0 -0
  269. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/_pytree.py +0 -0
  270. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/argparse.py +0 -0
  271. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/combined_loader.py +0 -0
  272. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/compile.py +0 -0
  273. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/consolidate_checkpoint.py +0 -0
  274. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/data.py +0 -0
  275. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/deepspeed.py +0 -0
  276. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/enums.py +0 -0
  277. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/exceptions.py +0 -0
  278. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/grads.py +0 -0
  279. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/imports.py +0 -0
  280. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/memory.py +0 -0
  281. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/__init__.py +0 -0
  282. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/migration.py +0 -0
  283. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/utils.py +0 -0
  284. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_helpers.py +0 -0
  285. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_registry.py +0 -0
  286. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/__init__.py +0 -0
  287. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/model_summary.py +0 -0
  288. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/model_summary_deepspeed.py +0 -0
  289. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/parameter_tying.py +0 -0
  290. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/parsing.py +0 -0
  291. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/rank_zero.py +0 -0
  292. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/seed.py +0 -0
  293. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/signature_utils.py +0 -0
  294. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/testing/__init__.py +0 -0
  295. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/testing/_runif.py +0 -0
  296. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/types.py +0 -0
  297. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/upgrade_checkpoint.py +0 -0
  298. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/warnings.py +0 -0
  299. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/dependency_links.txt +0 -0
  300. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/entry_points.txt +0 -0
  301. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/not-zip-safe +0 -0
  302. {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lightning
3
- Version: 2.6.0.dev20251019
3
+ Version: 2.6.0.dev20251102
4
4
  Summary: The Deep Learning framework to train, deploy, and ship AI products Lightning fast.
5
5
  Home-page: https://github.com/Lightning-AI/lightning
6
6
  Download-URL: https://github.com/Lightning-AI/lightning
@@ -48,6 +48,7 @@ Provides-Extra: fabric-test
48
48
  Requires-Dist: click==8.1.8; python_version < "3.11" and extra == "fabric-test"
49
49
  Requires-Dist: click==8.3.0; python_version > "3.10" and extra == "fabric-test"
50
50
  Requires-Dist: coverage==7.10.7; extra == "fabric-test"
51
+ Requires-Dist: huggingface-hub; extra == "fabric-test"
51
52
  Requires-Dist: numpy<2.0,>=1.21.0; extra == "fabric-test"
52
53
  Requires-Dist: pytest-cov==6.3.0; extra == "fabric-test"
53
54
  Requires-Dist: pytest-random-order==1.2.0; extra == "fabric-test"
@@ -75,6 +76,7 @@ Provides-Extra: pytorch-test
75
76
  Requires-Dist: cloudpickle<4.0,>=1.3; extra == "pytorch-test"
76
77
  Requires-Dist: coverage==7.10.7; extra == "pytorch-test"
77
78
  Requires-Dist: fastapi; extra == "pytorch-test"
79
+ Requires-Dist: huggingface-hub; extra == "pytorch-test"
78
80
  Requires-Dist: numpy<2.0,>1.20.0; extra == "pytorch-test"
79
81
  Requires-Dist: onnx<2.0,>1.12.0; extra == "pytorch-test"
80
82
  Requires-Dist: onnxruntime<2.0,>=1.12.0; extra == "pytorch-test"
@@ -103,6 +105,7 @@ Requires-Dist: click==8.1.8; python_version < "3.11" and extra == "fabric-dev"
103
105
  Requires-Dist: click==8.3.0; python_version > "3.10" and extra == "fabric-dev"
104
106
  Requires-Dist: coverage==7.10.7; extra == "fabric-dev"
105
107
  Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "fabric-dev"
108
+ Requires-Dist: huggingface-hub; extra == "fabric-dev"
106
109
  Requires-Dist: hydra-core<2.0,>=1.2.0; extra == "fabric-dev"
107
110
  Requires-Dist: numpy<2.0,>=1.21.0; extra == "fabric-dev"
108
111
  Requires-Dist: pytest-cov==6.3.0; extra == "fabric-dev"
@@ -133,6 +136,7 @@ Requires-Dist: cloudpickle<4.0,>=1.3; extra == "pytorch-dev"
133
136
  Requires-Dist: coverage==7.10.7; extra == "pytorch-dev"
134
137
  Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "pytorch-dev"
135
138
  Requires-Dist: fastapi; extra == "pytorch-dev"
139
+ Requires-Dist: huggingface-hub; extra == "pytorch-dev"
136
140
  Requires-Dist: hydra-core<2.0,>=1.2.0; extra == "pytorch-dev"
137
141
  Requires-Dist: ipython[all]<11.0,>=8.0.0; extra == "pytorch-dev"
138
142
  Requires-Dist: jsonargparse[jsonnet,signatures]<5.0,>=4.39.0; extra == "pytorch-dev"
@@ -183,6 +187,7 @@ Requires-Dist: click==8.3.0; python_version > "3.10" and extra == "test"
183
187
  Requires-Dist: cloudpickle<4.0,>=1.3; extra == "test"
184
188
  Requires-Dist: coverage==7.10.7; extra == "test"
185
189
  Requires-Dist: fastapi; extra == "test"
190
+ Requires-Dist: huggingface-hub; extra == "test"
186
191
  Requires-Dist: numpy<2.0,>1.20.0; extra == "test"
187
192
  Requires-Dist: numpy<2.0,>=1.21.0; extra == "test"
188
193
  Requires-Dist: onnx<2.0,>1.12.0; extra == "test"
@@ -222,6 +227,7 @@ Requires-Dist: cloudpickle<4.0,>=1.3; extra == "dev"
222
227
  Requires-Dist: coverage==7.10.7; extra == "dev"
223
228
  Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "dev"
224
229
  Requires-Dist: fastapi; extra == "dev"
230
+ Requires-Dist: huggingface-hub; extra == "dev"
225
231
  Requires-Dist: hydra-core<2.0,>=1.2.0; extra == "dev"
226
232
  Requires-Dist: ipython[all]<11.0,>=8.0.0; extra == "dev"
227
233
  Requires-Dist: jsonargparse[jsonnet,signatures]<5.0,>=4.39.0; extra == "dev"
@@ -286,7 +292,7 @@ ______________________________________________________________________
286
292
  <a href="#lightning-fabric-expert-control">Fabric</a> •
287
293
  <a href="https://lightning.ai/?utm_source=ptl_readme&utm_medium=referral&utm_campaign=ptl_readme">Lightning Cloud</a> •
288
294
  <a href="#community">Community</a> •
289
- <a href="https://pytorch-lightning.readthedocs.io/en/2.6.0.dev20251019">Docs</a>
295
+ <a href="https://pytorch-lightning.readthedocs.io/en/2.6.0.dev20251102">Docs</a>
290
296
  </p>
291
297
 
292
298
  <!-- DO NOT ADD CONDA DOWNLOADS... README CHANGES MUST BE APPROVED BY EDEN OR WILL -->
@@ -828,7 +834,7 @@ Lightning is rigorously tested across multiple CPUs, GPUs and TPUs and against m
828
834
 
829
835
  | System / PyTorch ver. | 1.13 | 2.0 | 2.1 |
830
836
  | :--------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
831
- | Linux py3.9 \[GPUs\] | | | [![Build Status](https://dev.azure.com/Lightning-AI/lightning/_apis/build/status%2Fpytorch-lightning%20%28GPUs%29?branchName=refs%2Ftags%2F2.6.0.dev20251019)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) |
837
+ | Linux py3.9 \[GPUs\] | | | [![Build Status](https://dev.azure.com/Lightning-AI/lightning/_apis/build/status%2Fpytorch-lightning%20%28GPUs%29?branchName=refs%2Ftags%2F2.6.0.dev20251102)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) |
832
838
  | Linux (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |
833
839
  | OSX (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |
834
840
  | Windows (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |
@@ -91,7 +91,6 @@ ignore = [
91
91
  ]
92
92
  "src/**" = [
93
93
  "S101", # todo: Use of `assert` detected
94
- "S105", "S106", "S107", # todo: Possible hardcoded password: ...
95
94
  "S113", # todo: Probable use of requests call without timeout
96
95
  "S301", # todo: `pickle` and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue
97
96
  "S324", # todo: Probable use of insecure hash functions in `hashlib`
@@ -106,7 +105,6 @@ ignore = [
106
105
  ]
107
106
  "tests/**" = [
108
107
  "S101", # Use of `assert` detected
109
- "S105", "S106", # todo: Possible hardcoded password: ...
110
108
  "S301", # `pickle` and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue
111
109
  "S113", # todo: Probable use of requests call without timeout
112
110
  "S311", # todo: Standard pseudo-random generators are not suitable for cryptographic purposes
@@ -1,5 +1,5 @@
1
1
  # NOTE: the upper bound for the package version is only set for CI stability, and it is dropped while installing this package
2
2
  # in case you want to preserve/enforce restrictions on the latest compatible version, add "strict" as an in-line comment
3
3
 
4
- torchvision >=0.16.0, <0.24.0
4
+ torchvision >=0.16.0, <0.25.0
5
5
  torchmetrics >=0.10.0, <1.9.0
@@ -9,3 +9,4 @@ pytest-random-order ==1.2.0
9
9
  click ==8.1.8; python_version < "3.11"
10
10
  click ==8.3.0; python_version > "3.10"
11
11
  tensorboardX >=2.6, <2.7.0 # todo: relax it back to `>=2.2` after fixing tests
12
+ huggingface-hub
@@ -2,6 +2,6 @@
2
2
  # in case you want to preserve/enforce restrictions on the latest compatible version, add "strict" as an in-line comment
3
3
 
4
4
  requests <2.33.0
5
- torchvision >=0.16.0, <0.24.0
5
+ torchvision >=0.16.0, <0.25.0
6
6
  ipython[all] >=8.0.0, <10.0.0
7
7
  torchmetrics >=0.10.0, <1.9.0
@@ -5,7 +5,7 @@
5
5
  matplotlib>3.1, <3.11.0
6
6
  omegaconf >=2.2.3, <2.4.0
7
7
  hydra-core >=1.2.0, <1.4.0
8
- jsonargparse[signatures,jsonnet] >=4.39.0, <4.42.0
8
+ jsonargparse[signatures,jsonnet] >=4.39.0, <4.43.0
9
9
  rich >=12.3.0, <14.2.0
10
10
  tensorboardX >=2.2, <2.7.0 # min version is set by torch.onnx missing attribute
11
11
  bitsandbytes >=0.45.2,<0.47.0; platform_system != "Darwin"
@@ -13,7 +13,7 @@ numpy >1.20.0, <1.27.0
13
13
  onnx >1.12.0, <1.20.0
14
14
  onnxruntime >=1.12.0, <1.24.0
15
15
  onnxscript >= 0.1.0, < 0.5.0
16
- psutil <7.1.1 # for `DeviceStatsMonitor`
16
+ psutil <7.1.2 # for `DeviceStatsMonitor`
17
17
  pandas >2.0, <2.4.0 # needed in benchmarks
18
18
  fastapi # for `ServableModuleValidator` # not setting version as re-defined in App
19
19
  uvicorn # for `ServableModuleValidator` # not setting version as re-defined in App
@@ -21,3 +21,4 @@ uvicorn # for `ServableModuleValidator` # not setting version as re-defined in
21
21
  tensorboard >=2.11, <2.21.0 # for `TensorBoardLogger`
22
22
 
23
23
  torch-tensorrt; platform_system == "Linux" and python_version >= "3.12"
24
+ huggingface-hub
@@ -27,7 +27,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
27
27
 
28
28
  ### Fixed
29
29
 
30
- -
30
+ - Fixed `EADDRINUSE` errors in distributed tests with port manager and retry logic ([#21309](https://github.com/Lightning-AI/pytorch-lightning/pull/21309))
31
31
 
32
32
 
33
33
  ---
@@ -13,11 +13,11 @@
13
13
  # limitations under the License.
14
14
 
15
15
  import os
16
- import socket
17
16
 
18
17
  from typing_extensions import override
19
18
 
20
19
  from lightning.fabric.plugins.environments.cluster_environment import ClusterEnvironment
20
+ from lightning.fabric.utilities.port_manager import get_port_manager
21
21
  from lightning.fabric.utilities.rank_zero import rank_zero_only
22
22
 
23
23
 
@@ -104,6 +104,13 @@ class LightningEnvironment(ClusterEnvironment):
104
104
  if "WORLD_SIZE" in os.environ:
105
105
  del os.environ["WORLD_SIZE"]
106
106
 
107
+ if self._main_port != -1:
108
+ get_port_manager().release_port(self._main_port)
109
+ self._main_port = -1
110
+
111
+ os.environ.pop("MASTER_PORT", None)
112
+ os.environ.pop("MASTER_ADDR", None)
113
+
107
114
 
108
115
  def find_free_network_port() -> int:
109
116
  """Finds a free port on localhost.
@@ -111,9 +118,24 @@ def find_free_network_port() -> int:
111
118
  It is useful in single-node training when we don't want to connect to a real main node but have to set the
112
119
  `MASTER_PORT` environment variable.
113
120
 
121
+ The allocated port is reserved and won't be returned by subsequent calls until it's explicitly released.
122
+
123
+ Returns:
124
+ A port number that is reserved and free at the time of allocation
125
+
114
126
  """
115
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
116
- s.bind(("", 0))
117
- port = s.getsockname()[1]
118
- s.close()
119
- return port
127
+ # If an external launcher already specified a MASTER_PORT (for example, torch.distributed.spawn or
128
+ # multiprocessing helpers), reserve it through the port manager so no other test reuses the same number.
129
+ if "MASTER_PORT" in os.environ:
130
+ master_port_str = os.environ["MASTER_PORT"]
131
+ try:
132
+ existing_port = int(master_port_str)
133
+ except ValueError:
134
+ pass
135
+ else:
136
+ port_manager = get_port_manager()
137
+ if port_manager.reserve_existing_port(existing_port):
138
+ return existing_port
139
+
140
+ port_manager = get_port_manager()
141
+ return port_manager.allocate_port()
@@ -0,0 +1,233 @@
1
+ # Copyright The Lightning AI team.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Port allocation manager to prevent race conditions in distributed training."""
15
+
16
+ import atexit
17
+ import logging
18
+ import socket
19
+ import threading
20
+ from collections import deque
21
+ from collections.abc import Iterator
22
+ from contextlib import contextmanager
23
+ from typing import Optional
24
+
25
+ log = logging.getLogger(__name__)
26
+
27
+ # Size of the recently released ports queue
28
+ # This prevents immediate reuse of ports that were just released
29
+ # Set to 1024 to balance memory usage vs TIME_WAIT protection
30
+ _RECENTLY_RELEASED_PORTS_MAXLEN = 1024
31
+
32
+
33
+ class PortManager:
34
+ """Thread-safe port manager to prevent EADDRINUSE errors.
35
+
36
+ This manager maintains a global registry of allocated ports to ensure that multiple concurrent tests don't try to
37
+ use the same port. While this doesn't completely eliminate the race condition with external processes, it prevents
38
+ internal collisions within the test suite.
39
+
40
+ """
41
+
42
+ def __init__(self) -> None:
43
+ self._lock = threading.Lock()
44
+ self._allocated_ports: set[int] = set()
45
+ # Recently released ports are kept in a queue to avoid immediate reuse
46
+ self._recently_released: deque[int] = deque(maxlen=_RECENTLY_RELEASED_PORTS_MAXLEN)
47
+ # Register cleanup to release all ports on exit
48
+ atexit.register(self.release_all)
49
+
50
+ def allocate_port(self, preferred_port: Optional[int] = None, max_attempts: int = 1000) -> int:
51
+ """Allocate a free port, ensuring it's not already reserved.
52
+
53
+ Args:
54
+ preferred_port: If provided, try to allocate this specific port first
55
+ max_attempts: Maximum number of attempts to find a free port
56
+
57
+ Returns:
58
+ An allocated port number
59
+
60
+ Raises:
61
+ RuntimeError: If unable to find a free port after max_attempts
62
+
63
+ """
64
+ with self._lock:
65
+ # If a preferred port is specified and available, use it
66
+ if (
67
+ preferred_port is not None
68
+ and preferred_port not in self._allocated_ports
69
+ and preferred_port not in self._recently_released
70
+ and self._is_port_free(preferred_port)
71
+ ):
72
+ self._allocated_ports.add(preferred_port)
73
+ return preferred_port
74
+
75
+ # Let the OS choose a free port, but verify it's not in our tracking structures
76
+ # The OS naturally avoids ports in TIME_WAIT (without SO_REUSEADDR)
77
+ for attempt in range(max_attempts):
78
+ port = self._find_free_port()
79
+
80
+ # Skip if already allocated by us or recently released
81
+ # This prevents race conditions within our process
82
+ if port not in self._allocated_ports and port not in self._recently_released:
83
+ self._allocated_ports.add(port)
84
+
85
+ # Log diagnostics if queue utilization is high
86
+ queue_count = len(self._recently_released)
87
+ if queue_count > _RECENTLY_RELEASED_PORTS_MAXLEN * 0.8: # >80% full
88
+ log.warning(
89
+ f"Port queue utilization high: {queue_count}/{_RECENTLY_RELEASED_PORTS_MAXLEN} "
90
+ f"({queue_count / _RECENTLY_RELEASED_PORTS_MAXLEN * 100:.1f}% full). "
91
+ f"Allocated port {port}. Active allocations: {len(self._allocated_ports)}"
92
+ )
93
+
94
+ return port
95
+
96
+ # Provide detailed diagnostics to understand allocation failures
97
+ allocated_count = len(self._allocated_ports)
98
+ queue_count = len(self._recently_released)
99
+ queue_capacity = _RECENTLY_RELEASED_PORTS_MAXLEN
100
+ queue_utilization = (queue_count / queue_capacity * 100) if queue_capacity > 0 else 0
101
+
102
+ raise RuntimeError(
103
+ f"Failed to allocate a free port after {max_attempts} attempts. "
104
+ f"Diagnostics: allocated={allocated_count}, "
105
+ f"recently_released={queue_count}/{queue_capacity} ({queue_utilization:.1f}% full). "
106
+ f"If queue is near capacity, consider increasing _RECENTLY_RELEASED_PORTS_MAXLEN."
107
+ )
108
+
109
+ def release_port(self, port: int) -> None:
110
+ """Release a previously allocated port.
111
+
112
+ Args:
113
+ port: Port number to release
114
+
115
+ """
116
+ with self._lock:
117
+ if port in self._allocated_ports:
118
+ self._allocated_ports.remove(port)
119
+ # Add to the back of the queue; oldest will be evicted when queue is full
120
+ self._recently_released.append(port)
121
+
122
+ def release_all(self) -> None:
123
+ """Release all allocated ports."""
124
+ with self._lock:
125
+ self._allocated_ports.clear()
126
+ self._recently_released.clear()
127
+
128
+ def reserve_existing_port(self, port: int) -> bool:
129
+ """Reserve a port that was allocated externally.
130
+
131
+ Args:
132
+ port: The externally assigned port to reserve.
133
+
134
+ Returns:
135
+ True if the port was reserved (or already reserved), False if the port value is invalid.
136
+
137
+ """
138
+ if port <= 0 or port > 65535:
139
+ return False
140
+
141
+ with self._lock:
142
+ if port in self._allocated_ports:
143
+ return True
144
+
145
+ # Remove from recently released queue if present (we're explicitly reserving it)
146
+ if port in self._recently_released:
147
+ # Create a new deque without this port
148
+ self._recently_released = deque(
149
+ (p for p in self._recently_released if p != port), maxlen=_RECENTLY_RELEASED_PORTS_MAXLEN
150
+ )
151
+
152
+ self._allocated_ports.add(port)
153
+ return True
154
+
155
+ @contextmanager
156
+ def allocated_port(self, preferred_port: Optional[int] = None) -> Iterator[int]:
157
+ """Context manager for automatic port cleanup.
158
+
159
+ Usage:
160
+ with manager.allocated_port() as port:
161
+ # Use port here
162
+ pass
163
+ # Port automatically released
164
+
165
+ Args:
166
+ preferred_port: Optional preferred port number
167
+
168
+ Yields:
169
+ Allocated port number
170
+
171
+ """
172
+ port = self.allocate_port(preferred_port=preferred_port)
173
+ try:
174
+ yield port
175
+ finally:
176
+ self.release_port(port)
177
+
178
+ @staticmethod
179
+ def _find_free_port() -> int:
180
+ """Find a free port using OS allocation.
181
+
182
+ Returns:
183
+ A port number that was free at the time of checking
184
+
185
+ """
186
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
187
+ # Don't use SO_REUSEADDR - we need to match the behavior of TCPStore
188
+ # which binds without it, so ports in TIME_WAIT will be rejected
189
+ s.bind(("", 0))
190
+ port = s.getsockname()[1]
191
+ s.close()
192
+ return port
193
+
194
+ @staticmethod
195
+ def _is_port_free(port: int) -> bool:
196
+ """Check if a specific port is available.
197
+
198
+ Args:
199
+ port: Port number to check
200
+
201
+ Returns:
202
+ True if the port is free, False otherwise
203
+
204
+ """
205
+ try:
206
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
207
+ # Don't use SO_REUSEADDR - we need to match the behavior of TCPStore
208
+ # which binds without it, so ports in TIME_WAIT will be rejected
209
+ s.bind(("", port))
210
+ s.close()
211
+ return True
212
+ except OSError:
213
+ return False
214
+
215
+
216
+ # Global singleton instance
217
+ _port_manager: Optional[PortManager] = None
218
+ _port_manager_lock = threading.Lock()
219
+
220
+
221
+ def get_port_manager() -> PortManager:
222
+ """Get or create the global port manager instance.
223
+
224
+ Returns:
225
+ The global PortManager singleton
226
+
227
+ """
228
+ global _port_manager
229
+ if _port_manager is None:
230
+ with _port_manager_lock:
231
+ if _port_manager is None:
232
+ _port_manager = PortManager()
233
+ return _port_manager
@@ -113,7 +113,7 @@ def _runif_reasons(
113
113
  reasons.append("Standalone execution")
114
114
  kwargs["standalone"] = True
115
115
 
116
- if deepspeed and not (_DEEPSPEED_AVAILABLE and not _TORCH_GREATER_EQUAL_2_4):
116
+ if deepspeed and not (_DEEPSPEED_AVAILABLE and _TORCH_GREATER_EQUAL_2_4):
117
117
  reasons.append("Deepspeed")
118
118
 
119
119
  if dynamo:
@@ -58,6 +58,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
58
58
  - Fixed `LightningCLI` loading of hyperparameters from `ckpt_path` failing for subclass model mode ([#21246](https://github.com/Lightning-AI/pytorch-lightning/pull/21246))
59
59
 
60
60
 
61
+ - Fixed how `ThroughputMonitor` calculated training time ([#21291](https://github.com/Lightning-AI/pytorch-lightning/pull/21291))
62
+
63
+
64
+ - Fixed synchronization of gradients in manual optimization with `DDPStrategy(static_graph=True)` ([#21251](https://github.com/Lightning-AI/pytorch-lightning/pull/21251))
65
+
66
+
67
+
61
68
  ---
62
69
 
63
70
  ## [2.5.5] - 2025-09-05
@@ -241,7 +241,7 @@ class LearningRateMonitor(Callback):
241
241
  self.lrs[name].append(lr)
242
242
  return {name: lr}
243
243
 
244
- def _remap_keys(self, names: list[list[str]], token: str = "/pg1") -> None:
244
+ def _remap_keys(self, names: list[list[str]], token: str = "/pg1") -> None: # noqa: S107
245
245
  """This function is used the remap the keys if param groups for a given optimizer increased."""
246
246
  for group_new_names in names:
247
247
  for new_name in group_new_names:
@@ -109,7 +109,9 @@ class ThroughputMonitor(Callback):
109
109
  stage = trainer.state.stage
110
110
  assert stage is not None
111
111
 
112
- if stage not in self._samples:
112
+ reset_needed = trainer.state.fn == TrainerFn.FITTING or stage not in self._samples
113
+
114
+ if reset_needed:
113
115
  self._throughputs[stage].reset()
114
116
  self._lengths[stage] = 0
115
117
  self._samples[stage] = 0
@@ -202,10 +204,17 @@ class ThroughputMonitor(Callback):
202
204
  def on_validation_end(self, trainer: "Trainer", *_: Any) -> None:
203
205
  if trainer.sanity_checking or trainer.state.fn != TrainerFn.FITTING:
204
206
  return
207
+
208
+ train_times = self._throughputs[RunningStage.TRAINING]._time
209
+ val_times = self._throughputs[RunningStage.VALIDATING]._time
210
+
211
+ train_elapsed = train_times[-1] if train_times else 0.0
212
+ val_elapsed = val_times[-1] if val_times else 0.0
213
+
205
214
  # add the validation time to the training time before continuing to avoid sinking the training throughput
206
- training_finished = self._t0s[RunningStage.TRAINING] + sum(self._throughputs[RunningStage.TRAINING]._time)
215
+ training_finished = self._t0s[RunningStage.TRAINING] + train_elapsed
207
216
  time_between_train_and_val = self._t0s[RunningStage.VALIDATING] - training_finished
208
- val_time = sum(self._throughputs[RunningStage.VALIDATING]._time)
217
+ val_time = val_elapsed
209
218
  self._t0s[RunningStage.TRAINING] += time_between_train_and_val + val_time
210
219
 
211
220
  @override
@@ -66,6 +66,13 @@ ModuleType = TypeVar("ModuleType")
66
66
 
67
67
 
68
68
  class ReduceLROnPlateau(torch.optim.lr_scheduler.ReduceLROnPlateau):
69
+ """Custom ReduceLROnPlateau scheduler that extends PyTorch's ReduceLROnPlateau.
70
+
71
+ This class adds a `monitor` attribute to the standard PyTorch ReduceLROnPlateau to specify which metric should be
72
+ tracked for learning rate adjustment.
73
+
74
+ """
75
+
69
76
  def __init__(self, optimizer: Optimizer, monitor: str, *args: Any, **kwargs: Any) -> None:
70
77
  super().__init__(optimizer, *args, **kwargs)
71
78
  self.monitor = monitor
@@ -77,7 +77,10 @@ class Profiler(ABC):
77
77
  log.info(*args, **kwargs)
78
78
 
79
79
  def _prepare_filename(
80
- self, action_name: Optional[str] = None, extension: str = ".txt", split_token: str = "-"
80
+ self,
81
+ action_name: Optional[str] = None,
82
+ extension: str = ".txt",
83
+ split_token: str = "-", # noqa: S107
81
84
  ) -> str:
82
85
  args = []
83
86
  if self._stage is not None:
@@ -103,6 +103,7 @@ class DDPStrategy(ParallelStrategy):
103
103
  self._process_group_backend: Optional[str] = process_group_backend
104
104
  self._timeout: Optional[timedelta] = timeout
105
105
  self._start_method = start_method
106
+ self._pl_static_graph_delay_done = False
106
107
 
107
108
  @property
108
109
  def is_distributed(self) -> bool: # pragma: no-cover
@@ -319,6 +320,27 @@ class DDPStrategy(ParallelStrategy):
319
320
  if not self.lightning_module.automatic_optimization:
320
321
  prepare_for_backward(self.model, closure_loss)
321
322
 
323
+ @override
324
+ def post_backward(self, closure_loss: Tensor) -> None:
325
+ # Only for first static-graph iteration with manual optimization
326
+ model = self.model
327
+ lm = self.lightning_module
328
+ if not isinstance(model, DistributedDataParallel):
329
+ return
330
+ if lm is None or lm.automatic_optimization:
331
+ return
332
+ if not getattr(model, "static_graph", False):
333
+ return
334
+ if self._pl_static_graph_delay_done:
335
+ return
336
+
337
+ # Call DDP's own first-iter static-graph flush.
338
+ # This is what actually launches the bucket all-reduces.
339
+ reducer = model.reducer
340
+ reducer._delay_all_reduce()
341
+
342
+ self._pl_static_graph_delay_done = True
343
+
322
344
  @override
323
345
  def model_to_device(self) -> None:
324
346
  log.debug(f"{self.__class__.__name__}: moving model to device [{self.root_device}]...")
@@ -0,0 +1 @@
1
+ 2.6.0.dev20251102