class_docstr: To use Apex's DistributedFusedAdam, we need to shard the optimizer states when
  saving/loading checkpoints.
code: def __init__(
      self,
      *args,
      precision_plugin: Optional[
          PrecisionPlugin
      ] = DistAdamNativeMixedPrecisionPlugin,
      # precision_plugin: Optional[PrecisionPlugin] = None,
      **kwargs: Union[Any, Dict[str, Any]],
  ) -> None:
      super().__init__(
          *args, precision_plugin=precision_plugin, **kwargs
      )
  
imports: from typing import Any, Callable, Dict, List, Optional, Union
  from pathlib import Path
  import types
  import torch
  from torch.optim.optimizer import Optimizer
  from torch.optim import LBFGS
  from apex.contrib.optimizers.distributed_fused_adam import DistributedFusedAdam
  from pytorch_lightning.strategies.ddp import DDPStrategy
  from pytorch_lightning.plugins.precision import PrecisionPlugin, NativeMixedPrecisionPlugin
  from pytorch_lightning.core.optimizer import LightningOptimizer
  from pytorch_lightning.utilities.exceptions import MisconfigurationException
label_desc: Use image node_id 1 to create a new DDPStrategyZero2 object from inherited base classes: DDPStrategy with example: obj = DDPStrategyZero2()