> 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/tutorials/gemma-3-how-to-run-and-fine-tune.md).

# Gemma 3 - Anleitung zum Ausführen

Google veröffentlicht Gemma 3 mit einem neuen 270M-Modell und den bisherigen Größen 1B, 4B, 12B und 27B. 270M und 1B sind nur für Text, während die größeren Modelle sowohl Text als auch Vision verarbeiten. Wir stellen GGUFs bereit sowie eine Anleitung, wie man es effektiv ausführt und wie man es feinabstimmt & [RL](/docs/de/loslegen/reinforcement-learning-rl-guide.md) mit Gemma 3!

{% hint style="success" %}
**NEU: Update vom 14. Aug. 2025:** Teste unser Fine-Tuning [Gemma 3 (270M)-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(270M\).ipynb) und [GGUFs zum Ausführen](https://huggingface.co/collections/unsloth/gemma-3-67d12b7e8816ec6efa7e4e5b).

Siehe auch unseren [Gemma 3n-Leitfaden](/docs/de/modelle/tutorials/gemma-3-how-to-run-and-fine-tune/gemma-3n-how-to-run-and-fine-tune.md).
{% endhint %}

<a href="#gmail-running-gemma-3-on-your-phone" class="button primary">Ausführungstutorial</a><a href="#fine-tuning-gemma-3-in-unsloth" class="button secondary">Fine-Tuning-Tutorial</a>

**Unsloth ist das einzige Framework, das auf Float16-Maschinen für Gemma-3-Inferenz und -Training funktioniert.** Das bedeutet, dass auch Colab-Notebooks mit kostenlosen Tesla-T4-GPUs funktionieren!

* Fine-Tune Gemma 3 (4B) mit Vision-Unterstützung mit unserem [kostenlosen Colab-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\)-Vision.ipynb)

{% hint style="info" %}
Laut dem Gemma-Team ist die optimale Konfiguration für die Inferenz\
`temperature = 1.0, top_k = 64, top_p = 0.95, min_p = 0.0`
{% endhint %}

**Unsloth-Gemma-3-Uploads mit optimalen Konfigurationen:**

| GGUF                                                                                                                                                                                                                                                                                                                                                                                                                 | Unsloth Dynamic 4-bit Instruct                                                                                                                                                                                                                                                                                                                                                                                                                           | 16-bit Instruct                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it-GGUF">270M</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-1b-it-GGUF">1B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-GGUF">4B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b-it-GGUF">12B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-GGUF">27B-it</a></li></ul> | <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it-unsloth-bnb-4bit">270M</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-1b-it-bnb-4bit">1B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-bnb-4bit">4B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b-it-unsloth-bnb-4bit">12B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-bnb-4bit">27B-it</a></li></ul> | <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it">270M</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-1b">1B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b">4B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b">12B-it</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b">27B-it</a></li></ul> |

## :gear: Empfohlene Inferenz-Einstellungen

Laut dem Gemma-Team sind die offiziell empfohlenen Einstellungen für die Inferenz:

* Temperature von 1.0
* Top\_K von 64
* Min\_P von 0,00 (optional, aber 0,01 funktioniert gut; der Standardwert in llama.cpp ist 0,1)
* Top\_P von 0,95
* Wiederholungsstrafe von 1,0. (1,0 bedeutet deaktiviert in llama.cpp und transformers)
* Chat-Vorlage:

  <pre data-overflow="wrap"><code><strong>&#x3C;bos>&#x3C;start_of_turn>user\nHallo!&#x3C;end_of_turn>\n&#x3C;start_of_turn>model\nHallo!&#x3C;end_of_turn>\n&#x3C;start_of_turn>user\nWas ist 1+1?&#x3C;end_of_turn>\n&#x3C;start_of_turn>model\n
  </strong></code></pre>
* Chat-Vorlage mit `\n`gerenderten Zeilenumbrüchen (außer dem letzten)

{% code overflow="wrap" %}

```
<bos><start_of_turn>user
Hallo!<end_of_turn>
<start_of_turn>model
Hallo!<end_of_turn>
<start_of_turn>user
Was ist 1+1?<end_of_turn>
<start_of_turn>model\n
```

{% endcode %}

{% hint style="danger" %}
llama.cpp und andere Inferenz-Engines fügen automatisch ein \<bos> hinzu - FÜGE NICHT ZWEI \<bos>-Tokens hinzu! Du solltest das \<bos> beim Prompting des Modells ignorieren!
{% endhint %}

