# Gemma 3 - Leitfaden zum Ausführen

Google veröffentlicht Gemma 3 mit einem neuen 270M-Modell sowie 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 sowie eine Anleitung bereit, 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" %}
**NEUES Update vom 14. Aug. 2025:** Probieren Sie 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">Feinabstimmungstutorial</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!

* Feinabstimmung von 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:**

| 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                                                                                                                                                                         | Unsloth Dynamic 4-bit Instruct                                                                                                                                                                                                                                                                                                                                                                                                               | 16-Bit Instruct                                                                                                                                                                                                                                                                                                                                                     |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <ul><li><a href="https://huggingface.co/unsloth/gemma-3-270m-it-GGUF">270M</a> - neu</li><li><a href="https://huggingface.co/unsloth/gemma-3-1b-it-GGUF">1B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-GGUF">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b-it-GGUF">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-GGUF">27B</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</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b-it-bnb-4bit">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-unsloth-bnb-4bit">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b-it-bnb-4bit">27B</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</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-4b">4B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-12b">12B</a></li><li><a href="https://huggingface.co/unsloth/gemma-3-27b">27B</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 von 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\nHey!&#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 beim letzten)

{% code overflow="wrap" %}

```
<bos><start_of_turn>user
Hallo!<end_of_turn>
<start_of_turn>model
Hey!<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ÜGEN Sie NICHT ZWEI \<bos>-Tokens hinzu! Sie sollten \<bos> beim Prompting des Modells ignorieren!
{% endhint %}

### ✨Gemma 3 auf Ihrem 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 Ihrem Telefon auszuführen, empfehlen wir die Verwendung einer beliebigen mobilen App, die GGUFs lokal auf Edge-Geräten wie Telefonen ausführen kann. Nach dem Fine-Tuning können Sie es nach GGUF exportieren und dann lokal auf Ihrem Telefon ausführen. Stellen Sie sicher, dass Ihr Telefon über genügend RAM/Leistung verfügt, um die Modelle zu verarbeiten, da es sich überhitzen kann. Daher empfehlen wir für diesen Anwendungsfall Gemma 3 270M oder die Gemma-3n-Modelle. Sie können die [Open-Source-Projekt AnythingLLMs](https://github.com/Mintplex-Labs/anything-llm) mobile App ausprobieren, die Sie herunterladen können 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 Ihrem Telefon sind.

{% hint style="success" %}
Denken Sie daran, dass Sie den Modellnamen 'gemma-3-27b-it-GGUF' für alle Tutorials in einen beliebigen Gemma-Modellnamen wie 'gemma-3-270m-it-GGUF:Q8\_K\_XL' ändern können.
{% endhint %}

## :llama: Tutorial: So führen Sie Gemma 3 in Ollama aus

1. Installieren Sie `ollama` falls Sie das noch nicht getan haben!

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

2. Führen Sie das Modell aus! Beachten Sie, dass Sie `ollama serve`in einem anderen Terminal aufrufen können, falls es fehlschlägt! Wir enthalten alle unsere Korrekturen und vorgeschlagenen Parameter (temperature usw.) in `params` in unserem Hugging-Face-Upload! Sie können den Modellnamen 'gemma-3-27b-it-GGUF' in jeden Gemma-Modellnamen wie 'gemma-3-270m-it-GGUF:Q8\_K\_XL' ändern.

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

## 📖 Tutorial: So führen Sie Gemma 3 27B in llama.cpp aus

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. **Für Apple Mac / Metal-Geräte**, setze `-DGGML_CUDA=OFF` und fahre dann 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 Folgendes tun: (:Q4\_K\_XL) ist der Quantisierungstyp. Du kannst auch über Hugging Face herunterladen (Punkt 3). Dies ist ähnlich wie `ollama run`

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

3. **ODER** das Modell herunterladen über (nach der Installation von `pip install huggingface_hub hf_transfer` ). Sie können Q4\_K\_M oder andere quantisierte Versionen wählen (wie BF16 Vollprä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. Unsloths Flappy-Bird-Test ausführen
5. Bearbeiten `--threads 32` für die Anzahl der CPU-Threads bearbeiten, `--ctx-size 16384` für die Kontextlänge (Gemma 3 unterstützt eine Kontextlänge von 128K!), `--n-gpu-layers 99` für GPU-Offloading, also für wie viele Layer. Versuchen Sie, dies anzupassen, wenn Ihrem GPU-Speicher der Platz ausgeht. Entfernen Sie es auch, wenn Sie nur CPU-Inferenz haben.
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 \\
    --temp 1.0 \
    --repeat-penalty 1.0 \
    --min-p 0,01 \
    --top-k 64 \
    --top-p 0.95
```

