Incorrect tokenization for MarianNMT models in example script.
## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->
     
- `transformers` version: 3.0.2
- Platform: Linux-4.4.0-1110-aws-x86_64-with-Ubuntu-16.04-xenial
- Python version: 3.7.8
- PyTorch version (GPU?): 1.5.1+cu101 (True)
- Tensorflow version (GPU?): not installed (NA)
- Using GPU in script?: yes
- Using distributed or parallel set-up in script?: no

### Who can help
 Marian: @sshleifer 

## Information

Model I am using (Bert, XLNet ...): Marian (Helsinki-NLP/opus-mt-nl-fr)

The problem arises when using:
* [x] the official example scripts: (give details below)
* [ ] my own modified scripts: (give details below)

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
* [x] my own task or dataset: (give details below)

I'm trying to finetune a MarianMT model (Helsinki-NLP/opus-mt-nl-fr), using the example finetuning script `examples/seq2seq/finetune.py`. Marian models have different sentencepiece models for the encoder and decoder, but it appears the script does not take this into account, as the source line and the target line are tokenized in exactly the same way (in `utils.py`, lines 115-116):

```
        source_inputs = encode_line(self.tokenizer, source_line, self.max_source_length)
        target_inputs = encode_line(self.tokenizer, tgt_line, self.max_target_length)
```

I suggest checking whether the tokenizer is a Marian tokenizer and if so, encoding with the tokenizer's `prepare_translation_batch` method. Doing this improves BLEU score on my validation data by >3 points.

## To reproduce

Steps to reproduce the behavior:

1. Simply run the `examples/seq2seq/finetune.sh` with a MarianModel.

Thanks for this catch and detailed report. Feel free to chime in on the Linked pull request #6293 !
