Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,8 @@ def _set_devices_if_none(self) -> None:
self.devices = self.num_processes

def _handle_accelerator_and_strategy(self) -> None:
if self.distributed_backend is not None and self.distributed_backend in list(DistributedType):
deprecated_types = [t for t in DistributedType if t not in (DistributedType.TPU_SPAWN, DistributedType.DDP_CPU)]
if self.distributed_backend is not None and self.distributed_backend in deprecated_types:
rank_zero_deprecation(
f"Passing `Trainer(accelerator={self.distributed_backend!r})` has been deprecated"
f" in v1.5 and will be removed in v1.7. Use `Trainer(strategy={self.distributed_backend!r})` instead."
Expand Down
60 changes: 36 additions & 24 deletions tests/accelerators/test_accelerator_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ def test_accelerator_choice_ddp_cpu(tmpdir, num_processes: int, num_nodes: int):
@mock.patch("torch.cuda.device_count", return_value=2)
@mock.patch("torch.cuda.is_available", return_value=True)
def test_accelerator_choice_ddp(cuda_available_mock, device_count_mock):
trainer = Trainer(fast_dev_run=True, accelerator="ddp", gpus=1)
with pytest.deprecated_call(match=r"accelerator='ddp'\)` has been deprecated"):
trainer = Trainer(fast_dev_run=True, accelerator="ddp", gpus=1)
assert isinstance(trainer.accelerator, GPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, LightningEnvironment)
Expand All @@ -78,7 +79,8 @@ def test_accelerator_choice_ddp(cuda_available_mock, device_count_mock):
@mock.patch("torch.cuda.device_count", return_value=2)
@mock.patch("torch.cuda.is_available", return_value=True)
def test_accelerator_choice_ddp_spawn(cuda_available_mock, device_count_mock):
trainer = Trainer(fast_dev_run=True, accelerator="ddp_spawn", gpus=1)
with pytest.deprecated_call(match=r"accelerator='ddp_spawn'\)` has been deprecated"):
trainer = Trainer(fast_dev_run=True, accelerator="ddp_spawn", gpus=1)
assert isinstance(trainer.accelerator, GPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPSpawnPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, LightningEnvironment)
Expand All @@ -105,7 +107,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -137,7 +139,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDP2Plugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -168,7 +170,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -199,7 +201,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDP2Plugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand All @@ -221,7 +223,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -252,7 +254,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, KubeflowEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 0
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -281,7 +283,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, KubeflowEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 0
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -311,7 +313,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.accelerator, CPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -435,7 +437,7 @@ class CB(Callback):
def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.accelerator, CPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -463,10 +465,16 @@ def test_ipython_compatible_backend(*_):
@pytest.mark.parametrize(["accelerator", "plugin"], [("ddp_spawn", "ddp_sharded"), (None, "ddp_sharded")])
def test_plugin_accelerator_choice(accelerator: Optional[str], plugin: str):
"""Ensure that when a plugin and accelerator is passed in, that the plugin takes precedent."""
trainer = Trainer(accelerator=accelerator, plugins=plugin, num_processes=2)
if accelerator is None:
with pytest.deprecated_call(match="Passing .* `strategy` to the `plugins`"):
trainer = Trainer(accelerator=accelerator, plugins=plugin, num_processes=2)
else:
with pytest.deprecated_call(match=r"accelerator=.*\)` has been deprecated"):
trainer = Trainer(accelerator=accelerator, plugins=plugin, num_processes=2)
assert isinstance(trainer.accelerator.training_type_plugin, DDPShardedPlugin)

trainer = Trainer(plugins=plugin, num_processes=2)
with pytest.deprecated_call(match="Passing .* `strategy` to the `plugins`"):
trainer = Trainer(plugins=plugin, num_processes=2)
assert isinstance(trainer.accelerator.training_type_plugin, DDPShardedPlugin)


Expand All @@ -486,7 +494,8 @@ def test_plugin_accelerator_choice(accelerator: Optional[str], plugin: str):
def test_accelerator_choice_multi_node_gpu(
mock_is_available, mock_device_count, tmpdir, accelerator: str, plugin: ParallelPlugin, gpus: int
):
trainer = Trainer(accelerator=accelerator, default_root_dir=tmpdir, num_nodes=2, gpus=gpus)
with pytest.deprecated_call(match=r"accelerator=.*\)` has been deprecated"):
trainer = Trainer(accelerator=accelerator, default_root_dir=tmpdir, num_nodes=2, gpus=gpus)
assert isinstance(trainer.training_type_plugin, plugin)


Expand Down Expand Up @@ -630,13 +639,16 @@ def test_unsupported_distrib_types_on_cpu(training_type):


def test_accelerator_ddp_for_cpu(tmpdir):
trainer = Trainer(accelerator="ddp", num_processes=2)
with pytest.deprecated_call(match=r"accelerator='ddp'\)` has been deprecated"):
trainer = Trainer(accelerator="ddp", num_processes=2)
assert isinstance(trainer.accelerator, CPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPPlugin)


def test_exception_when_strategy_used_with_accelerator():
with pytest.raises(MisconfigurationException, match="but have also passed"):
with pytest.raises(MisconfigurationException, match="but have also passed"), pytest.deprecated_call(
match=r"accelerator='ddp'\)` has been deprecated"
):
Trainer(accelerator="ddp", strategy="ddp_spawn")


Expand Down Expand Up @@ -762,7 +774,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -794,7 +806,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDP2Plugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -825,7 +837,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -856,7 +868,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDP2Plugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand All @@ -878,7 +890,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, TorchElasticEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 1
assert trainer.training_type_plugin.task_idx == 1
assert trainer.training_type_plugin.local_rank == 1
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -909,7 +921,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, KubeflowEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 0
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -938,7 +950,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, KubeflowEnvironment)
assert trainer.training_type_plugin.cluster_environment.local_rank() == 0
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down Expand Up @@ -968,7 +980,7 @@ def on_fit_start(self, trainer, pl_module):
assert isinstance(trainer.accelerator, CPUAccelerator)
assert isinstance(trainer.training_type_plugin, DDPPlugin)
assert isinstance(trainer.training_type_plugin.cluster_environment, SLURMEnvironment)
assert trainer.training_type_plugin.task_idx == 0
assert trainer.training_type_plugin.local_rank == 0
raise SystemExit()

model = BoringModel()
Expand Down