Make docstring match args
Author: sgugger
Pull request: yes

When replying to #4698, I realized some language model docstrings are using arguments that are not present in the function signature. This PR addresses that (for all the ones I found at least).

The alternative would be to change the argument names in the function signatures (if it makes the various model APIs more consistent).

Comments:
# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=h1) Report
> Merging [#4711](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/6449c494d0f40f0b70442f3da9e61f042ff807a8&el=desc) will **decrease** coverage by `0.18%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/huggingface/transformers/pull/4711/graphs/tree.svg?width=650&height=150&src=pr&token=9qOlN6Hb1c)](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #4711      +/-   ##
==========================================
- Coverage   77.32%   77.14%   -0.19%     
==========================================
  Files         128      128              
  Lines       21071    21071              
==========================================
- Hits        16294    16256      -38     
- Misses       4777     4815      +38     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/modeling\_bart.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19iYXJ0LnB5) | `96.79% <ø> (ø)` | |
| [src/transformers/modeling\_gpt2.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19ncHQyLnB5) | `72.11% <ø> (-14.11%)` | :arrow_down: |
| [src/transformers/modeling\_openai.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19vcGVuYWkucHk=) | `80.41% <ø> (-1.38%)` | :arrow_down: |
| [src/transformers/modeling\_transfo\_xl.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190cmFuc2ZvX3hsLnB5) | `77.00% <ø> (ø)` | |
| [src/transformers/modeling\_xlm.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ194bG0ucHk=) | `89.46% <ø> (ø)` | |
| [src/transformers/modeling\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ191dGlscy5weQ==) | `89.94% <0.00%> (-0.24%)` | :arrow_down: |
| [src/transformers/file\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9maWxlX3V0aWxzLnB5) | `73.85% <0.00%> (+0.41%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/4711/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl91dGlscy5weQ==) | `88.66% <0.00%> (+1.80%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=footer). Last update [6449c49...e7d6cb9](https://codecov.io/gh/huggingface/transformers/pull/4711?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


I can work on this if there is no one on it. Quick question though: what about the models that have both `lm_labels` *and* `masked_lm_labels`? encode_decoder is one of them for instance, don't know if there are more.

Yes, that's the case for [`BertForMaskedLM` for example](https://github.com/huggingface/transformers/blob/master/src/transformers/modeling_bert.py#L850). I don't really know the best way to handle this.

As with this update we're trying to have the *exact* same API for all models so that the training/inference code is model agnostic, I'd say that we should look for the most natural on a case-by-case basis.

For example with the `BertForMaskedLM` example, I believe the `labels` should be the `masked_lm_labels`, as BERT should be used for MLM rather than CLM. 

> the

As far as I know, `BertForMaskedLM` does not really use `lm_labels` at the moment. I think it was added to support a causal `Bert` in an encoder-decoder setting so that the decoder can be trained with a causal mask with the language model objective. Since the encoder-decoder framework is not really released yet, I think we can also add a new `BertWithLMHead` class so that each class only has one `labels` argument. It would be a breaking change in terms of the class name for people that already implemented Bert2Bert models, but I think it's worth it for consistency. What do you think? 

@sgugger - In the encoder-decoder model I added both `lm_labels` and `masked_lm_labels` because `Bert` has both `lm_labels` and `masked_lm_labels`. Normally, encoder-decoder models are trained with a CLM objective so not sure if we even need `masked_lm_lables` for the encoder-decoder model wrapper. 

@patrickvonplaten good for me