class_docstr: This lobe enables the integration of HuggingFace and SpeechBrain
  pretrained mBART models.
  
  Source paper mBART: https://arxiv.org/abs/2001.08210
  Transformer from HuggingFace needs to be installed:
  https://huggingface.co/transformers/installation.html
  
  The model is normally used as a text decoder of seq2seq models. It
  will download automatically the model from HuggingFace or use a local path.
  
  Arguments
  ---------
  source : str
      HuggingFace hub name: e.g "facebook/mbart-large-50-many-to-many-mmt"
  save_path : str
      Path (dir) of the downloaded model.
  freeze : bool (default: True)
      If True, the model is frozen. If False, the model will be trained
      alongside with the rest of the pipeline.
  target_lang: str (default: fra_Latn (a.k.a French)
      The target language code according to NLLB model.
  decoder_only : bool (default: True)
      If True, only take the decoder part (and/or the lm_head) of the model.
      This is useful in case one wants to couple a pre-trained speech encoder (e.g. wav2vec)
      with a text-based pre-trained decoder (e.g. mBART, NLLB).
  share_input_output_embed : bool (default: True)
      If True, use the embedded layer as the lm_head.
  
  Example
  -------
  >>> src = torch.rand([10, 1, 1024])
  >>> tgt = torch.LongTensor([[250008,    313,     25,    525,    773,  21525,   4004,      2]])
  >>> model_hub = "facebook/mbart-large-50-many-to-many-mmt"
  >>> save_path = "savedir"
  >>> model = mBART(model_hub, save_path) # doctest: +SKIP
  >>> outputs = model(src, tgt) # doctest: +SKIP
docstr: This method customizes the padding.
  Default pad_idx of SpeechBrain is 0.
  However, it happens that some text-based models like mBART reserves 0 for something else,
  and are trained with specific pad_idx.
  This method change org_pad to custom_pad
  
  Arguments
  ---------
  x : torch.Tensor
    Input tensor with original pad_idx
  org_pad : int
    Orginal pad_idx
  custom_pad : int
    Custom pad_idx
code: def custom_padding(self, x, org_pad, custom_pad):
      """This method customizes the padding.
      Default pad_idx of SpeechBrain is 0.
      However, it happens that some text-based models like mBART reserves 0 for something else,
      and are trained with specific pad_idx.
      This method change org_pad to custom_pad
  
      Arguments
      ---------
      x : torch.Tensor
        Input tensor with original pad_idx
      org_pad : int
        Orginal pad_idx
      custom_pad : int
        Custom pad_idx
      """
      out = x.clone()
      out[x == org_pad] = custom_pad
  
      return out
  
file_path: speechbrain/speechbrain/lobes/models/huggingface_transformers/mbart.py
imports: import torch
  import logging
  from speechbrain.lobes.models.huggingface_transformers.huggingface import HFTransformersInterface
label_desc: Use image node_id 4 for calling the mBART obj's underlying member method code with example usage: obj.custom_padding(x, org_pad, custom_pad) and returns: out