docstr: :param torch.LongTensor src_tokens: bsz x max_len
  :param torch.LongTensor tgt_tokens: bsz x max_len'
  :param torch.LongTensor src_seq_len: bsz
  :param torch.LongTensor tgt_seq_len: bsz
  :return:
code: def forward(
      self,
      src_tokens,
      tgt_tokens,
      src_seq_len=None,
      tgt_seq_len=None,
      first=None,
  ):
      """
      :param torch.LongTensor src_tokens: bsz x max_len
      :param torch.LongTensor tgt_tokens: bsz x max_len'
      :param torch.LongTensor src_seq_len: bsz
      :param torch.LongTensor tgt_seq_len: bsz
      :return:
      """
      return self.prompt_model(
          src_tokens, tgt_tokens, src_seq_len, first
      )
  
imports: import torch
  from torch import nn
  from torch.nn import functional
  from transformers.models.bart.configuration_bart import BartConfig
  from .modeling_bart import BartModel
  from ..utils.util import avg_token_embeddings, seq_to_mask, get_model_device
  from functools import partial
  from typing import Union
label_desc: Use image node_id 2 for calling the PromptGeneratorModel obj's underlying member method code with example usage: obj.forward(src_tokens, tgt_tokens, src_seq_len, tgt_seq_len, first) and returns: self