# FP16 vs BF16 für RL

### Float16 vs Bfloat16

Es gab ein Paper mit dem Titel „**Überwindung der Trainings-Inferenz-Unstimmigkeit mittels FP16**" <https://arxiv.org/pdf/2510.26788> in dem gezeigt wird, dass die Verwendung von Float16-Präzision beim Reinforcement Learning deutlich besser sein kann als die Verwendung von Bfloat16.

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

Tatsächlich wird es bei längeren Generierungen immer schlimmer, wenn man Bfloat16 verwendet:

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

Wir haben eine Untersuchung durchgeführt, und **FESTGESTELLT, dass Float16 stabiler ist** als Bfloat16 mit deutlich kleineren Gradientennormen siehe <https://x.com/danielhanchen/status/1985557028295827482> und <https://x.com/danielhanchen/status/1985562902531850472>

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

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

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

{% column width="50%" %}

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

### :exploding\_head:A100 Cascade-Attention-Fehler

Laut <https://x.com/RichardYRLi/status/1984858850143715759> und <https://yingru.notion.site/When-Speed-Kills-Stability-Demystifying-RL-Collapse-from-the-Training-Inference-Mismatch-271211a558b7808d8b12d403fd15edda>, hatten ältere vLLM-Versionen (vor 0.11.0) fehlerhafte Attention-Mechanismen für A100 und ähnliche GPUs. Bitte aktualisieren Sie vLLM! Wir deaktivieren außerdem standardmäßig Cascade Attention in vLLM während Unsloth-Reinforcement-Learning, wenn wir eine ältere vLLM-Version feststellen.

<figure><img src="/files/1a96cec4d7417fb7be5366cd5af9aded26101f97" alt=""><figcaption></figcaption></figure>

Verschiedene Hardware verändert ebenfalls die Ergebnisse; neuere und teurere GPUs zeigen geringere KL-Differenzen zwischen Inferenz- und Trainingsseite:

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

### :fire:Verwendung von Float16 in Unsloth RL

Um Float16-Präzision in Unsloth GRPO und RL zu verwenden, müssen Sie lediglich `dtype = torch.float16` setzen, und wir kümmern uns um den Rest!

{% code overflow="wrap" %}

```python
from unsloth import FastLanguageModel
import torch
max_seq_length = 2048 # Kann für längere Reasoning-Traces erhöht werden
lora_rank = 32 # Größerer Rank = intelligenter, aber langsamer

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/Qwen3-4B-Base",
    max_seq_length = max_seq_length,
    load_in_4bit = False, # False für LoRA 16bit
    fast_inference = True, # vLLM Fast-Inferenz aktivieren
    max_lora_rank = lora_rank,
    gpu_memory_utilization = 0.9, # Bei Speichermangel reduzieren
    
    dtype = torch.float16, # Verwenden Sie 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/de/loslegen/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.
