class_docstr: Allows copying of DistributedModelParallel module to a target device.
  
  Example::
  
      # Copying model to CPU.
  
      m = DistributedModelParallel(m)
      with sharded_model_copy("cpu"):
          m_cpu = copy.deepcopy(m)
class_docstr_tok: ["Allows","copying","of","DistributedModelParallel","module","to","a","target","device",".","Example",":",":","#","Copying","model","to","CPU",".","m","=","DistributedModelParallel","(","m",")","with","sharded_model_copy","(","``","cpu","''",")",":","m_cpu","=","copy.deepcopy","(","m",")"]
code: def __exit__(self, exc_type, exc_val, exc_tb) -> None:
      # pyre-ignore [16]
      torch.Tensor.__deepcopy__ = self.t_copy_save_
      # pyre-ignore [16]
      torch.nn.Parameter.__deepcopy__ = self.p_copy_save_
      # pyre-fixme[16]: `Type` has no attribute `__deepcopy__`.
      torch._C._distributed_c10d.ProcessGroupNCCL.__deepcopy__ = None
      # pyre-fixme[16]: `Type` has no attribute `__deepcopy__`.
      torch._C._distributed_c10d.ProcessGroupGloo.__deepcopy__ = None
      # pyre-fixme[16]: `Type` has no attribute `__deepcopy__`.
      torch._C._distributed_c10d.Work.__deepcopy__ = None
      # pyre-ignore [16]
      torch.cuda.streams.Stream.__deepcopy__ = None
  
imports: import copy
  import logging
  from collections import OrderedDict
  from itertools import accumulate
  from typing import Any, Dict, List, Optional, Set, Type, TypeVar, Union
  import torch
  from fbgemm_gpu.split_embedding_configs import EmbOptimType
  from torch import nn
  from torchrec import optim
  from torchrec.distributed.embedding_types import EmbeddingComputeKernel
  from torchrec.distributed.types import DataType, ParameterSharding, ShardedModule, ShardingType
  from torchrec.modules.embedding_configs import data_type_to_sparse_type
  from torchrec.types import CopyMixIn
label_desc: Use image node_id 3 for calling the sharded_model_copy obj's underlying member method code with example usage: obj.__exit__(exc_type, exc_val, exc_tb) without return types