7. Für den Nicht-Konversationsmodus, um Flappy Bird zu testen:

```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 \\
    --temp 1.0 \
    --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 Folgendes enthalten:\n1. Du musst pygame verwenden.\n2. Die Hintergrundfarbe sollte zufällig gewählt sein und einen hellen Farbton haben. Beginne mit einem hellblauen Farbton.\n3. Mehrmaliges Drücken der Leertaste 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 in dunkelbraun oder gelb, zufällig gewählt.\n6. Zeige eine Punktzahl oben rechts an. Erhöhe sie, wenn du Rohre passierst und sie nicht berührst.\n7. Erstelle zufällig verteilte Rohre mit genügend Abstand. Färbe sie zufällig dunkelgrün oder hellbraun oder in einem dunklen Grauton.\n8. Wenn du verlierst, zeige die beste Punktzahl an. Platziere den Text innerhalb des Bildschirms. Drücken von q oder Esc beendet das Spiel. Neustart erfolgt durch erneutes Drücken der Leertaste.\nDas fertige Spiel sollte in einem Markdown-Abschnitt in Python enthalten sein. 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" %}
Denken Sie 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 einschließen:
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 der LEERTASTE 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, ohne sie zu berühren.
7. Erstelle zufällig verteilte Rohre mit genügend Abstand. Färbe sie zufällig dunkelgrün, hellbraun oder in einem dunklen Grauton.
8. Wenn du verlierst, zeige die Bestpunktzahl an. Platziere den Text innerhalb des Bildschirms. Mit q oder Esc beendest du das Spiel. Ein Neustart erfolgt durch erneutes Drücken der LEERTASTE.
Das fertige Spiel sollte in einem Markdown-Abschnitt in Python enthalten sein. Überprüfen Sie Ihren Code auf Fehler
```

{% endcode %}

## :sloth: Feinabstimmung von Gemma 3 in Unsloth

**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!

* Probieren Sie unser neues [Gemma 3 (270M)-Notebook](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Gemma3_\(270M\).ipynb) das das 270M-Parametermodell sehr gut im Schachspielen macht und den nächsten Schachzug vorhersagen kann.
* Feinabstimmung von 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 feinabstimmen [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, Gemma 3 vollständig feinabzustimmen (FFT), werden auf Float16-Geräten standardmäßig alle Schichten auf Float32 gesetzt. Unsloth erwartet Float16 und führt dynamisch ein Upcasting durch. Um das zu beheben, führen Sie `model.to(torch.float16)` nach dem Laden aus, oder verwenden Sie eine GPU mit bfloat16-Unterstützung.
{% endhint %}

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

Unsere Lösung in Unsloth ist dreifach:

1. Alle Zwischenaktivierungen im bfloat16-Format behalten - kann float32 sein, verwendet jedoch 2x mehr VRAM oder RAM (über Unsloths asynchrones Gradient-Checkpointing)
2. Alle Matrixmultiplikationen in float16 mit Tensor Cores ausführen, aber manuelles Upcasting / Downcasting ohne die Hilfe von Pytorchs gemischter Präzisions-Autocast-Funktion.
3. Alle anderen Optionen, die keine Matrixmultiplikationen benötigen (Layernorms), auf float32 hochstufen.

## 🤔 Analyse der Gemma-3-Korrekturen

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

Zuerst stellten wir vor dem Feinabstimmen oder Ausführen von Gemma 3 fest, dass bei Verwendung von Float16-Mixed-Precision Gradienten und **Aktivierungen unendlich werden** leider. Das passiert bei T4-GPUs, der RTX-20x-Serie und V100-GPUs, da sie nur Float16-Tensor-Cores haben.

Bei neueren GPUs wie der RTX 30x oder höher, A100s, H100s usw. haben diese GPUs 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 große Zahlen bis **10^38**darstellen kann! Aber beachten Sie, dass beide Zahlenformate nur 16 Bits verwenden! Das liegt daran, dass Float16 mehr Bits zuteilt, sodass es kleinere Dezimalzahlen besser darstellen kann, während bfloat16 Bruchteile nicht gut darstellen kann.

Aber warum Float16? Dann nehmen wir doch einfach Float32! Aber leider ist Float32 auf GPUs bei Matrixmultiplikationen sehr langsam - manchmal 4- bis 10-mal langsamer! Das können wir also nicht tun.


---

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