code: def get_shared_params(self) -> List[Dict[int, Tensor]]:
      bloom_model = self.model
      if (
          self.pipeline_stage_manager
          and self.pipeline_stage_manager.num_stages > 1
      ):
          if id(bloom_model.transformer.word_embeddings.weight) == id(
              bloom_model.lm_head.weight
          ):
              # tie weights
              return [
                  {
                      0: bloom_model.transformer.word_embeddings.weight,
                      self.pipeline_stage_manager.num_stages
                      - 1: bloom_model.lm_head.weight,
                  }
              ]
      return []
  
imports: from functools import partial
  from typing import Callable, Dict, List
  import torch.nn
  from torch import Tensor
  from torch.nn import Module
  import colossalai.shardformer.layer
  from ..modeling.bloom import BloomPipelineForwards, build_bloom_alibi_tensor_fn, get_bloom_flash_attention_forward, get_bloom_sequence_parallel_forward_fn, get_jit_fused_bloom_attention_forward, get_jit_fused_bloom_gelu_forward, get_jit_fused_bloom_mlp_forward
  from ..modeling.jit import get_dropout_add_func, get_jit_fused_dropout_add_func, get_jit_fused_gelu_forward_func
  from .base_policy import ModulePolicyDescription, Policy, SubModuleReplacementDescription
label_desc: Use image node_id 3 for calling the BloomForCausalLMPolicy obj's underlying member method code with example usage: obj.get_shared_params() and returns: list, list