Trainer crashes on TPU at eval time when prediction_loss_only is True 
Author: patil-suraj
Pull request: no

# 🐛 Bug
The trainer crashes on TPU at eval time when `prediction_loss_only` is `True`. Here's the stack trace
```
ValueError: zero-dimensional arrays cannot be concatenated
  File "/usr/local/lib/python3.6/dist-packages/transformers/trainer.py", line 630, in evaluate
    output = self._prediction_loop(eval_dataloader, description="Evaluation")
  File "/usr/local/lib/python3.6/dist-packages/transformers/trainer.py", line 630, in evaluate
    output = self._prediction_loop(eval_dataloader, description="Evaluation")
  File "/usr/local/lib/python3.6/dist-packages/transformers/trainer.py", line 707, in _prediction_loop
    preds = xm.mesh_reduce("eval_preds", preds, np.concatenate)
  File "/usr/local/lib/python3.6/dist-packages/transformers/trainer.py", line 707, in _prediction_loop
    preds = xm.mesh_reduce("eval_preds", preds, np.concatenate)
  File "/usr/local/lib/python3.6/dist-packages/torch_xla/core/xla_model.py", line 670, in mesh_reduce
    return reduce_fn(xldata) if xldata else cpu_data
  File "/usr/local/lib/python3.6/dist-packages/torch_xla/core/xla_model.py", line 670, in mesh_reduce
    return reduce_fn(xldata) if xldata else cpu_data
  File "<__array_function__ internals>", line 6, in concatenate
  File "<__array_function__ internals>", line 6, in concatenate
```

This is because `preds` and `label_ids` are `None` when `prediction_loss_only` is `True`. But its not checked here https://github.com/huggingface/transformers/blob/master/src/transformers/trainer.py#L706
```
if is_tpu_available():
   # tpu-comment: Get all predictions and labels from all worker shards of eval dataset
   preds = xm.mesh_reduce("eval_preds", preds, np.concatenate)
   label_ids = xm.mesh_reduce("eval_out_label_ids", label_ids, np.concatenate)
```

This only checks of TPU is available and doesn't check  if `preds` and `label_ids` are `None`

## Information

Model I am using (Bert, XLNet ...): T5

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. Set `prediction_loss_only` only to `True` while initialising `Trainer` or in `.evaluate` method
2. call `trainer.evaluate`

<!-- 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
The trainer should not crash at eval time on TPU when `prediction_loss_only` is `True`. `preds` 
and `label_ids` should be checked for null.
<!-- A clear and concise description of what you would expect to happen. -->

## 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.9.1, master branch
- Platform: Colab TPU
- Python version: 3.6.9
- PyTorch version (GPU?): '1.6.0a0+96885f7' (false)
- Tensorflow version (GPU?): Not applicable
- Using GPU in script?: No
- Using distributed or parallel set-up in script?: Yes, colab TPU

Comments:
By the way we're hoping to soon have TPU-specific CI in place, cc @LysandreJik