# Tutorial: Wie man gpt-oss feinabstimmt

In diesem Leitfaden mit Screenshots erfahren Sie, wie Sie Ihr eigenes angepasstes gpt-oss-Modell feinabstimmen, entweder [lokal](#local-gpt-oss-fine-tuning) auf Ihrem Rechner mit [Unsloth](https://github.com/unslothai/unsloth) oder kostenlos mit [Google Colab](#colab-gpt-oss-fine-tuning). Wir führen Sie durch den gesamten Prozess, von der Einrichtung bis zum Ausführen und Speichern Ihres 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)**:** Sie können Ihr 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, was **>8× längere Kontextlängen**, **>50% weniger VRAM-Verbrauch** und **>1.5× schnelleres Training** gegenüber allen Implementierungen ermöglicht. [Lesen Sie hier mehr](/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)

Unsloth gpt-oss Feinabstimmung erreicht im Vergleich zu allen anderen FA2-Implementierungen ein 1,5× schnelleres Training, eine Reduktion des VRAM-Verbrauchs um 70% und 10× längere Kontextlängen – ohne Genauigkeitsverlust.

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

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

## 🌐 Colab gpt-oss Feinabstimmung

Dieser Abschnitt behandelt die Feinabstimmung von gpt-oss mithilfe unseres Google Colab [Notebooks](/docs/de/loslegen/unsloth-notebooks.md). Sie können das gpt-oss-Notebook auch in Ihren bevorzugten Code-Editor speichern und unsere [lokale gpt-oss-Anleitung](#local-gpt-oss-fine-tuning).

{% stepper %}
{% step %}

#### Unsloth installieren (in Colab)

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

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

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

{% step %}

#### Konfiguration von gpt-oss und Reasoning Effort

Wir laden **`gpt-oss-20b`** mit Unsloth's [linearisierten Version](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune.md#making-efficient-gpt-oss-fine-tuning-work) (da keine andere Version funktionieren wird).

Konfigurieren Sie die folgenden Parameter:

* `max_seq_length = 1024`
  * Empfohlen für schnelle Tests und erste Experimente.
* `load_in_4bit = True`
  * Verwenden Sie `Falsch` für LoRA-Training (Hinweis: Wenn Sie dies auf `Falsch` setzen, benötigen Sie mindestens 43GB VRAM). Sie ***MÜSSEN*** auch **`model_name = "unsloth/gpt-oss-20b-BF16"`**

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

Sie sollten eine Ausgabe ähnlich dem untenstehenden Beispiel sehen. Hinweis: Wir ändern explizit den `dtype` zu `float32` um ein korrektes Trainingsverhalten sicherzustellen.

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

{% step %}

#### Hyperparameter der Feinabstimmung (LoRA)

Jetzt ist es an der Zeit, Ihre Trainingshyperparameter anzupassen. Für einen tieferen Einblick, wie, wann und was zu tun ist, sehen Sie sich unseren [ausführlichen Hyperparameter-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

{% hint style="info" %}
Um [Overfitting](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md#avoiding-overfitting-and-underfitting)zu vermeiden, überwachen Sie Ihren Trainingsverlust und vermeiden Sie es, diese Werte zu hoch zu setzen.
{% endhint %}

Dieser Schritt fügt LoRA-Adapter für parameter-effiziente Feinabstimmung hinzu. Nur etwa 1% der Modellparameter werden 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 die gpt-oss-Inferenz in Colab demonstriert. Sie können diesen Schritt überspringen, aber Sie müssen das Modell später ausführen, sobald Sie die Feinabstimmung abgeschlossen haben.

<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). Dieser Datensatz enthält Chain-of-Thought-Reasoning-Beispiele, die aus Nutzerfragen abgeleitet und aus dem Englischen in vier zusätzliche Sprachen übersetzt wurden.

Dies ist derselbe Datensatz, der im Feinabstimmungs-Cookbook von OpenAI referenziert wird.

Das Ziel der Verwendung eines multilingualen Datensatzes 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 Reasoning das Modell durchführt. Standardmäßig ist der Reasoning-Effort auf `niedrig`gesetzt, aber Sie können ihn ändern, indem Sie den `reasoning_effort` Parameter auf `niedrig`, `mittel` oder `hoch`.

Beispiel:

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

Um den Datensatz 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,)
```

Lassen Sie uns den Datensatz untersuchen, indem wir das erste Beispiel ausdrucken:

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

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

Ein einzigartiges Merkmal 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. Siehe diesen [Tweet](https://x.com/danielhanchen/status/1953901104150065544) für technische Details zu unserer Vorlagenkorrektur.
{% endhint %}

Passen Sie das Prompt und die Struktur gerne an Ihren eigenen Datensatz oder Anwendungsfall an. Für weitere Hinweise siehe unseren [Datensatz-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/datasets-guide.md).
{% endstep %}

{% step %}

#### Trainieren Sie das Modell

Wir haben Trainingshyperparameter für optimale Ergebnisse vorausgewählt. Sie können sie jedoch je nach Ihrem konkreten Anwendungsfall ändern. Siehe unseren [Hyperparameter-Leitfaden](/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 Trainingslauf setzen Sie `num_train_epochs=1` und deaktivieren die Schrittbeschränkung, indem Sie `max_steps=None`.

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

Während des Trainings überwachen Sie den Loss, um sicherzustellen, dass er im Laufe der Zeit abnimmt. Dies bestätigt, dass der Trainingsprozess korrekt funktioniert.

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

{% step %}

#### Inference: Führen Sie Ihr trainiertes Modell aus

Jetzt ist es Zeit, Inferenz mit Ihrem feinabgestimmten Modell durchzuführen. Sie können die Anweisung und die Eingabe ändern, lassen Sie jedoch die Ausgabe leer.

In diesem Beispiel testen wir die Fähigkeit des Modells, auf Französisch zu schlussfolgern, indem wir eine spezifische Anweisung in das System-Prompt einfügen, entsprechend der Struktur unseres Datensatzes.

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

Dies sollte eine Ausgabe ähnlich der folgenden erzeugen:

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

{% step %}

#### Speichern/exportieren Sie Ihr Modell

Um Ihr feinabgestimmtes Modell zu speichern, können Sie es sowohl im **bf16-Format ,** mit unserer **On-Demand-Dequantisierung von MXFP4** Basismodellen unter Verwendung von `save_method="merged_16bit"`oder im nativen **MXFP4** Safetensors-Format mit `save_method="mxfp4"` .

Der **MXFP4** Das native Merge-Format bietet im Vergleich zum **bf16-Format**erhebliche Leistungsverbesserungen: Es benötigt bis zu 75% weniger Festplattenspeicher, reduziert den VRAM-Verbrauch um 50%, beschleunigt das Mergen um das 5–10-fache und ermöglicht eine viel schnellere Konvertierung in das **GGUF** Format.

{% hint style="success" %}
Neu: Das Speichern oder Mergen von QLoRA-feinabgestimmten Modellen nach GGUF wird jetzt zur Verwendung in anderen Frameworks (z. B. Hugging Face, llama.cpp mit GGUF) unterstützt.
{% endhint %}

Nach der Feinabstimmung Ihres gpt-oss-Modells können Sie es in **MXFP4** Format zusammenführen mit:

```python
model.save_pretrained_merged(save_directory, tokenizer, save_method="mxfp4)
```

Wenn Sie das Modell lieber zusammenführen und direkt zum Hugging Face Hub pushen möchten:

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

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

1. Holen Sie sich die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Sie können auch den unten stehenden Build-Anweisungen folgen. Ändern Sie `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn Sie keine GPU haben oder nur CPU-Inferenz wünschen.

   ```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. Konvertieren Sie 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ühren Sie 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 "The meaning to life and the universe is"
   ```

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

## 🖥️ Lokale gpt-oss Feinabstimmung

Dieses Kapitel behandelt die Feinabstimmung von gpt-oss auf Ihrem lokalen Gerät. Während **gpt-oss-20b** die Feinabstimmung bereits mit nur 14GB VRAM funktionieren kann, empfehlen wir, mindestens 16GB VRAM verfügbar zu haben, um stabile und zuverlässige Trainingsläufe zu gewährleisten.

{% hint style="info" %}
Wir empfehlen, unsere Colab-Elemente herunterzuladen oder in Ihr lokales Setup zu integrieren, um die Nutzung zu erleichtern. [Notebooks](/docs/de/loslegen/unsloth-notebooks.md) Installieren Sie Unsloth lokal
{% endhint %}

{% stepper %}
{% step %}

#### Stellen Sie sicher, dass Ihr Gerät

Unsloth-kompatibel [ist, und Sie können unseren detaillierten](/docs/de/loslegen/fine-tuning-for-beginners/unsloth-requirements.md) Installationsleitfaden [lesen.](/docs/de/loslegen/install.md).

**Sie können Unsloth auch mit unserem** [**Docker-Image**](https://unsloth.ai/docs/models/qwen3-coder-next)**.**

installieren. `Beachten Sie, dass` pip install unsloth

```python
für dieses Setup nicht funktionieren wird, da wir die neuesten Versionen von PyTorch, Triton und zugehörigen Paketen benötigen. Installieren Sie Unsloth mit diesem spezifischen Befehl:
!pip install --upgrade -qqq uv
# Wir installieren das neueste Torch, Triton, OpenAI's Triton-Kernels, Transformers und Unsloth!
try: import numpy; install_numpy = f"numpy=={numpy.__version__}"
!uv pip install -qqq \
    except: install_numpy = "numpy"
    "unsloth_zoo[base] @ git+https://github.com/unslothai/unsloth-zoo" \
    "unsloth[base] @ git+https://github.com/unslothai/unsloth" \
    "torch>=2.8.0" "triton>=3.4.0" {install_numpy} \
    torchvision bitsandbytes \
    git+https://github.com/triton-lang/triton.git@05b2c186c1b6c9a08375389d5efe9cb4c401c075#subdirectory=python/triton_kernels
```

{% endstep %}

{% step %}

#### Konfiguration von gpt-oss und Reasoning Effort

Wir laden **`gpt-oss-20b`** mit Unsloth's [linearisierten Version](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune.md#making-efficient-gpt-oss-fine-tuning-work) git+<https://github.com/huggingface/transformers> \\

* `max_seq_length = 2048`
  * Empfohlen für schnelle Tests und erste Experimente.
* `load_in_4bit = True`
  * Verwenden Sie `Falsch` für LoRA-Training (Hinweis: Wenn Sie dies auf `Falsch` setzen, benötigen Sie mindestens 43GB VRAM). Sie ***MÜSSEN*** auch **`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

(da keine andere Version für QLoRA-Feinabstimmung funktionieren wird). Konfigurieren Sie die folgenden Parameter:
# 4bit vorquantisierte Modelle, die wir für 4× schnelleren Download + keine OOMs unterstützen.
    fourbit_models = [
<strong>    "unsloth/gpt-oss-20b-unsloth-bnb-4bit", # 20B-Modell mit bitsandbytes 4bit-Quantisierung
</strong>    "unsloth/gpt-oss-120b-unsloth-bnb-4bit",
    "unsloth/gpt-oss-20b", # 20B-Modell im MXFP4-Format
"unsloth/gpt-oss-120b",

model, tokenizer = FastLanguageModel.from_pretrained(
    ] # Mehr Modelle unter https://huggingface.co/unsloth
    model_name = "unsloth/gpt-oss-20b",
    dtype = dtype, # None für automatische Erkennung
    max_seq_length = max_seq_length, # Wählen Sie beliebig für lange Kontexte!
    load_in_4bit = True,  # 4-Bit-Quantisierung zur Reduzierung des Speichers
    full_finetuning = False, # [NEU!] Wir haben jetzt Full-Finetuning!
)
</code></pre>

Sie sollten eine Ausgabe ähnlich dem untenstehenden Beispiel sehen. Hinweis: Wir ändern explizit den `dtype` zu `float32` um ein korrektes Trainingsverhalten sicherzustellen.
{% endstep %}

{% step %}

#### Hyperparameter der Feinabstimmung (LoRA)

Jetzt ist es an der Zeit, Ihre Trainingshyperparameter anzupassen. Für einen tieferen Einblick, wie, wann und was zu tun ist, sehen Sie sich unseren [ausführlichen Hyperparameter-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md).

{% hint style="info" %}
Um [Overfitting](/docs/de/loslegen/fine-tuning-llms-guide/lora-hyperparameters-guide.md#avoiding-overfitting-and-underfitting)zu vermeiden, überwachen Sie Ihren Trainingsverlust und vermeiden Sie es, diese Werte zu hoch zu setzen.
{% endhint %}

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

```python
model = FastLanguageModel.get_peft_model(
    model,
    # token = "hf_...", # verwenden Sie eins, wenn Sie gated Modelle nutzen
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
                      "gate_proj", "up_proj", "down_proj",],
    lora_alpha = 16,
    lora_dropout = 0, # Unterstützt beliebige Werte, aber = 0 ist optimiert
    bias = "none",    # Unterstützt beliebige Werte, aber = "none" ist optimiert
    r = 8, # Wählen Sie eine beliebige Zahl > 0! Vorgeschlagen: 8, 16, 32, 64, 128
    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). Dieser Datensatz enthält Chain-of-Thought-Reasoning-Beispiele, die aus Nutzerfragen abgeleitet und aus dem Englischen in vier zusätzliche Sprachen übersetzt wurden.

\# \[NEU] "unsloth" verwendet 30% weniger VRAM, ermöglicht 2× größere Batch-Größen!

```python
Dies ist derselbe Datensatz, der im Feinabstimmungs-Cookbook von OpenAI referenziert wird. Das Ziel der Verwendung eines multilingualen Datensatzes ist es, dem Modell zu helfen, Reasoning-Muster über mehrere Sprachen hinweg zu lernen und zu verallgemeinern.
    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, }

from datasets import load_dataset

pass
Datensatz
```

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

Beispiel:

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

Um den Datensatz 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,)
```

Lassen Sie uns den Datensatz untersuchen, indem wir das erste Beispiel ausdrucken:

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

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

Ein einzigartiges Merkmal 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. Siehe diesen [Tweet](https://x.com/danielhanchen/status/1953901104150065544) für technische Details zu unserer Vorlagenkorrektur.
{% endhint %}

Passen Sie das Prompt und die Struktur gerne an Ihren eigenen Datensatz oder Anwendungsfall an. Für weitere Hinweise siehe unseren [Datensatz-Leitfaden](/docs/de/loslegen/fine-tuning-llms-guide/datasets-guide.md).
{% endstep %}

{% step %}

#### Trainieren Sie das Modell

Wir haben Trainingshyperparameter für optimale Ergebnisse vorausgewählt. Sie können sie jedoch je nach Ihrem konkreten Anwendungsfall ändern. Siehe unseren [Hyperparameter-Leitfaden](/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 Trainingslauf setzen Sie `num_train_epochs=1` und deaktivieren die Schrittbeschränkung, indem Sie `max_steps=None`.

```python
dataset = load_dataset("HuggingFaceH4/Multilingual-Thinking", split="train")
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, # Set this for 1 full training run.
        from trl import SFTConfig, SFTTrainer
        num_train_epochs = 1
        logging_steps = 1,
        optim = "adamw_8bit",
        weight_decay = 0.01,
        lr_scheduler_type = "linear",
        seed = 3407,
        output_dir = "outputs",
        report_to = "none", # Use this for WandB etc
    ),
)
```

Während des Trainings überwachen Sie den Loss, um sicherzustellen, dass er im Laufe der Zeit abnimmt. Dies bestätigt, dass der Trainingsprozess korrekt funktioniert.

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

{% step %}

#### max\_steps = 30,

Jetzt ist es Zeit, Inferenz mit Ihrem feinabgestimmten Modell durchzuführen. Sie können die Anweisung und die Eingabe ändern, lassen Sie jedoch die Ausgabe leer.

In diesem Beispiel testen wir die Fähigkeit des Modells, auf Französisch zu schlussfolgern, indem wir eine spezifische Anweisung in das System-Prompt einfügen, entsprechend der Struktur unseres Datensatzes.

```python
Inference: Führen Sie Ihr trainiertes Modell aus
    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."},
    messages,
    inputs = tokenizer.apply_chat_template(
    add_generation_prompt = True,
    return_tensors = "pt",
    reasoning_effort = "medium",
return_dict = True,
from transformers import TextStreamer
).to(model.device)
```

Dies sollte eine Ausgabe ähnlich der folgenden erzeugen:

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

{% step %}

#### \_ = model.generate(\*\*inputs, max\_new\_tokens = 2048, streamer = TextStreamer(tokenizer))

Speichern und Exportieren Ihres Modells **On-Demand-Dequantisierung von MXFP4** Um Ihr feinabgestimmtes Modell zu speichern, kann es im Safetensors-Format mit unserer neuen **Basismodellen (wie gpt-oss) während des LoRA-Merge-Prozesses. Dies macht es möglich,**.

{% hint style="success" %}
Neu: Das Speichern oder Mergen von QLoRA-feinabgestimmten Modellen nach GGUF wird jetzt zur Verwendung in anderen Frameworks (z. B. Hugging Face, llama.cpp mit GGUF) unterstützt.
{% endhint %}

Ihr feinabgestimmtes Modell im bf16-Format zu exportieren

```python
Nach der Feinabstimmung Ihres gpt-oss-Modells können Sie es in 16-Bit-Format zusammenführen mit:
```

Wenn Sie das Modell lieber zusammenführen und direkt zum Hugging Face Hub pushen möchten:

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

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

1. Holen Sie sich die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Sie können auch den unten stehenden Build-Anweisungen folgen. Ändern Sie `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn Sie keine GPU haben oder nur CPU-Inferenz wünschen.

   ```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. model.push\_to\_hub\_merged(repo\_name, tokenizer=tokenizer, token= hf\_token)

   ```bash
   Konvertieren und quantisieren Sie das zusammengeführte Modell:
   python3 llama.cpp/convert_hf_to_gguf.py gpt-oss-finetuned-merged/ --outfile gpt-oss-finetuned.gguf
   ```
3. Führen Sie Inferenz auf dem quantisierten Modell aus:

   ```bash
   llama.cpp/llama-quantize gpt-oss-finetuned.gguf  gpt-oss-finetuned-Q8_0.gguf Q8_0
       --jinja -ngl 99 --threads -1 --ctx-size 16384 \
       --temp 1.0 --top-p 1.0 --top-k 0 \
        -p "The meaning to life and the universe is"
   ```

{% endstep %}
{% endstepper %}

### llama.cpp/llama-cli --model gpt-oss-finetuned-Q8\_0.gguf \\

🏁 Und das war's!

Sie haben gpt-oss mit Unsloth feinabgestimmt. Wir arbeiten derzeit an RL- und GRPO-Implementierungen sowie an verbessertem Modellspeichern und Ausführen, also bleiben Sie dran. [Wie immer können Sie gerne bei unserem](https://discord.com/invite/unsloth) oder [Discord](https://www.reddit.com/r/unsloth/) Reddit

## vorbeischauen, wenn Sie Hilfe benötigen.

#### ❓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, Sie können jetzt](/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) Ihr gpt-oss feinabgestimmtes Modell mit Unsloths neuem Update 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 dadurch mehr als 4× weniger VRAM-Verbrauch 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 erzielt. [Lesen Sie hier mehr](/docs/de/modelle/gpt-oss-how-to-run-and-fine-tune/gpt-oss-reinforcement-learning.md)

***

***Danksagungen:** Ein großer Dank an* [*Eyera*](https://huggingface.co/Orenguteng) *für den Beitrag zu diesem Leitfaden!*


---

# 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/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.
