> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/tutorial-how-to-fine-tune-gpt-oss.md).

# Tutorial: Wie man gpt-oss feinabstimmt

In diesem Leitfaden mit Screenshots lernst du, dein eigenes benutzerdefiniertes gpt-oss-Modell feinabzustimmen, entweder [lokal](#local-gpt-oss-fine-tuning) auf deinem Rechner mit [Unsloth](https://github.com/unslothai/unsloth) oder kostenlos mit [Google Colab](#colab-gpt-oss-fine-tuning). Wir führen dich durch den gesamten Prozess, vom Einrichten bis zum Ausführen und Speichern deines trainierten Modells.

{% hint style="success" %}
[**Update vom 28. Aug.**](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#introducing-unsloth-flex-attention-support)**:** Du kannst dein mit QLoRA feinabgestimmtes gpt-oss-Modell jetzt nach llama.cpp, vLLM, HF usw. exportieren/speichern.

Wir haben außerdem [Unsloth Flex Attention](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#introducing-unsloth-flex-attention-support) eingeführt, wodurch **>8× längere Kontextlängen**, **>50 % weniger VRAM-Nutzung** und **>1,5× schnelleres Training** gegenüber allen Implementierungen möglich sind. [Hier mehr lesen](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#introducing-unsloth-flex-attention-support)
{% endhint %}

> **Schnellstart:** Feinabstimmung von gpt-oss-20b kostenlos mit unserem: [Colab-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/gpt-oss-\(20B\)-Fine-tuning.ipynb)

Die gpt-oss-Feinabstimmung mit Unsloth erreicht im Vergleich zu allen anderen FA2-Implementierungen 1,5× schnelleres Training, 70 % weniger VRAM-Verbrauch und 10x längere Kontextlängen – ohne Genauigkeitsverlust.

* **QLoRA-Anforderungen:** gpt-oss-20b = 14 GB VRAM • gpt-oss-120b = 65 GB VRAM.
* **BF16-LoRA-Anforderungen:** gpt-oss-20b = 44 GB VRAM • gpt-oss-120b = 210 GB VRAM.

<a href="#local-gpt-oss-fine-tuning" class="button secondary">Lokaler Leitfaden</a><a href="#colab-gpt-oss-fine-tuning" class="button secondary">Colab-Leitfaden</a>

## 🌐 Colab gpt-oss-Fine-Tuning

Dieser Abschnitt behandelt das Feinabstimmen von gpt-oss mithilfe unserer Google-Colab [Notebooks](/docs/de/loslegen/unsloth-notebooks.md). Du kannst das gpt-oss-Notebook auch speichern und in deinem bevorzugten Code-Editor verwenden und unserem [lokalen gpt-oss-Leitfaden](#local-gpt-oss-fine-tuning).

{% stepper %}
{% step %}

#### Unsloth in Colab installieren

Führe in Colab Zellen aus **von oben nach unten**. Verwenden Sie **Alle ausführen** für den ersten Durchlauf. Die erste Zelle installiert Unsloth (und zugehörige Abhängigkeiten) und gibt GPU-/Speicherinformationen aus. Falls eine Zelle einen Fehler auslöst, führe sie einfach erneut aus.

<figure><img src="/files/3f10ff9af1b06f292d5634ce07ff6a2568f66506" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/0157030cf3929dc23643ccd318e3b80109f36044" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### gpt-oss und Reasoning Effort konfigurieren

Wir laden **`gpt-oss-20b`** mithilfe von Unsloths [linearisiertem Version](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune.md#making-efficient-gpt-oss-fine-tuning-work) (da keine andere Version funktioniert).

Konfiguriere die folgenden Parameter:

* `max_seq_length = 1024`
  * Empfohlen für schnelle Tests und erste Experimente.
* `load_in_4bit = True`
  * Verwende `False` für LoRA-Training (Hinweis: wenn du dies auf `False` setzt, werden mindestens 43 GB VRAM benötigt). Du ***MUSS*** außerdem setzen **`model_name = "unsloth/gpt-oss-20b-BF16"`**

<figure><img src="/files/20e0b877f205974a76ca6f5f5c891d0734288d0e" alt=""><figcaption></figcaption></figure>

Du solltest eine ähnliche Ausgabe wie im folgenden Beispiel sehen. Hinweis: Wir ändern den `dtype` zu `explizit auf float32` um ein korrektes Trainingsverhalten sicherzustellen.

<figure><img src="/files/196f54bb00dc4eb135730025a74d70952cf5deb5" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Feinabstimmungs-Hyperparameter (LoRA)

Jetzt ist es an der Zeit, deine Trainings-Hyperparameter anzupassen. Für einen tieferen Einblick darin, wie, wann und was angepasst werden sollte, sieh dir unseren [detaillierten Leitfaden zu Hyperparametern](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

{% hint style="info" %}
an, um [Überanpassung](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md#avoiding-overfitting-and-underfitting)zu vermeiden, beobachte deinen Trainingsverlust und vermeide, diese Werte zu hoch einzustellen.
{% endhint %}

Dieser Schritt fügt LoRA-Adapter für eine parameter-effiziente Feinabstimmung hinzu. Es werden nur etwa 1 % der Modellparameter trainiert, was den Prozess deutlich effizienter macht.

<figure><img src="/files/a324a65c8641d329d08b52174adb3c5cfc1e380a" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Inference ausprobieren

Im Notebook gibt es einen Abschnitt namens *"Reasoning Effort"* der zeigt, wie gpt-oss-Inferenz in Colab ausgeführt wird. Du kannst diesen Schritt überspringen, musst das Modell aber später trotzdem ausführen, sobald du mit der Feinabstimmung fertig bist.

<figure><img src="/files/5c3e2db8c101d9ea07be2d61bf6318dc0aa65653" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Datenvorbereitung

Für dieses Beispiel verwenden wir das [`HuggingFaceH4/Multilingual-Thinking`](https://huggingface.co/datasets/HuggingFaceH4/Multilingual-Thinking). Dieses Dataset enthält Chain-of-Thought-Reasoning-Beispiele, die aus Nutzerfragen abgeleitet wurden, die aus dem Englischen in vier weitere Sprachen übersetzt wurden.

Dies ist dasselbe Dataset, das im Fine-Tuning-Cookbook von OpenAI referenziert wird.

Das Ziel der Verwendung eines mehrsprachigen Datasets ist es, dem Modell zu helfen, Reasoning-Muster über mehrere Sprachen hinweg zu lernen und zu verallgemeinern.

<figure><img src="/files/2f07efecda24401eea0636241ba9a188bf85539e" alt=""><figcaption></figcaption></figure>

gpt-oss führt ein Reasoning-Effort-System ein, das steuert, wie viel Schlussfolgern das Modell ausführt. Standardmäßig ist der Reasoning-Effort auf `niedrig`gesetzt, aber du kannst ihn ändern, indem du den Parameter `reasoning_effort` auf `niedrig`, `mittel` oder `hoch`.

Beispiel:

```python
tokenizer.apply_chat_template(
    text, 
    tokenize = False, 
    add_generation_prompt = False,
    reasoning_effort = "medium",
)
```

Um das Dataset zu formatieren, wenden wir eine angepasste Version des gpt-oss-Prompts an:

```python
from unsloth.chat_templates import standardize_sharegpt
dataset = standardize_sharegpt(dataset)
dataset = dataset.map(formatting_prompts_func, batched = True,)
```

Lass uns das Dataset prüfen, indem wir das erste Beispiel ausgeben:

```notebook-python
print(dataset[0]['text'])
```

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

Eine einzigartige Funktion von gpt-oss ist die Verwendung des [**OpenAI-Harmony-Formats**](https://github.com/openai/harmony)**,** das strukturierte Gespräche, Reasoning-Ausgaben und Tool-Aufrufe unterstützt. Dieses Format enthält Tags wie `<|start|>` , `<|message|>` und `<|return|>` .

{% hint style="info" %}
🦥 Unsloth korrigiert die Chat-Vorlage, um sicherzustellen, dass sie korrekt ist. Sieh dir diesen [Tweet](https://x.com/danielhanchen/status/1953901104150065544) für technische Details zu unserem Vorlagen-Fix an.
{% endhint %}

Du kannst den Prompt und die Struktur gerne an dein eigenes Dataset oder deinen Anwendungsfall anpassen. Weitere Hinweise findest du in unserem [Dataset-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/datasets-guide.md).
{% endstep %}

{% step %}

#### Das Modell trainieren

Wir haben Trainings-Hyperparameter für optimale Ergebnisse vorab ausgewählt. Du kannst sie jedoch an deinen spezifischen Anwendungsfall anpassen. Sieh dir unseren [Leitfaden zu Hyperparametern](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

In diesem Beispiel trainieren wir 60 Schritte, um den Prozess zu beschleunigen. Für einen vollständigen Trainingsdurchlauf setze `num_train_epochs=1` und deaktiviere die Schrittbegrenzung, indem du `max_steps=None`.

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

während des Trainings den Verlust, um sicherzustellen, dass er mit der Zeit sinkt. Das bestätigt, dass der Trainingsprozess korrekt funktioniert.

<figure><img src="/files/2676df41d5b262eb066b18b8ce9e0d57d1aff231" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Inference: Führe dein trainiertes Modell aus

Jetzt ist es an der Zeit, Inferenz mit deinem feinabgestimmten Modell auszuführen. Du kannst die Anweisung und die Eingabe ändern, aber lass die Ausgabe leer.

In diesem Beispiel testen wir die Fähigkeit des Modells, auf Französisch zu schlussfolgern, indem wir dem System-Prompt eine spezifische Anweisung hinzufügen, entsprechend derselben Struktur, die in unserem Dataset verwendet wird.

<figure><img src="/files/2050054f4936636a910397a21552f7d2e0c1a92f" alt=""><figcaption></figcaption></figure>

Dies sollte eine ähnliche Ausgabe erzeugen wie:

<figure><img src="/files/2f0b5836507cad49a1498e0574f7dedc88815781" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Modell speichern/exportieren

Um dein feinabgestimmtes Modell zu speichern, kannst du dein feinabgestimmtes Modell sowohl im **bf16-Format,** mit unserer **On-Demand-Dekquantisierung von MXFP4** Basis-Modellen unter Verwendung von `save_method="merged_16bit"`oder im nativen **MXFP4** Safetensors-Format mit `save_method="mxfp4"` .

speichern. **MXFP4** Das **native Merge-Format bietet gegenüber dem**bf16-Format **deutliche Leistungsverbesserungen: Es benötigt bis zu 75 % weniger Speicherplatz, reduziert den VRAM-Verbrauch um 50 %, beschleunigt das Zusammenführen um das 5-10-Fache und ermöglicht eine deutlich schnellere Konvertierung in das** GGUF

{% hint style="success" %}
Format.
{% endhint %}

Neu: Das Speichern oder Zusammenführen von mit QLoRA feinabgestimmten Modellen zu GGUF wird jetzt für die Verwendung in anderen Frameworks unterstützt (z. B. Hugging Face, llama.cpp mit GGUF). **MXFP4** Nachdem du dein gpt-oss-Modell feinabgestimmt hast, kannst du es mit Folgendem in das

```python
Format zusammenführen:
```

Wenn du das Modell lieber zusammenführen und direkt auf den Hugging-Face-Hub hochladen möchtest:

```python
model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token= hf_token, save_method="mxfp4")
```

#### :sparkles: Speichern für Llama.cpp

1. Hole dir die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Du kannst auch den untenstehenden Build-Anweisungen folgen. Ändere `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn du keine GPU hast oder nur CPU-Inferenz möchtest.

   ```bash
   apt-get update
   apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
   git clone https://github.com/ggml-org/llama.cpp
   cmake llama.cpp -B llama.cpp/build \
       -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
   cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-gguf-split
   cp llama.cpp/build/bin/llama-* llama.cpp
   ```
2. Konvertiere das **MXFP4** zusammengeführte Modell:

   ```bash
   python3 llama.cpp/convert_hf_to_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned-mxfp4.gguf
   ```
3. Führe Inferenz auf dem quantisierten Modell aus:

   ```bash
   llama.cpp/llama-cli --model gpt-oss-finetuned-mxfp4.gguf \
       --jinja -ngl 99 --threads -1 --ctx-size 16384 \
       --temp 1.0 --top-p 1.0 --top-k 0 \
        -p "Der Sinn des Lebens und des Universums ist"
   ```

<figure><img src="/files/c31cfb2009a22c72cb341c4ce38590432c3ae890" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## 🖥️ Lokales gpt-oss-Fine-Tuning

Dieses Kapitel behandelt das Feinabstimmen von gpt-oss auf deinem lokalen Gerät. Während **gpt-oss-20b** Feinabstimmung bereits mit nur 14 GB VRAM möglich ist, empfehlen wir, mindestens 16 GB VRAM verfügbar zu haben, um stabile und zuverlässige Trainingsläufe sicherzustellen.

{% hint style="info" %}
Wir empfehlen, Elemente aus unserem Colab herunterzuladen oder zu übernehmen [Notebooks](/docs/de/loslegen/unsloth-notebooks.md) in dein lokales Setup, um die Nutzung zu erleichtern.
{% endhint %}

{% stepper %}
{% step %}

#### Unsloth lokal installieren

Stelle sicher, dass dein Gerät [Unsloth-kompatibel](/docs/de/loslegen/fine-tuning-for-beginners/unsloth-requirements.md) ist, und lies unseren ausführlichen [Installationsleitfaden](/docs/de/loslegen/install.md).

**Du kannst Unsloth auch mit unserem** [**Docker-Image**](https://unsloth.ai/docs/models/qwen3-coder-next)**.**

installieren. Beachte, dass `pip install unsloth` für dieses Setup nicht funktioniert, da wir die neueste PyTorch-, Triton- und zugehörige Pakete verwenden müssen. Installiere Unsloth mit diesem speziellen Befehl:

```python
# Wir installieren die neueste Torch, Triton, OpenAIs Triton-Kernels, Transformers und Unsloth!
!pip install --upgrade -qqq uv
try: import numpy; install_numpy = f"numpy=={numpy.__version__}"
except: install_numpy = "numpy"
!uv pip install -qqq \\
    "torch>=2.8.0" "triton>=3.4.0" {install_numpy} \
    "unsloth_zoo[base] @ git+https://github.com/unslothai/unsloth-zoo" \\
    "unsloth[base] @ git+https://github.com/unslothai/unsloth" \\
    torchvision bitsandbytes \
    git+https://github.com/huggingface/transformers \
    git+https://github.com/triton-lang/triton.git@05b2c186c1b6c9a08375389d5efe9cb4c401c075#subdirectory=python/triton_kernels
```

{% endstep %}

{% step %}

#### gpt-oss und Reasoning Effort konfigurieren

Wir laden **`gpt-oss-20b`** mithilfe von Unsloths [linearisiertem Version](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune.md#making-efficient-gpt-oss-fine-tuning-work) (da keine andere Version für QLoRA-Feinabstimmung funktioniert). Konfiguriere die folgenden Parameter:

* `max_seq_length = 2048`
  * Empfohlen für schnelle Tests und erste Experimente.
* `load_in_4bit = True`
  * Verwende `False` für LoRA-Training (Hinweis: wenn du dies auf `False` setzt, werden mindestens 43 GB VRAM benötigt). Du ***MUSS*** außerdem setzen **`model_name = "unsloth/gpt-oss-20b-BF16"`**

<pre class="language-python"><code class="lang-python">from unsloth import FastLanguageModel
import torch
max_seq_length = 1024
dtype = None

# 4-Bit-vorquantisierte Modelle, die wir unterstützen, für 4x schnelleres Herunterladen + keine OOMs.
fourbit_models = [
    "unsloth/gpt-oss-20b-unsloth-bnb-4bit", # 20B-Modell mit bitsandbytes-4bit-Quantisierung
<strong>    "unsloth/gpt-oss-120b-unsloth-bnb-4bit",
</strong>    "unsloth/gpt-oss-20b", # 20B-Modell im MXFP4-Format
    "unsloth/gpt-oss-120b",
] # Weitere Modelle unter https://huggingface.co/unsloth

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/gpt-oss-20b",
    dtype = dtype, # None für automatische Erkennung
    max_seq_length = max_seq_length, # Wähle beliebig für langen Kontext!
    load_in_4bit = True,  # 4-Bit-Quantisierung zur Speicherreduzierung
    full_finetuning = False, # [NEU!] Wir haben jetzt Full-Finetuning!
    # token = "hf_...", # verwende einen, wenn du geschützte Modelle nutzt
)
</code></pre>

Du solltest eine ähnliche Ausgabe wie im folgenden Beispiel sehen. Hinweis: Wir ändern den `dtype` zu `explizit auf float32` um ein korrektes Trainingsverhalten sicherzustellen.
{% endstep %}

{% step %}

#### Feinabstimmungs-Hyperparameter (LoRA)

Jetzt ist es an der Zeit, deine Trainings-Hyperparameter anzupassen. Für einen tieferen Einblick darin, wie, wann und was angepasst werden sollte, sieh dir unseren [detaillierten Leitfaden zu Hyperparametern](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

{% hint style="info" %}
an, um [Überanpassung](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md#avoiding-overfitting-and-underfitting)zu vermeiden, beobachte deinen Trainingsverlust und vermeide, diese Werte zu hoch einzustellen.
{% endhint %}

Dieser Schritt fügt LoRA-Adapter für eine parameter-effiziente Feinabstimmung hinzu. Es werden nur etwa 1 % der Modellparameter trainiert, was den Prozess deutlich effizienter macht.

```python
model = FastLanguageModel.get_peft_model(
    model,
    r = 8, # Wähle eine beliebige Zahl > 0 ! Empfohlen: 8, 16, 32, 64, 128
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj",],
    lora_alpha = 16,
    lora_dropout = 0, # Unterstützt jeden Wert, aber = 0 ist optimiert
    bias = "none",    # Unterstützt jeden Wert, aber = "none" ist optimiert
    # [NEU] "unsloth" verwendet 30 % weniger VRAM und passt in 2x größere Batch-Größen!
    use_gradient_checkpointing = "unsloth", # True oder "unsloth" für sehr langen Kontext
    random_state = 3407,
    use_rslora = False,  # Wir unterstützen rank-stabilisiertes LoRA
    loftq_config = None, # Und LoftQ
)
```

{% endstep %}

{% step %}

#### Datenvorbereitung

Für dieses Beispiel verwenden wir das [`HuggingFaceH4/Multilingual-Thinking`](https://huggingface.co/datasets/HuggingFaceH4/Multilingual-Thinking). Dieses Dataset enthält Chain-of-Thought-Reasoning-Beispiele, die aus Nutzerfragen abgeleitet wurden, die aus dem Englischen in vier weitere Sprachen übersetzt wurden.

Dies ist dasselbe Dataset, das im Fine-Tuning-Cookbook von OpenAI referenziert wird. Das Ziel der Verwendung eines mehrsprachigen Datasets ist es, dem Modell zu helfen, Reasoning-Muster über mehrere Sprachen hinweg zu lernen und zu verallgemeinern.

```python
def formatting_prompts_func(examples):
    convos = examples["messages"]
    texts = [tokenizer.apply_chat_template(convo, tokenize = False, add_generation_prompt = False) for convo in convos]
    return { "text" : texts, }
pass

from datasets import load_dataset

dataset = load_dataset("HuggingFaceH4/Multilingual-Thinking", split="train")
dataset
```

gpt-oss führt ein Reasoning-Effort-System ein, das steuert, wie viel Schlussfolgern das Modell ausführt. Standardmäßig ist der Reasoning-Effort auf `niedrig`gesetzt, aber du kannst ihn ändern, indem du den Parameter `reasoning_effort` auf `niedrig`, `mittel` oder `hoch`.

Beispiel:

```python
tokenizer.apply_chat_template(
    text, 
    tokenize = False, 
    add_generation_prompt = False,
    reasoning_effort = "medium",
)
```

Um das Dataset zu formatieren, wenden wir eine angepasste Version des gpt-oss-Prompts an:

```python
from unsloth.chat_templates import standardize_sharegpt
dataset = standardize_sharegpt(dataset)
dataset = dataset.map(formatting_prompts_func, batched = True,)
```

Lass uns das Dataset prüfen, indem wir das erste Beispiel ausgeben:

```notebook-python
print(dataset[0]['text'])
```

<figure><img src="/files/0ce172d610a27af34687b8b1366dad2fd408f6b5" alt="" width="563"><figcaption></figcaption></figure>

Eine einzigartige Funktion von gpt-oss ist die Verwendung des [**OpenAI-Harmony-Formats**](https://github.com/openai/harmony)**,** das strukturierte Gespräche, Reasoning-Ausgaben und Tool-Aufrufe unterstützt. Dieses Format enthält Tags wie `<|start|>` , `<|message|>` und `<|return|>` .

{% hint style="info" %}
🦥 Unsloth korrigiert die Chat-Vorlage, um sicherzustellen, dass sie korrekt ist. Sieh dir diesen [Tweet](https://x.com/danielhanchen/status/1953901104150065544) für technische Details zu unserem Vorlagen-Fix an.
{% endhint %}

Du kannst den Prompt und die Struktur gerne an dein eigenes Dataset oder deinen Anwendungsfall anpassen. Weitere Hinweise findest du in unserem [Dataset-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/datasets-guide.md).
{% endstep %}

{% step %}

#### Das Modell trainieren

Wir haben Trainings-Hyperparameter für optimale Ergebnisse vorab ausgewählt. Du kannst sie jedoch an deinen spezifischen Anwendungsfall anpassen. Sieh dir unseren [Leitfaden zu Hyperparametern](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

In diesem Beispiel trainieren wir 60 Schritte, um den Prozess zu beschleunigen. Für einen vollständigen Trainingsdurchlauf setze `num_train_epochs=1` und deaktiviere die Schrittbegrenzung, indem du `max_steps=None`.

```python
from trl import SFTConfig, SFTTrainer
trainer = SFTTrainer(
    model = model,
    tokenizer = tokenizer,
    train_dataset = dataset,
    args = SFTConfig(
        per_device_train_batch_size = 1,
        gradient_accumulation_steps = 4,
        warmup_steps = 5,
        # num_train_epochs = 1, # Setze dies für einen vollständigen Trainingsdurchlauf.
        max_steps = 30,
        learning_rate = 2e-4,
        logging_steps = 1,
        optim = "adamw_8bit",
        weight_decay = 0.01,
        lr_scheduler_type = "linear",
        seed = 3407,
        output_dir = "outputs",
        report_to = "none", # Verwende dies für WandB usw.
    ),
)
```

während des Trainings den Verlust, um sicherzustellen, dass er mit der Zeit sinkt. Das bestätigt, dass der Trainingsprozess korrekt funktioniert.

<figure><img src="/files/2676df41d5b262eb066b18b8ce9e0d57d1aff231" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Inference: Führe dein trainiertes Modell aus

Jetzt ist es an der Zeit, Inferenz mit deinem feinabgestimmten Modell auszuführen. Du kannst die Anweisung und die Eingabe ändern, aber lass die Ausgabe leer.

In diesem Beispiel testen wir die Fähigkeit des Modells, auf Französisch zu schlussfolgern, indem wir dem System-Prompt eine spezifische Anweisung hinzufügen, entsprechend derselben Struktur, die in unserem Dataset verwendet wird.

```python
messages = [
    {"role": "system", "content": "reasoning language: French\n\nYou are a helpful assistant that can solve mathematical problems."},
    {"role": "user", "content": "Solve x^5 + 3x^4 - 10 = 3."},
]
inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt = True,
    return_tensors = "pt",
    return_dict = True,
    reasoning_effort = "medium",
).to(model.device)
from transformers import TextStreamer
_ = model.generate(**inputs, max_new_tokens = 2048, streamer = TextStreamer(tokenizer))
```

Dies sollte eine ähnliche Ausgabe erzeugen wie:

<figure><img src="/files/e322ef84ee11e10e1ba8140afa09594f3da26d83" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Modell speichern und exportieren

Um dein feinabgestimmtes Modell zu speichern, kann es im Safetensors-Format mit unserem neuen **On-Demand-Dekquantisierung von MXFP4** Basis-Modelle (wie gpt-oss) während des LoRA-Merge-Prozesses. Dies macht es möglich, **dein feinabgestimmtes Modell im bf16-Format zu exportieren**.

{% hint style="success" %}
Format.
{% endhint %}

Nachdem du dein gpt-oss-Modell feinabgestimmt hast, kannst du es mit Folgendem in das 16-Bit-Format zusammenführen:

```python
model.save_pretrained_merged(save_directory, tokenizer)
```

Wenn du das Modell lieber zusammenführen und direkt auf den Hugging-Face-Hub hochladen möchtest:

```python
model.push_to_hub_merged(repo_name, tokenizer=tokenizer, token= hf_token)
```

#### :sparkles: Speichern für Llama.cpp

1. Hole dir die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Du kannst auch den untenstehenden Build-Anweisungen folgen. Ändere `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn du keine GPU hast oder nur CPU-Inferenz möchtest.

   ```bash
   apt-get update
   apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
   git clone https://github.com/ggml-org/llama.cpp
   cmake llama.cpp -B llama.cpp/build \
       -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
   cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-gguf-split
   cp llama.cpp/build/bin/llama-* llama.cp
   ```
2. Das zusammengeführte Modell konvertieren und quantisieren:

   ```bash
   python3 llama.cpp/convert_hf_to_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned.gguf
   llama.cpp/llama-quantize gpt-oss-finetuned.gguf  gpt-oss-finetuned-Q8_0.gguf Q8_0
   ```
3. Führe Inferenz auf dem quantisierten Modell aus:

   ```bash
   llama.cpp/llama-cli --model gpt-oss-finetuned-Q8_0.gguf \
       --jinja -ngl 99 --threads -1 --ctx-size 16384 \
       --temp 1.0 --top-p 1.0 --top-k 0 \
        -p "Der Sinn des Lebens und des Universums ist"
   ```

{% endstep %}
{% endstepper %}

### 🏁 Und das war's!

Du hast gpt-oss mit Unsloth feinabgestimmt. Wir arbeiten derzeit an RL- und GRPO-Implementierungen sowie an verbessertem Speichern und Ausführen von Modellen, also bleib dran.

Wie immer kannst du gerne in unserem [Discord](https://discord.com/invite/unsloth) oder [Reddit](https://www.reddit.com/r/unsloth/) vorbeischauen, wenn du Hilfe brauchst.

## ❓FAQ (Häufig gestellte Fragen)

#### 1. Kann ich mein Modell später exportieren, um es in Hugging Face, llama.cpp GGUF oder vLLM zu verwenden?

Ja, das kannst du jetzt [dein gpt-oss-feinabgestimmtes](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/long-context-gpt-oss-training.md#new-saving-to-gguf-vllm-after-gpt-oss-training) Modell mit dem neuen Update von Unsloth speichern/exportieren!

#### 2. Kann ich fp4- oder MXFP4-Training mit gpt-oss durchführen?

Nein, derzeit unterstützt kein Framework fp4- oder MXFP4-Training. Unsloth ist jedoch das einzige Framework, das QLoRA-4-Bit-Feinabstimmung für das Modell unterstützt und damit mehr als 4x weniger VRAM-Nutzung ermöglicht.

#### 3. Kann ich mein Modell nach dem Training in das MXFP4-Format exportieren?

Nein, derzeit unterstützt keine Bibliothek oder kein Framework dies.

#### 4. Kann ich Reinforcement Learning (RL) oder GRPO mit gpt-oss durchführen?

Ja! Unsloth unterstützt jetzt RL für gpt-oss mit GRPO/GSPO. Wir haben es in einem kostenlosen Kaggle-Notebook zum Laufen gebracht und die schnellste Inferenz für RL erreicht. [Hier mehr lesen](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/gpt-oss-reinforcement-learning.md)

***

***Danksagungen:** Ein riesiges Dankeschön an* [*Eyera*](https://huggingface.co/Orenguteng) *für den Beitrag zu diesem Leitfaden!*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/modelle/gpt-oss-how-to-run-and-fine-tune/tutorial-how-to-fine-tune-gpt-oss.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.
