class_docstr: MegatronGPTPTuningModel is a model that combines a base model (GPTSFTModel) with a p-tuning prefix in the
  input word embedding representations using a prompt-encoder as descripted in Liu et al. https://arxiv.org/pdf/2103.10385.pdf
  
  The mixin framework adds the output of prompt-encoder (i.e. the virtual embeddings) inside
  nemo/collections/nlp/modules/common/megatron/language_model.py
docstr: Reimplement state_dict for ptuning because we also need to check the stage of the pipeline.
  The check is required to make pp>1 to work.
docstr_tok: ["Reimplement","state_dict","for","ptuning","because","we","also","need","to","check","the","stage","of","the","pipeline",".","The","check","is","required","to","make","pp",">","1","to","work","."]
code: def state_dict(self, destination=None, prefix=None, keep_vars=False):
      """
      Reimplement state_dict for ptuning because we also need to check the stage of the pipeline.
      The check is required to make pp>1 to work.
      """
      if self.setup_complete:
          if self.first_stage_of_pipeline():
              return self.get_peft_state_dict()
          # if we are not in the first state of pipeline after setup is done
          # there should be no params in the state_dict
          return {}
      else:
          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 3 for calling the MegatronGPTPTuningModel obj's underlying member method code with example usage: obj.state_dict(destination, prefix, keep_vars) and returns: dict, self, self