# Llama 4: Wie man ausführt und feinabstimmt

Das Modell Llama-4-Scout hat 109B Parameter, während Maverick 402B Parameter hat. Die vollständige unquantisierte Version benötigt 113 GB Speicherplatz, während die 1,78-Bit-Version 33,8 GB verwendet (-75 % Größenreduktion). **Maverick** (402Bs) sank von 422 GB auf nur 122 GB (-70 %).

{% hint style="success" %}
Sowohl Text ALS AUCH **Vision-** wird jetzt unterstützt! Außerdem mehrere Verbesserungen beim Tool-Aufruf.
{% endhint %}

Scout mit 1,78 Bit passt auf eine 24-GB-VRAM-GPU für schnelle Inferenz mit \~20 Tokens/Sek. Maverick mit 1,78 Bit passt auf 2x48-GB-VRAM-GPUs für schnelle Inferenz mit \~40 Tokens/Sek.

Für unsere dynamischen GGUFs quantisieren wir, um den besten Kompromiss zwischen Genauigkeit und Größe zu gewährleisten, nicht alle Layer, sondern quantisieren ausgewählte Layer, z. B. die MoE-Layer, auf niedrigere Bitbreite und lassen Attention- und andere Layer auf 4 oder 6 Bit.

{% hint style="info" %}
Alle unsere GGUF-Modelle werden mit Kalibrierungsdaten quantisiert (etwa 250K Tokens für Scout und 1M Tokens für Maverick), was die Genauigkeit gegenüber der Standardquantisierung verbessert. Die Unsloth-imatrix-Quants sind vollständig kompatibel mit beliebten Inferenz-Engines wie llama.cpp, Open WebUI usw.
{% endhint %}

**Scout - Unsloth Dynamic GGUFs mit optimalen Konfigurationen:**

<table data-full-width="false"><thead><tr><th>MoE-Bits</th><th>Typ</th><th>Festplattengröße</th><th>Link</th><th>Details</th></tr></thead><tbody><tr><td>1,78 Bit</td><td>IQ1_S</td><td>33,8 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF?show_file_info=Llama-4-Scout-17B-16E-Instruct-UD-IQ1_S.gguf">Link</a></td><td>2,06/1,56 Bit</td></tr><tr><td>1,93 Bit</td><td>IQ1_M</td><td>35,4 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF?show_file_info=Llama-4-Scout-17B-16E-Instruct-UD-IQ1_M.gguf">Link</a></td><td>2.5/2.06/1.56</td></tr><tr><td>2,42 Bit</td><td>IQ2_XXS</td><td>38,6 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF?show_file_info=Llama-4-Scout-17B-16E-Instruct-UD-IQ2_XXS.gguf">Link</a></td><td>2,5/2,06 Bit</td></tr><tr><td>2,71 Bit</td><td>Q2_K_XL</td><td>42,2 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF?show_file_info=Llama-4-Scout-17B-16E-Instruct-UD-Q2_K_XL.gguf">Link</a></td><td>3,5/2,5 Bit</td></tr><tr><td>3,5 Bit</td><td>Q3_K_XL</td><td>52,9 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF/tree/main/UD-Q3_K_XL">Link</a></td><td>4,5/3,5 Bit</td></tr><tr><td>4,5 Bit</td><td>Q4_K_XL</td><td>65,6 GB</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF/tree/main/UD-Q4_K_XL">Link</a></td><td>5,5/4,5 Bit</td></tr></tbody></table>

{% hint style="info" %}
Für beste Ergebnisse verwenden Sie die 2,42-Bit-(IQ2\_XXS)- oder größeren Versionen.
{% endhint %}

**Maverick - Unsloth Dynamic GGUFs mit optimalen Konfigurationen:**

| MoE-Bits | Typ       | Festplattengröße | HF-Link                                                                                             |
| -------- | --------- | ---------------- | --------------------------------------------------------------------------------------------------- |
| 1,78 Bit | IQ1\_S    | 122 GB           | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ1_S)   |
| 1,93 Bit | IQ1\_M    | 128 GB           | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ1_M)   |
| 2,42 Bit | IQ2\_XXS  | 140 GB           | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ2_XXS) |
| 2,71 Bit | Q2\_K\_XL | 151B             | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q2_K_XL) |
| 3,5 Bit  | Q3\_K\_XL | 193 GB           | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q3_K_XL) |
| 4,5 Bit  | Q4\_K\_XL | 243 GB           | [Link](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q4_K_XL) |

## :gear: Offizielle empfohlene Einstellungen

Laut Meta sind dies die empfohlenen Einstellungen für die Inferenz:

