class_docstr: Strategy for multi-process single-device training on one or multiple nodes.
class_docstr_tok: ["Strategy","for","multi-process","single-device","training","on","one","or","multiple","nodes","."]
code: def __init__(
      self,
      accelerator: Optional[Accelerator] = None,
      parallel_devices: Optional[List[torch.device]] = None,
      cluster_environment: Optional[ClusterEnvironment] = None,
      checkpoint_io: Optional[CheckpointIO] = None,
      precision: Optional[Precision] = None,
      process_group_backend: Optional[str] = None,
      timeout: Optional[timedelta] = default_pg_timeout,
      start_method: Literal[
          "popen", "spawn", "fork", "forkserver"
      ] = "popen",
      **kwargs: Any,
  ) -> None:
      super().__init__(
          accelerator=accelerator,
          parallel_devices=parallel_devices,
          cluster_environment=cluster_environment,
          checkpoint_io=checkpoint_io,
          precision=precision,
      )
      self._num_nodes = 1
      self._process_group_backend: Optional[str] = process_group_backend
      self._timeout: Optional[timedelta] = timeout
      self._start_method = start_method
      self._backward_sync_control = _DDPBackwardSyncControl()
      self._ddp_kwargs = kwargs
  
imports: from contextlib import nullcontext
  from datetime import timedelta
  from typing import Any, ContextManager, Dict, List, Literal, Optional, Union
  import torch
  import torch.distributed
  from lightning_utilities.core.rank_zero import rank_zero_only
  from torch import Tensor
  from torch.nn import Module
  from torch.nn.parallel.distributed import DistributedDataParallel
  from typing_extensions import override
  from lightning.fabric.accelerators.accelerator import Accelerator
  from lightning.fabric.plugins.collectives.torch_collective import default_pg_timeout
  from lightning.fabric.plugins.environments.cluster_environment import ClusterEnvironment
  from lightning.fabric.plugins.io.checkpoint_io import CheckpointIO
  from lightning.fabric.plugins.precision import Precision
  from lightning.fabric.strategies.launchers.multiprocessing import _MultiProcessingLauncher
  from lightning.fabric.strategies.launchers.subprocess_script import _SubprocessScriptLauncher
  from lightning.fabric.strategies.parallel import ParallelStrategy
  from lightning.fabric.strategies.registry import _StrategyRegistry
  from lightning.fabric.strategies.strategy import TBroadcast, _BackwardSyncControl
  from lightning.fabric.utilities.distributed import ReduceOp, _distributed_is_initialized, _get_default_process_group_backend_for_device, _init_dist_connection, _sync_ddp_if_available
  from lightning.fabric.utilities.distributed import group
  from lightning.fabric.utilities.rank_zero import rank_zero_only
label_desc: Use image node_id 1 to create a new DDPStrategy object from inherited base classes: ParallelStrategy with example: obj = DDPStrategy(accelerator, parallel_devices, cluster_environment, checkpoint_io, precision, process_group_backend, timeout, start_method)