Source code for pytorch_lightning.plugins.environments.cluster_environment
# Copyright The PyTorch Lightning team.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.fromabcimportABC,abstractmethodfromtypingimportAny,Typefrompytorch_lightning.utilitiesimportrank_zero_deprecation
[docs]classClusterEnvironment(ABC):"""Specification of a cluster environment."""def__new__(cls,*args:Any,**kwargs:Any)->"ClusterEnvironment":# TODO: remove in 1.7_check_for_deprecated_methods(cls)returnsuper().__new__(cls)@property@abstractmethoddefcreates_processes_externally(self)->bool:"""Whether the environment creates the subprocesses or not."""@property@abstractmethoddefmain_address(self)->str:"""The main address through which all processes connect and communicate."""@property@abstractmethoddefmain_port(self)->int:"""An open and configured port in the main node through which all processes communicate."""
[docs]@staticmethod@abstractmethoddefdetect()->bool:"""Detects the environment settings corresponding to this cluster and returns ``True`` if they match."""
[docs]@abstractmethoddefworld_size(self)->int:"""The number of processes across all devices and nodes."""
[docs]@abstractmethoddeflocal_rank(self)->int:"""The rank (index) of the currently running process inside of the current node."""
[docs]@abstractmethoddefnode_rank(self)->int:"""The rank (index) of the node on which the current process runs."""
[docs]defteardown(self)->None:"""Clean up any state set after execution finishes."""pass
def_check_for_deprecated_methods(cls:Type[ClusterEnvironment])->None:ifhasattr(cls,"master_address")andcallable(cls.master_address):rank_zero_deprecation(f"`{cls.__name__}.master_address` has been deprecated in v1.6 and will be removed in v1.7."" Implement the property `main_address` instead (do not forget to add the `@property` decorator).")ifhasattr(cls,"master_port")andcallable(cls.master_port):rank_zero_deprecation(f"`{cls.__name__}.master_port` has been deprecated in v1.6 and will be removed in v1.7."" Implement the property `main_port` instead (do not forget to add the `@property` decorator).")
To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. Read PyTorch Lightning's Privacy Policy.