Bug in MLM script not parsing arguments properly + lack of warning on incorrect args
Author: neel04
Pull request: no

## (Continuation of #12438)

### Who can help

- tokenizers: @LysandreJik
- datasets: @lhoestq 

## Information

Model I am using (Bert, XLNet ...): `BidBird`

## Issue

This is a small issue regarding solving #12438. From some digging, it seems that setting the `maximum sequence length` flag might be able to solve this issue, probably because it falls back on the tokenizer length which is arbitrarily long. 

However, despite passing the `--max_seq_length="16000"` flag in the marked issue, it doesn't appear from the logging:-

```py
INFO:run_mlm:Training/evaluation parameters TrainingArguments(
_n_gpu=0,
adafactor=False,
adam_beta1=0.9,
adam_beta2=0.98,
adam_epsilon=1e-08,
dataloader_drop_last=False,
dataloader_num_workers=0,
dataloader_pin_memory=True,
ddp_find_unused_parameters=None,
debug=[],
deepspeed=None,
disable_tqdm=False,
do_eval=True,
do_predict=False,
do_train=True,
eval_accumulation_steps=10,
eval_steps=50,
evaluation_strategy=IntervalStrategy.STEPS,
fp16=False,
fp16_backend=auto,
fp16_full_eval=False,
fp16_opt_level=O1,
gradient_accumulation_steps=1,
greater_is_better=True,
group_by_length=False,
ignore_data_skip=False,
label_names=None,
label_smoothing_factor=0.0,
learning_rate=0.0003,
length_column_name=length,
load_best_model_at_end=True,
local_rank=-1,
log_level=-1,
log_level_replica=-1,
log_on_each_node=True,
logging_dir=./logs,
logging_first_step=False,
logging_steps=50,
logging_strategy=IntervalStrategy.STEPS,
lr_scheduler_type=SchedulerType.LINEAR,
max_grad_norm=1.0,
max_steps=-1,
metric_for_best_model=validation,
mp_parameters=,
no_cuda=False,
num_train_epochs=5.0,
output_dir=./results,
overwrite_output_dir=True,
past_index=-1,
per_device_eval_batch_size=1,
per_device_train_batch_size=1,
prediction_loss_only=False,
push_to_hub=False,
push_to_hub_model_id=results,
push_to_hub_organization=None,
push_to_hub_token=None,
remove_unused_columns=True,
report_to=['tensorboard'],
resume_from_checkpoint=None,
run_name=./results,
save_steps=500,
save_strategy=IntervalStrategy.EPOCH,
save_total_limit=None,
seed=42,
sharded_ddp=[],
skip_memory_metrics=True,
tpu_metrics_debug=False,
tpu_num_cores=8,
use_legacy_prediction_loop=False,
warmup_ratio=0.0,
warmup_steps=1000,
weight_decay=0.01,
)
```
Apparently, it seems that the `max_seq_len` argument doesn't exist at all in the script. Since the sequence length is something that I expect should be controlled by the script flag, I think these 2 issues should be remedied.

1. - [x] Missing `max_seq_length` flag for `run_MLM` script to override any existing defaults that may interfere and cause unwanted bugs

2. - [ ] Warning/Error upon passing incorrect formatted arguments which would be very helpful if the user indeed has passed an incorrect argument

I may be incorrectly asumming this issue, since there exists this arg in the `DataTrainingArguments` 
https://github.com/huggingface/transformers/blob/a76eebfc806b863bf1eb721ba8c49ef9c2f5049f/examples/pytorch/language-modeling/run_mlm.py#L145-L151

Which is mysterious as to why its default is `None`, and why it doesn't register at all.

Perhaps @sgugger might be able to shed light on this?

Comments:
Ah, great catch. I recall getting this error when the tokenizer had no max length set, and `datasets` would then crash as unable to return enough values. Could you try this out for me: set the `max_seq_length` value to something low, like 512 or 256. Does it still crash then?

If not, it's possible that your dataset isn't big enough to generate 16k tokens, and `datasets` then crashes with an index out of bounds error (which should be clearer).

Otherwise, I'd be happy to try and see what's going on; if you can open a reproducer as you offer, that would be great. Thanks!

solution at #12438