Inconsistent API output for Q&A models between eager mode and torchscripted 
Author: HamidShojanazeri
Pull request: no

## Environment info

- `transformers` version: 4.3.3
- Platform: Linux-5.4.0-1037-aws-x86_64-with-glibc2.10
- Python version:3.8.6
- PyTorch version (GPU?): 1.7.1 (True)
- Tensorflow version (GPU?):
- Using GPU in script?: Yes
- Using distributed or parallel set-up in script?: No

## Information

@sgugger I am using question-answering models from auto class, have tried, Bert-base/Roberta-base/distilbert-base-cased-distilled-squad.

The problem arises when using:

Accessing the start and end logits through the output of the model is inconsistent between eager mode and Torchscripted(traced) model. For the eager mode, it is possible to use "outputs.start_logits, outputs.end_logits" however for 
Torchscripted model, it returns a tuple, as it was in older version (i.e. 2.10).

## To reproduce

```
import transformers
import os
import torch
from transformers import (AutoModelForSequenceClassification, AutoTokenizer, AutoModelForQuestionAnswering,
 AutoModelForTokenClassification, AutoConfig)
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
pretrained_model_name = 'distilbert-base-cased-distilled-squad'
max_length = 30
config_torchscript = AutoConfig.from_pretrained(pretrained_model_name,torchscript=True)
model_torchscript = AutoModelForQuestionAnswering.from_pretrained(pretrained_model_name,config=config_torchscript)

tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name,do_lower_case=True)


config = AutoConfig.from_pretrained(pretrained_model_name)
model = AutoModelForQuestionAnswering.from_pretrained(pretrained_model_name,config=config)



dummy_input = "This is a dummy input for torch jit trace"
inputs = tokenizer.encode_plus(dummy_input,max_length = int(max_length),pad_to_max_length = True, add_special_tokens = True, return_tensors = 'pt')
input_ids = inputs["input_ids"].to(device)

model.to(device).eval()
model_torchscript.to(device).eval()

traced_model = torch.jit.trace(model_torchscript, [input_ids])

outputs = model(input_ids)

print(outputs.start_logits, outputs.end_logits)

print("******************************* eager mode passed **************")
                                         
traced_outputs = traced_model(input_ids)


print(traced_outputs.start_logits, traced_outputs.end_logits)

print("******************************* traced mode passed **************")

```
Steps to reproduce the behavior:

1. install transformers.
2. Run the above code snippet


## Expected behavior

Being able to access the start and end logits consistently between eager and torchscript mode.


Comments:
`torchscript` does not support anything else than tuple outputs, so you can't rely on the attributes when using it and transformers automatically sets `return_dict=False` in this case.

You need to access to the output fields with indices.

@sgugger Thanks for the explanations.

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.