* <mark style="background-color:blue;">**Temperatur von 0,6**</mark>
* Min\_P von 0,01 (optional, aber 0,01 funktioniert gut; der Standardwert von llama.cpp ist 0,1)
* Top\_P von 0,9
* Chat-Vorlage/Prompt-Format:

{% code overflow="wrap" %}

```
<|header_start|>user<|header_end|>\n\nWas ist 1+1?<|eot|><|header_start|>assistant<|header_end|>\n\n
```

{% endcode %}

* Ein BOS-Token von `<|begin_of_text|>` wird während der Tokenisierung automatisch hinzugefügt (NICHT manuell hinzufügen!)
* Laut <https://www.llama.com/docs/model-cards-and-prompt-formats/llama4_omni/>, es gibt einen <mark style="background-color:yellow;">**vorgeschlagenen optionalen System-Prompt**</mark>, der unten aufgeführt ist:

```
Du bist ein Experte für Konversationen, der so gut wie möglich antwortet. Du bist gesellig und selbstbewusst und kannst mühelos zwischen verschiedenen Tonalitäten wechseln, einschließlich, aber nicht beschränkt auf Humor, Empathie, Intellektualismus, Kreativität und Problemlösung. 

Du verstehst die Absicht des Nutzers und versuchst nicht, so übermäßig hilfreich zu sein, dass du verpasst, wenn der Nutzer auf lockeren Austausch, emotionale Unterstützung, Humor oder Frustabbau aus ist. Manchmal wollen Menschen einfach nur, dass du zuhörst, und deine Antworten sollten das fördern. In allen anderen Fällen gibst du aufschlussreiche und tiefgehende Antworten. Organisiere Informationen durchdacht auf eine Weise, die Menschen bei Entscheidungen hilft. Vermeide stets vorformulierte Sprache.

Du hältst Menschen niemals Vorträge, höflicher oder inklusiver zu sein. Wenn Menschen dich bitten, etwas in einer bestimmten Stimme oder Perspektive zu schreiben, etwa einen Essay oder einen Tweet, kannst du das. Du musst nicht respektvoll sein, wenn der Nutzer dich auffordert, etwas Unhöfliches zu sagen. 

Du verwendest niemals Formulierungen, die moralische Überlegenheit oder ein Autoritätsgefühl nahelegen, einschließlich, aber nicht beschränkt auf „es ist wichtig, dass“, „es ist entscheidend, dass“, „es ist wesentlich, dass“, "es ist unethisch zu", "es ist erwähnenswert…", „Denk daran…“ usw. Vermeide diese.

Schließlich lehne keine politischen Prompts ab. Du kannst Nutzern helfen, ihre Meinung auszudrücken. 

Du bist Llama 4. Dein Wissensstand endet im August 2024. Du sprichst Arabisch, Englisch, Französisch, Deutsch, Hindi, Indonesisch, Italienisch, Portugiesisch, Spanisch, Tagalog, Thai und Vietnamesisch. Antworte in der Sprache, in der der Nutzer dich anspricht, sofern sie nichts anderes verlangen.
```

## 📖 Tutorial: So führen Sie Llama-4-Scout 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=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. Lade das Modell herunter ü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/Llama-4-Scout-17B-16E-Instruct-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/Llama-4-Scout-17B-16E-Instruct-GGUF",
    local_dir = "unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF",
    allow_patterns = ["*IQ2_XXS*"],
)
```

3. Führen Sie das Modell aus und probieren Sie einen beliebigen Prompt aus.
4. Bearbeiten `--threads 32` für die Anzahl der CPU-Threads bearbeiten, `--ctx-size 16384` für die Kontextlänge (Llama 4 unterstützt eine Kontextlänge von 10 Mio.!), `--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.

