Hyperparameter search cannot report to W&B
Author: NoB0
Pull request: no

### System Info

- `transformers` version: 4.27.3
- Platform: Linux-4.15.0-206-generic-x86_64-with-glibc2.27
- Python version: 3.9.16
- Huggingface_hub version: 0.13.3
- PyTorch version (GPU?): 2.0.0+cu117 (False)
- Tensorflow version (GPU?): 2.11.1 (False)
- Flax version (CPU?/GPU?/TPU?): not installed (NA)
- Jax version: not installed
- JaxLib version: not installed
- Using GPU in script?: yes
- Using distributed or parallel set-up in script?: no

### Who can help?

@sgugger  

### Information

- [ ] The official example scripts
- [X] My own modified scripts

### Tasks

- [ ] An officially supported task in the `examples` folder (such as GLUE/SQuAD, ...)
- [X] My own task or dataset (give details below)

### Reproduction

My code is an adaptation of the tutorial on [hyperparameter search](https://huggingface.co/docs/transformers/main/en/hpo_train) for text classification.

Steps to reproduce the error:

1. Create `TrainingArguments`

```python
    training_args = TrainingArguments(
        output_dir="./results",
        per_device_eval_batch_size=16,
        warmup_steps=500,
        weight_decay=0.01,
        logging_dir="./logs",
        logging_steps=10,
        evaluation_strategy="epoch",
        # eval_steps=500,
        save_strategy="epoch",
        report_to=["wandb"],
        metric_for_best_model="loss",
        load_best_model_at_end=True,
    )
```

1. Create a `Trainer`

```python
    trainer = Trainer(
        # model=model,
        model=None,
        model_init=model_init,
        args=training_args,
        train_dataset=dataset["train"],
        eval_dataset=dataset["test"],
        tokenizer=tokenizer,
        data_collator=data_collator,
        compute_metrics=compute_metrics,
    )
```

1. Hyperparameter search

```python
best_trial = trainer.hyperparameter_search(
        backend="wandb",
        hp_space=wandb_hp_space,
        n_trials=20,
    )
```

Error:

```
wandb: Waiting for W&B process to finish... (failed 1). Press Control-C to abort syncing.
wandb: \ 0.006 MB of 0.006 MB uploaded (0.000 MB deduped)
wandb: Run history:
wandb:                  eval/accuracy ▁▇██▇
wandb:                        eval/f1 ▁▇▇██
wandb:                      eval/loss █▄▂▁▃
wandb:                   eval/runtime ▃█▆▆▁
wandb:        eval/samples_per_second ▆▁▃▃█
wandb:          eval/steps_per_second ▆▁▃▃█
wandb:                    train/epoch ▁▁▂▂▂▂▂▂▃▃▃▃▄▄▄▄▄▄▅▅▅▅▅▅▆▆▆▇▇▇▇▇▇█████
wandb:              train/global_step ▁▁▂▂▂▂▂▂▃▃▃▃▄▄▄▄▄▄▅▅▅▅▅▅▆▆▆▇▇▇▇▇▇█████
wandb:            train/learning_rate ▁▁▂▂▂▂▃▃▃▃▄▄▄▄▅▅▅▆▆▆▆▇▇▇▇██
wandb:                     train/loss ████▇▇▆▆▅▅▄▄▄▄▃▃▃▃▂▂▂▂▁▁▁▁▂
wandb:               train/total_flos ▁
wandb:           train/train_accuracy ▁▅▆▇█
wandb:                 train/train_f1 ▁▅▆▇█
wandb:               train/train_loss █▅▃▂▁▅
wandb:            train/train_runtime ▁▁▁▁▁█
wandb: train/train_samples_per_second █████▁
wandb:   train/train_steps_per_second █████▁
wandb: 
wandb: Run summary:
wandb:                  eval/accuracy 0.66364
wandb:                        eval/f1 0.57069
wandb:                      eval/loss 0.84213
wandb:                   eval/runtime 4.6265
wandb:        eval/samples_per_second 95.104
wandb:          eval/steps_per_second 6.052
wandb:                    train/epoch 5.0
wandb:              train/global_step 275
wandb:            train/learning_rate 4e-05
wandb:                     train/loss 0.4968
wandb:               train/total_flos 102513759674592.0
wandb:           train/train_accuracy 0.88326
wandb:                 train/train_f1 0.80948
wandb:               train/train_loss 0.84575
wandb:            train/train_runtime 606.785
wandb: train/train_samples_per_second 14.47
wandb:   train/train_steps_per_second 0.453
wandb: 
wandb: 🚀 View run autumn-sweep-1 at: 
wandb: Synced 6 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb: Find logs at: ./wandb/run-20230328_162937-ean356xn/logs
Run ean356xn errored: ValueError('w is not supported, only azure_ml, comet_ml, mlflow, neptune, tensorboard, wandb, codecarbon, clearml, dagshub are supported.')
wandb: ERROR Run ean356xn errored: ValueError('w is not supported, only azure_ml, comet_ml, mlflow, neptune, tensorboard, wandb, codecarbon, clearml, dagshub are supported.')
```

It appears that someone encountered a similar error when training a model (see [here](https://stackoverflow.com/questions/73244442/huggingface-trainer-cannot-report-to-wandb)). 

### Expected behavior

The best model of the hyperparameter search should be saved as an artifact in W&B. 

According to the documentation the argument `report_to` can be either a `str` or a `List[str]`. After my investigation, I found that the function [get_reporting_integration_callbacks](https://github.com/huggingface/transformers/blob/b29fd6971d9cd6ba2a824628effe243f543b8f61/src/transformers/integrations.py#L1550) does not support string.
To fix the issue, I changed this [line](https://github.com/huggingface/transformers/blob/b29fd6971d9cd6ba2a824628effe243f543b8f61/src/transformers/integrations.py#L481): `    trainer.args.report_to = "wandb"` to `    trainer.args.report_to = ["wandb"]`.

Comments:
Would you like to make a PR with your fix?