class_docstr: Doesn't make any changes to TransformerGeneratorModel, just specifies all
  subcomponents explicitly.
  
  This is meant to be a reference for how to swap any component within
  TransformerGeneratorModel.
class_docstr_tok: ["Does","n't","make","any","changes","to","TransformerGeneratorModel",",","just","specifies","all","subcomponents","explicitly",".","This","is","meant","to","be","a","reference","for","how","to","swap","any","component","within","TransformerGeneratorModel","."]
code: def build_model(self, states=None):
      wrapped_class = TransformerGeneratorModel.with_components(
          encoder=TransformerEncoder.with_components(
              layer=TransformerEncoderLayer.with_components(
                  self_attention=MultiHeadAttention,
                  feedforward=TransformerFFN,
              )
          ),
          decoder=TransformerDecoder.with_components(
              layer=TransformerDecoderLayer.with_components(
                  encoder_attention=MultiHeadAttention,
                  self_attention=MultiHeadAttention,
                  feedforward=TransformerFFN,
              )
          ),
      )
      return wrapped_class(opt=self.opt, dictionary=self.dict)
  
imports: from __future__ import annotations
  import torch
  from enum import Enum
  from typing import Dict, Optional, Tuple, Union
  from parlai.agents.transformer.modules import TransformerFFN, MultiHeadAttention, TransformerDecoder, TransformerDecoderLayer, TransformerEncoder, TransformerEncoderLayer, TransformerGeneratorModel
  from parlai.agents.transformer.transformer import TransformerGeneratorAgent
  from parlai.core.opt import Opt
  from parlai.core.params import ParlaiParser
  import parlai.utils.logging
label_desc: Use image node_id 1 for calling the VerboseTransformerAgent obj's underlying member method code with example usage: obj.build_model(states) and returns: wrapped_class