> 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/fr/modeles/tutorials/grok-2.md).

# Grok 2

Exécutez le modèle Grok 2 de xAI localement !

Vous pouvez désormais exécuter **Grok 2** (alias Grok 2.5), le modèle de 270 milliards de paramètres d'xAI. La précision complète nécessite **539 Go**, tandis que la version dynamique 3 bits d'Unsloth réduit la taille à seulement **118 Go** (soit une réduction de 75 %). GGUF : [Grok-2-GGUF](https://huggingface.co/unsloth/grok-2-GGUF)

Le **Q3\_K\_XL 3 bits** s'exécute sur un seul **Mac 128 Go** ou **24 Go de VRAM + 128 Go de RAM**, atteignant **plus de 5 jetons/s** d'inférence. Merci à l'équipe et à la communauté llama.cpp pour [avoir pris en charge Grok 2](https://github.com/ggml-org/llama.cpp/pull/15539) et d'avoir rendu cela possible. Nous avons également été ravis d'avoir pu aider un peu en chemin !

Tous les téléversements utilisent Unsloth [Dynamic 2.0](/docs/fr/notions-de-base/dynamic-3.0-ggufs.md) pour des performances SOTA en MMLU 5-shot et en divergence KL, ce qui signifie que vous pouvez exécuter des LLM Grok quantifiés avec une perte de précision minimale.

<a href="#run-in-llama.cpp" class="button secondary">Tutoriel d'exécution dans llama.cpp</a>

## :gear: Paramètres recommandés

La quantification dynamique 3 bits utilise 118 Go (126 Gio) d'espace disque - cela fonctionne bien sur un Mac à mémoire unifiée de 128 Go de RAM ou sur une carte 1x24 Go avec 128 Go de RAM. Il est recommandé d'avoir au moins 120 Go de RAM pour exécuter cette quantification 3 bits.

{% hint style="warning" %}
Vous devez utiliser `--jinja` pour Grok 2. Vous pourriez obtenir des résultats incorrects si vous n'utilisez pas `--jinja`
{% endhint %}

La quantification 8 bits pèse environ 300 Go et tiendra sur un GPU 1x 80 Go (avec les couches MoE déchargées vers la RAM). Attendez-vous à environ 5 jetons/s avec cette configuration si vous disposez aussi de 200 Go de RAM supplémentaires. Pour apprendre à augmenter la vitesse de génération et à prendre en charge des contextes plus longs, [lisez ici](#improving-generation-speed).

{% hint style="info" %}
Bien que cela ne soit pas indispensable, pour de meilleures performances, faites en sorte que votre VRAM + RAM combinées soient égales à la taille de la quantification que vous téléchargez. Sinon, le déchargement vers le disque dur / SSD fonctionnera avec llama.cpp, mais l'inférence sera plus lente.
{% endhint %}

### Paramètres d'échantillonnage

* Grok 2 a une longueur de contexte maximale de 128 K, utilisez donc `131,072` de contexte ou moins.
* Utilisez `--jinja` pour les variantes llama.cpp

Il n'existe pas de paramètres d'échantillonnage officiels pour exécuter le modèle, vous pouvez donc utiliser les valeurs par défaut standard pour la plupart des modèles :

* Définissez <mark style="background-color:green;">**température = 1.0**</mark>
* <mark style="background-color:green;">**Min\_P = 0,01**</mark> (facultatif, mais 0,01 fonctionne bien, la valeur par défaut de llama.cpp est 0,1)

## Tutoriel pour exécuter Grok 2 :

Actuellement, vous pouvez uniquement exécuter Grok 2 dans llama.cpp.

### ✨ Exécuter dans llama.cpp

{% stepper %}
{% step %}
Installez le `llama.cpp` PR spécifique pour Grok 2 sur [GitHub ici](https://github.com/ggml-org/llama.cpp/pull/15539). Vous pouvez également suivre les instructions de compilation ci-dessous. Modifiez `-DGGML_CUDA=ON` à `-DGGML_CUDA=OFF` si vous n'avez pas de GPU ou si vous souhaitez simplement une inférence CPU. **Pour les appareils Apple Mac / Metal**, définissez `-DGGML_CUDA=OFF` puis continuez comme d'habitude - la prise en charge de Metal est activée 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
cd llama.cpp && git fetch origin pull/15539/head:MASTER && git checkout MASTER && cd ..
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-quantize llama-cli llama-gguf-split llama-mtmd-cli llama-server
cp llama.cpp/build/bin/llama-* llama.cpp
```

{% endstep %}

{% step %}
Si vous souhaitez utiliser `llama.cpp` directement pour charger des modèles, vous pouvez faire ce qui suit : (:Q3\_K\_XL) est le type de quantification. Vous pouvez aussi télécharger via Hugging Face (point 3). C'est similaire à `ollama run` . Utilisez `export LLAMA_CACHE="folder"` pour forcer `llama.cpp` pour enregistrer vers un emplacement spécifique. Rappelez-vous que le modèle ne dispose que d'une longueur de contexte maximale de 128K.

{% hint style="info" %}
Veuillez essayer `-ot ".ffn_.*_exps.=CPU"` pour décharger toutes les couches MoE sur le CPU ! Cela vous permet en pratique de faire tenir toutes les couches non-MoE sur 1 GPU, améliorant ainsi les vitesses de génération. Vous pouvez personnaliser l'expression regex pour faire tenir davantage de couches si vous disposez de plus de capacité GPU.

Si vous avez un peu plus de mémoire GPU, essayez `-ot ".ffn_(up|down)_exps.=CPU"` Cela décharge les couches MoE de projection ascendante et descendante.

Essayez `-ot ".ffn_(up)_exps.=CPU"` si vous avez encore plus de mémoire GPU. Cela décharge uniquement les couches MoE de projection ascendante.

Et enfin, déchargez toutes les couches via `-ot ".ffn_.*_exps.=CPU"` Cela utilise le moins de VRAM.

Vous pouvez aussi personnaliser l'expression regex, par exemple `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` signifie décharger les couches MoE gate, up et down, mais seulement à partir de la 6e couche.
{% endhint %}

```bash
export LLAMA_CACHE="unsloth/grok-2-GGUF"
./llama.cpp/llama-cli \
    -hf unsloth/grok-2-GGUF:Q3_K_XL \\
    --jinja \
    --n-gpu-layers 99 \
    --temp 1.0 \
    --top-p 0.95 \
    --min-p 0.01 \
    --ctx-size 16384 \
    --seed 3407 \
    -ot ".ffn_.*_exps.=CPU"
```

{% endstep %}

{% step %}
Téléchargez le modèle via (après avoir installé `pip install huggingface_hub hf_transfer` ). Vous pouvez choisir `UD-Q3_K_XL` (quantification dynamique 3 bits) ou d'autres versions quantifiées comme `Q4_K_M` . Nous <mark style="background-color:green;">**recommandons d'utiliser notre quantification dynamique 2,7 bits**</mark><mark style="background-color:green;">**&#x20;**</mark><mark style="background-color:green;">**`UD-Q2_K_XL`**</mark><mark style="background-color:green;">**&#x20;**</mark><mark style="background-color:green;">**ou supérieur pour équilibrer taille et précision**</mark>.

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # Cela peut parfois entraîner des limites de débit, donc mettez à 0 pour désactiver
from huggingface_hub import snapshot_download
snapshot_download(
    repo_id = "unsloth/grok-2-GGUF",
    local_dir = "unsloth/grok-2-GGUF",
    allow_patterns = ["*UD-Q3_K_XL*"], # Quantification dynamique 3 bits
)
```

{% endstep %}

{% step %}
Vous pouvez modifier `--threads 32` pour le nombre de threads CPU, `--ctx-size 16384` pour la longueur de contexte, `--n-gpu-layers 2` pour le déchargement GPU de combien de couches. Essayez de l'ajuster si votre GPU manque de mémoire. Supprimez-le aussi si vous faites une inférence uniquement CPU.

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \
    --model unsloth/grok-2-GGUF/UD-Q3_K_XL/grok-2-UD-Q3_K_XL-00001-of-00003.gguf \\
    --jinja \
    --threads -1 \\
    --n-gpu-layers 99 \
    --temp 1.0 \
    --top-p 0.95 \
    --min-p 0.01 \
    --ctx-size 16384 \
    --seed 3407 \
    -ot ".ffn_.*_exps.=CPU"
```

{% endcode %}
{% endstep %}
{% endstepper %}

## Téléversements de modèles

**TOUS nos téléversements** - y compris ceux qui ne sont pas basés sur imatrix ou dynamiques, utilisent notre jeu de données d'étalonnage, spécialement optimisé pour les tâches conversationnelles, de codage et de langue.

| Bits MoE | Type + Lien                                                                         | Taille sur disque | Détails       |
| -------- | ----------------------------------------------------------------------------------- | ----------------- | ------------- |
| 1,66 bit | [TQ1\_0](https://huggingface.co/unsloth/grok-2-GGUF/blob/main/grok-2-UD-TQ1_0.gguf) | **81,8 Go**       | 1,92/1,56 bit |
| 1,78 bit | [IQ1\_S](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ1_S)             | **88,9 Go**       | 2,06/1,56 bit |
| 1,93 bit | [IQ1\_M](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ1_M)             | **94,5 Go**       | 2.5/2.06/1.56 |
| 2,42 bit | [IQ2\_XXS](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ2_XXS)         | **99,3 Go**       | 2,5/2,06 bit  |
| 2,71 bit | [Q2\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q2_K_XL)        | **112 Go**        | 3,5/2,5 bit   |
| 3,12 bit | [IQ3\_XXS](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ3_XXS)         | **117 Go**        | 3,5/2,06 bit  |
| 3,5 bit  | [Q3\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q3_K_XL)        | **126 Go**        | 4,5/3,5 bit   |
| 4,5 bit  | [Q4\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q4_K_XL)        | **155 Go**        | 5,5/4,5 bit   |
| 5,5 bit  | [Q5\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q5_K_XL)        | **191 Go**        | 6,5/5,5 bit   |

## :snowboarder: Améliorer la vitesse de génération

Si vous avez plus de VRAM, vous pouvez essayer de décharger davantage de couches MoE, ou de décharger des couches entières elles-mêmes.

Normalement, `-ot ".ffn_.*_exps.=CPU"` décharge toutes les couches MoE sur le CPU ! Cela vous permet en pratique de faire tenir toutes les couches non-MoE sur 1 GPU, améliorant ainsi les vitesses de génération. Vous pouvez personnaliser l'expression regex pour faire tenir davantage de couches si vous avez plus de capacité GPU.

Si vous avez un peu plus de mémoire GPU, essayez `-ot ".ffn_(up|down)_exps.=CPU"` Cela décharge les couches MoE de projection ascendante et descendante.

Essayez `-ot ".ffn_(up)_exps.=CPU"` si vous avez encore plus de mémoire GPU. Cela décharge uniquement les couches MoE de projection ascendante.

Vous pouvez aussi personnaliser l'expression regex, par exemple `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` signifie décharger les couches MoE gate, up et down, mais seulement à partir de la 6e couche.

Le [dernière version de llama.cpp](https://github.com/ggml-org/llama.cpp/pull/14363) introduit également le mode haut débit. Utilisez `llama-parallel`. En savoir plus à ce sujet [ici](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel). Vous pouvez aussi **quantifier le cache KV en 4 bits** par exemple pour réduire les mouvements VRAM / RAM, ce qui peut aussi accélérer le processus de génération.

## 📐Comment gérer un long contexte (128K complet)

Pour gérer un contexte plus long, vous pouvez utiliser **quantification du cache KV** pour quantifier les caches K et V sur moins de bits. Cela peut aussi augmenter la vitesse de génération grâce à la réduction des transferts de données RAM / VRAM. Les options autorisées pour la quantification K (la valeur par défaut est `f16`) sont les suivantes.

`--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1`

Vous devriez utiliser les `_1` variantes pour une précision légèrement améliorée, même si c'est un peu plus lent. Par ex. `q4_1, q5_1`

Vous pouvez aussi quantifier le cache V, mais vous devrez **compiler llama.cpp avec la prise en charge de Flash Attention** via la prise en charge `-DGGML_CUDA_FA_ALL_QUANTS=ON`, et utiliser `--flash-attn` pour l'activer. Vous pouvez ensuite l'utiliser avec `--cache-type-k` :

`--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1`


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://unsloth.ai/docs/fr/modeles/tutorials/grok-2.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
