run_lm_finetuning.py script CLM inputs and labels preparing
I'm trying to finetune the GPT-2 on my own dataset, while I'm reading the code in `run_lm_finetuning.py` script, I found a weird thing in line `227`. When the script preparing CLM batch inputs and labels, it gives the model the same `batch` variable as inputs and labels:

```
inputs, labels = mask_tokens(batch, tokenizer, args) if args.mlm else (batch, batch)
```

In this way, the model will learn to take the token as an input and predict it directly, right?

Can anyone explain what happens?
Ok, in [modeling_gpt2.py](https://github.com/huggingface/transformers/blob/master/transformers/modeling_gpt2.py) file I found this comment in line `495`:

```
Note that the labels **are shifted** inside the model, i.e. you can set ``lm_labels = input_ids``
```

So, the model takes care of the shifting process.