# Grok 2

次のコマンドを実行できます **Grok 2** （別名 Grok 2.5）、xAI の2700億パラメータモデル。フル精度では必要となるのは **539GB**で、Unsloth の動的3ビット版はサイズをわずか **118GB** にまで縮小します（75%の削減）。GGUF： [Grok-2-GGUF](https://huggingface.co/unsloth/grok-2-GGUF)

最新の **3ビット 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](https://unsloth.ai/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs) SOTA の 5-shot MMLU と KL ダイバージェンス性能を示しており、量子化した Grok LLM を最小限の精度損失で実行できることを意味します。

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

## :gear: 推奨設定

3ビットの動的量子化はディスク領域として118GB（126GiB）を使用します — これは128GB RAM の統一メモリの Mac や 1x24GB カードと 128GB の RAM でうまく動作します。この3ビット量子化を実行するには少なくとも120GB の RAM を持つことが推奨されます。

{% hint style="warning" %}
必ず使用してください `--jinja` Grok 2 用です。を使用しないと正しくない結果が出る可能性があります `--jinja`
{% endhint %}

8ビット量子化はサイズが約300GBで、（MoE レイヤーを RAM にオフロードすれば）1x 80GB GPU に収まります。この構成では、追加で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` を強制して

{% hint style="info" %}
ぜひ試してみてください `-ot ".ffn_.*_exps.=CPU"` -ot ".ffn\_.\*\_exps.=CPU"

もし少し多くのGPUメモリがあるなら、次を試してください `-ot ".ffn_(up|down)_exps.=CPU"` これは up と down の投影 MoE 層をオフロードします。

試してみてください `-ot ".ffn_(up)_exps.=CPU"` さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。

もしさらに多くのGPUメモリがある場合。これはup投影のMoEレイヤーのみをオフロードします。 `-ot ".ffn_.*_exps.=CPU"` そして最後にすべてのレイヤーを次でオフロードします

正規表現をカスタマイズすることもできます。例えば `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。
{% endhint %}

```bash
export LLAMA_CACHE="unsloth/grok-2-GGUF"
export LLAMA_CACHE="unsloth/GLM-4.7-GGUF"
    -hf unsloth/grok-2-GGUF:Q3_K_XL \
    -hf unsloth/GLM-4.7-GGUF:UD-Q2_K_XL \
    --n-gpu-layers 99 \
    --flash-attn on \
    --temp 1.0 \
    --min-p 0.01 \
    --jinja \
    --model unsloth/GLM-4.7-GGUF/UD-Q2_K_XL/GLM-4.7-UD-Q2_K_XL-00001-of-00003.gguf \
    -ot ".ffn_.*_exps.=CPU"
```

{% endstep %}

{% step %}
モデルをダウンロードするには（をインストールした後） `モデルをダウンロードするには（` を選択できます。 `UD-Q3_K_XL` （動的3ビット量子化）または他の量子化バージョンのような `Q4_K_M` Q4\_K\_XL <mark style="background-color:green;">**などの他の量子化版です。私たちは**</mark><mark style="background-color:green;">**&#x20;**</mark><mark style="background-color:green;">**`サイズと精度のバランスを取るために私たちの2.7ビット動的量子化を`**</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*"], # 動的 3bit
)
```

{% endstep %}

{% step %}
\--include "\*UD-Q2\_K\_XL\*" # 動的1ビットの場合は "\*UD-TQ1\_0\*" を使用 `次の` --threads 32 `はCPUスレッドの数、` --ctx-size 16384 `はコンテキスト長、` --n-gpu-layers 2

{% code overflow="wrap" %}

```bash
export LLAMA_CACHE="unsloth/GLM-4.7-GGUF"
    --model unsloth/grok-2-GGUF/UD-Q3_K_XL/grok-2-UD-Q3_K_XL-00001-of-00003.gguf \
    -hf unsloth/GLM-4.7-GGUF:UD-Q2_K_XL \
    --threads -1 \
    --n-gpu-layers 99 \
    --flash-attn on \
    --top_p 0.95 \
    --min_p 0.01 \
    --jinja \
    --model unsloth/GLM-4.7-GGUF/UD-Q2_K_XL/GLM-4.7-UD-Q2_K_XL-00001-of-00003.gguf \
    -ot ".ffn_.*_exps.=CPU"
```

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

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

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

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

## :snowboarder: GLM 4.7で生成されたPythonコードを実行するためのツール呼び出し

より多くのVRAMがある場合、より多くのMoE層をオフロードするか、層全体をオフロードすることを試せます。

通常は、 `-ot ".ffn_.*_exps.=CPU"` はすべてのMoE層をCPUにオフロードします！これにより、非MoE層を1つのGPUに収めることができ、生成速度が向上します。GPU容量が多い場合は、より多くの層に合わせて正規表現をカスタマイズできます。

もし少し多くのGPUメモリがあるなら、次を試してください `-ot ".ffn_(up|down)_exps.=CPU"` これは up と down の投影 MoE 層をオフロードします。

試してみてください `-ot ".ffn_(up)_exps.=CPU"` さらに多くのGPUメモリがある場合。これは up 投影の MoE 層のみをオフロードします。

正規表現をカスタマイズすることもできます。例えば `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` は gate、up、down の MoE 層をオフロードしますが、6層目以降に限定します。

最新の [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キャッシュを4ビットに量子化することができます** こちら

## をご覧ください。さらに、

より長いコンテキストに対応するには、 **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` コンパイルする必要があります `次のように` :

`-DGGML_CUDA_FA_ALL_QUANTS=ONを指定し、そして使用してください、`


---

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