Add data_collator with attention_mask feature
Author: LunaBlack
Pull request: yes
Labels: name: wontfix

For models like BERT, we should mask the padding ids as invalidate to avoid attention on them. Therefore, in addition to `input_ids`, the feature `attention_mask` should also be fed to the model. 
Add a data collator `DataCollatorForMaskedLanguageModeling` which will return all of above data, and add a dataset class `LineByLineTextMaskDataset` which is related with the former.

Comments:
Add a related issue: #4702

I agree that we should handle `attention_mask`, but I don't think adding another class `DataCollatorForMaskedLanguageModeling` is necessary. The class `DataCollatorForLanguageModeling` already handles masked language modeling, and should imo be modified to handle attention masks as well.

# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/5596?src=pr&el=h1) Report
> Merging [#5596](https://codecov.io/gh/huggingface/transformers/pull/5596?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/cfbb98297449e09e5a2443b4ba76be52a71ec0f7&el=desc) will **increase** coverage by `0.82%`.
> The diff coverage is `100.00%`.

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

```diff
@@            Coverage Diff             @@
##           master    #5596      +/-   ##
==========================================
+ Coverage   76.97%   77.80%   +0.82%     
==========================================
  Files         145      145              
  Lines       25317    25344      +27     
==========================================
+ Hits        19487    19718     +231     
+ Misses       5830     5626     -204     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/5596?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/data/data\_collator.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9kYXRhL2RhdGFfY29sbGF0b3IucHk=) | `99.25% <100.00%> (+0.15%)` | :arrow_up: |
| [...rc/transformers/data/datasets/language\_modeling.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9kYXRhL2RhdGFzZXRzL2xhbmd1YWdlX21vZGVsaW5nLnB5) | `92.45% <100.00%> (+0.61%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_openai.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9vcGVuYWkucHk=) | `20.27% <0.00%> (-74.92%)` | :arrow_down: |
| [src/transformers/modeling\_openai.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19vcGVuYWkucHk=) | `79.72% <0.00%> (-1.38%)` | :arrow_down: |
| [src/transformers/tokenization\_utils\_base.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHNfYmFzZS5weQ==) | `92.44% <0.00%> (-1.17%)` | :arrow_down: |
| [src/transformers/file\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9maWxlX3V0aWxzLnB5) | `79.26% <0.00%> (-0.34%)` | :arrow_down: |
| [src/transformers/generation\_tf\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9nZW5lcmF0aW9uX3RmX3V0aWxzLnB5) | `85.96% <0.00%> (-0.26%)` | :arrow_down: |
| [src/transformers/modeling\_tf\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl91dGlscy5weQ==) | `88.88% <0.00%> (+0.98%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_mobilebert.py](https://codecov.io/gh/huggingface/transformers/pull/5596/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9tb2JpbGViZXJ0LnB5) | `96.77% <0.00%> (+73.38%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/5596?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/5596?src=pr&el=footer). Last update [cfbb982...cd3ae45](https://codecov.io/gh/huggingface/transformers/pull/5596?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


@LysandreJik 
I agree!
I have modified the code, and passed related unit tests. 
Could you please help review the code?

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.