class_docstr: base class for all mixin based adapter models
code: def state_dict(self, destination=None, prefix=None, keep_vars=False):
      if self.setup_complete:
          # Once setup is complete we no longer need to track the frozen part of the model. Only there adapter state dict keeps changing so state_dict only track these.
          return self.get_peft_state_dict()
      else:
          # we want all the params with the same keys as calling self.state_dict()
          # but we can't call self.state_dict() here as it would be a recursive call.
          # so we call self.model.state_dict(prefix="model.") which will return all the keys and params same as calling self.state_dict()
          return self.model.state_dict(prefix="model.")
  
imports: from omegaconf.dictconfig import DictConfig
  from pytorch_lightning.trainer.trainer import Trainer
  from nemo.collections.nlp.models.language_modeling.megatron_gpt_sft_model import MegatronGPTSFTModel
  from nemo.collections.nlp.modules.common.megatron.adapters.mcore_mixins import MCoreGPTEmbeddingMixin, MCoreSelfAttentionMixin, MCoreTransformerLayerMixin, swap_mcore_mixin
  from nemo.collections.nlp.modules.common.megatron.adapters.parallel_adapters import AdapterName, InfusedAdapterConfig, LoraKQVAdapterConfig, LoraKQVAdapterWeightTyingConfig, MLPInfusedAdapterConfig, ParallelLinearAdapterConfig, ParallelLinearAdapterWeightTyingConfig, PromptEncoderAdapterConfig
  from nemo.core.classes.mixins import adapter_mixins
  from nemo.utils import logging, model_utils
  from nemo.utils.decorators import deprecated
label_desc: Use image node_id 7 for calling the MegatronGPTPEFTModel obj's underlying member method code with example usage: obj.state_dict(destination, prefix, keep_vars) and returns: self, self