Switch gradient checkpointing default to `use_reentrant=False` (PyTorch recommended)
Author: qgallouedec
Pull request: yes

### Summary

This PR changes our gradient checkpointing default from `use_reentrant=True` to `use_reentrant=False`.

Two years ago we explicitly set `use_reentrant=True` in #28538 because PyTorch started warning that the default would change in the future, and recommending users choose a value explicitly:

> ```
> /scratch/miniconda3/envs/brr/lib/python3.10/site-packages/torch/utils/checkpoint.py:429: Warning: 
> torch.utils.checkpoint: please pass in use_reentrant=True or use_reentrant=False explicitly. The default 
> value of use_reentrant will be updated to be False in the future. To maintain current behavior, pass 
> use_reentrant=True. It is recommended that you use use_reentrant=False. Refer to docs for more details 
> on the differences between the two variants.
> ```
> PyTorch warning shown with torch 2.3, see #28536

At the time, defaulting to `True` was the safest choice to preserve the behavior of earlier releases.

PyTorch now **recommends** the non-reentrant variant (`use_reentrant=False`) see, https://docs.pytorch.org/docs/stable/checkpoint.html, and is moving toward making it the default. Aligning with this upstream recommendation gives us several benefits:

Note: training and checkpointing behavior remains functionally equivalent in typical use cases, with the main difference being **how activations are recomputed during backward** (non-reentrant uses a safer mechanism).

## Other changes

### Don't skip tests that pass!

Some gradient checkpointing tests were skipped, but they actually pass. This PR removes these unwanted skipping.

```diff
- @unittest.skip
- def test_training_gradient_checkpointing(self):
-     pass
```

67 new passing tests!

### Test renaming

Now that `True` isn't the default anymore, we rename

```diff
- def test_training_gradient_checkpointing_use_reentrant(self):
+ def test_training_gradient_checkpointing_use_reentrant_false(self):
```

### Fix the `reason` of skipping

Some tests are failing, but the reported reason was not correct, this PR fixes all the occurrences:

```diff
- @unittest.skip(reason="This architecture seem to not compute gradients properly when using GC, check: https://github.com/huggingface/transformers/pull/27124")
+ @unittest.skip(reason="This module does not support standalone training")
  def test_training_gradient_checkpointing_use_reentrant_false(self):
      pass
```

It's the case for example for
- `tests/models/align/test_modeling_align.py`
- `tests/models/align/test_modeling_altclip/.py`
- etc

### `xfail` instead of `skip` for model that don't properly compute the gradient

`xfail` suit better in these cases

```diff
- @unittest.skip(reason="This architecture seem to not compute gradients properly when using GC, check https://github.com/huggingface/transformers/pull/27124")
+ @pytest.mark.xfail(reason="This architecture seems to not compute gradients for some layer.")
  def test_training_gradient_checkpointing_use_reentrant_false(self):
-     pass
+     super().test_training_gradient_checkpointing_use_reentrant_false()
```

it's the case for example for 

- `tests/models/autoformer/test_modeling_autoformer.py`
- `tests/models/aya_vision/test_modeling_aya_vision.py`
- `tests/models/big_bird/test_modeling_big_bird.py`
- etc


Comments:
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_43203). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

**[For maintainers]** Suggested jobs to run (before merge)

run-slow: align, altclip, aria, autoformer, aya_vision, beit, big_bird, blip, blip_2, canine, chinese_clip, clap, clip, clipseg, clvp, colpali

View the CircleCI Test Summary for this PR:

https://huggingface.co/spaces/transformers-community/circle-ci-viz?pr=43203&sha=75655a