> 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/zh/mo-xing/tutorials/glm-4.6-how-to-run-locally.md).

# GLM-4.6：本地运行指南

GLM-4.6 和 **GLM-4.6V-Flash** 是来自 **Z.ai**的最新推理模型，在编码和智能体基准测试上达到 SOTA 表现，同时提供更好的对话体验。 [**GLM-4.6V-Flash**](#glm-4.6v-flash) **较小的 9B 模型于 2025 年 12 月发布，你现在也可以运行它。**

完整的 355B 参数模型需要 **400GB** 磁盘空间，而 Unsloth Dynamic 2-bit GGUF 将大小减少到 **135GB** (-**75%)**. [**GLM-4.6-GGUF**](https://huggingface.co/unsloth/GLM-4.6-GGUF)

{% hint style="success" %}
为了获得最佳性能，请确保你的可用总内存（VRAM + 系统 RAM）大于你下载的量化模型文件大小。如果不满足，llama.cpp 仍然可以通过 SSD/HDD 卸载运行，但推理速度会更慢。
{% endhint %}

所有上传都使用 Unsloth [Dynamic 2.0](/docs/zh/ji-chu/unsloth-dynamic-2.0-ggufs.md) ，以获得 SOTA 的 5-shot MMLU 和 Aider 性能，这意味着你可以在几乎不损失精度的情况下运行并微调量化的 GLM LLM。

**教程导航：**

<a href="#glm-4.6v-flash" class="button secondary">运行 GLM-4.6V-Flash</a><a href="#glm-4.6" class="button secondary">运行 GLM-4.6</a>

### :bug:Unsloth 聊天模板与错误修复

我们做的一个重要修复是解决了使用 GGUF 提示时的一个问题，即第二个提示无法工作。我们已经修复了这个问题，不过在没有我们修复的 GGUF 中，这个问题仍然存在。例如，当使用任何非 Unsloth 的 GLM-4.6 GGUF 时，第一轮对话正常，但第二轮就会出错。

<figure><img src="/files/7735ec595467153511a3b1c420cf607e36fafa0b" alt="" width="563"><figcaption></figcaption></figure>

我们已经在聊天模板中解决了这个问题，因此当使用我们的版本时，超过第二轮（第三轮、第四轮等）的对话也能正常工作，不会出现任何错误。工具调用方面仍有一些问题，由于带宽限制，我们还没有完全调查这些问题。我们已经把这些剩余问题告知了 GLM 团队。

### :mag\_right:GLM 4.6V Flash 的怪癖与修复

{% hint style="info" %}
GLM-4.6V-Flash 可能会用中文进行推理并输出中文。这并不是我们量化版本独有的问题，而是该模型的一个特性。使用系统提示词“用英语回答并用英语推理”可以强制推理和输出都使用英语！
{% endhint %}

我们测试了其他量化提供商的 BF16 和 Q8\_0 量化版本，似乎都在用中文推理。例如，在 seed 3407 下、同一提示词“用 Python 创建一个 Flappy Bird 游戏”的两个独立量化版本都显示为中文推理：

{% columns %}
{% column %}

<figure><img src="/files/a174c3605a99d831bc4e89c05bfe2eca01bc2f29" alt=""><figcaption></figcaption></figure>
{% endcolumn %}

{% column %}

<figure><img src="/files/b9da772571c9162198cd90185acb0b27d33cc42d" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

通过使用系统提示词“用英语推理”并借助 `--system-prompt "Respond in English"` 在 llama.cpp 中，例如如下：

```bash
./llama.cpp/llama-cli -hf unsloth/GLM-4.6V-Flash-GGUF:BF16 \
    --jinja --temp 0.8 --top-p 0.6 --top-k 2 --repeat-penalty 1.1 --min-p 0.0 --seed 3407 \
    --prompt "Create a Flappy Bird game in Python" --system-prompt "Respond in English"
```

我们得到的是中文推理，但英文输出。我们还会继续追问“1+1 等于多少”，结果也只有英文：

<figure><img src="/files/a831cdf98b10c45e2c633451fe85a0ef88513d52" alt="" width="375"><figcaption></figcaption></figure>

最后，通过使用系统提示词“用英语回答并用英语推理”并借助 `--system-prompt "Respond in English and reason in English"` 在 llama.cpp 中，例如如下：

```bash
./llama.cpp/llama-cli -hf unsloth/GLM-4.6V-Flash-GGUF:BF16 \
    --jinja --temp 0.8 --top-p 0.6 --top-k 2 --repeat-penalty 1.1 --min-p 0.0 --seed 3407 \
    --prompt "Create a Flappy Bird game in Python" \
    --system-prompt "Respond in English and reason in English"
```

我们得到的是英文推理和英文输出！我们还会继续追问“1+1 等于多少”，结果也只有英文：

<figure><img src="/files/27342bbc6d9d15f6cccec7037bc70f0934f4b132" alt=""><figcaption></figcaption></figure>

## :gear: 使用指南

2-bit 动态量化 UD-Q2\_K\_XL 占用 135GB 磁盘空间——这在以下配置下表现良好： **1x24GB 显卡和 128GB 内存** 配合 MoE 卸载。1-bit UD-TQ1 GGUF 也 **可以在 Ollama 中原生运行**!

{% hint style="info" %}
你必须使用 `--jinja` 用于 llama.cpp 量化版本——这会使用我们的 [修复后的聊天模板](#chat-template-bug-fixes) 并启用正确的模板！如果你不使用 `--jinja`
{% endhint %}

4-bit 量化版本可适配 1x 40GB GPU（并将 MoE 层卸载到 RAM）。如果你还有额外 165GB RAM，在这种配置下预计速度约为 5 tokens/s。建议至少拥有 205GB RAM 来运行这个 4-bit 版本。为了获得最佳性能，你需要至少 205GB 统一内存，或 205GB 的 RAM+VRAM 总和，才能达到 5+ tokens/s。要了解如何提升生成速度并适配更长上下文， [请阅读这里](#improving-generation-speed).

{% hint style="success" %}
虽然不是必须，但为了获得最佳性能，建议你的 VRAM + RAM 总和等于你下载的量化版本大小。如果不满足，llama.cpp 仍可通过硬盘/SSD 卸载运行，只是推理会更慢。
{% endhint %}

### 推荐设置

根据 Z.ai 的说明，GLM-4.6V-Flash 和 GLM-4.6 的推理设置不同：

| GLM-4.6V-Flash                                                     | GLM-4.6                                                               |
| ------------------------------------------------------------------ | --------------------------------------------------------------------- |
| <mark style="background-color:green;">**temperature = 0.8**</mark> | <mark style="background-color:green;">**temperature = 1.0**</mark>    |
| <mark style="background-color:green;">**top\_p = 0.6**</mark> （推荐） | <mark style="background-color:green;">**top\_p = 0.95**</mark> （编码推荐） |
| <mark style="background-color:green;">**top\_k = 2**</mark> （推荐）   | <mark style="background-color:green;">**top\_k = 40**</mark> （编码推荐）   |
| **128K 上下文长度** 或更少                                                 | **200K 上下文长度** 或更少                                                    |
| **repeat\_penalty = 1.1**                                          |                                                                       |
| **max\_generate\_tokens = 16,384**                                 | **max\_generate\_tokens = 16,384**                                    |

* 使用 `--jinja` 适用于 llama.cpp 变体——我们 **也修复了一些聊天模板问题！**

## 运行 GLM-4.6 教程：

查看我们关于运行 [GLM-4.6V-Flash](#glm-4.6v-flash) 以及大型 [GLM-4.6](#glm-4.6) 模型的分步指南。

### GLM-4.6V-Flash

{% hint style="success" %}
**2025 年 12 月 16 日新增：GLM-4.6-V 现已更新，支持视觉！**
{% endhint %}

#### ✨ 在 llama.cpp 中运行

{% stepper %}
{% step %}
获取最新的 `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-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

{% endstep %}

{% step %}
如果你想直接使用 `llama.cpp` 即可直接加载模型，你可以使用下面的方法：（:Q8\_K\_XL）是量化类型。你也可以通过 Hugging Face 下载（第 3 点）。这类似于 `ollama run` 。使用 `export LLAMA_CACHE="folder"` 来强制 `llama.cpp` 以保存到特定位置。记住该模型的最大上下文长度只有 128K。

```bash
export LLAMA_CACHE="unsloth/GLM-4.6V-Flash-GGUF"
./llama.cpp/llama-cli \\
    -hf unsloth/GLM-4.6V-Flash-GGUF:UD-Q8_K_XL \
    --n-gpu-layers 99 \
    --jinja \
    --ctx-size 16384 \
    --flash-attn on \
    --temp 0.8 \
    --top-p 0.6 \
    --top-k 2 \
    --repeat-penalty 1.1 \
    -ot ".ffn_.*_exps.=CPU"
```

{% endstep %}

{% step %}
在安装后通过以下方式下载模型 `pip install huggingface_hub hf_transfer` 。你可以选择 `UD-`Q4\_K\_XL（动态 4bit 量化）或其他量化版本，例如 `Q8_K_XL` .

```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/GLM-4.6V-Flash-GGUF",
    local_dir = "unsloth/GLM-4.6V-Flash-GGUF",
    allow_patterns = ["*UD-Q8_K_XL*"],
)
```

{% endstep %}
{% endstepper %}

### GLM-4.6

#### :llama: 在 Ollama 中运行

{% stepper %}
{% step %}
安装 `ollama` 如果你还没有安装的话！要运行模型的更多变体， [请看这里](https://unsloth.ai/docs/zh/mo-xing/tutorials/pages/e159c2414bf59eef4f0d1e98dc6013b013c34532#run-in-llama.cpp).

```bash
apt-get update
apt-get install pciutils -y
curl -fsSL https://ollama.com/install.sh | sh
```

{% endstep %}

{% step %}
运行模型！注意如果失败，你可以在另一个终端中调用 `ollama serve`！我们已在 Hugging Face 上传中包含所有修复和建议参数（如 temperature 等）在 `params` 中！

```
OLLAMA_MODELS=unsloth ollama serve &

OLLAMA_MODELS=unsloth ollama run hf.co/unsloth/GLM-4.6-GGUF:TQ1_0
```

{% endstep %}

{% step %}
要运行其他量化版本，你需要先将 GGUF 分割文件合并成 1 个，如下方代码所示。然后你需要在本地运行模型。

```bash
./llama.cpp/llama-gguf-split --merge \
  GLM-4.6-GGUF/GLM-4.6-UD-Q2_K_XL/GLM-4.6-UD-Q2_K_XL-00001-of-00003.gguf \
	merged_file.gguf
```

```bash
OLLAMA_MODELS=unsloth ollama serve &

OLLAMA_MODELS=unsloth ollama run merged_file.gguf
```

{% endstep %}
{% endstepper %}

#### ✨ 在 llama.cpp 中运行

{% stepper %}
{% step %}
获取最新的 `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 llama-server
cp llama.cpp/build/bin/llama-* llama.cpp
```

{% endstep %}

{% step %}
如果你想直接使用 `llama.cpp` 即可直接加载模型，你可以使用下面的方法：（:Q2\_K\_XL）是量化类型。你也可以通过 Hugging Face 下载（第 3 点）。这类似于 `ollama run` 。使用 `export LLAMA_CACHE="folder"` 来强制 `llama.cpp` 以保存到特定位置。记住该模型的最大上下文长度只有 128K。

{% hint style="success" %}
请试用 `-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"` 表示从第 6 层开始卸载 gate、up 和 down MoE 层。
{% endhint %}

```bash
export LLAMA_CACHE="unsloth/GLM-4.6-GGUF"
./llama.cpp/llama-cli \\
    --model GLM-4.6-GGUF/UD-Q2_K_XL/GLM-4.6-UD-Q2_K_XL-00001-of-00003.gguf \
    --n-gpu-layers 99 \
    --jinja \
    --ctx-size 16384 \
    --flash-attn on \
    --temp 1.0 \\
    --top-p 0.95 \\
    --top-k 40 \
    -ot ".ffn_.*_exps.=CPU"
```

{% endstep %}

{% step %}
在安装后通过以下方式下载模型 `pip install huggingface_hub hf_transfer` 。你可以选择 `UD-`Q2\_K\_XL（动态 2bit 量化）或其他量化版本，例如 `Q4_K_XL` 。我们 <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/GLM-4.6-GGUF",
    local_dir = "unsloth/GLM-4.6-GGUF",
    allow_patterns = ["*UD-Q2_K_XL*"], # 动态 2bit。动态 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-4.6-GGUF/UD-Q2_K_XL/GLM-4.6-UD-Q2_K_XL-00001-of-00003.gguf \
    --jinja \
    --n-gpu-layers 99 \
    --temp 1.0 \\
    --top-p 0.95 \\
    --top-k 40 \
    --ctx-size 16384 \
    --seed 3407 \
    -ot ".ffn_.*_exps.=CPU"
```

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

### ✨ 使用 llama-server 和 OpenAI 的 completion 库进行部署

要使用 llama-server 进行部署，请使用以下命令：

{% code overflow="wrap" %}

```bash
./llama.cpp/llama-server \
    --model unsloth/GLM-4.6-GGUF/UD-Q2_K_XL/GLM-4.6-UD-Q2_K_XL-00001-of-00003.gguf \
    --alias "unsloth/GLM-4.6" \
    --n-gpu-layers 999 \
    -ot ".ffn_.*_exps.=CPU" \
    --prio 3 \
    --temp 1.0 \\
    --top-p 0.95 \\
    --top-k 40 \
    --ctx-size 16384 \
    --port 8001 \
    --jinja
```

{% endcode %}

然后使用 OpenAI 的 Python 库，先执行 `pip install openai` :

```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-4.6",
    messages = [{"role": "user", "content": "2+2 等于多少？"},],
)
print(completion.choices[0].message.content)
```

### :minidisc:模型上传

**我们所有的上传** ——包括那些不是基于 imatrix 或动态的上传——都使用了我们的校准数据集，该数据集专门针对对话、编码和语言任务进行了优化。

* 完整的 GLM-4.6 模型上传如下：

我们还上传了 [IQ4\_NL](https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/IQ4_NL) 和 [Q4\_1](https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/Q4_1) 量化版本，它们分别针对 ARM 和 Apple 设备运行得更快。

<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/GLM-4.6-GGUF?show_file_info=GLM-4.6-UD-TQ1_0.gguf">TQ1_0</a></td><td><strong>84GB</strong></td><td>1.92/1.56bit</td></tr><tr><td>1.78bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-IQ1_S">IQ1_S</a></td><td><strong>96GB</strong></td><td>2.06/1.56bit</td></tr><tr><td>1.93bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-IQ1_M">IQ1_M</a></td><td><strong>107GB</strong></td><td>2.5/2.06/1.56</td></tr><tr><td>2.42bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-IQ2_XXS">IQ2_XXS</a></td><td><strong>115GB</strong></td><td>2.5/2.06bit</td></tr><tr><td>2.71bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-Q2_K_XL">Q2_K_XL</a></td><td><strong>135GB</strong></td><td>3.5/2.5bit</td></tr><tr><td>3.12bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-IQ3_XXS">IQ3_XXS</a></td><td><strong>145GB</strong></td><td>3.5/2.06bit</td></tr><tr><td>3.5bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-Q3_K_XL">Q3_K_XL</a></td><td><strong>158GB</strong></td><td>4.5/3.5bit</td></tr><tr><td>4.5bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-Q4_K_XL">Q4_K_XL</a></td><td><strong>204GB</strong></td><td>5.5/4.5bit</td></tr><tr><td>5.5bit</td><td><a href="https://huggingface.co/unsloth/GLM-4.6-GGUF/tree/main/UD-Q5_K_XL">Q5_K_XL</a></td><td><strong>252GB</strong></td><td>6.5/5.5bit</td></tr></tbody></table>

### :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 层。

你也可以自定义正则表达式，例如 `-ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU"` 表示从第 6 层开始卸载 gate、up 和 down MoE 层。

Llama.cpp 还引入了高吞吐模式。使用 `llama-parallel`。更多信息请看 [这里](https://github.com/ggml-org/llama.cpp/tree/master/examples/parallel)。你也可以 **将 KV 缓存量化为 4bits** ，例如减少 VRAM / RAM 之间的数据移动，这也可以让生成过程更快。

### 📐 如何适配长上下文（完整 200K）

为了适配更长上下文，你可以使用 **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
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 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/zh/mo-xing/tutorials/glm-4.6-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.
