code: def get_shared_params(self) -> List[Dict[int, Tensor]]:
      module = self.model
      stage_manager = self.pipeline_stage_manager
      if stage_manager is not None and stage_manager.num_stages > 1:
          _, decoder_starting_stage = T5BasePolicy.distribute_t5_layers(
              len(module.encoder.block),
              len(module.decoder.block),
              stage_manager.num_stages,
          )
  
          if id(module.decoder.embed_tokens.weight) == id(
              module.shared.weight
          ):
              return [
                  {
                      0: module.shared.weight,
                      decoder_starting_stage: module.decoder.embed_tokens.weight,
                  }
              ]
      return []
  
imports: import warnings
  from functools import partial
  from typing import Callable, Dict, List, Tuple
  import numpy
  from torch import Tensor, nn
  from colossalai.shardformer.layer import DropoutForParallelInput, Embedding1D, FusedRMSNorm, Linear1D_Col, Linear1D_Row, RMSNorm, VocabParallelEmbedding1D
  from colossalai.shardformer.policies.base_policy import ModulePolicyDescription
  from ..modeling.jit import get_jit_fused_dropout_add_func
  from ..modeling.t5 import T5PipelineForwards, get_jit_fused_T5_layer_ff_forward, get_t5_flash_attention_forward, get_T5_layer_cross_attention_forward, get_T5_layer_self_attention_forward
  from .base_policy import ModulePolicyDescription, Policy, SubModuleReplacementDescription
label_desc: Use image node_id 3 for calling the T5ModelPolicy obj's underlying member method code with example usage: obj.get_shared_params() and returns: list, list