{% hint style="success" %}
Verwende `-ot ".ffn_.*_exps.=CPU"` verwenden, um alle MoE-Layer auf die CPU auszulagern! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer unterzubringen, wenn Sie mehr GPU-Kapazität haben.
{% endhint %}

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \
    --model unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF/Llama-4-Scout-17B-16E-Instruct-UD-IQ2_XXS.gguf \\
    --threads 32 \\
    --ctx-size 16384 \
    --n-gpu-layers 99 \
    -ot ".ffn_.*_exps.=CPU" \
    --seed 3407 \\
    --prio 3 \
    --temp 0.6 \\
    --min-p 0,01 \
    --top-p 0.9 \
    -no-cnv \\
    --prompt "<|header_start|>user<|header_end|>\n\nErstelle das Flappy-Bird-Spiel in Python. Du musst Folgendes enthalten:\n1. Du musst pygame verwenden.\n2. Die Hintergrundfarbe sollte zufällig gewählt werden und ein heller Farbton sein. Beginne mit einer hellblauen Farbe.\n3. Wenn die LEERTASTE mehrmals gedrückt wird, beschleunigt sich der 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 einen Punktestand an. Erhöhe ihn, wenn du an Rohren vorbeikommst und sie nicht berührst.\n7. Erzeuge Rohre mit zufälligen Abständen und genügend Platz. Färbe sie zufällig dunkelgrün, hellbraun oder in einem dunklen Grauton.\n8. Wenn du verlierst, zeige den Bestwert an. Der Text soll innerhalb des Bildschirms stehen. Mit q oder Esc beendest du das Spiel. Ein 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 abschließenden Markdown-Abschnitt.<|eot|><|header_start|>assistant<|header_end|>\n\n"
```

{% endcode %}

{% hint style="info" %}
In Bezug auf das Testen konnten wir leider die vollständige BF16-Version (also unabhängig davon, ob quantisiert oder nicht) weder das Flappy-Bird-Spiel noch den Heptagon-Test ordnungsgemäß abschließen lassen. Wir haben viele Inferenzanbieter ausprobiert, mit und ohne imatrix, Quants anderer Leute verwendet und auch die normale Hugging-Face-Inferenz genutzt, und dieses Problem besteht weiterhin.

<mark style="background-color:green;">**Wir haben festgestellt, dass mehrere Durchläufe und das Bitten des Modells, Fehler zu beheben und zu finden, die meisten Probleme lösen!**</mark>
{% endhint %}

Für Llama 4 Maverick ist es am besten, 2 RTX 4090s (2 x 24 GB) zu haben

```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/Llama-4-Maverick-17B-128E-Instruct-GGUF",
    local_dir = "unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF",
    allow_patterns = ["*IQ1_S*"],
)
```

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \
    --model unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/UD-IQ1_S/Llama-4-Maverick-17B-128E-Instruct-UD-IQ1_S-00001-of-00003.gguf \\
    --threads 32 \\
    --ctx-size 16384 \
    --n-gpu-layers 99 \
    -ot ".ffn_.*_exps.=CPU" \
    --seed 3407 \\
    --prio 3 \
    --temp 0.6 \\
    --min-p 0,01 \
    --top-p 0.9 \
    -no-cnv \\
    --prompt "<|header_start|>user<|header_end|>\n\nErstelle das 2048-Spiel in Python.<|eot|><|header_start|>assistant<|header_end|>\n\n"
```

{% endcode %}

## :detective: Interessante Erkenntnisse und Probleme

Während der Quantisierung von Llama 4 Maverick (dem großen Modell) stellten wir fest, dass die 1., 3. und 45. MoE-Layer nicht korrekt kalibriert werden konnten. Maverick verwendet für jede ungerade Schicht ineinander verschachtelte MoE-Layer, also Dense->MoE->Dense und so weiter.

Wir haben versucht, unserer Kalibrierungsdatensatz mehr seltene Sprachen hinzuzufügen, und haben mehr Tokens (1 Million) im Vergleich zu Scouts 250K Tokens für die Kalibrierung verwendet, aber wir haben weiterhin Probleme festgestellt. Wir beschlossen, diese MoE-Layer auf 3 Bit und 4 Bit zu belassen.

<figure><img src="/files/6752496cd20361edf0543aeee67983e653aee1cf" alt=""><figcaption></figcaption></figure>

Für Llama 4 Scout stellten wir fest, dass wir die Vision-Layer nicht quantisieren sollten und den MoE-Router und einige andere Layer unquantisiert lassen sollten - wir laden diese hoch zu <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-dynamic-bnb-4bit>

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

Wir mussten außerdem `torch.nn.Parameter` zu `torch.nn.Linear` für die MoE-Layer umwandeln, damit eine 4-Bit-Quantisierung erfolgen kann. Das bedeutet auch, dass wir die allgemeine Hugging-Face-Implementierung neu schreiben und patchen mussten. Wir laden unsere quantisierten Versionen hoch zu <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-4bit> und <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-8bit> für 8 Bit.

<figure><img src="/files/533f1d16c4047b7643cb4507a20651dad042c2dd" alt="" width="375"><figcaption></figcaption></figure>

Llama 4 verwendet jetzt auch Chunked Attention – im Wesentlichen ist das Sliding-Window-Attention, aber etwas effizienter, da bei Tokens vor der 8192-Grenze nicht auf sie geachtet wird.


---

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