class_docstr: Illustrates swapping out components based on command line args.
  
  Specifically, swaps out the decoder ffn between two options.
class_docstr_tok: ["Illustrates","swapping","out","components","based","on","command","line","args",".","Specifically",",","swaps","out","the","decoder","ffn","between","two","options","."]
code: def add_cmdline_args(
      cls, parser: ParlaiParser, partial_opt: Optional[Opt] = None
  ) -> ParlaiParser:
      super().add_cmdline_args(parser, partial_opt=partial_opt)
      agent = parser.add_argument_group(
          "MyCustom Transformer Arguments"
      )
      parser.add_argument(
          "--decoder-ffn-variants",
          type=DecoderFeedForwardVariant,
          default=DecoderFeedForwardVariant.ONE,
          help="Some variants in the decoder FFN implementation",
      )
      return agent
  
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 ConfigurableTransformerAgent obj's underlying member method code with example usage: obj.add_cmdline_args(cls, parser, partial_opt) and returns: agent