# Grok 2

これで実行できます **Grok 2** （別名 Grok 2.5）、xAI の 2700億パラメータのモデルです。フル精度には **539GB**が必要ですが、Unsloth Dynamic 3-bit 版ではサイズがわずか **118GB** まで縮小されます（75%削減）。GGUF: [Grok-2-GGUF](https://huggingface.co/unsloth/grok-2-GGUF)

この **3-bit Q3\_K\_XL** モデルは単一の **128GB Mac** または **24GB VRAM + 128GB RAM**で動作し、 **5+ トークン/秒** の推論速度を達成します。llama.cpp チームとコミュニティが [Grok 2 をサポート](https://github.com/ggml-org/llama.cpp/pull/15539) し、これを可能にしてくれたことに感謝します。私たちも、その過程で少しでもお役に立ててうれしかったです！

すべてのアップロードは Unsloth [Dynamic 2.0](/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs.md) SOTA の 5-shot MMLU と KL Divergence の性能向上のため、量子化された Grok LLM を最小限の精度低下で実行できます。

<a href="#run-in-llama.cpp" class="button secondary">llama.cpp チュートリアルで実行</a>

## :gear: 推奨設定

3-bit の動的量子化は 118GB（126GiB）のディスク容量を使用します。これは 128GB RAM のユニファイドメモリ Mac、または 1x24GB カードと 128GB RAM の環境でうまく動作します。この 3-bit 量子化を実行するには、少なくとも 120GB の RAM を推奨します。

{% hint style="warning" %}
使用する必要があります `--jinja` Grok 2 用です。 `--jinja`
{% endhint %}

8-bit 量子化は約 300GB のサイズで、1x 80GB GPU（MoE レイヤーを RAM にオフロードした場合）に収まります。さらに 200GB の RAM があれば、この構成で約 5 トークン/秒が期待できます。生成速度を上げて、より長いコンテキストに対応する方法を学ぶには、 [こちらをお読みください](#improving-generation-speed).

{% hint style="info" %}
必須ではありませんが、最高の性能を得るには、VRAM + RAM の合計をダウンロードする量子化モデルのサイズと同じにしてください。そうでない場合でも、llama.cpp ではハードドライブ / SSD へのオフロードが動作しますが、推論速度は遅くなります。
{% endhint %}

### サンプリングパラメータ

* Grok 2 の最大コンテキスト長は 128K なので、 `131,072` コンテキスト以下を使用してください。
* 使用 `--jinja` llama.cpp バリアント向け

モデルを実行するための公式なサンプリングパラメータはないため、ほとんどのモデルでは標準のデフォルト値を使用できます:

* 次を設定してください <mark style="background-color:green;">**temperature = 1.0**</mark>
* <mark style="background-color:green;">**Min\_P = 0.01**</mark> （任意ですが、0.01 がよく機能します。llama.cpp のデフォルトは 0.1 です）

## Grok 2 チュートリアルを実行:

現在、Grok 2 を実行できるのは llama.cpp のみです。

### ✨ llama.cpp で実行

{% stepper %}
{% step %}
特定の `llama.cpp` Grok 2 用 PR を [GitHub こちら](https://github.com/ggml-org/llama.cpp/pull/15539)から取得してください。以下のビルド手順に従うこともできます。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。 **Apple Mac / Metal デバイスの場合**、次を設定して `-DGGML_CUDA=OFF` その後は通常どおり続けてください - Metal サポートは既定で有効です。

```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 %}
もし `llama.cpp` モデルを直接読み込むには、以下の方法を使えます（:Q3\_K\_XL は量子化タイプです）。Hugging Face 経由でダウンロードすることもできます（ポイント 3）。これは `ollama run` に似ています。使用 `export LLAMA_CACHE="folder"` して `llama.cpp` 特定の場所に保存するよう強制できます。モデルの最大コンテキスト長は 128K のみであることを覚えておいてください。

{% hint style="info" %}
ぜひ試してみてください `-ot ".ffn_.*_exps.=CPU"` すべての MoE レイヤーを CPU にオフロードします！これにより、非 MoE レイヤーを 1 枚の GPU に収められるようになり、生成速度が向上します。GPU 容量がさらにある場合は、正規表現を調整してより多くのレイヤーを収めることができます。

GPU メモリがもう少し多い場合は、試してみてください `-ot ".ffn_(up|down)_exps.=CPU"` これにより、アップ投影とダウン投影の MoE レイヤーがオフロードされます。

試してみてください `-ot ".ffn_(up)_exps.=CPU"` GPU メモリがさらに多い場合は、これを使ってください。これにより、アップ投影の MoE レイヤーのみがオフロードされます。

そして最後に、 `-ot ".ffn_.*_exps.=CPU"` を使ってすべてのレイヤーをオフロードします。

これは最も少ない VRAM を使用します。 `正規表現をカスタマイズすることもできます。例えば` -ot "\\.(6|7|8|9|\[0-9]\[0-9]|\[0-9]\[0-9]\[0-9])\\.ffn\_(gate|up|down)\_exps.=CPU"
{% 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 %}
モデルのダウンロード（ `pip install huggingface_hub hf_transfer` のインストール後）。 `UD-Q3_K_XL` （dynamic 3-bit quant）や、次のような他の量子化版 `Q4_K_M` 私たちは <mark style="background-color:green;">**当社の 2.7bit 動的量子化版の使用を推奨します**</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;">**以上を試して、サイズと精度のバランスを取ってください**</mark>.

```python
# !pip install huggingface_hub hf_transfer
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # レート制限されることがあるので、無効化するには 0 に設定
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*"], # Dynamic 3bit
)
```

{% endstep %}

{% step %}
編集できます `--threads 32` CPU スレッド数を `--ctx-size 16384` コンテキスト長を `--n-gpu-layers 2` GPU オフロードする層数を指定します。GPU のメモリ不足になる場合は調整してみてください。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 %}

## モデルのアップロード

**すべてのアップロード** - そのうち imatrix ベースでも動的でもないものも含め、会話・コーディング・言語タスクに特化して最適化されたキャリブレーションデータセットを利用しています。

| MoE ビット数 | 種類 + リンク                                                                            | ディスクサイズ     | 詳細            |
| -------- | ----------------------------------------------------------------------------------- | ----------- | ------------- |
| 1.66bit  | [TQ1\_0](https://huggingface.co/unsloth/grok-2-GGUF/blob/main/grok-2-UD-TQ1_0.gguf) | **81.8 GB** | 1.92/1.56bit  |
| 1.78bit  | [IQ1\_S](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ1_S)             | **88.9 GB** | 2.06/1.56bit  |
| 1.93bit  | [IQ1\_M](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ1_M)             | **94.5 GB** | 2.5/2.06/1.56 |
| 2.42bit  | [IQ2\_XXS](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ2_XXS)         | **99.3 GB** | 2.5/2.06bit   |
| 2.71bit  | [Q2\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q2_K_XL)        | **112 GB**  | 3.5/2.5bit    |
| 3.12bit  | [IQ3\_XXS](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-IQ3_XXS)         | **117 GB**  | 3.5/2.06bit   |
| 3.5bit   | [Q3\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q3_K_XL)        | **126 GB**  | 4.5/3.5bit    |
| 4.5bit   | [Q4\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q4_K_XL)        | **155 GB**  | 5.5/4.5bit    |
| 5.5bit   | [Q5\_K\_XL](https://huggingface.co/unsloth/grok-2-GGUF/tree/main/UD-Q5_K_XL)        | **191 GB**  | 6.5/5.5bit    |

## :snowboarder: 生成速度の改善

VRAM がさらにある場合は、より多くの MoE レイヤーをオフロードするか、レイヤー全体をオフロードすることができます。

通常、 `-ot ".ffn_.*_exps.=CPU"` すべての MoE レイヤーを CPU にオフロードします！これにより、非 MoE レイヤーを 1 枚の GPU に収められるようになり、生成速度が向上します。GPU 容量がさらにある場合は、正規表現を調整してより多くのレイヤーを収めることができます。

GPU メモリがもう少し多い場合は、試してみてください `-ot ".ffn_(up|down)_exps.=CPU"` これにより、アップ投影とダウン投影の MoE レイヤーがオフロードされます。

試してみてください `-ot ".ffn_(up)_exps.=CPU"` GPU メモリがさらに多い場合は、これを使ってください。これにより、アップ投影の MoE レイヤーのみがオフロードされます。

これは最も少ない VRAM を使用します。 `正規表現をカスタマイズすることもできます。例えば` -ot "\\.(6|7|8|9|\[0-9]\[0-9]|\[0-9]\[0-9]\[0-9])\\.ffn\_(gate|up|down)\_exps.=CPU"

この [最新の llama.cpp リリース](https://github.com/ggml-org/llama.cpp/pull/14363) は高スループットモードも導入します。次を使用してください `llama-parallel`。詳細は [こちら](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel)。また **KV キャッシュを 4bit に量子化することもできます** たとえば、VRAM / RAM 間の移動を減らし、生成処理をさらに高速化できます。

## 📐長いコンテキストを収める方法（フル 128K）

より長いコンテキストを収めるには、 **KV キャッシュ量子化** を使って K と V のキャッシュをより低いビットに量子化できます。これにより、RAM / VRAM のデータ移動が減るため、生成速度も向上します。K の量子化で許可されるオプション（デフォルトは `f16`）は以下を含みます。

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

多少の精度向上のために `_1` 版を使うべきですが、少し遅くなります。例： `q4_1, q5_1`

V キャッシュも量子化できますが、 **Flash Attention サポート付きで llama.cpp をコンパイルする必要があります** を `-DGGML_CUDA_FA_ALL_QUANTS=ON`で有効化し、 `--flash-attn` を使って有効にします。その後、 `--cache-type-k` :

`と一緒に、--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 を使用できます`


---

# 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/jp/moderu/tutorials/grok-2.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.
