# GLM-5.1 - ローカル実行方法

GLM-5.1 は Z.ai の新しいオープンモデルです。これと比べて [GLM-5](https://unsloth.ai/docs/jp/moderu/tutorials/glm-5)、コーディング、エージェント的ツール使用、推論、ロールプレイ、長期的なエージェントタスク、そして全体的なチャット品質において大幅な改善を実現しています。

完全な 744B パラメータ（アクティブ 40B）の GLM-5.1 モデルは **200K コンテキスト** ウィンドウを持ち、 **1.65TB** のディスク容量を必要とします。Unsloth Dynamic 2-bit GGUF はサイズを **220GB** **(-80%)**&#x307E;で削減し、dynamic **1-bit は 200GB（-85%）です:** [**GLM-5.1-GGUF**](https://huggingface.co/unsloth/GLM-5.1-GGUF)

すべてのアップロードは Unsloth の [Dynamic 2.0](https://unsloth.ai/docs/jp/ji-ben/unsloth-dynamic-2.0-ggufs) を使用しており、SOTA の量子化性能を実現しています。そのため、低ビットでは重要なレイヤーが 8-bit または 16-bit にアップキャストされています。Unsloth に初日アクセスを提供してくれた Z.ai に感謝します。

{% hint style="info" %}
&#x20;**絶対に** どの GGUF に対しても CUDA 13.2 ランタイムを使用しないでください。出力品質が低下します。
{% endhint %}

#### :gear: 使用ガイド

中程度の 2-bit dynamic quant `UD-IQ2_M` は **236GB** のディスク容量を使用します。これは **256GB ユニファイドメモリ Mac** に直接収まり、 **1x24GB GPU** と **256GB の RAM** で、MoE オフロードを使って良好に動作します。この **1-bit** 量子化版は 220GB RAM に収まり、8-bit には 805GB RAM が必要です。

{% hint style="success" %}
最適な性能を得るには、利用可能な総メモリ（VRAM + システム RAM）が、ダウンロードする量子化モデルファイルのサイズを上回っていることを確認してください。そうでない場合でも、llama.cpp は SSD/HDD オフロード経由で実行できますが、推論は遅くなります。
{% endhint %}

### 推奨設定

用途ごとに異なる設定を使用してください:

| デフォルト設定（ほとんどのタスク）       | Terminal Bench         |
| ----------------------- | ---------------------- |
| `temperature` = 1.0     | `temperature` = 0.7    |
| `top_p` = 0.95          | `top_p` = 1.0          |
| max new tokens = 131072 | max new tokens = 16384 |

* **最大コンテキストウィンドウ:** `202,752`.
* GLM-5.1 では thinking はデフォルトで有効です。thinking を無効にするには:

{% code expandable="true" %}

```bash
    --chat-template-kwargs '{"enable_thinking":false}'
```

{% endcode %}

#### チャットテンプレート更新

GLM-5.1 は GLM-5 と同じアーキテクチャを採用しており、ただ `chat_template.jinja` が異なります。

* Claude の検索ツールをサポートしています。 `defer_loading=True` が付いたツールはシステムプロンプトから省略され、代わりにツール結果内に表示されます。
* 空の推論ブロックを許可します（`<think></think>`）を assistant メッセージ内で。連続する assistant メッセージは、thinking または non-thinking のいずれか同じモードのままである必要があります。
* 全体として、GLM-5.1 は主にツール公開、推論履歴の再構築、ツールメッセージのレンダリングを改善しています。

## GLM-5.1 チュートリアルを実行:

これで GLM-5.1 を [llama.cpp](#run-in-llama.cpp) と [Unsloth Studio](#run-in-unsloth-studio).

### 🦥 Unsloth Studio で実行

GLM-5.1 はこれで実行できるようになりました [Unsloth Studio](https://unsloth.ai/docs/jp/xin-gui/studio)、これはローカル AI 用の当社の新しいオープンソース Web UI です。Unsloth Studio ではモデルをローカルで **MacOS、Windows**、Linux および:

{% columns %}
{% column %}

* 検索、ダウンロード、 [GGUF を実行](https://unsloth.ai/docs/jp/xin-gui/studio#run-models-locally) および safetensor モデル
* [**自己修復型** ツール呼び出し](https://unsloth.ai/docs/jp/xin-gui/studio#execute-code--heal-tool-calling) + **Web 検索**
* [**コード実行**](https://unsloth.ai/docs/jp/xin-gui/studio#run-models-locally) （Python、Bash）
* [自動推論](https://unsloth.ai/docs/jp/xin-gui/studio#model-arena) パラメータ調整（temp、top-p など）
* 高速な CPU + GPU 推論と CPU オフロードのために llama.cpp を使用
  {% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FstfdTMsoBMmsbQsgQ1Ma%2Flandscape%20clip%20gemma.gif?alt=media&#x26;token=eec5f2f7-b97a-4c1c-ad01-5a041c3e4013" alt=""><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

{% stepper %}
{% step %}

#### Unsloth をインストール

ターミナルで実行:

**MacOS、Linux、WSL:**

```bash
curl -fsSL https://unsloth.ai/install.sh | sh
```

**Windows PowerShell:**

```bash
irm https://unsloth.ai/install.ps1 | iex
```

{% endstep %}

{% step %}

#### Unsloth を起動

**MacOS、Linux、WSL、および Windows:**

```bash
unsloth studio -H 0.0.0.0 -p 8888
```

**その後、 `http://localhost:8888` をブラウザで開いてください。**
{% endstep %}

{% step %}

#### GLM-5.1 を検索してダウンロード

初回起動時には、アカウントを保護するためのパスワードを作成し、後で再度サインインする必要があります。その後、モデル、データセット、基本設定を選択するための簡単なオンボーディングウィザードが表示されます。いつでもスキップできます。

選択できます `UD-Q2_K_XL` （dynamic 2bit quant）または、 `UD-Q4_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>。ダウンロードが停止する場合は、以下を参照してください [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/jp/ji-ben/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

次に、 [Studio Chat](https://unsloth.ai/docs/jp/xin-gui/studio/chat) タブに移動し、検索バーで GLM-5.1 を検索して、希望するモデルと量子化版をダウンロードしてください。サイズが大きいためダウンロードには時間がかかるので、お待ちください。高速な推論を確保するために、 [十分な RAM/VRAM](#usage-guide)があることを確認してください。そうでない場合でも推論は動作しますが、Unsloth は CPU にオフロードします。

<div data-with-frame="true"><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fkmkcl9FVLkAua8UPLnUz%2FScreenshot%202026-04-07%20at%2010.05.26%E2%80%AFAM.png?alt=media&#x26;token=2794e092-a4f2-4209-9b21-1a2410c2631b" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

#### GLM-5.1 を実行

Unsloth Studio を使用する場合、推論パラメータは自動設定されるはずですが、手動で変更することもできます。コンテキスト長、チャットテンプレート、その他の設定も編集できます。

詳細については、当社の [Unsloth Studio 推論ガイド](https://unsloth.ai/docs/jp/xin-gui/studio/chat).
{% endstep %}
{% endstepper %}

### 🦙 llama.cpp で実行

{% stepper %}
{% step %}
最新の `llama.cpp` **を取得してください** [**GitHub はこちら**](https://github.com/ggml-org/llama.cpp)。以下のビルド手順に従うこともできます。GPU がない場合、または CPU 推論のみを行いたい場合は、 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください。 **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
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

{% endstep %}

{% step %}
使用したい場合 `llama.cpp` を使って直接モデルを読み込むには、以下のようにできます: (:`IQ2_M`) は量子化タイプです。Hugging Face 経由でもダウンロードできます（ポイント 3）。これは `ollama run` に似ています。 `export LLAMA_CACHE="folder"` を使って、 `llama.cpp` が特定の場所に保存するよう強制できます。モデルの最大コンテキスト長は 200K のみであることを忘れないでください。

これに従ってください **一般的な指示** ユースケース:

```bash
export LLAMA_CACHE="unsloth/GLM-5.1-GGUF"
./llama.cpp/llama-cli \
    -hf unsloth/GLM-5.1-GGUF:UD-IQ2_M \
    --ctx-size 16384 \
    --temp 0.7 \
    --top-p 1.0
```

これに従ってください **ツール呼び出し** ユースケース:

```bash
export LLAMA_CACHE="unsloth/GLM-5.1-GGUF"
./llama.cpp/llama-cli \
    -hf unsloth/GLM-5.1-GGUF:UD-IQ2_M \
    --ctx-size 16384 \
    --temp 1.0 \
    --top-p 0.95
```

{% endstep %}

{% step %}
モデルを以下経由でダウンロードしてください（インストール後 `pip install huggingface_hub hf_transfer` ）。選択できます `UD-Q2_K_XL` （dynamic 2bit quant）または、 `UD-Q4_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>。ダウンロードが停止する場合は、以下を参照してください [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/jp/ji-ben/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

```bash
pip install -U huggingface_hub
hf download unsloth/GLM-5.1-GGUF \
    --local-dir unsloth/GLM-5.1-GGUF \
    --include "*UD-IQ2_M*" # Dynamic 1bit には "*UD-TQ1_0*" を使用
```

{% 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/GLM-5.1-GGUF/UD-IQ2_M/GLM-5.1-UD-IQ2_M-00001-of-00006.gguf \
    --temp 1.0 \
    --top-p 0.95 \
    --ctx-size 16384 \
    --seed 3407
```

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

#### 🦙 Llama-server 配信 & OpenAI の completion ライブラリ

本番環境向けに GLM-5 をデプロイするには、 `llama-server` 新しいターミナルで、たとえば tmux 経由で、以下のようにモデルをデプロイします:

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-server \
    --model unsloth/GLM-5.1-GGUF/UD-IQ2_M/GLM-5.1-UD-IQ2_M-00001-of-00006.gguf \
    --alias "unsloth/GLM-5.1" \
    --prio 3 \
    --temp 1.0 \
    --top-p 0.95 \
    --ctx-size 16384 \
    --port 8001
```

{% endcode %}

次に新しいターミナルで、 `pip install openai`を行った後、次を実行します:

{% code overflow="wrap" %}

```python
from openai import OpenAI
import json
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/GLM-5.1",
    messages = [{"role": "user", "content": "Snake ゲームを作成してください。"},],
)
print(completion.choices[0].message.content)
```

{% endcode %}

その後、OpenAI API 経由で配信中のモデルを呼び出せます:

```python
from openai import AsyncOpenAI, OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8001/v1"
client = OpenAI( # または AsyncOpenAI
    api_key = openai_api_key,
    base_url = openai_api_base,
)
```

### :hammer:GLM-5.1 でのツール呼び出し

参照してください [tool-calling-guide-for-local-llms](https://unsloth.ai/docs/jp/ji-ben/tool-calling-guide-for-local-llms "mention") ツール呼び出しの方法の詳細について。新しいターミナルで（tmux を使用している場合は CTRL+B+D を使用）、2 つの数の加算、Python コードの実行、Linux 関数の実行など、さまざまなツールを作成します:

{% code expandable="true" %}

```python
import json, subprocess, random
from typing import Any
def add_number(a: float | str, b: float | str) -> float:
    return float(a) + float(b)
def multiply_number(a: float | str, b: float | str) -> float:
    return float(a) * float(b)
def substract_number(a: float | str, b: float | str) -> float:
    return float(a) - float(b)
def write_a_story() -> str:
    return random.choice([
        "はるか昔、はるか彼方の銀河で...",
        "ナマケモノとコードを愛する 2 人の友達がいました...",
        "すべてのナマケモノが超人的な知能を持つように進化したため、世界は終わりを迎えようとしていました...",
        "一方の友人は知らないまま、もう一方が誤ってナマケモノを進化させるプログラムを書いてしまいました...",
    ])
def terminal(command: str) -> str:
    if "rm" in command or "sudo" in command or "dd" in command or "chmod" in command:
        msg = "危険であるため 'rm, sudo, dd, chmod' コマンドは実行できません"
        print(msg); return msg
    print(f"ターミナルコマンド `{command}` を実行中")
    try:
        return str(subprocess.run(command, capture_output = True, text = True, shell = True, check = True).stdout)
    except subprocess.CalledProcessError as e:
        return f"コマンド失敗: {e.stderr}"
def python(code: str) -> str:
    data = {}
    exec(code, data)
    del data["__builtins__"]
    return str(data)
MAP_FN = {
    "add_number": add_number,
    "multiply_number": multiply_number,
    "substract_number": substract_number,
    "write_a_story": write_a_story,
    "terminal": terminal,
    "python": python,
}
tools = [
    {
        "type": "function",
        "function": {
            "name": "add_number",
            "description": "2 つの数を加算します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "a": {
                        "type": "string",
                        "description": "最初の数。",
                    },
                    "b": {
                        "type": "string",
                        "description": "2 番目の数。",
                    },
                },
                "required": ["a", "b"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "multiply_number",
            "description": "2 つの数を乗算します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "a": {
                        "type": "string",
                        "description": "最初の数。",
                    },
                    "b": {
                        "type": "string",
                        "description": "2 番目の数。",
                    },
                },
                "required": ["a", "b"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "substract_number",
            "description": "2 つの数を減算します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "a": {
                        "type": "string",
                        "description": "最初の数。",
                    },
                    "b": {
                        "type": "string",
                        "description": "2 番目の数。",
                    },
                },
                "required": ["a", "b"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "write_a_story",
            "description": "ランダムな物語を書きます。",
            "parameters": {
                "type": "object",
                "properties": {},
                "required": [],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "terminal",
            "description": "ターミナルから操作を実行します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "command": {
                        "type": "string",
                        "description": "起動したいコマンド。例: `ls`, `rm`, ...",
                    },
                },
                "required": ["command"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "python",
            "description": "いくつかの Python コードを実行する Python インタープリタを呼び出します。",
            "parameters": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "実行する Python コード",
                    },
                },
                "required": ["code"],
            },
        },
    },
]
```

{% endcode %}

次に、以下の関数を使用します（コピーして貼り付けて実行してください）。これにより関数呼び出しが自動的に解析され、任意のモデルに対して OpenAI エンドポイントが呼び出されます:

{% code overflow="wrap" expandable="true" %}

```python
from openai import OpenAI
def unsloth_inference(
    messages,
    temperature = 1.0,
    top_p = 0.95,
    top_k = -1,
    min_p = 0.01,
    repetition_penalty = 1.0,
):
    messages = messages.copy()
    openai_client = OpenAI(
        base_url = "http://127.0.0.1:8001/v1",
        api_key = "sk-no-key-required",
    )
    model_name = next(iter(openai_client.models.list())).id
    print(f"Using model = {model_name}")
    has_tool_calls = True
    original_messages_len = len(messages)
    while has_tool_calls:
        print(f"Current messages = {messages}")
        response = openai_client.chat.completions.create(
            model = model_name,
            messages = messages,
            temperature = temperature,
            top_p = top_p,
            tools = tools if tools else None,
            tool_choice = "auto" if tools else None,
            extra_body = {"top_k": top_k, "min_p": min_p, "repetition_penalty" :repetition_penalty,}
        )
        tool_calls = response.choices[0].message.tool_calls or []
        content = response.choices[0].message.content or ""
        tool_calls_dict = [tc.to_dict() for tc in tool_calls] if tool_calls else tool_calls
        messages.append({"role": "assistant", "tool_calls": tool_calls_dict, "content": content,})
        for tool_call in tool_calls:
            fx, args, _id = tool_call.function.name, tool_call.function.arguments, tool_call.id
            out = MAP_FN[fx](**json.loads(args))
            messages.append({"role": "tool", "tool_call_id": _id, "name": fx, "content": str(out),})
        else:
            has_tool_calls = False
    return messages
```

{% endcode %}

GLM 5.1 を `llama-server` のように [#deploy-with-llama-server-and-openais-completion-library](#deploy-with-llama-server-and-openais-completion-library "mention") で起動した後、または [tool-calling-guide-for-local-llms](https://unsloth.ai/docs/jp/ji-ben/tool-calling-guide-for-local-llms "mention") で詳細を確認すると、いくつかのツール呼び出しを行えるようになります。

### 📊 ベンチマーク

以下で、GLM-5.1 のベンチマークを表形式で確認できます:

<div><figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FJx4pDC6fWJwaQvk1N8X3%2Fbench_51.png?alt=media&#x26;token=a6d51e6e-4e60-43d3-95de-fd3918fbcf67" alt=""><figcaption></figcaption></figure> <figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FvgdCMB73JM8P1OGUDrsJ%2FHFUGDWhW8AAUCbw.jpg?alt=media&#x26;token=bef138cf-8afb-4e33-8a74-f4695a8cfe45" alt=""><figcaption></figcaption></figure></div>

| ベンチマーク                         | GLM-5.1           | GLM-5             | Qwen3.6-Plus | Minimax M2.7      | DeepSeek-V3.2     | Kimi K2.5 | Claude Opus 4.6 | Gemini 3.1 Pro | GPT-5.4          |
| ------------------------------ | ----------------- | ----------------- | ------------ | ----------------- | ----------------- | --------- | --------------- | -------------- | ---------------- |
| HLE                            | 31.0              | 30.5              | 28.8         | 28.0              | 25.1              | 31.5      | 36.7            | **45.0**       | 39.8             |
| HLE（ツールあり）                     | 52.3              | 50.4              | 50.6         | -                 | 40.8              | 51.8      | **53.1**\*      | 51.4\*         | 52.1\*           |
| AIME 2026                      | 95.3              | 95.4              | 95.1         | 89.8              | 95.1              | 94.5      | 95.6            | 98.2           | **98.7**         |
| HMMT 2025年11月                  | 94.0              | **96.9**          | 94.6         | 81.0              | 90.2              | 91.1      | 96.3            | 94.8           | 95.8             |
| HMMT 2026年2月                   | 82.6              | 82.8              | 87.8         | 72.7              | 79.9              | 81.3      | 84.3            | 87.3           | **91.8**         |
| IMOAnswerBench                 | 83.8              | 82.5              | 83.8         | 66.3              | 78.3              | 81.8      | 75.3            | 81.0           | **91.4**         |
| GPQA-Diamond                   | 86.2              | 86.0              | 90.4         | 87.0              | 82.4              | 87.6      | 91.3            | **94.3**       | 92.0             |
| SWE-Bench Pro                  | **58.4**          | 55.1              | 56.6         | 56.2              | -                 | 53.8      | 57.3            | 54.2           | 57.7             |
| NL2Repo                        | 42.7              | 35.9              | 37.9         | 39.8              | -                 | 32.0      | **49.8**        | 33.4           | 41.3             |
| Terminal-Bench 2.0（Terminus-2） | 63.5              | 56.2              | 61.6         | -                 | 39.3              | 50.8      | 65.4            | **68.5**       | -                |
| Terminal-Bench 2.0（自己申告ベスト）    | 66.5（Claude Code） | 56.2（Claude Code） | -            | 57.0（Claude Code） | 46.4（Claude Code） | -         | -               | -              | **75.1** （Codex） |
| CyberGym                       | **68.7**          | 48.3              | -            | -                 | 17.3              | 41.3      | 66.6            | -              | -                |
| BrowseComp                     | **68.0**          | 62.0              | -            | -                 | 51.4              | 60.6      | -               | -              | -                |
| BrowseComp（コンテキスト管理あり）         | 79.3              | 75.9              | -            | -                 | 67.6              | 74.9      | 84.0            | **85.9**       | 82.7             |
| τ³-Bench                       | 70.6              | 69.2              | 70.7         | 67.6              | 69.2              | 66.0      | 72.4            | 67.1           | **72.9**         |
| MCP-Atlas（公開セット）               | 71.8              | 69.2              | **74.1**     | 48.8              | 62.2              | 63.8      | 73.8            | 69.2           | 67.2             |
| Tool-Decathlon                 | 40.7              | 38.0              | 39.8         | 46.3              | 35.2              | 27.8      | 47.2            | 48.8           | **54.6**         |
| Vending Bench 2                | $5,634.00         | $4,432.12         | $5,114.87    | -                 | $1,034.00         | $1,198.46 | **$8,017.59**   | $911.21        | $6,144.18        |
