# Kimi K2 Thinking: ローカル実行ガイド

{% hint style="success" %}
Kimi-K2-Thinking がリリースされました。私たちの [Thinking ガイド](#kimi-k2-thinking-guide) を読むか [ここで GGUF を入手](https://huggingface.co/unsloth/Kimi-K2-Thinking-GGUF).

また、Kimi チームと共同で [**システムプロンプトの修正**](#tokenizer-quirks-and-bug-fixes) を Kimi-K2-Thinking 向けに行いました。
{% endhint %}

Kimi-K2 と **Kimi-K2-Thinking** は、知識、推論、コーディング、エージェント的タスクでSOTA性能を達成します。Moonshot AI の完全な1Tパラメータモデルは 1.09TB のディスク容量を必要としますが、量子化された **Unsloth Dynamic 1.8-bit** 版ではこれがわずか 230GB（サイズ -80%）になりま&#x3059;**:** [**Kimi-K2-GGUF**](https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF)

さらに今では私たちの [**Kimi-K2-Thinking** GGUF](https://huggingface.co/unsloth/Kimi-K2-Thinking-GGUF).

すべてのアップロードは Unsloth [Dynamic 2.0](/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs.md) を SOTA 向けに実行できます [Aider Polyglot](/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs/unsloth-dynamic-ggufs-on-aider-polyglot.md) および 5-shot MMLU の性能で。Dynamic 1〜2 bit GGUF が [コーディングベンチマークでどう動作するかはこちら](/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs/unsloth-dynamic-ggufs-on-aider-polyglot.md).

<a href="#kimi-k2-thinking-guide" class="button primary">Thinking を実行</a><a href="#kimi-k2-instruct-guide" class="button primary">Instruct を実行</a>

### :gear: 推奨要件

{% hint style="info" %}
必要なのは **247GB のディスク容量** で 1bit 量子化を実行することです！

唯一の要件は **`ディスク容量 + RAM + VRAM ≥ 247GB`**&#x3067;す。つまり、モデルを実行するのにそれほど多くの RAM や VRAM（GPU）は必要ありませんが、その分かなり遅くなります。
{% endhint %}

1.8-bit（UD-TQ1\_0）量子化は 1x 24GB GPU に収まります（すべての MoE レイヤーはシステム RAM または高速ディスクへオフロード）。さらに 256GB の RAM があれば、この構成で約 1〜2 tokens/s が見込めます。完全版の Kimi K2 Q8 量子化はサイズが 1.09TB で、少なくとも 8 x H200 GPU が必要です。

最適な性能を得るには少なくとも **247GB のユニファイドメモリ、または 247GB の RAM+VRAM 合計** で 5+ tokens/s が必要です。RAM+VRAM 合計が 247GB 未満の場合、モデル速度は確実に低下します。

**RAM+VRAM が 247GB なくても大丈夫です！** llama.cpp には本来 **ディスクオフロード**があるため、mmap によって動作はします。ただし遅くなります。たとえば以前は 5〜10 tokens/秒 出ていたものが、今では 1 token 未満になります。

私たちの **UD-Q2\_K\_XL（360GB）** 量子化を使って、サイズと精度のバランスを取りましょう！

{% hint style="success" %}
最高の性能を得るには、VRAM + RAM の合計をダウンロードする量子化のサイズに合わせてください。そうでなくてもディスクオフロードで動作しますが、その場合は遅くなります！
{% endhint %}

## 💭Kimi-K2-Thinking ガイド

Kimi-K2-Thinking は、設定やチャットテンプレートなどいくつかの重要な違いはあるものの、基本的には Instruct モデルと同じ指示に従うべきです。

{% hint style="success" %}
**モデルを完全精度で実行するには、4-bit または 5-bit の Dynamic GGUF（例: UD\_Q4\_K\_XL）を使うだけで十分です。元々モデルが INT4 形式で公開されているためです。**

小さな量子化差異に備えて念のためより高ビットの量子化を選ぶこともできますが、ほとんどの場合は不要です。
{% endhint %}

### 🌙 公式推奨設定:

によると [Moonshot AI](https://huggingface.co/moonshotai/Kimi-K2-Thinking)による、Kimi-K2-Thinking 推論の推奨設定は次のとおりです:

* 次を設定してください <mark style="background-color:green;">**temperature 1.0**</mark> 重複や不整合を減らすため。
* 推奨コンテキスト長 = 98,304（最大 256K）
* 注: 使用するツールによって設定が異なる場合があります

{% hint style="info" %}
次の設定を推奨します <mark style="background-color:green;">**min\_p を 0.01 に**</mark> することで、確率の低い起こりにくいトークンの出現を抑えます。
{% endhint %}

たとえばユーザーメッセージが「1+1 は？」の場合、次のようになります:

{% code overflow="wrap" %}

```
<|im_system|>system<|im_middle|>あなたは Moonshot AI によって作成された AI アシスタント、Kimi です。<|im_end|><|im_user|>user<|im_middle|>1+1 は？<|im_end|><|im_assistant|>assistant<|im_middle|>
```

{% endcode %}

### ✨ llama.cpp で Kimi K2 Thinking を実行

{% hint style="success" %}
最新アップデートの [llama.cpp](https://github.com/ggml-org/llama.cpp) を使ってモデルを実行できるようになりました:
{% endhint %}

1. 最新の `llama.cpp` を [GitHub こちら](https://github.com/ggml-org/llama.cpp)から取得してください。以下のビルド手順に従うこともできます。 `-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
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
cp llama.cpp/build/bin/llama-* llama.cpp
```

2. もし `llama.cpp` モデルを直接読み込むには、以下のようにできます。(:UD-TQ1\_0) は量子化タイプです。Hugging Face（ポイント3）経由でもダウンロードできます。これは次と同様です: `ollama run` に似ています。使用 `export LLAMA_CACHE="folder"` して `llama.cpp` 特定の場所に保存するために。

```bash
export LLAMA_CACHE="unsloth/Kimi-K2-Thinking-GGUF"
./llama.cpp/llama-cli \\
    -hf unsloth/Kimi-K2-Thinking-GGUF:UD-TQ1_0 \\
    --n-gpu-layers 99 \\
    --temp 1.0 \
    --min-p 0.01 \\
    --ctx-size 16384 \\
    --seed 3407 \\
    -ot ".ffn_.*_exps.=CPU"
```

3. 上記では GPU メモリを約 8GB 使用します。GPU メモリの合計が約 360GB ある場合は、 `-ot ".ffn_.*_exps.=CPU"` を削除して

{% 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 %}

3. モデルのダウンロード（ `pip install huggingface_hub hf_transfer` 最大速度を得てください！ [）。サイズと精度のバランスを取るために、2bit dynamic quant の UD-Q2\_K\_XL を使うことを推奨します。全バージョンはこちら:](https://huggingface.co/unsloth/Kimi-K2-Thinking-GGUF)

{% code overflow="wrap" %}

```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/Kimi-K2-Thinking-GGUF",
    local_dir = "unsloth/Kimi-K2-Thinking-GGUF",
    allow_patterns = ["*UD-TQ1_0*"], # Dynamic 2bit（381GB）には "*UD-Q2_K_XL*" を使用
)
```

{% endcode %}

{% hint style="info" %}
ダウンロードが 90〜95% で止まるようなら、次を参照してください <https://docs.unsloth.ai/basics/troubleshooting-and-faqs#downloading-gets-stuck-at-90-to-95>
{% endhint %}

4. 任意のプロンプトを実行。
5. 編集 `--threads -1` CPU スレッド数用（デフォルトでは CPU の最大スレッド数に設定されています）、 `--ctx-size 16384` コンテキスト長を `--n-gpu-layers 99` GPU オフロードするレイヤー数用です。MoE の CPU オフロードと組み合わせて 99 に設定すると最良の性能になります。GPU メモリ不足になったら調整してください。CPU のみで推論する場合はこれも削除してください。

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \\
    --model unsloth/Kimi-K2-Thinking-GGUF/UD-TQ1_0/Kimi-K2-Thinking-UD-TQ1_0-00001-of-00006.gguf \\
    --n-gpu-layers 99 \\
    --temp 1.0 \
    --min-p 0.01 \\
    --ctx-size 16384 \\
    --seed 3407 \\
    -ot ".ffn_.*_exps.=CPU"
```

{% endcode %}

### :thinking:**Thinking タグがない？**

実行時に *thinking* タグが存在しないことに気づくかもしれません。これは正常で、意図された挙動です。

あなたの `llama.cpp` スクリプトでは、必ずコマンドの最後に `--special` フラグを含めてください。そうすると、 `<think>` トークンが期待どおりに表示されます。

各回答の末尾が `<|im_end|>`で終わるのを目にすることもあるかもしれません。これは正常です。 `<|im_end|>` は特殊トークンで、特殊トークンを表示したときに現れます。非表示にしたい場合は、設定で `<|im_end|>` を停止文字列として設定できます。

### ✨ llama-server と OpenAI の completion ライブラリでデプロイ

に従って llama.cpp をインストールした後、以下を使って OpenAI 互換サーバーを起動できます: [#run-kimi-k2-thinking-in-llama.cpp](#run-kimi-k2-thinking-in-llama.cpp "mention")、以下を使って OpenAI 互換サーバーを起動できます:

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-server \\
    --model unsloth/Kimi-K2-Thinking-GGUF/UD-TQ1_0/Kimi-K2-Thinking-UD-TQ1_0-00001-of-00006.gguf \\
    --alias "unsloth/Kimi-K2-Thinking" \\
    -fa on \\
    --n-gpu-layers 999 \\
    -ot ".ffn_.*_exps.=CPU" \
    --min-p 0.01 \\
    --ctx-size 16384 \\
    --port 8001 \\
    --jinja
```

{% endcode %}

その後、OpenAI の Python ライブラリを使います `pip install openai` :

```python
from openai import OpenAI
openai_client = OpenAI(
    base_url = "http://127.0.0.1:8001/v1",
    api_key = "sk-no-key-required",
)
completion = openai_client.chat.completions.create(
    model = "unsloth/Kimi-K2-Thinking",
    messages = [{"role": "user", "content": "What is 2+2?"},],
)
print(completion.choices[0].message.content)
```

## :mag:トークナイザーの癖とバグ修正

**2025年11月7日: Kimi チームに通知し、** `あなたは Moonshot AI によって作成された AI アシスタント、Kimi です。` **が最初のユーザープロンプトで表示されない問題を修正しました！** 参照 <https://huggingface.co/moonshotai/Kimi-K2-Thinking/discussions/12>

問い合わせへの非常に迅速な対応と、問題を ASAP で修正してくれた Moonshot Kimi チームに心から感謝します！

**2025年7月16日: Kimi K2 がトークナイザーを更新し、複数のツール呼び出しを有効化しました** に従って <https://x.com/Kimi_Moonshot/status/1945050874067476962>

**2025年7月18日: システムプロンプトを修正しました。Kimi もこの修正についてここでツイートしています:** <https://x.com/Kimi_Moonshot/status/1946130043446690030>。この修正はここでも説明されています: <https://huggingface.co/moonshotai/Kimi-K2-Instruct/discussions/28>

古いチェックポイントをダウンロード済みでも心配いりません。変更された最初の GGUF スプリットをダウンロードするだけです。あるいは新しいファイルをダウンロードしたくない場合は、次を実行してください:

```bash
wget https://huggingface.co/unsloth/Kimi-K2-Instruct/raw/main/chat_template.jinja
./llama.cpp ... --chat-template-file /dir/to/chat_template.jinja
```

Kimi K2 のトークナイザーは触ってみると面白かったです - <mark style="background-color:green;">**動作は GPT-4o のトークナイザーとほぼ同じです**</mark>！まず [tokenization\_kimi.py](https://huggingface.co/moonshotai/Kimi-K2-Instruct/blob/main/tokenization_kimi.py) ファイルで、Kimi K2 が使う次の正規表現（regex）を確認します:

```python
pat_str = "|".join(
    [
        r"""[\p{Han}]+""",
        r"""[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}&&[^\p{Han}]]*[\p{Ll}\p{Lm}\p{Lo}\p{M}&&[^\p{Han}]]+(?i:'s|'t|'re|'ve|'m|'ll|'d)?""",
        r"""[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}&&[^\p{Han}]]+[\p{Ll}\p{Lm}\p{Lo}\p{M}&&[^\p{Han}]]*(?i:'s|'t|'re|'ve|'m|'ll|'d)?""",
        r"""\p{N}{1,3}""",
        r""" ?[^\s\p{L}\p{N}]+[\r\n]*""",
        r"""\s*[\r\n]+""",
        r"""\s+(?!\S)""",
        r"""\s+""",
    ]
)
```

注意深く確認すると、Kimi K2 は GPT-4o のトークナイザー regex とほぼ同一であることがわかります。これは [llama.cpp のソースコード](https://github.com/ggml-org/llama.cpp/blob/55c509daf51d25bfaee9c8b8ce6abff103d4473b/src/llama-vocab.cpp#L400).

{% code overflow="wrap" %}

```
[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]*[\p{Ll}\p{Lm}\p{Lo}\p{M}]+(?i:'s|'t|'re|'ve|'m|'ll|'d)?|[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]+[\p{Ll}\p{Lm}\p{Lo}\p{M}]*(?i:'s|'t|'re|'ve|'m|'ll|'d)?|\p{N}{1,3}| ?[^\s\p{L}\p{N}]+[\r\n/]*|\s*[\r\n]+|\s+(?!\S)|\s+
```

{% endcode %}

どちらも数字を 1〜3 個の समूह（9, 99, 999）にトークナイズし、似たパターンを使っています。唯一の違いは、「Han」つまり中国語文字の扱いのようで、Kimi のトークナイザーのほうがより丁寧に扱っています。 [PR](https://github.com/ggml-org/llama.cpp/pull/14654) による <https://github.com/gabriellarson> は、いくつかの [ここでの議論](https://github.com/ggml-org/llama.cpp/issues/14642#issuecomment-3067324745).

<mark style="background-color:green;">**の後にこれらの違いをうまく処理しています。また、正しい EOS トークンは \[EOS] ではなく <|im\_end|> であることもわかり、モデル変換でも修正しました。**</mark>

## 🌝Kimi-K2-Instruct ガイド

Kimi K2 0905 を含む Kimi K2 Instruct モデルの実行についてのステップバイステップガイド。これは 9 月 5 日の更新です。

### 🌙 公式推奨設定:

によると [Moonshot AI](https://huggingface.co/moonshotai/Kimi-K2-Instruct)による、Kimi K2 推論の推奨設定は次のとおりです:

* 次を設定してください <mark style="background-color:green;">**temperature 0.6**</mark> 重複や不整合を減らすため。
* 元のデフォルトのシステムプロンプトは次のとおりです:

  ```
  あなたは役立つアシスタントです
  ```
* （任意）Moonshot はシステムプロンプトに次も推奨しています:

  ```
  あなたは Moonshot AI によって作成された AI アシスタント、Kimi です。
  ```

{% hint style="success" %}
次の設定を推奨します <mark style="background-color:green;">**min\_p を 0.01 に**</mark> することで、確率の低い起こりにくいトークンの出現を抑えます。
{% endhint %}

### :1234: チャットテンプレートとプロンプト形式

Kimi Chat は BOS（文頭トークン）を使用します。system、user、assistant の役割はすべて `<|im_middle|>` で囲まれており、これは興味深いことに、それぞれ専用のトークン `<|im_system|>, <|im_user|>, <|im_assistant|>`.

{% code overflow="wrap" %}

```python
<|im_system|>system<|im_middle|>You are a helpful assistant<|im_end|><|im_user|>user<|im_middle|>What is 1+1?<|im_end|><|im_assistant|>assistant<|im_middle|>2<|im_end|>
```

{% endcode %}

会話の境界を分けるために（各改行は削除する必要があります）、次のようになります:

{% code overflow="wrap" %}

```
<|im_system|>system<|im_middle|>You are a helpful assistant<|im_end|>
<|im_user|>user<|im_middle|>What is 1+1?<|im_end|>
<|im_assistant|>assistant<|im_middle|>2<|im_end|>
```

{% endcode %}

### :floppy\_disk: モデルのアップロード

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

<table data-full-width="false"><thead><tr><th>MoE ビット数</th><th>種類 + リンク</th><th>ディスクサイズ</th><th>詳細</th></tr></thead><tbody><tr><td>1.66bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-TQ1_0">UD-TQ1_0</a></td><td><strong>245GB</strong></td><td>1.92/1.56bit</td></tr><tr><td>1.78bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-IQ1_S">UD-IQ1_S</a></td><td><strong>281GB</strong></td><td>2.06/1.56bit</td></tr><tr><td>1.93bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-IQ1_M">UD-IQ1_M</a></td><td><strong>304GB</strong></td><td>2.5/2.06/1.56</td></tr><tr><td>2.42bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-IQ2_XXS">UD-IQ2_XXS</a></td><td><strong>343GB</strong></td><td>2.5/2.06bit</td></tr><tr><td>2.71bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-Q2_K_XL">UD-Q2_K_XL</a></td><td><strong>381GB</strong></td><td>3.5/2.5bit</td></tr><tr><td>3.12bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-IQ3_XXS">UD-IQ3_XXS</a></td><td><strong>417GB</strong></td><td>3.5/2.06bit</td></tr><tr><td>3.5bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-Q3_K_XL">UD-Q3_K_XL</a></td><td><strong>452GB</strong></td><td>4.5/3.5bit</td></tr><tr><td>4.5bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-Q4_K_XL">UD-Q4_K_XL</a></td><td><strong>588GB</strong></td><td>5.5/4.5bit</td></tr><tr><td>5.5bit</td><td><a href="https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF/tree/main/UD-Q5_K_XL">UD-Q5_K_XL</a></td><td><strong>732GB</strong></td><td>6.5/5.5bit</td></tr></tbody></table>

以下の版もアップロードしました [BF16形式](https://huggingface.co/unsloth/Kimi-K2-Instruct-BF16).

### ✨ llama.cpp で Instruct を実行

1. 最新の `llama.cpp` を [GitHub こちら](https://github.com/ggml-org/llama.cpp)から取得してください。以下のビルド手順に従うこともできます。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。GPU がない場合、または CPU 推論だけを使いたい場合です。

```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-quantize llama-cli llama-gguf-split llama-mtmd-cli
cp llama.cpp/build/bin/llama-* llama.cpp
```

2. もし `llama.cpp` モデルを直接読み込むには、以下のようにできます。(:UD-IQ1\_S) は量子化タイプです。Hugging Face（ポイント3）経由でもダウンロードできます。これは次と同様です: `ollama run` に似ています。使用 `export LLAMA_CACHE="folder"` して `llama.cpp` 特定の場所に保存するために。\ <mark style="background-color:green;">**モデルの 2025年9月の新しい更新を実行するには、モデル名を 'Kimi-K2-Instruct' から 'Kimi-K2-Instruct-0905' に変更してください。**</mark>

{% 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/Kimi-K2-Instruct-GGUF"
./llama.cpp/llama-cli \\
    -hf unsloth/Kimi-K2-Instruct-GGUF:TQ1_0 \\
    --n-gpu-layers 99 \\
    --temp 0.6 \\
    --min-p 0.01 \\
    --ctx-size 16384 \\
    --seed 3407 \\
    -ot ".ffn_.*_exps.=CPU"
```

3. モデルのダウンロード（ `pip install huggingface_hub hf_transfer` のインストール後）。 `UD-TQ1_0`（dynamic 1.8bit 量子化）または次のような他の量子化版 `Q2_K_XL` 私たちは <mark style="background-color:green;">**2bit dynamic quant を使うことを推奨します**</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>。その他のバージョンはこちら： [huggingface.co/unsloth/Kimi-K2-Instruct-GGUF](https://huggingface.co/unsloth/Kimi-K2-Instruct-GGUF)

{% code overflow="wrap" %}

```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/Kimi-K2-Instruct-GGUF",
    local_dir = "unsloth/Kimi-K2-Instruct-GGUF",
    allow_patterns = ["*UD-TQ1_0*"], # Dynamic 1bit（281GB） "*UD-Q2_K_XL*" は Dynamic 2bit（381GB）に使用
)
```

{% endcode %}

{% hint style="info" %}
ダウンロードが 90〜95% で止まるようなら、次を参照してください <https://docs.unsloth.ai/basics/troubleshooting-and-faqs#downloading-gets-stuck-at-90-to-95>
{% endhint %}

4. 任意のプロンプトを実行。
5. 編集 `--threads -1` CPU スレッド数用（デフォルトでは CPU の最大スレッド数に設定されています）、 `--ctx-size 16384` コンテキスト長を `--n-gpu-layers 99` GPU オフロードするレイヤー数用です。MoE の CPU オフロードと組み合わせて 99 に設定すると最良の性能になります。GPU メモリ不足になったら調整してください。CPU のみで推論する場合はこれも削除してください。

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-cli \\
    --model unsloth/Kimi-K2-Instruct-GGUF/UD-TQ1_0/Kimi-K2-Instruct-UD-TQ1_0-00001-of-00005.gguf \\
    --n-gpu-layers 99 \\
    --temp 0.6 \\
    --min-p 0.01 \\
    --ctx-size 16384 \\
    --seed 3407 \\
    -ot ".ffn_.*_exps.=CPU"
```

{% endcode %}

### :bird: Flappy Bird + その他のテスト <a href="#heptagon-test" id="heptagon-test"></a>

DeepSeek R1 用の 1.58bit 量子化版が提供されたとき、Flappy Bird テストを導入しました。Kimi K2 は、このテストを含む私たちのタスクをすべて一発で解く数少ないモデルのひとつだとわかりました。 [Heptagon ](/docs/jp/moderu/tutorials/deepseek-r1-0528-how-to-run-locally.md#heptagon-test)やその他のテストでも 2-bit でさえ良好でした。目標は、LLM にいくつかの特定の指示に従って Flappy Bird ゲームを作成させることです:

{% code overflow="wrap" %}

```
Python で Flappy Bird ゲームを作成してください。以下を必ず含めてください:
1. pygame を使うこと。
2. 背景色はランダムに選び、明るい色にすること。最初は薄い青にしてください。
3. SPACE を何度も押すと鳥が加速すること。
4. 鳥の形は四角、円、三角形のいずれかからランダムに選ぶこと。色は暗い色からランダムに選ぶこと。
5. 画面下部に、濃い茶色または黄色からランダムに選んだ色の地面を配置すること。
6. 右上にスコアを表示すること。パイプを通過して当たらなければ加点すること。
7. 十分な間隔を空けてランダムな位置にパイプを配置すること。色は濃い緑、薄い茶色、または濃い灰色からランダムにすること。
8. 失敗したらベストスコアを表示すること。テキストは画面内に収めること。q または Esc を押すとゲームを終了し、SPACE をもう一度押すと再開すること。
最終的なゲームは Python の markdown セクション内に入れてください。最終の markdown セクションの前に、コードのエラーを確認して修正してください。
```

{% endcode %}

次のとおり、Heptagon テストを使って dynamic quant を試すこともできます [r/Localllama](https://www.reddit.com/r/LocalLLaMA/comments/1j7r47l/i_just_made_an_animation_of_a_ball_bouncing/) これは、動く閉じた六角形ではなく七角形の形の中で回転するボールをシミュレートする基本的な物理エンジンを作るテストです。

<figure><img src="https://docs.unsloth.ai/~gitbook/image?url=https%3A%2F%2F3215535692-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FxhOjnexMCB3dmuQFQ2Zq%252Fuploads%252F2O72oTw5yPUbcxXjDNKS%252Fsnapshot.jpg%3Falt%3Dmedia%26token%3Dce852f9f-20ee-4b93-9d7b-1a5f211b9e04&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=55d1134d&#x26;sv=2" alt="" width="563"><figcaption></figcaption></figure>

目標は、七角形を回転させ、その中のボールも動くようにすることです。プロンプトは以下です:

{% code overflow="wrap" %}

```
回転する七角形の中で 20 個のボールが跳ねる様子を表示する Python プログラムを書いてください:\n- すべてのボールは同じ半径にしてください。\n- すべてのボールには 1 から 20 までの番号を付けてください。\n- 開始時、すべてのボールは七角形の中心から落下するようにしてください。\n- 色は次のとおりです: #f8b862, #f6ad49, #f39800, #f08300, #ec6d51, #ee7948, #ed6d3d, #ec6800, #ec6800, #ee7800, #eb6238, #ea5506, #ea5506, #eb6101, #e49e61, #e45e32, #e17b34, #dd7a56, #db8449, #d66a35\n- ボールは重力と摩擦の影響を受け、回転する壁に現実的に跳ね返る必要があります。ボール同士の衝突も必要です。\n- すべてのボールの材質は、衝突時の跳ね返りの高さが七角形の半径を超えず、かつボールの半径よりは高くなることを意味します。\n- すべてのボールは摩擦で回転し、ボール上の数字はボールの回転を示すのに使えます。\n- 七角形は中心の周りを回転し、その回転速度は 5 秒で 360 度です。\n- 七角形のサイズは、すべてのボールを収められる十分な大きさにしてください。\n- pygame ライブラリは使わず、衝突検出アルゴリズムや衝突応答などは自分で実装してください。以下の Python ライブラリは使用可能です: tkinter, math, numpy, dataclasses, typing, sys。\n- すべてのコードは 1 つの Python ファイルに入れてください。
```

{% endcode %}


---

# 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/kimi-k2-thinking-how-to-run-locally.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.
