Support multiprocessing when loading pretrained weights
## 🐛 Bug

So this is an issue that probably won't crop up for *too* many people, but there's a synchronization issue in loading pretrained weights if doing so in a multiprocess setting if they are not present in the cache.

For context, I'm trying to use `torch.distributed.launch` and doing so inside a fresh docker container which doesn't have cached weights. When doing this, each process looks for the weights in the cache and starts downloading them. They then all try to copy the files to the same place. I suppose `shutil.copyfileobj` is not thread-safe, because this leads to a corrupted weight file.

A simple, easy solution would be to add a check _after_ the file is downloaded as well. So you could wrap [these lines in `pytorch_transformers/file_utils.py`](https://github.com/huggingface/pytorch-transformers/blob/df9d6effae43e92761eb92540bc45fac846789ee/pytorch_transformers/file_utils.py#L252-L262) in a second condition like this:

```python 
if not os.path.exists(cache_path):
    # Download File
    if not os.path.exists(cache_path):  # second check for multiprocessing
       # Copy to cache_path
```

A better solution might be to detect the multiprocessing and only download the file once? I think `torch.distributed` could help here, but it would probably be hard to handle all the possible use cases.
Hi! Indeed, you have to be careful when downloading the models in a multiprocessing manner so that you do not download them several times. 

You can see how we do it in our examples (like this [run_glue example)](https://github.com/huggingface/pytorch-transformers/blob/master/examples/run_glue.py#L429-L438), where we manage it with the `barriers` that come with `torch.distributed`.<|||||>Yup, found that right before you commented 😄 

Is there a reasonable way to include this within the download script itself? Or a place in the README to mention this?

If not, feel free to close.<|||||>This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
