For the complete documentation index, see llms.txt. This page is also available as Markdown.

GLM-4.7:本地运行指南

关于如何在你自己的本地设备上运行 Z.ai GLM-4.7 模型的指南!

GLM-4.7 是 Z.ai 最新的思考模型,在编码、智能体和聊天表现上优于 GLM-4.6。它在 SWE-bench(73.8%,+5.8)、SWE-bench Multilingual(66.7%,+12.9)和 Terminal Bench 2.0(41.0%,+16.5)上达到 SOTA 表现。

完整的 355B 参数模型需要 400GB 磁盘空间,而 Unsloth Dynamic 2-bit GGUF 将大小减少到 134GB (-75%). GLM-4.7-GGUF

所有上传都使用 Unsloth Dynamic 2.0 ,以获得 SOTA 5-shot MMLU 和 Aider 表现,这意味着你可以在几乎不损失准确率的情况下运行并微调量化的 GLM LLM。

⚙️ 使用指南

2-bit 动态量化 UD-Q2_K_XL 使用 135GB 磁盘空间——这在 1x24GB 显卡和 128GB 内存 配合 MoE 卸载时效果很好。1-bit 的 UD-TQ1 GGUF 也 可在 Ollama 中原生运行!

你必须使用 --jinja 用于 llama.cpp 量化版本——这会使用我们的 固定聊天模板 并启用正确的模板!如果你不使用,可能会得到错误结果 --jinja

4-bit 量化可放入 1x 40GB GPU 中(并将 MoE 层卸载到 RAM)。如果你还有额外的 165GB RAM,在这种配置下预计速度约为 5 token/s。建议至少有 205GB RAM 来运行该 4-bit 版本。要获得最佳性能,你至少需要 205GB 统一内存,或 205GB 的 RAM+VRAM 组合,才能达到 5+ token/s。要了解如何提高生成速度并适配更长上下文, 请阅读这里.

推荐设置

针对不同使用场景使用不同设置。默认和多轮智能体场景的推荐设置:

默认设置(大多数任务)
Terminal Bench、SWE Bench Verified

temperature = 1.0

temperature = 0.7

top_p = 0.95

top_p = 1.0

131072 max new tokens

16384 max new tokens

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

  • 最大上下文窗口: 131,072

运行 GLM-4.7 教程:

查看我们关于在以下环境中运行 GLM-4.7 的分步指南: Ollama 以及 llama.cpp.

✨ 在 llama.cpp 中运行

1

获取最新的 llama.cppGitHub 这里。你也可以按照下面的构建说明操作。将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF 如果你没有 GPU,或者只想进行 CPU 推理。 对于 Apple Mac / Metal 设备,设置 -DGGML_CUDA=OFF 然后照常继续——Metal 支持默认开启。

2

如果你想直接使用 llama.cpp 来加载模型,可以使用下面的方法:(:Q2_K_XL)是量化类型。你也可以通过 Hugging Face 下载(第 3 点)。这类似于 ollama run 。使用 export LLAMA_CACHE="folder" 来强制 llama.cpp 保存到特定位置。请记住,该模型的最大上下文长度只有 128K。

使用 --fit on 于 2025 年 12 月 15 日推出,以最大限度利用你的 GPU 和 CPU。

可选地,尝试 -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 层。

3

通过以下方式下载模型(在安装 pip install huggingface_hub hf_transfer 之后)。你可以选择 UD-Q2_K_XL(动态 2bit 量化)或其他量化版本,例如 Q4_K_XL 。我们 建议使用我们的 2.7bit 动态量化 UD-Q2_K_XL 以平衡大小和准确率.

4

你可以编辑 --threads 32 来设置 CPU 线程数, --ctx-size 16384 来设置上下文长度, --n-gpu-layers 2 来设置 GPU 卸载多少层。如果你的 GPU 显存不足,请尝试调整它。如果你只进行 CPU 推理,也请移除它。

🦙 在 Ollama 中运行

1

安装 ollama 如果你还没安装!要运行模型的更多变体, 请看这里.

2

运行模型!注意,如果失败,你可以在另一个终端中调用 ollama serve!我们在 Hugging Face 上传中包含了所有修复和建议参数(如 temperature 等) params

3

要运行其他量化版本,你需要先将 GGUF 分片文件合并成 1 个,就像下面的代码。然后你需要在本地运行模型。

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

要使用 llama-server 进行部署,请使用以下命令:

然后在以下命令之后使用 OpenAI 的 Python 库 pip install openai :

🔨使用 GLM 4.7 进行工具调用

查看 Tool Calling Guide 以了解如何进行工具调用的更多细节。在一个新的终端中(如果使用 tmux,请按 CTRL+B+D),我们创建一些工具,比如两数相加、执行 Python 代码、执行 Linux 功能等等:

然后我们使用下面的函数(复制并粘贴执行),它会自动解析函数调用,并为任何模型调用 OpenAI 端点:

在通过以下方式启动 GLM 4.7 之后 llama-server 就像在 GLM-4.7 中一样,或者查看 Tool Calling Guide 以获取更多细节,然后我们就可以进行一些工具调用:

GLM 4.7 的数学运算工具调用

GLM 4.7 执行生成的 Python 代码的工具调用

🏂 提升生成速度

使用 --fit on 于 2025 年 12 月 15 日推出,以最大限度利用你的 GPU 和 CPU。参见 https://github.com/ggml-org/llama.cpp/pull/16653 --fit on 会尽可能将模型的大部分自动卸载到 GPU,然后把剩余部分放到 CPU 上。

如果你有更多 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。了解更多 这里。你还可以 将 KV 缓存量化为 4bits ,例如减少 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

最后更新于

这有帮助吗?