Lightning-AI / Lightning-AI/pytorch-lightning
LightningCLI cannot use strategy and accelerator class instances.
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 31.4k
- Forks
- 3.8k
- Avg merge
- 6d 7h
- Merged PRs (30d)
- 6
Description
### Bug description
LightningCLI cannot use strategy class instances.
# Does not work
python -u main.py fit --trainer.strategy lightning.pytorch.strategies.SingleDeviceStrategy
python -u main.py fit --trainer.accelerator lightning.pytorch.accelerators.CPUAccelerator
# Works
python -u main.py fit --trainer.strategy single_device
python -u main.py fit --trainer.accelerator cpu
### What version are you seeing the problem on?
v2.2, master
### How to reproduce the bug
```python
# main.py
from lightning.pytorch.cli import LightningCLI
from lightning.pytorch.demos.boring_classes import BoringDataModule, DemoModel
def cli_main():
cli = LightningCLI(DemoModel, BoringDataModule)
if __name__ == "__main__":
cli_main()
```
### Error messages and logs
```
# Error message: python -u main.py fit --trainer.strategy lightning.pytorch.strategies.SingleDeviceStrategy
Traceback (most recent call last):
File "/content/main.py", line 8, in
cli_main()
File "/content/main.py", line 5, in cli_main
cli = LightningCLI(DemoModel, BoringDataModule)
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/cli.py", line 385, in __init__
self.instantiate_classes()
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/cli.py", line 539, in instantiate_classes
self.trainer = self.instantiate_trainer()
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/cli.py", line 550, in instantiate_trainer
return self._instantiate_trainer(trainer_config, extra_callbacks)
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/cli.py", line 575, in _instantiate_trainer
return self.trainer_class(**config)
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/utilities/argparse.py", line 70, in insert_env_defaults
return fn(self, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/trainer/trainer.py", line 401, in __init__
self._accelerator_connector = _AcceleratorConnector(
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/trainer/connectors/accelerator_connector.py", line 134, in __init__
self._check_config_and_set_final_flags(
File "/usr/local/lib/python3.10/dist-packages/lightning/pytorch/trainer/connectors/accelerator_connector.py", line 203, in _check_config_and_set_final_flags
raise ValueError(
ValueError: You selected an invalid strategy name: `strategy='lightning.pytorch.strategies.singledevicestrategy'`. It must be either a string or an instance of `lightning.pytorch.strategies.Strategy`. Example choices: auto, ddp, ddp_spawn, deepspeed, ... Find a complete list of options in our documentation at https://lightning.ai/
```
### Environment
Current environment
* CUDA:
- GPU: None
- available: False
- version: 12.1
* Lightning:
- lightning: 2.2.1
- lightning-utilities: 0.11.0
- pytorch-lightning: 2.2.1
- torch: 2.2.1+cu121
- torchaudio: 2.2.1+cu121
- torchdata: 0.7.1
- torchmetrics: 1.3.2
- torchsummary: 1.5.1
- torchtext: 0.17.1
- torchvision: 0.17.1+cu121
* System:
- OS: Linux
- architecture:
- 64bit
- ELF
- processor: x86_64
- python: 3.10.12
- release: 6.1.58+
- version: 1 SMP PREEMPT_DYNAMIC Sat Nov 18 15:31:17 UTC 2023
### More info
_No response_
cc @mauvilsa @justusschock @lantiga
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the provided main.py and CLI commands, then start in lightning/pytorch/cli.py around instantiate_trainer and compare it with trainer/connectors/accelerator_connector.py. Done means fully qualified strategy and accelerator class paths are accepted by LightningCLI as the corresponding aliases are.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, pytorch
- Domain
- cli, machine-learning
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100