### ✨Gemma 3 auf deinem Telefon ausführen <a href="#gmail-running-gemma-3-on-your-phone" id="gmail-running-gemma-3-on-your-phone"></a>

Um die Modelle auf deinem Telefon auszuführen, empfehlen wir die Verwendung einer beliebigen mobilen App, die GGUFs lokal auf Edge-Geräten wie Smartphones ausführen kann. Nach dem Fine-Tuning kannst du es nach GGUF exportieren und dann lokal auf deinem Telefon ausführen. Stelle sicher, dass dein Telefon genügend RAM/Leistung hat, um die Modelle zu verarbeiten, da es überhitzen kann. Daher empfehlen wir für diesen Anwendungsfall Gemma 3 270M oder die Gemma-3n-Modelle. Du kannst das [Open-Source-Projekt AnythingLLM](https://github.com/Mintplex-Labs/anything-llm) Mobile-App ausprobieren, die du herunterladen kannst auf [Android hier](https://play.google.com/store/apps/details?id=com.anythingllm) oder [ChatterUI](https://github.com/Vali-98/ChatterUI), die großartige Apps zum Ausführen von GGUFs auf deinem Telefon sind.

{% hint style="success" %}
Denke daran, dass du den Modellnamen 'gemma-3-27b-it-GGUF' in allen Tutorials in jedes Gemma-Modell ändern kannst, z. B. in 'gemma-3-270m-it-GGUF:Q8\_K\_XL'.
{% endhint %}

## :llama: Tutorial: Wie man Gemma 3 in Ollama ausführt

1. Installiere `ollama` falls du es noch nicht getan hast!

```bash
apt-get update
apt-get install pciutils -y
curl -fsSL https://ollama.com/install.sh | sh
```

2. Führe das Modell aus! Beachte, dass du `ollama serve`in einem anderen Terminal aufrufen kannst, wenn es fehlschlägt! Wir enthalten alle unsere Korrekturen und vorgeschlagenen Parameter (Temperatur usw.) in `params` in unserem Hugging-Face-Upload! Du kannst den Modellnamen 'gemma-3-27b-it-GGUF' in jedes Gemma-Modell ändern, z. B. in 'gemma-3-270m-it-GGUF:Q8\_K\_XL'.

```bash
ollama run hf.co/unsloth/gemma-3-27b-it-GGUF:Q4_K_XL
```

## 📖 Tutorial: Wie man Gemma 3 27B in llama.cpp ausführt

1. Hole dir die neueste `llama.cpp` auf [GitHub hier](https://github.com/ggml-org/llama.cpp). Du kannst auch den folgenden Build-Anweisungen folgen. Ändere `-DGGML_CUDA=ON` zu `-DGGML_CUDA=OFF` wenn du keine GPU hast oder nur CPU-Inferenz möchtest. **Für Apple-Mac-/Metal-Geräte**, setze `-DGGML_CUDA=OFF` dann fahre wie gewohnt fort - Metal-Unterstützung ist standardmäßig aktiviert.

```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=ON -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split llama-mtmd-cli
cp llama.cpp/build/bin/llama-* llama.cpp
```

2. Wenn du `llama.cpp` um Modelle direkt zu laden, kannst du das unten verwenden: (:Q4\_K\_XL) ist der Quantisierungstyp. Du kannst auch über Hugging Face herunterladen (Punkt 3). Dies ähnelt `ollama run`

```bash
./llama.cpp/llama-mtmd-cli \\
    -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL
```

3. **ODER** lade das Modell über herunter (nach der Installation von `pip install huggingface_hub hf_transfer` ). Du kannst Q4\_K\_M oder andere quantisierte Versionen wählen (wie BF16 in voller Präzision). Weitere Versionen unter: <https://huggingface.co/unsloth/gemma-3-27b-it-GGUF>

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/gemma-3-27b-it-GGUF",
    local_dir = "unsloth/gemma-3-27b-it-GGUF",
    allow_patterns = ["*Q4_K_XL*", "mmproj-BF16.gguf"], # Für Q4_K_M
)
```

4. Führe Unsloths Flappy-Bird-Test aus
5. Bearbeite `--threads 32` für die Anzahl der CPU-Threads, `--ctx-size 16384` für die Kontextlänge (Gemma 3 unterstützt 128K Kontextlänge!), `--n-gpu-layers 99` für GPU-Offloading, wie viele Schichten. Passe es an, wenn deine GPU keinen Speicher mehr hat. Entferne es auch, wenn du nur CPU-Inferenz hast.
6. Für den Konversationsmodus:

```bash
./llama.cpp/llama-mtmd-cli \\
    --model unsloth/gemma-3-27b-it-GGUF/gemma-3-27b-it-Q4_K_XL.gguf \\
    --mmproj unsloth/gemma-3-27b-it-GGUF/mmproj-BF16.gguf \\
    --ctx-size 16384 \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 2 \\
    -hf unsloth/Kimi-K2.6-GGUF:UD-Q2_K_XL \
    --repeat-penalty 1.0 \\
    --min-p 0.01 \
    --top-k 64 \\
    --temp 1.0 \
```

7. Für den Nicht-Konversationsmodus zum Testen von Flappy Bird:

```bash
./llama.cpp/llama-cli \
    --model unsloth/gemma-3-27b-it-GGUF/gemma-3-27b-it-Q4_K_XL.gguf \\
    --ctx-size 16384 \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 2 \\
    -hf unsloth/Kimi-K2.6-GGUF:UD-Q2_K_XL \
    --repeat-penalty 1.0 \\
    --min-p 0.01 \
    --top-k 64 \\
    --top-p 0.95 \
    -no-cnv \
    --prompt "<start_of_turn>user\nErstelle ein Flappy-Bird-Spiel in Python. Du musst diese Dinge einbauen:\n1. Du musst pygame verwenden.\n2. Die Hintergrundfarbe sollte zufällig gewählt werden und ein heller Farbton sein. Beginne mit einem hellblauen Farbton.\n3. Mehrfaches Drücken von SPACE beschleunigt den Vogel.\n4. Die Form des Vogels sollte zufällig als Quadrat, Kreis oder Dreieck gewählt werden. Die Farbe sollte zufällig als dunkle Farbe gewählt werden.\n5. Platziere unten etwas Land, das zufällig dunkelbraun oder gelb gefärbt ist.\n6. Zeige oben rechts eine Punktzahl an. Erhöhe sie, wenn du an Rohren vorbeikommst und sie nicht triffst.\n7. Erstelle zufällig verteilte Rohre mit genug Platz dazwischen. Färbe sie zufällig dunkelgrün oder hellbraun oder in einem dunklen Grauton.\n8. Wenn du verlierst, zeige die Bestpunktzahl an. Stelle den Text innerhalb des Bildschirms dar. Mit q oder Esc beendest du das Spiel. Neustarten erfolgt durch erneutes Drücken von SPACE.\nDas endgültige Spiel sollte in einem Markdown-Abschnitt in Python stehen. Prüfe deinen Code auf Fehler und behebe sie vor dem finalen Markdown-Abschnitt.<end_of_turn>\n<start_of_turn>model\n"
```

Die vollständige Eingabe aus unserem <https://unsloth.ai/blog/deepseekr1-dynamic> 1.58bit-Blog lautet:

{% hint style="danger" %}
Denke daran, \<bos> zu entfernen, da Gemma 3 automatisch ein \<bos> hinzufügt!
{% endhint %}

{% code overflow="wrap" %}

```
<start_of_turn>user
Erstelle ein Flappy-Bird-Spiel in Python. Du musst diese Dinge einbauen:
1. Du musst pygame verwenden.
2. Die Hintergrundfarbe sollte zufällig gewählt werden und ein heller Farbton sein. Beginne mit einem hellblauen Farbton.
3. Mehrfaches Drücken von SPACE beschleunigt den Vogel.
4. Die Form des Vogels sollte zufällig als Quadrat, Kreis oder Dreieck gewählt werden. Die Farbe sollte zufällig als dunkle Farbe gewählt werden.
5. Platziere unten etwas Land, das zufällig dunkelbraun oder gelb gefärbt ist.
6. Zeige oben rechts eine Punktzahl an. Erhöhe sie, wenn du an Rohren vorbeikommst und sie nicht triffst.
7. Erstelle zufällig verteilte Rohre mit genug Platz dazwischen. Färbe sie zufällig dunkelgrün oder hellbraun oder in einem dunklen Grauton.
8. Wenn du verlierst, zeige die Bestpunktzahl an. Stelle den Text innerhalb des Bildschirms dar. Mit q oder Esc beendest du das Spiel. Neustarten erfolgt durch erneutes Drücken von SPACE.
Das endgültige Spiel sollte in einem Markdown-Abschnitt in Python stehen. Prüfe deinen Code auf Fehle
```

{% endcode %}

## :sloth: Gemma 3 in Unsloth feinabstimmen

**Unsloth ist das einzige Framework, das auf Float16-Maschinen für Gemma-3-Inferenz und -Training funktioniert.** Das bedeutet, dass auch Colab-Notebooks mit kostenlosen Tesla-T4-GPUs funktionieren!

* Teste unser neues [Gemma 3 (270M)-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(270M\).ipynb) das das 270M-Parameter-Modell sehr gut im Schachspielen macht und den nächsten Schachzug vorhersagen kann.
* Fine-Tune Gemma 3 (4B) mit unseren Notebooks für: [**Text**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\).ipynb) oder [**Vision**](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(4B\)-Vision.ipynb)
* Oder fine-tune [Gemma 3n (E4B)](/docs/de/modelle/tutorials/gemma-3-how-to-run-and-fine-tune/gemma-3n-how-to-run-and-fine-tune.md) mit [Text](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Conversational.ipynb) • [Vision](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Vision.ipynb) • [Audio](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3N_\(4B\)-Audio.ipynb)

{% hint style="warning" %}
Beim Versuch eines vollständigen Fine-Tunings (FFT) von Gemma 3 werden auf Float16-Geräten standardmäßig alle Schichten auf Float32 gesetzt. Unsloth erwartet Float16 und führt das Hochskalieren dynamisch durch. Um das zu beheben, führe `model.to(torch.float16)` nach dem Laden aus oder verwende eine GPU mit bfloat16-Unterstützung.
{% endhint %}

### Unsloth-Korrekturen für Fine-Tuning

Unsere Lösung in Unsloth ist dreigeteilt:

1. Alle Zwischenaktivierungen im bfloat16-Format beibehalten - kann auch float32 sein, verwendet aber 2x mehr VRAM oder RAM (über Unsloths asynchrones Gradient-Checkpointing)
2. Alle Matrixmultiplikationen in float16 mit Tensor Cores durchführen, aber manuelles Hoch- / Runterskalieren ohne die Hilfe von PyTorchs Mixed-Precision-Autocast.
3. Alle anderen Optionen, die keine Matrixmultiplikationen benötigen (LayerNorms), auf Float32 hochskalieren.

## 🤔 Analyse der Gemma-3-Korrekturen

<figure><img src="/files/2e87b22411dace1a6e94a85cd247d11b86b904d9" alt="" width="563"><figcaption><p>Gemma 3 1B bis 27B überschreitet das Maximum von Float16 von 65504</p></figcaption></figure>

Zuerst, bevor wir Gemma 3 feinabstimmen oder ausführen, haben wir festgestellt, dass bei Verwendung von Float16-Mixed-Precision Gradienten und **Aktivierungen leider unendlich werden** . Das passiert auf T4-GPUs, RTX-20x-Serien und V100-GPUs, da sie nur Float16-Tensor-Cores haben.

Bei neueren GPUs wie RTX 30x oder höher, A100s, H100s usw. verfügen diese GPUs über bfloat16-Tensor-Cores, daher tritt dieses Problem nicht auf! **Aber warum?**

<figure><img src="/files/6e1675acc21411f0817b8bf5264e441d35ef28ec" alt="" width="375"><figcaption><p>Wikipedia <a href="https://en.wikipedia.org/wiki/Bfloat16_floating-point_format">https://en.wikipedia.org/wiki/Bfloat16_floating-point_format</a></p></figcaption></figure>

Float16 kann nur Zahlen bis **65504**darstellen, während bfloat16 riesige Zahlen bis **10^38**darstellen kann! Aber beachte, dass beide Zahlenformate nur 16 Bit verwenden! Das liegt daran, dass Float16 mehr Bits zuweist, damit kleinere Dezimalzahlen besser dargestellt werden können, während bfloat16 Brüche nicht gut darstellen kann.

Aber warum float16? Verwenden wir einfach float32! Aber leider ist float32 auf GPUs bei Matrixmultiplikationen sehr langsam - manchmal 4- bis 10-mal langsamer! Also können wir das nicht tun.


---

# 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/tutorials/gemma-3-how-to-run-and-fine-tune.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.
