Expected behaviour for MBartTokenizer as target tokenizer
Author: FelipeAlb94
Pull request: no

Hello,

I'm trying to fine-tune a MBart model with a multilingual dataset, but I'm facing some issues. The generated texts during training are really strange (mainly others languages not present in the dataset), then I noticed that the input_ids from target text does not follows the format  [tgt_lang_code] [text tokens] [eos].

### **System info**
transformers==4.20.1

### **Who can help?**
@patrickvonplaten 

### **Information**

- [x] The official example scripts
- [ ] My own modified scripts

### **Reproduction**
Running the script below I get both sequence of tokens with format of X [eos, src_lang_code].

```python
from transformers import MBartForConditionalGeneration, MBartTokenizer

tokenizer = MBartTokenizer.from_pretrained("facebook/mbart-large-en-ro", src_lang="en_XX", tgt_lang="ro_RO")
example_english_phrase = "UN Chief Says There Is No Military Solution in Syria"
expected_translation_romanian = "Şeful ONU declară că nu există o soluţie militară în Siria"
inputs = tokenizer(example_english_phrase, return_tensors="pt")

with tokenizer.as_target_tokenizer():
    labels = tokenizer(expected_translation_romanian, return_tensors="pt")

print(inputs['input_ids'])
#tensor([[  8274, 127873,  25916,      7,   8622,   2071,    438,  67485,     53,
#         187895,     23,  51712,      2, 250004]])

print(labels['input_ids'])
#tensor([[ 47711,   7844, 127666,      8,  18347,  18147,   1362,    315,  42071,
#             36,  31563,   8454,  33796,    451,    346, 125577,      2, 250020]])
```

### **Expected Behaviour**
```python
print(labels['input_ids'])
#tensor([[ 250020, 47711,   7844, 127666,      8,  18347,  18147,   1362,    315,  42071,
#             36,  31563,   8454,  33796,    451,    346, 125577,      2]])
```





Comments:
I won't have time to look into this anytime soon. @ArthurZucker could you take a look here? 

Hey! Really sorry for the long delay! 🤗 
From what I understand based on the tests, this behaviour is actually intended : once the `labels` are passed to the `MBartForConditionalGeneration`, they are shifted using `shift_tokens_right(labels)` (see [here](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mbart/modeling_mbart.py/#L1346-L1351). This means that the model actually receives the expected input 😄 

Now about the languages that are generated, there are a lot of possibilities : 
- Since the original model is trained on a lot of language, it can belong to the dataset used to train that model. 
- You can remove the prediction of a list of languages by using `suppress_tokens` argument of the `generate` function (if you are using it). 

Otherwise, I can't really help about the actual finetuning! 
Tell me if that makes sens

PS : 
you can try the following : 
```python 
from transformers import MBartForConditionalGeneration, MBartTokenizer
from transformers.models.mbart.modeling_mbart import shift_tokens_right
tokenizer = MBartTokenizer.from_pretrained("facebook/mbart-large-en-ro", src_lang="en_XX", tgt_lang="ro_RO")
example_english_phrase = "UN Chief Says There Is No Military Solution in Syria"
expected_translation_romanian = "Şeful ONU declară că nu există o soluţie militară în Siria"
tokens = tokenizer(example_english_phrase, text_target=expected_translation_romanian, return_tensors="pt")

shift_tokens_right(tokens["labels"], tokenizer.pad_token_id)
```
Should output 
```python 
tensor([[250020,  47711,   7844, 127666,      8,  18347,  18147,   1362,    315,
          42071,     36,  31563,   8454,  33796,    451,    346, 125577,      2]])
```