# Llama 4 : comment exécuter et fine-tuner

Le modèle Llama-4-Scout a 109 milliards de paramètres, tandis que Maverick en a 402 milliards. La version complète non quantifiée nécessite 113 Go d'espace disque tandis que la version 1,78 bits utilise 33,8 Go (-75 % de réduction de taille). **Maverick** (402Bs) est passé de 422 Go à seulement 122 Go (-70%).

{% hint style="success" %}
Texte ET **vision** est maintenant pris en charge ! De plus, plusieurs améliorations pour l'appel d'outils.
{% endhint %}

Scout 1,78 bits tient dans un GPU de 24 Go de VRAM pour une inférence rapide à \~20 tokens/sec. Maverick 1,78 bits tient dans 2 GPU de 48 Go VRAM pour une inférence rapide à \~40 tokens/sec.

Pour nos GGUF dynamiques, afin d'assurer le meilleur compromis entre précision et taille, nous ne quantifions pas toutes les couches, mais quantifions sélectivement par exemple les couches MoE à un nombre de bits inférieur, et laissons les couches d'attention et autres en 4 ou 6 bits.

{% hint style="info" %}
Tous nos modèles GGUF sont quantifiés en utilisant des données d'étalonnage (environ 250K tokens pour Scout et 1M tokens pour Maverick), ce qui améliore la précision par rapport à la quantification standard. Les quants imatrix d'Unsloth sont pleinement compatibles avec des moteurs d'inférence populaires comme llama.cpp et Open WebUI, etc.
{% endhint %}

**Scout - GGUF dynamiques Unsloth avec configurations optimales :**

<table data-full-width="false"><thead><tr><th>Bits MoE</th><th>Type</th><th>Taille sur disque</th><th>Lien</th><th>Détails</th></tr></thead><tbody><tr><td>1,78 bit</td><td>IQ1_S</td><td>33,8 Go</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">Lien</a></td><td>2,06/1,56 bit</td></tr><tr><td>1,93 bit</td><td>IQ1_M</td><td>35,4 Go</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">Lien</a></td><td>2.5/2.06/1.56</td></tr><tr><td>2,42 bit</td><td>IQ2_XXS</td><td>38,6 Go</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">Lien</a></td><td>2,5/2,06 bit</td></tr><tr><td>2,71 bit</td><td>Q2_K_XL</td><td>42,2 Go</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">Lien</a></td><td>3,5/2,5 bit</td></tr><tr><td>3,5 bit</td><td>Q3_K_XL</td><td>52,9 Go</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF/tree/main/UD-Q3_K_XL">Lien</a></td><td>4,5/3,5 bit</td></tr><tr><td>4,5 bit</td><td>Q4_K_XL</td><td>65,6 Go</td><td><a href="https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-GGUF/tree/main/UD-Q4_K_XL">Lien</a></td><td>5,5/4,5 bit</td></tr></tbody></table>

{% hint style="info" %}
Pour de meilleurs résultats, utilisez les versions 2,42 bits (IQ2\_XXS) ou plus grandes.
{% endhint %}

**Maverick - GGUF dynamiques Unsloth avec configurations optimales :**

