Possible bug in preparing deocder_input_ids for T5 in seq2seq finetune.y
In finetune.py in `_step` method ([link](https://github.com/huggingface/transformers/blob/master/examples/seq2seq/finetune.py#L131)) `decoder_input_ids` are prepared like this
```python3
source_ids, source_mask, target_ids = batch["input_ids"], batch["attention_mask"], batch["decoder_input_ids"]
decoder_input_ids = target_ids[:, :-1].contiguous()  # Why this line?
lm_labels = target_ids[:, 1:].clone()  # why clone?
```

The `T5ForConditionalGeneration` automatically prepares `decoder_input_ids` using `lables` when they are not passed. It uses the _shift_right [method](https://github.com/huggingface/transformers/blob/master/src/transformers/modeling_t5.py#L620). 
```python3
decoder_start_token_id = self.config.decoder_start_token_id
pad_token_id = self.config.pad_token_id
# shift inputs to the right
shifted_input_ids = input_ids.new_zeros(input_ids.shape)
shifted_input_ids[..., 1:] = input_ids[..., :-1].clone()
shifted_input_ids[..., 0] = decoder_start_token_id
```

so finetune.py doesn't add decoder start token id as required by T5 model. This works for bart because for bart input starts with `bos` (`<s>`) which the tokenizer adds automatically. So for T5 model this removes the first token from `lm_labels` and adds no start token in `decoder_input_ids`.

### To reproduce
```python3
from transformers import T5ForConditionalGeneration, T5Tokenizer, T5Config
tokenizer = T5Tokenizer.from_pretrained("t5-base")
config = T5Config.from_pretrained("t5-base")

batch = tokenizer(["simple is better than complex </s>"], return_tensors="pt")

# from finetune.py
pad_token_id = tokenizer.pad_token_id
target_ids = batch["input_ids"]
decoder_input_ids = target_ids[:, :-1].contiguous()  # Why this line?
lm_labels = target_ids[:, 1:].clone()  # why clone?

print(decoder_input_ids[0])
# => tensor([ 650,   19,  394,  145, 1561])
print(tokenizer.convert_ids_to_tokens(decoder_input_ids[0]))
# => ['▁simple', '▁is', '▁better', '▁than', '▁complex']
print(tokenizer.decode(lm_labels[0]))
# => is better than complex


# from T5PreTrainedModel._shift_right
decoder_start_token_id = config.decoder_start_token_id
input_ids = batch["input_ids"]
shifted_input_ids = input_ids.new_zeros(input_ids.shape)
shifted_input_ids[..., 1:] = input_ids[..., :-1].clone()
shifted_input_ids[..., 0] = decoder_start_token_id

print(shifted_input_ids[0])
# => tensor([   0,  650,   19,  394,  145, 1561])
print(tokenizer.convert_ids_to_tokens(shifted_input_ids[0]))
# => ['<pad>', '▁simple', '▁is', '▁better', '▁than', '▁complex']
print(tokenizer.decode(input_ids[0]))
# => simple is better than complex
```
@sshleifer 
This could be one of the reasons for strange T5 behaviour.<|||||>Yes this is an excellent catch @patil-suraj !