# FP16 vs BF16 pour le RL

### Float16 vs Bfloat16

Il y avait un article intitulé "**Défaire le décalage entraînement-inférence via FP16**" <https://arxiv.org/pdf/2510.26788> montrant comment l'utilisation de la précision float16 peut être considérablement meilleure que l'utilisation de bfloat16 lors d'un apprentissage par renforcement.

<figure><img src="/files/a88f50e6ba50d601cd03748dd23f9ca5fb0d5a7c" alt=""><figcaption></figcaption></figure>

En fait, plus la génération est longue, plus c'est pire lors de l'utilisation de bfloat16 :

<figure><img src="/files/9d4775207b45c68a688db94dd7df3a0af1bae672" alt=""><figcaption></figcaption></figure>

Nous avons mené une enquête, et **constatons que le float16 est plus stable** que le bfloat16 avec des normes de gradient bien plus petites voir <https://x.com/danielhanchen/status/1985557028295827482> et <https://x.com/danielhanchen/status/1985562902531850472>

{% columns %}
{% column width="50%" %}

<figure><img src="/files/ba4b715589536441ec814d5da13cd2682c84dcad" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/0f330c42a2505eda4000ef20c7d68d35fd122997" alt=""><figcaption></figcaption></figure>
{% endcolumn %}

{% column width="50%" %}

<figure><img src="/files/7aedaf2aa4b1fb4d9637d461ae496d666249a334" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

### :exploding\_head:Bug d'attention en cascade sur A100

Comme indiqué par <https://x.com/RichardYRLi/status/1984858850143715759> et <https://yingru.notion.site/When-Speed-Kills-Stability-Demystifying-RL-Collapse-from-the-Training-Inference-Mismatch-271211a558b7808d8b12d403fd15edda>, les anciennes versions de vLLM (avant 0.11.0) avaient des mécanismes d'attention défectueux pour les A100 et GPU similaires. Veuillez mettre à jour vLLM ! Nous désactivons également par défaut l'attention en cascade dans vLLM lors de l'apprentissage par renforcement Unsloth si nous détectons une ancienne version de vLLM.

<figure><img src="/files/7fa81b49d60b99f6eeaa2de115f5daf520081554" alt=""><figcaption></figcaption></figure>

Différents matériels modifient également les résultats, où les GPU plus récents et plus coûteux présentent une moindre différence KL entre l'inférence et l'entraînement :

<figure><img src="/files/e90bb727560f0318c53520cb0d1d752b7c5b27ad" alt=""><figcaption></figcaption></figure>

### :fire:Utiliser le float16 dans Unsloth RL

Pour utiliser la précision float16 dans Unsloth GRPO et RL, il vous suffit de définir `dtype = torch.float16` et nous nous occupons du reste !

{% code overflow="wrap" %}

```python
from unsloth import FastLanguageModel
import torch
max_seq_length = 2048 # Peut être augmenté pour des traces de raisonnement plus longues
lora_rank = 32 # Rang plus grand = plus intelligent, mais plus lent

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/Qwen3-4B-Base",
    max_seq_length = max_seq_length,
    load_in_4bit = False, # False pour LoRA 16bit
    fast_inference = True, # Activer l'inférence rapide vLLM
    max_lora_rank = lora_rank,
    gpu_memory_utilization = 0.9, # Réduire si mémoire insuffisante
    
    dtype = torch.float16, # Utiliser torch.float16, torch.bfloat16
)
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/fr/commencer/reinforcement-learning-rl-guide/advanced-rl-documentation/fp16-vs-bf16-for-rl.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
