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.
- {lightning-2.6.0.dev20251019/src/lightning.egg-info → lightning-2.6.0.dev20251102}/PKG-INFO +9 -3
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/pyproject.toml +0 -2
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/examples.txt +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/test.txt +1 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/examples.txt +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/extra.txt +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/test.txt +2 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/CHANGELOG.md +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/lightning.py +28 -6
- lightning-2.6.0.dev20251102/src/lightning/fabric/utilities/port_manager.py +233 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/testing/_runif.py +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/CHANGELOG.md +7 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lr_monitor.py +1 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/throughput_monitor.py +12 -3
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/cli.py +7 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/profiler.py +4 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/ddp.py +22 -0
- lightning-2.6.0.dev20251102/src/lightning/version.info +1 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102/src/lightning.egg-info}/PKG-INFO +9 -3
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/SOURCES.txt +2 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/requires.txt +6 -0
- lightning-2.6.0.dev20251102/src/version.info +1 -0
- lightning-2.6.0.dev20251019/src/lightning/version.info +0 -1
- lightning-2.6.0.dev20251019/src/version.info +0 -1
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/.actions/assistant.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/CITATION.cff +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/LICENSE +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/README.md +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/base.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/base.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/docs.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/extra.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/strategies.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/base.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/docs.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/strategies.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/setup.cfg +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/setup.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__about__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__setup__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/__version__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/data/__init__.py +0 -0
- /lightning-2.6.0.dev20251019/src/lightning/256693663ae00d53d3d05385a43c15513694835ce1e246f4 → /lightning-2.6.0.dev20251102/src/lightning/e090f7c81f3aed3f1da7cf2744cebb2208a8ba0b6c8d227b +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/_graveyard/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/_graveyard/tpu.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/accelerator.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/cpu.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/cuda.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/mps.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/registry.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/accelerators/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/cli.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/fabric.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/csv_logs.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/logger.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/loggers/tensorboard.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/collective.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/single_device.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/collectives/torch_collective.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/cluster_environment.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/kubeflow.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/lsf.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/mpi.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/slurm.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/torchelastic.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/environments/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/checkpoint_io.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/torch_io.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/io/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/amp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/bitsandbytes.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/double.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/fsdp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/half.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/precision.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/transformer_engine.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/utils.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/plugins/precision/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/ddp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/dp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/fsdp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/launcher.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/multiprocessing.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/subprocess_script.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/launchers/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/model_parallel.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/parallel.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/registry.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/single_device.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/single_xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/strategy.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/strategies/xla_fsdp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/apply_func.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/cloud_io.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/consolidate_checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/data.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/device_dtype_mixin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/device_parser.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/distributed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/enums.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/exceptions.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/imports.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/init.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/load.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/logger.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/optimizer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/rank_zero.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/registry.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/seed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/spike.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/testing/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/throughput.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/types.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/utilities/warnings.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/wrappers.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/py.typed +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/_torchmetrics.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/hpu.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/precision.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/_graveyard/tpu.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/accelerator.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/cpu.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/cuda.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/mps.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/accelerators/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/batch_size_finder.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/callback.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/device_stats_monitor.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/early_stopping.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/finetuning.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/gradient_accumulation_scheduler.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lambda_function.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/lr_finder.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/model_checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/model_summary.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/on_exception_checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/prediction_writer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/progress_bar.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/rich_progress.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/progress/tqdm_progress.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/pruning.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/rich_model_summary.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/spike.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/stochastic_weight_avg.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/timer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/callbacks/weight_averaging.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/datamodule.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/hooks.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/mixins/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/mixins/hparams_mixin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/module.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/optimizer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/core/saving.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/boring_classes.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/lstm.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/mnist_datamodule.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/demos/transformer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/comet.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/csv_logs.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/logger.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/mlflow.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/neptune.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/tensorboard.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/utilities.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loggers/wandb.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/evaluation_loop.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/fetchers.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/fit_loop.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/loop.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/automatic.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/closure.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/optimization/manual.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/prediction_loop.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/progress.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/training_epoch_loop.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/loops/utilities.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/overrides/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/overrides/distributed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/environments/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/async_plugin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/checkpoint_plugin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/torch_plugin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/wrapper.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/io/xla_plugin.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/layer_sync.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/amp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/bitsandbytes.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/double.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/fsdp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/half.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/precision.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/transformer_engine.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/plugins/precision/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/advanced.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/base.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/pytorch.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/simple.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/profilers/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/servable_module.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/serve/servable_module_validator.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/fsdp.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/launcher.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/multiprocessing.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/subprocess_script.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/launchers/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/model_parallel.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/parallel.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/single_device.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/single_xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/strategy.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/xla.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/call.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/configuration_validator.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/accelerator_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/callback_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/checkpoint_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/data_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/fx_validator.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/logger_connector/result.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/connectors/signal_connector.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/setup.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/states.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/trainer/trainer.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/batch_size_scaling.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/lr_finder.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/tuner/tuning.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/_pytree.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/argparse.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/combined_loader.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/compile.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/consolidate_checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/data.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/enums.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/exceptions.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/grads.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/imports.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/memory.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/migration.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/migration/utils.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_helpers.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_registry.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/model_summary.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/model_summary/model_summary_deepspeed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/parameter_tying.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/parsing.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/rank_zero.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/seed.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/signature_utils.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/testing/__init__.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/testing/_runif.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/types.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/upgrade_checkpoint.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/utilities/warnings.py +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/dependency_links.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/entry_points.txt +0 -0
- {lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning.egg-info/not-zip-safe +0 -0
- {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.
|
|
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.
|
|
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\] | | | [](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) |
|
|
832
838
|
| Linux (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |
|
|
833
839
|
| OSX (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |
|
|
834
840
|
| Windows (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](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
|
{lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/fabric/examples.txt
RENAMED
|
@@ -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.
|
|
4
|
+
torchvision >=0.16.0, <0.25.0
|
|
5
5
|
torchmetrics >=0.10.0, <1.9.0
|
{lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/requirements/pytorch/examples.txt
RENAMED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
{lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/fabric/CHANGELOG.md
RENAMED
|
@@ -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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
|
116
|
+
if deepspeed and not (_DEEPSPEED_AVAILABLE and _TORCH_GREATER_EQUAL_2_4):
|
|
117
117
|
reasons.append("Deepspeed")
|
|
118
118
|
|
|
119
119
|
if dynamo:
|
{lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/CHANGELOG.md
RENAMED
|
@@ -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
|
-
|
|
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] +
|
|
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 =
|
|
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,
|
|
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:
|
{lightning-2.6.0.dev20251019 → lightning-2.6.0.dev20251102}/src/lightning/pytorch/strategies/ddp.py
RENAMED
|
@@ -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
|