code: def get_trainable_params_efficient_finetune(
      norm_param_names: List[str],
      efficient_finetune: Optional[str] = None,
      extra_params: Optional[List] = None,
  ):
      """
       Get the list of trainable parameters according to the provided efficient finetuning method.
  
      Parameters
      ----------
      norm_param_names
          The parameters associated with the normalization layers
      efficient_finetune
          Efficient finetuning strategy. Trainable parameters will be adjusted according to the method.
  
      Returns
      -------
      Get list of trainable parameter names according to the provided efficient finetuning method.
      """
      trainable_param_names = []
  
      if efficient_finetune == BIT_FIT:
          trainable_param_names.append(".*bias*.")
      elif efficient_finetune == NORM_FIT:
          trainable_param_names.append(".*bias*.")
          trainable_param_names += norm_param_names
      elif efficient_finetune in [LORA, IA3, IA3_LORA]:
          trainable_param_names.append(".*lora_*.")
      elif efficient_finetune in [LORA_BIAS, IA3_BIAS, IA3_LORA_BIAS]:
          trainable_param_names.append(".*lora_*.")
          trainable_param_names.append(".*bias*.")
      elif efficient_finetune in [LORA_NORM, IA3_NORM, IA3_LORA_NORM]:
          trainable_param_names.append(".*lora_*.")
          trainable_param_names.append(".*bias*.")
          trainable_param_names += norm_param_names
      elif (
          efficient_finetune is not None
          and efficient_finetune != "None"
      ):
          raise NotImplementedError(
              f"The efficient finetuning strategy '{efficient_finetune}'"
              f" is not supported. We only support"
              f" {', '.join(PEFT_STRATEGIES)}."
          )
  
      if extra_params:
          trainable_param_names.extend(extra_params)
  
      return trainable_param_names
  
imports: import functools
  import logging
  import re
  import warnings
  from typing import Any, Dict, List, Optional, Tuple, Union
  import torch
  import torchmetrics
  from omegaconf import DictConfig, OmegaConf
  from packaging import version
  from pytorch_metric_learning import distances, losses, miners
  from torch import nn, optim
  from torch.nn import functional
  from torchmetrics.detection.mean_ap import MeanAveragePrecision
  from transformers import Adafactor
  from transformers.models.mask2former.modeling_mask2former import Mask2FormerConfig, Mask2FormerLoss
  from transformers.trainer_pt_utils import get_parameter_names
  from ..constants import ACC, ACCURACY, AVERAGE_PRECISION, BER, BINARY, BIT_FIT, COLUMN_FEATURES, CONTRASTIVE_LOSS, COSINE_EMBEDDING_LOSS, COSINE_SIMILARITY, CROSS_ENTROPY, DETECTION_METRICS, DIRECT_LOSS, EM, F1, F1_MACRO, F1_MICRO, F1_WEIGHTED, FEATURES, FEW_SHOT_CLASSIFICATION, FM, HIT_RATE, IA3, IA3_BIAS, IA3_LORA, IA3_LORA_BIAS, IA3_LORA_NORM, IA3_NORM, IOU, LOG_LOSS, LORA, LORA_BIAS, LORA_NORM, MAE, MULTI_NEGATIVES_SOFTMAX_LOSS, MULTICLASS, NER, NER_TOKEN_F1, NORM_FIT, OBJECT_DETECTION, OPEN_VOCABULARY_OBJECT_DETECTION, OVERALL_ACCURACY, PAIR_MARGIN_MINER, PEARSONR, PEFT_STRATEGIES, QUADRATIC_KAPPA, R2, RECALL, REGRESSION, RMSE, ROC_AUC, ROOT_MEAN_SQUARED_ERROR, SEMANTIC_SEGMENTATION, SM, SPEARMANR
  from .losses import BBCEWithLogitLoss, FocalLoss, MultiNegativesSoftmaxLoss, SoftTargetCrossEntropy, StructureLoss
  from .lr_scheduler import get_cosine_schedule_with_warmup, get_linear_schedule_with_warmup, get_polynomial_decay_schedule_with_warmup
  from .semantic_seg_metrics import COD_METRICS_NAMES, Balanced_Error_Rate, Binary_IoU, Multiclass_IoU
label_desc: Use image node_id 10 for calling a global function with example usage: get_trainable_params_efficient_finetune(norm_param_names, efficient_finetune, extra_params) and returns: trainable_param_names