From 47c38c75ba83740a83e593bc2d059482b7ab331b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mochol=C3=AD?= Date: Tue, 17 Jan 2023 12:01:33 +0100 Subject: [PATCH] Remove deprecated code in `pl.utilities.distributed` (#16390) --- src/pytorch_lightning/CHANGELOG.md | 2 + .../utilities/distributed.py | 87 +------------------ .../deprecated_api/test_remove_2-0.py | 56 ------------ 3 files changed, 3 insertions(+), 142 deletions(-) diff --git a/src/pytorch_lightning/CHANGELOG.md b/src/pytorch_lightning/CHANGELOG.md index 481a44f1c2..ddb58c0726 100644 --- a/src/pytorch_lightning/CHANGELOG.md +++ b/src/pytorch_lightning/CHANGELOG.md @@ -64,6 +64,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). * env_prefix * env_parse +- Removed the deprecated code in `pl.utilities.distributed` ([#16390](https://github.com/Lightning-AI/lightning/pull/16390)) + - Mark the `forward_module` argument as required ([#16386](https://github.com/Lightning-AI/lightning/pull/16386)) * Removed the deprecated `pl_module` argument from the distributed module wrappers * Removed the deprecated `pytorch_lightning.overrides.base.unwrap_lightning_module` function diff --git a/src/pytorch_lightning/utilities/distributed.py b/src/pytorch_lightning/utilities/distributed.py index e01747bcf7..c50a0faee5 100644 --- a/src/pytorch_lightning/utilities/distributed.py +++ b/src/pytorch_lightning/utilities/distributed.py @@ -17,16 +17,8 @@ from typing import Any, Callable, Dict, Optional import torch from torch.nn.parallel.distributed import DistributedDataParallel -from lightning_fabric.utilities.distributed import _all_gather_ddp_if_available as new_all_gather_ddp_if_available from lightning_fabric.utilities.distributed import _distributed_available as new_distributed_available -from lightning_fabric.utilities.distributed import _gather_all_tensors as new_gather_all_tensors -from lightning_fabric.utilities.distributed import ( - _get_default_process_group_backend_for_device as new_get_default_process_group_backend_for_device, -) -from lightning_fabric.utilities.distributed import _init_dist_connection as new_init_dist_connection -from lightning_fabric.utilities.distributed import _sync_ddp as new_sync_ddp -from lightning_fabric.utilities.distributed import _sync_ddp_if_available as new_sync_ddp_if_available -from pytorch_lightning.utilities.rank_zero import rank_zero_debug, rank_zero_deprecation, rank_zero_info +from pytorch_lightning.utilities.rank_zero import rank_zero_debug, rank_zero_info def register_ddp_comm_hook( @@ -150,80 +142,3 @@ def _collect_states_on_rank_zero(state: Dict[str, Any]) -> Dict[int, Any]: if not new_distributed_available(): return {0: state} return {rank: _broadcast_object_list(state, rank) for rank in range(torch.distributed.get_world_size())} - - -def all_gather_ddp_if_available(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.all_gather_ddp_if_available` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_all_gather_ddp_if_available(*args, **kwargs) - - -def distributed_available() -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.distributed_available` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_distributed_available() - - -def gather_all_tensors(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.gather_all_tensors` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_gather_all_tensors(*args, **kwargs) - - -def get_default_process_group_backend_for_device(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.get_default_process_group_backend_for_device` has been deprecated" - " in v1.8.0 and will be removed in v2.0.0. This function is internal but you can copy over its implementation." - " `lightning_fabric.utilities.distributed.get_default_process_group_backend_for_device` instead." - ) - return new_get_default_process_group_backend_for_device(*args, **kwargs) - - -def init_dist_connection(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.init_dist_connection` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_init_dist_connection(*args, **kwargs) - - -def sync_ddp(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.sync_ddp` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_sync_ddp(*args, **kwargs) - - -def sync_ddp_if_available(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.sync_ddp_if_available` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - return new_sync_ddp_if_available(*args, **kwargs) - - -def tpu_distributed() -> bool: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.tpu_distributed` has been deprecated in v1.8.0 and will" - " be removed in v2.0.0. This function is internal but you can copy over its implementation." - ) - from lightning_fabric.accelerators.tpu import _tpu_distributed - - return _tpu_distributed() - - -def rank_zero_only(*args: Any, **kwargs: Any) -> Any: - rank_zero_deprecation( - "`pytorch_lightning.utilities.distributed.rank_zero_only` has been deprecated in v1.8.1 and will" - " be removed in v2.0.0. You can import it from `pytorch_lightning.utilities` instead." - ) - from pytorch_lightning.utilities.rank_zero import rank_zero_only as new_rank_zero_only - - return new_rank_zero_only(*args, **kwargs) diff --git a/tests/tests_pytorch/deprecated_api/test_remove_2-0.py b/tests/tests_pytorch/deprecated_api/test_remove_2-0.py index 31336eadd9..2551faca5d 100644 --- a/tests/tests_pytorch/deprecated_api/test_remove_2-0.py +++ b/tests/tests_pytorch/deprecated_api/test_remove_2-0.py @@ -22,7 +22,6 @@ from torch.utils.data import DataLoader from pytorch_lightning.accelerators.cpu import CPUAccelerator from pytorch_lightning.core.mixins.device_dtype_mixin import DeviceDtypeModuleMixin from pytorch_lightning.demos.boring_classes import RandomDataset -from pytorch_lightning.plugins.environments import LightningEnvironment from pytorch_lightning.strategies.utils import on_colab_kaggle from pytorch_lightning.utilities.apply_func import ( apply_to_collection, @@ -44,16 +43,6 @@ from pytorch_lightning.utilities.device_parser import ( parse_hpus, parse_tpu_cores, ) -from pytorch_lightning.utilities.distributed import ( - all_gather_ddp_if_available, - distributed_available, - gather_all_tensors, - get_default_process_group_backend_for_device, - init_dist_connection, - sync_ddp, - sync_ddp_if_available, - tpu_distributed, -) from pytorch_lightning.utilities.optimizer import optimizer_to_device, optimizers_to_device from pytorch_lightning.utilities.seed import pl_worker_init_function, reset_seed, seed_everything from pytorch_lightning.utilities.xla_device import inner_f, pl_multi_process, XLADeviceUtils @@ -88,11 +77,6 @@ def test_v1_10_deprecated_xla_device_utilities(): with pytest.deprecated_call(match="xla_device.XLADeviceUtils.tpu_device_exists` has been deprecated in v1.8.0"): XLADeviceUtils.tpu_device_exists() - from pytorch_lightning.utilities.distributed import tpu_distributed - - with pytest.deprecated_call(match="tpu_distributed` has been deprecated in v1.8.0"): - tpu_distributed() - def test_v1_10_deprecated_apply_func_utilities(): with pytest.deprecated_call(match="apply_func.apply_to_collection` has been deprecated in v1.8.0"): @@ -162,39 +146,6 @@ def test_v1_10_deprecated_device_parser_utilities(): parse_tpu_cores(None) -def test_v1_10_deprecated_distributed_utilities(): - with pytest.deprecated_call(match="distributed.all_gather_ddp_if_available` has been deprecated in v1.8.0"): - all_gather_ddp_if_available(torch.tensor(1)) - - with pytest.deprecated_call(match="distributed.distributed_available` has been deprecated in v1.8.0"): - distributed_available() - - with mock.patch("torch.distributed.get_world_size", return_value=2), mock.patch( - "torch.distributed.barrier" - ), mock.patch("torch.distributed.all_gather"): - with pytest.deprecated_call(match="distributed.gather_all_tensors` has been deprecated in v1.8.0"): - gather_all_tensors(torch.tensor(1)) - - with pytest.deprecated_call( - match="distributed.get_default_process_group_backend_for_device` has been deprecated in v1.8.0" - ): - get_default_process_group_backend_for_device(torch.device("cpu")) - - with mock.patch("torch.distributed.is_initialized", return_value=True): - with pytest.deprecated_call(match="distributed.init_dist_connection` has been deprecated in v1.8.0"): - init_dist_connection(LightningEnvironment(), "gloo") - - with pytest.deprecated_call(match="distributed.sync_ddp_if_available` has been deprecated in v1.8.0"): - sync_ddp_if_available(torch.tensor(1)) - - with mock.patch("torch.distributed.barrier"), mock.patch("torch.distributed.all_reduce"): - with pytest.deprecated_call(match="distributed.sync_ddp` has been deprecated in v1.8.0"): - sync_ddp(torch.tensor(1)) - - with pytest.deprecated_call(match="distributed.tpu_distributed` has been deprecated in v1.8.0"): - tpu_distributed() - - def test_v1_10_deprecated_optimizer_utilities(): with pytest.deprecated_call(match="optimizer.optimizers_to_device` has been deprecated in v1.8.0"): optimizers_to_device([torch.optim.Adam(torch.nn.Linear(1, 1).parameters())], "cpu") @@ -217,10 +168,3 @@ def test_v1_10_deprecated_seed_utilities(): def test_v1_10_deprecated_accelerator_setup_environment_method(): with pytest.deprecated_call(match="`Accelerator.setup_environment` has been deprecated in deprecated in v1.8.0"): CPUAccelerator().setup_environment(torch.device("cpu")) - - -def test_v1_8_1_deprecated_rank_zero_only(): - from pytorch_lightning.utilities.distributed import rank_zero_only - - with pytest.deprecated_call(match="rank_zero_only` has been deprecated in v1.8.1"): - rank_zero_only(lambda: None)