[s2s] fix --gpus clarg collision
Author: sshleifer
Pull request: yes

### Problem
finetune.py adds all the default pl args with this line

```
parser = pl.Trainer.add_argparse_args(parser)
```
and all the generic args from `add_generic_args`.

### Solution
This moves the overlapping arg from lightning_base.py to the 2 pl examples that need it.

CC @stas00  @patil-suraj 

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

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

```diff
@@            Coverage Diff             @@
##           master    #6358      +/-   ##
==========================================
+ Coverage   78.20%   78.38%   +0.17%     
==========================================
  Files         148      148              
  Lines       27196    27196              
==========================================
+ Hits        21269    21317      +48     
+ Misses       5927     5879      -48     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/6358?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/modeling\_tf\_distilbert.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9kaXN0aWxiZXJ0LnB5) | `64.47% <0.00%> (-32.95%)` | :arrow_down: |
| [src/transformers/file\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9maWxlX3V0aWxzLnB5) | `82.44% <0.00%> (+0.25%)` | :arrow_up: |
| [src/transformers/tokenization\_utils\_base.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHNfYmFzZS5weQ==) | `93.84% <0.00%> (+1.11%)` | :arrow_up: |
| [src/transformers/tokenization\_transfo\_xl.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdHJhbnNmb194bC5weQ==) | `42.48% <0.00%> (+8.92%)` | :arrow_up: |
| [src/transformers/generation\_tf\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9nZW5lcmF0aW9uX3RmX3V0aWxzLnB5) | `86.46% <0.00%> (+9.27%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_gpt2.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9ncHQyLnB5) | `94.72% <0.00%> (+22.87%)` | :arrow_up: |
| [src/transformers/tokenization\_xlnet.py](https://codecov.io/gh/huggingface/transformers/pull/6358/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25feGxuZXQucHk=) | `90.09% <0.00%> (+23.42%)` | :arrow_up: |

------

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


This is the issue I opened about it: https://github.com/huggingface/transformers/issues/6310

it's more than just `--gpus`

which other ones besides `--gpus`?

Anything else that is defined both in `lightening_base.add_generic_args` and PL's `pl.Trainer.add_argparse_args(parser)`, if both get called.

With your PR nothing collides at the moment. 

If we go into the direction of each module (and the base) defining its own args, most likely `finetune.py`needs to do the same and not use `pl.Trainer.add_argparse_args(parser)`.

On the other hand, copying the same common args to every module is less than optimal. If transformers support `--gpus`, it shouldn't be too difficult to make all examples support it - or fail it's passed and it can't support it. then these common args can go into `lightening_base` and not be redefined by each module.

Additionally, we can make any of these args optional like it was done recently with https://github.com/huggingface/transformers/pull/6149, so if the arg is not there, it will not fail if the example doesn't support it.

I don't understand exactly what you're proposing I don't think. This is just meant to fix a bug.
I agree that the current setup where only finetune.py uses `Trainer.from_argparse_args` is suboptimal, but I don't really want to mess with it since it's working and our test coverage isn't good enough to know if we've broken things.

I'm trying to communicate that currently adding new args is difficult because they are scattered in various places. It's not easy to tell when to put them in `lightning_base`, and when inside an example class and the issue https://github.com/huggingface/transformers/issues/6310 points to further collision with `pl.Trainer.add_argparse_args(parser)` use in `finetune.py`.

This PR duplicated a cl arg `--gpus` that ideally should be registered only once in `lightning_base`, and not repeated in every example, IMHO. You had to do it because `finetune.py` does things differently than the rest of examples and so it can't use `lightening_base` normally. And it's not over since other examples will want `--gpus` too.

Replacing `pl.Trainer.add_argparse_args(parser)` in `finetune.py` with the approach all other examples use will quickly uncover any missing cl args that it needs to register, and a quick grep will show them all:
```
perl -lne 'm|hparams\.(\w+)| && print $1' finetune.py | sort | uniq
accumulate_grad_batches
data_dir
eval_batch_size
freeze_embeds
freeze_encoder
git_sha
gpus
label_smoothing
max_epochs
max_source_length
max_target_length
n_test
n_train
num_workers
n_val
output_dir
pkl
sortish_sampler
src_lang
test_checkpoint
test_max_target_length
tgt_lang
train_batch_size
val_max_target_length
warmup_steps
```