code: def add_model_specific_args(parser, root_dir):
      BaseTransformer.add_model_specific_args(parser, root_dir)
      add_generic_args(parser, root_dir)
      parser.add_argument(
          "--max_source_length",
          default=1024,
          type=int,
          help=(
              "The maximum total input sequence length after tokenization. Sequences longer "
              "than this will be truncated, sequences shorter will be padded."
          ),
      )
      parser.add_argument(
          "--max_target_length",
          default=56,
          type=int,
          help=(
              "The maximum total input sequence length after tokenization. Sequences longer "
              "than this will be truncated, sequences shorter will be padded."
          ),
      )
      parser.add_argument(
          "--val_max_target_length",
          default=142,  # these defaults are optimized for CNNDM. For xsum, see README.md.
          type=int,
          help=(
              "The maximum total input sequence length after tokenization. Sequences longer "
              "than this will be truncated, sequences shorter will be padded."
          ),
      )
      parser.add_argument(
          "--test_max_target_length",
          default=142,
          type=int,
          help=(
              "The maximum total input sequence length after tokenization. Sequences longer "
              "than this will be truncated, sequences shorter will be padded."
          ),
      )
      parser.add_argument("--freeze_encoder", action="store_true")
      parser.add_argument("--freeze_embeds", action="store_true")
      parser.add_argument(
          "--sortish_sampler", action="store_true", default=False
      )
      parser.add_argument(
          "--overwrite_output_dir", action="store_true", default=False
      )
      parser.add_argument(
          "--max_tokens_per_batch", type=int, default=None
      )
      parser.add_argument(
          "--logger_name",
          type=str,
          choices=["default", "wandb", "wandb_shared"],
          default="default",
      )
      parser.add_argument(
          "--n_train",
          type=int,
          default=-1,
          required=False,
          help="# examples. -1 means use all.",
      )
      parser.add_argument(
          "--n_val",
          type=int,
          default=500,
          required=False,
          help="# examples. -1 means use all.",
      )
      parser.add_argument(
          "--n_test",
          type=int,
          default=-1,
          required=False,
          help="# examples. -1 means use all.",
      )
      parser.add_argument(
          "--task",
          type=str,
          default="summarization",
          required=False,
          help="# examples. -1 means use all.",
      )
      parser.add_argument(
          "--label_smoothing", type=float, default=0.0, required=False
      )
      parser.add_argument(
          "--src_lang", type=str, default="", required=False
      )
      parser.add_argument(
          "--tgt_lang", type=str, default="", required=False
      )
      parser.add_argument(
          "--eval_beams", type=int, default=None, required=False
      )
      parser.add_argument(
          "--val_metric",
          type=str,
          default=None,
          required=False,
          choices=["bleu", "rouge2", "loss", None],
      )
      parser.add_argument(
          "--eval_max_gen_length",
          type=int,
          default=None,
          help="never generate more than n tokens",
      )
      parser.add_argument(
          "--save_top_k",
          type=int,
          default=1,
          required=False,
          help="How many checkpoints to save",
      )
      parser.add_argument(
          "--early_stopping_patience",
          type=int,
          default=-1,
          required=False,
          help=(
              "-1 means never early stop. early_stopping_patience is measured in validation checks, not epochs. So"
              " val_check_interval will effect it."
          ),
      )
      return parser
  
imports: import argparse
  import glob
  import logging
  import os
  import sys
  import time
  from collections import defaultdict
  from pathlib import Path
  from typing import Dict, List, Tuple
  import numpy
  import pytorch_lightning
  import torch
  from torch import nn
  from torch.utils.data import DataLoader
  from callbacks import Seq2SeqLoggingCallback, get_checkpoint_callback, get_early_stopping_callback
  from transformers import MBartTokenizer, T5ForConditionalGeneration
  from transformers.models.bart.modeling_bart import shift_tokens_right
  from utils import ROUGE_KEYS, LegacySeq2SeqDataset, Seq2SeqDataset, assert_all_frozen, calculate_bleu, calculate_rouge, check_output_dir, flatten_list, freeze_embeds, freeze_params, get_git_info, label_smoothed_nll_loss, lmap, pickle_save, save_git_info, save_json, use_task_specific_params
  from lightning_base import BaseTransformer, add_generic_args, generic_train
label_desc: Use image node_id 19 for calling the SummarizationModule obj's underlying member method code with example usage: obj.add_model_specific_args(parser, root_dir) and returns: parser