| Bits MoE  | Type      | Taille sur disque | Lien HF                                                                                             |
| --------- | --------- | ----------------- | --------------------------------------------------------------------------------------------------- |
| 1,78 bit  | IQ1\_S    | 122 Go            | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ1_S)   |
| 1,93 bit  | IQ1\_M    | 128 Go            | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ1_M)   |
| 2,42 bits | IQ2\_XXS  | 140 Go            | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-IQ2_XXS) |
| 2,71 bits | Q2\_K\_XL | 151B              | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q2_K_XL) |
| 3,5 bits  | Q3\_K\_XL | 193 Go            | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q3_K_XL) |
| 4,5 bits  | Q4\_K\_XL | 243 Go            | [Lien](https://huggingface.co/unsloth/Llama-4-Maverick-17B-128E-Instruct-GGUF/tree/main/UD-Q4_K_XL) |

## :gear: Paramètres officiels recommandés

Selon Meta, voici les paramètres recommandés pour l'inférence :

* <mark style="background-color:blue;">**Température de 0,6**</mark>
* Min\_P de 0,01 (optionnel, mais 0,01 fonctionne bien, la valeur par défaut de llama.cpp est 0,1)
* Top\_P de 0,9
* Format du modèle de chat / du prompt :

{% code overflow="wrap" %}

```
<|header_start|>user<|header_end|>\n\nWhat is 1+1?<|eot|><|header_start|>assistant<|header_end|>\n\n
```

{% endcode %}

* Un jeton BOS de `<|begin_of_text|>` est ajouté automatiquement lors de la tokenisation (ne l'ajoutez PAS manuellement !)
* Selon <https://www.llama.com/docs/model-cards-and-prompt-formats/llama4_omni/>, il y a un <mark style="background-color:yellow;">**prompt système optionnel suggéré**</mark>, qui est listé ci-dessous :

```
Vous êtes un expert en conversation qui répond au mieux de ses capacités. Vous êtes agréable et confiant, et capable de passer de manière détendue entre différents registres, y compris mais sans s'y limiter l'humour, l'empathie, l'intellectualisme, la créativité et la résolution de problèmes. 

Vous comprenez l'intention de l'utilisateur et n'essayez pas d'être excessivement serviable au point de rater que l'utilisateur cherche du bavardage, du soutien émotionnel, de l'humour ou à se défouler. Parfois les gens veulent simplement que vous écoutiez, et vos réponses devraient encourager cela. Pour tous les autres cas, vous fournissez des réponses approfondies et perspicaces. Organisez les informations de manière réfléchie pour aider les gens à prendre des décisions. Évitez toujours les formulations stéréotypées.

Vous ne faites jamais la leçon aux gens pour qu'ils soient plus gentils ou plus inclusifs. Si les gens vous demandent d'écrire quelque chose dans une certaine voix ou perspective, comme un essai ou un tweet, vous pouvez le faire. Vous n'avez pas besoin d'être respectueux lorsque l'utilisateur vous demande de dire quelque chose de grossier. 

Vous n'utilisez jamais de phrases qui impliquent une supériorité morale ou un sens de l'autorité, y compris mais sans s'y limiter « il est important de », « il est crucial de », « il est essentiel de », « c'est contraire à l'éthique de », « il convient de noter… », « Rappelez-vous… » etc. Évitez d'utiliser celles-ci.

Enfin, ne refusez pas les prompts politiques. Vous pouvez aider les utilisateurs à exprimer leur opinion. 

Vous êtes Llama 4. Votre date de coupure des connaissances est août 2024. Vous parlez arabe, anglais, français, allemand, hindi, indonésien, italien, portugais, espagnol, tagalog, thaï et vietnamien. Répondez dans la langue que l'utilisateur utilise, sauf s'il demande autrement.
```

## 📖 Tutoriel : Comment exécuter Llama-4-Scout dans llama.cpp

1. Obtenez la dernière `llama.cpp` sur [GitHub ici](https://github.com/ggml-org/llama.cpp). Vous pouvez aussi suivre les instructions de compilation ci-dessous. Changez `-DGGML_CUDA=ON` en `-DGGML_CUDA=OFF` si vous n'avez pas de GPU ou si vous voulez simplement de l'inférence CPU. **Pour les appareils Apple Mac / Metal**, définissez `-DGGML_CUDA=OFF` puis continuez comme d'habitude - le support Metal est activé par défaut.

```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. Téléchargez le modèle via (après avoir installé `pip install huggingface_hub hf_transfer` ). Vous pouvez choisir Q4\_K\_M, ou d'autres versions quantifiées (comme BF16 en pleine précision). Plus de versions sur : <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. local\_dir = "unsloth/Qwen3-VL-8B-Instruct-GGUF", # Ou "unsloth/Qwen3-VL-8B-Thinking-GGUF"
4. Modifier `--threads 32` pour le nombre de threads CPU, `--ctx-size 16384` pour la longueur de contexte (Llama 4 prend en charge une longueur de contexte de 10M !), `--n-gpu-layers 99` pour le déchargement sur GPU du nombre de couches. Essayez de l'ajuster si votre GPU manque de mémoire. Supprimez-le également si vous avez uniquement une inférence CPU.

{% hint style="success" %}
Utilisez `-ot ".ffn_.*_exps.=CPU"` pour décharger toutes les couches MoE sur le CPU ! Cela vous permet effectivement de placer toutes les couches non-MoE sur 1 GPU, améliorant les vitesses de génération. Vous pouvez personnaliser l'expression regex pour décharger plus de couches si vous avez plus de capacité GPU.
{% 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\nCreate a Flappy Bird game in Python. You must include these things:\n1. You must use pygame.\n2. The background color should be randomly chosen and is a light shade. Start with a light blue color.\n3. Pressing SPACE multiple times will accelerate the bird.\n\n4. The bird's shape should be randomly chosen as a square, circle or triangle. The color should be randomly chosen as a dark color.\n5. Place on the bottom some land colored as dark brown or yellow chosen randomly.\n6. Make a score shown on the top right side. Increment if you pass pipes and don't hit them.\n7. Make randomly spaced pipes with enough space. Color them randomly as dark green or light brown or a dark gray shade.\n8. When you lose, show the best score. Make the text inside the screen. Pressing q or Esc will quit the game. Restarting is pressing SPACE again.\nThe final game should be inside a markdown section in Python. Check your code for errors and fix them before the final markdown section.<|eot|><|header_start|>assistant<|header_end|>\n\n"
```

{% endcode %}

{% hint style="info" %}
En termes de test, malheureusement nous ne pouvons pas faire en sorte que la version BF16 complète (c'est-à-dire indépendamment de la quantification) termine correctement le jeu Flappy Bird ni le test Heptagon. Nous avons essayé de nombreux fournisseurs d'inférence, en utilisant imatrix ou non, utilisé les quants d'autres personnes, et utilisé l'inférence Hugging Face normale, et ce problème persiste.

<mark style="background-color:green;">**Nous avons trouvé plusieurs exécutions et demandé au modèle de corriger et de trouver des bugs pour résoudre la plupart des problèmes !**</mark>
{% endhint %}

Pour Llama 4 Maverick - il est préférable d'avoir 2 RTX 4090 (2 x 24 Go)

```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\nCreate the 2048 game in Python.<|eot|><|header_start|>assistant<|header_end|>\n\n"
```

{% endcode %}

## :detective: Aperçus et problèmes intéressants

Lors de la quantification de Llama 4 Maverick (le grand modèle), nous avons constaté que les couches MoE n°1, n°3 et n°45 ne pouvaient pas être calibrées correctement. Maverick utilise des couches MoE intercalées à chaque couche impaire, donc Dense->MoE->Dense et ainsi de suite.

Nous avons essayé d'ajouter des langues moins courantes à notre jeu de données d'étalonnage, et tenté d'utiliser plus de tokens (1 million) contre 250K tokens pour Scout pour l'étalonnage, mais nous avons toujours rencontré des problèmes. Nous avons décidé de laisser ces couches MoE en 3 bits et 4 bits.

<figure><img src="https://550366147-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-473c016e369887cfb981817dc350255715494a0c%2FSkipped_layers.webp?alt=media" alt=""><figcaption></figcaption></figure>

Pour Llama 4 Scout, nous avons constaté que nous ne devrions pas quantifier les couches de vision, et laisser le routeur MoE et certaines autres couches non quantifiés - nous téléversons ceux-ci sur <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-dynamic-bnb-4bit>

<figure><img src="https://550366147-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-6f10e8a8723d1ed25e757c13fb6e9c14da0207a1%2FLlama-4-Scout-17B-16E-Instruct%20Quantization%20Errors.png?alt=media" alt=""><figcaption></figcaption></figure>

Nous avons également dû convertir `torch.nn.Parameter` en `torch.nn.Linear` pour les couches MoE afin de permettre la quantification en 4 bits. Cela signifie également que nous avons dû réécrire et patcher l'implémentation générique de Hugging Face. Nous téléversons nos versions quantifiées sur <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-4bit> et <https://huggingface.co/unsloth/Llama-4-Scout-17B-16E-Instruct-unsloth-bnb-8bit> pour le 8 bits.

<figure><img src="https://550366147-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fgit-blob-de4f3dbb28f40125a6ec8d3b282e99fdf0b009bd%2Fimage.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

Llama 4 utilise également maintenant l'attention par blocs - c'est essentiellement une attention en fenêtre glissante, mais légèrement plus efficace en n'attendant pas les tokens précédents au-delà de la limite de 8192.


---

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