class_docstr: ``PromptModel`` is the encapsulation of ``Template`` and the ``pre-trained model``,
  with OpenPrompt, these modules could be flexibly combined. And this class is the base class of ``PromptForClassification`` and ``PromptForGeneration``
  
  Args:
      plm (:obj:`PreTrainedModel`): The pre-trained language model for the current prompt-learning task.
      template (:obj:`Template`): The ``Template`` object to warp the input data.
      freeze_plm (:obj:`bool`): whether or not to freeze the pretrained language model
      plm_eval_mode (:obj:`bool`): this is a stronger freezing mode than freeze_plm, i.e. the dropout of the model is turned off. No matter whether the other part is set to train.
code: def __init__(
      self,
      plm,
      template,
      freeze_plm: bool = False,
      plm_eval_mode: bool = False,
  ):
      super().__init__()
      self.plm = plm
      self.template = template
      self.freeze_plm = freeze_plm
      self.plm_eval_mode = plm_eval_mode
      if freeze_plm:
          for param in self.plm.parameters():
              param.requires_grad = False
              param.stop_gradient = True
      if plm_eval_mode:
          self.plm.eval()
          for param in self.plm.parameters():
              param.requires_grad = False
              param.stop_gradient = True
  
      # get model's forward function's keywords
      self.forward_keys = signature(self.plm.forward).args
  
      self._prepare_main_input_name()
  
imports: from typing import *
  from utils import round_list, signature
  import paddle
label_desc: Use image node_id 1 to create a new erniePromptModel object from inherited base classes: paddle.nn with example: obj = erniePromptModel(plm, template, freeze_plm, plm_eval_mode)