code: def __paired_shard_move(self):
      assert (
          self.paired_chunk is not None
      ), "chunks should be paired before training"
      optim_chunk = self.paired_chunk
      assert self.chunk_size == optim_chunk.chunk_size
  
      # only be called when optimizer state is in CPU memory
      # the grad and param should be in the same device
      assert self.cuda_shard is None
      temp = optim_chunk.cpu_shard.to(get_current_device())
      # avoid to transform FP32 in CPU
      self.cuda_shard = temp.to(self.dtype)
  
      if not self.pin_memory:
          self.cpu_shard = None
  
imports: from dataclasses import dataclass
  from enum import Enum
  from typing import Dict, List, Optional
  import torch
  import torch.distributed
  from torch.distributed import ProcessGroup
  from colossalai.utils import get_current_device
  from colossalai.utils.device import IS_NPU_AVAILABLE
label_desc: Use image node_id 26 for calling the Chunk obj's underlying member method code with example usage: obj.__paired_shard_move() without return types