class_docstr: GPT2 with Retriever Model.
  
  A GPT2 model that receives documents from a retriever.
class_docstr_tok: ["GPT2","with","Retriever","Model",".","A","GPT2","model","that","receives","documents","from","a","retriever","."]
code: def __init__(self, opt, dictionary, retriever_shared=None):
      self.add_start_token = opt["add_start_token"]
      FidModel.__init__(self, opt, dictionary, retriever_shared)
      self.config = self.seq2seq_decoder.transformer.config
      self.embedding_size = self.config.n_embd
      self.lm_head = torch.nn.Linear(
          self.config.n_embd, self.config.vocab_size, bias=False
      )
      self._tie_weights(
          self.lm_head, self.seq2seq_decoder.transformer.wte
      )
      self.doc_delim = self.dict.txt2vec(Document.PASSAGE_DELIM)[0]
      self.min_doc_len = opt["min_doc_token_length"]
      self.truncate = (
          opt["text_truncate"]
          if opt["text_truncate"] > -1
          else opt["truncate"]
      )
  
imports: from typing import Optional, Type, Tuple, List, Dict, Any
  import torch
  import torch.nn
  from parlai.agents.fid.fid import FidModel, concat_enc_outs
  from parlai.agents.hugging_face.gpt2 import GPT2Decoder, Gpt2Agent
  from parlai.agents.rag.args import RetrieverType
  from parlai.agents.rag.modules import RagModel
  from parlai.agents.rag.retrievers import Document, BLANK_DOC, SearchQuerySearchEngineRetriever, retriever_factory, RagRetriever
  from parlai.core.dict import DictionaryAgent
  from parlai.core.opt import Opt
  import parlai.utils.logging
  from projects.seeker.agents.seeker_modules import ComboFidSearchQuerySearchEngineRetriever
  from projects.seeker.agents.seeker_modules import combo_fid_retriever_factory, interleave_fid_combo_outputs, ComboFidModel
label_desc: Use image node_id 1 to create a new GPT2WithRetrieverModel object from inherited base classes: FidModel with example: obj = GPT2WithRetrieverModel(opt, dictionary, retriever_shared)