code: def training(
      self,
      *,
      keep_local_weights_in_sync: Optional[bool] = NotProvided,
      torch_distributed_backend: Optional[str] = NotProvided,
      **kwargs,
  ) -> "DDPPOConfig":
      super().training(**kwargs)
  
      if keep_local_weights_in_sync is not NotProvided:
          self.keep_local_weights_in_sync = keep_local_weights_in_sync
      if torch_distributed_backend is not NotProvided:
          self.torch_distributed_backend = torch_distributed_backend
  
      return self
  
file_path: ray/rllib/algorithms/ddppo/ddppo.py
imports: from typing import Optional
  from ray.rllib.algorithms.algorithm_config import AlgorithmConfig, NotProvided
  from ray.rllib.algorithms.ppo import PPOConfig, PPO
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.deprecation import Deprecated, ALGO_DEPRECATION_WARNING
label_desc: Use image node_id 2 for calling the DDPPOConfig obj's underlying member method code with example usage: obj.training() and returns: self