Error in Longformer attention mask using apex mixed precision
# 🐛 Bug

## Information

Model I am using (Bert, XLNet ...): Longformer

Language I am using the model on (English, Chinese ...): English

The problem arises when using:
* [ ] the official example scripts: (give details below)
* [x] 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)

## To reproduce

Steps to reproduce the behavior:

1. Install latest transformers (2.10.0) and apex (0.1)
2. Code: 
```
import torch
from transformers import LongformerTokenizer, LongformerModel, LongformerConfig
from apex import amp


tokenizer = LongformerTokenizer.from_pretrained('longformer-base-4096')
config = LongformerConfig.from_pretrained('longformer-base-4096')
model = LongformerModel.from_pretrained('longformer-base-4096').cuda()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)

model, optimizer = amp.initialize(model, optimizer, opt_level='O1')

# toy input example
inputs = torch.randint(config.vocab_size, (1, 1024)).cuda() # randomly select tokens with sequence length 1024
mask = torch.ones(1, 1024).cuda() # set mask for every token to local attention
mask[0] = 2. # global attention for first token

outputs = model(inputs, attention_mask=mask)
```



<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->

## Expected behavior

<!-- A clear and concise description of what you would expect to happen. -->
Error message:
```
File "/home/miniconda3/envs/test_transformer/lib/python3.8/site-packages/transformers/modeling_longformer.py", line 374, in
forward
    attn[extra_attention_mask_nonzeros[::-1]] = nonzero_selected_attn.view(
RuntimeError: expected dtype Half but got dtype Float
```
`attn` is half precision but is assigned a tensor that is casted into single precision `.type_as(hidden_states)` in line 376 .

## 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: 2.10.0
- Platform: Linux-4.15.0-65-generic-x86_64-with-glibc2.10
- Python version: 3.8.3
- PyTorch version (GPU?): 1.5.0 (True)
- Tensorflow version (GPU?): not installed (NA)
- Using GPU in script?: yes
- Using distributed or parallel set-up in script?: no
Good catch! I guess that soon you'd want to move over PyTorch's built-in AMP which takes care of this automatically (I _think_), but for the time being your suggestion is a good fix. You can submit a PR if you want!<|||||>I think this is solved with the PR #4574 no?