Skip to content

Commit 491fa02

Browse files
authored
Remove AccleratorConnector.num_ipus and deprecate Trainer.ipus (#12386)
1 parent bd035af commit 491fa02

File tree

5 files changed

+47
-7
lines changed

5 files changed

+47
-7
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
539539
- Deprecated `Trainer.num_gpus` in favor of `Trainer.num_devices` when GPU is used ([#12384](https://github.com/PyTorchLightning/pytorch-lightning/pull/12384))
540540

541541

542+
- Deprecated `Trainer.ipus` in favor of `Trainer.num_devices` when IPU is used ([#12386](https://github.com/PyTorchLightning/pytorch-lightning/pull/12386))
543+
544+
542545
- Deprecated `Trainer.num_processes` in favor of `Trainer.num_devices` ([#12388](https://github.com/PyTorchLightning/pytorch-lightning/pull/12388))
543546

544547

@@ -738,6 +741,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
738741
- Removed `AcceleratorConnector.num_gpus` property ([#12384](https://github.com/PyTorchLightning/pytorch-lightning/pull/12384))
739742

740743

744+
- Removed `AcceleratorConnector.num_ipus` property ([#12386](https://github.com/PyTorchLightning/pytorch-lightning/pull/12386))
745+
746+
741747
- Removed `AcceleratorConnector.num_processes` property ([#12388](https://github.com/PyTorchLightning/pytorch-lightning/pull/12388))
742748

743749

pytorch_lightning/trainer/connectors/accelerator_connector.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,13 @@ def tpu_cores(self) -> Optional[Union[List[int], int]]:
798798
return self._tpu_cores # type: ignore
799799
return 0
800800

801+
@property
802+
def tpu_id(self) -> Optional[int]:
803+
if isinstance(self.accelerator, TPUAccelerator):
804+
if isinstance(self._tpu_cores, list):
805+
return self._tpu_cores[0]
806+
return None
807+
801808
@property
802809
def num_ipus(self) -> int:
803810
if isinstance(self.accelerator, IPUAccelerator):

pytorch_lightning/trainer/trainer.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1811,7 +1811,7 @@ def _log_device_info(self) -> None:
18111811
)
18121812
rank_zero_info(f"TPU available: {_TPU_AVAILABLE}, using: {num_tpu_cores} TPU cores")
18131813

1814-
num_ipus = self.ipus if self.ipus is not None else 0
1814+
num_ipus = self.num_devices if isinstance(self.accelerator, IPUAccelerator) else 0
18151815
rank_zero_info(f"IPU available: {_IPU_AVAILABLE}, using: {num_ipus} IPUs")
18161816

18171817
if torch.cuda.is_available() and not isinstance(self.accelerator, GPUAccelerator):
@@ -2090,7 +2090,11 @@ def tpu_cores(self) -> int:
20902090

20912091
@property
20922092
def ipus(self) -> int:
2093-
return self._accelerator_connector.num_ipus
2093+
rank_zero_deprecation(
2094+
"`Trainer.ipus` was deprecated in v1.6 and will be removed in v1.8."
2095+
" Please use `Trainer.num_devices` instead."
2096+
)
2097+
return self.num_devices if isinstance(self.accelerator, IPUAccelerator) else 0
20942098

20952099
@property
20962100
def num_gpus(self) -> int:

tests/accelerators/test_ipu.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,8 @@ def test_replication_factor(tmpdir):
464464

465465
plugin = IPUStrategy()
466466
trainer = Trainer(ipus=2, default_root_dir=tmpdir, fast_dev_run=True, strategy=plugin)
467-
assert trainer.ipus == 2
467+
assert isinstance(trainer.accelerator, IPUAccelerator)
468+
assert trainer.num_devices == 2
468469
assert trainer.strategy.replication_factor == 2
469470

470471
model = BoringModel()
@@ -561,16 +562,16 @@ def test_accelerator_ipu_with_devices():
561562

562563
trainer = Trainer(accelerator="ipu", devices=8)
563564

564-
assert trainer.ipus == 8
565565
assert isinstance(trainer.strategy, IPUStrategy)
566566
assert isinstance(trainer.accelerator, IPUAccelerator)
567+
assert trainer.num_devices == 8
567568

568569

569570
@RunIf(ipu=True)
570571
def test_accelerator_auto_with_devices_ipu():
571572
trainer = Trainer(accelerator="auto", devices=8)
572573
assert isinstance(trainer.accelerator, IPUAccelerator)
573-
assert trainer.ipus == 8
574+
assert trainer.num_devices == 8
574575

575576

576577
@RunIf(ipu=True)
@@ -581,7 +582,8 @@ def test_accelerator_ipu_with_ipus_priority():
581582
with pytest.warns(UserWarning, match="The flag `devices=1` will be ignored,"):
582583
trainer = Trainer(accelerator="ipu", devices=1, ipus=ipus)
583584

584-
assert trainer.ipus == ipus
585+
assert isinstance(trainer.accelerator, IPUAccelerator)
586+
assert trainer.num_devices == ipus
585587

586588

587589
@RunIf(ipu=True)
@@ -632,4 +634,4 @@ def test_poptorch_models_at_different_stages(tmpdir):
632634
def test_devices_auto_choice_ipu():
633635
trainer = Trainer(accelerator="auto", devices="auto")
634636
assert trainer.num_devices == 4
635-
assert trainer.ipus == 4
637+
assert isinstance(trainer.accelerator, IPUAccelerator)

tests/deprecated_api/test_remove_1-8.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import torch
2323
from torch import optim
2424

25+
import pytorch_lightning
2526
from pytorch_lightning import Callback, Trainer
2627
from pytorch_lightning.loggers import CSVLogger, LightningLoggerBase, LoggerCollection
2728
from pytorch_lightning.plugins.precision.precision_plugin import PrecisionPlugin
@@ -986,6 +987,26 @@ def stop(self, action_name: str) -> None:
986987
CustomProfiler2()
987988

988989

990+
@pytest.mark.parametrize(
991+
["trainer_kwargs", "expected_ipus"],
992+
[
993+
({}, 0),
994+
({"devices": 1}, 0),
995+
({"accelerator": "ipu", "devices": 1}, 1),
996+
({"accelerator": "ipu", "devices": 8}, 8),
997+
],
998+
)
999+
def test_trainer_config_ipus(monkeypatch, trainer_kwargs, expected_ipus):
1000+
monkeypatch.setattr(pytorch_lightning.accelerators.ipu.IPUAccelerator, "is_available", lambda _: True)
1001+
monkeypatch.setattr(pytorch_lightning.strategies.ipu, "_IPU_AVAILABLE", lambda: True)
1002+
trainer = Trainer(**trainer_kwargs)
1003+
with pytest.deprecated_call(
1004+
match="`Trainer.ipus` was deprecated in v1.6 and will be removed in v1.8."
1005+
" Please use `Trainer.num_devices` instead."
1006+
):
1007+
trainer.ipus == expected_ipus
1008+
1009+
9891010
@pytest.mark.parametrize(
9901011
["trainer_kwargs", "expected_num_processes"],
9911012
[

0 commit comments

Comments
 (0)