zGLM-4.7:本地运行指南

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

GLM-4.7 是 Z.ai 的最新思维模型,在编码、代理和聊天性能方面优于 GLM-4.6。它在 SWE-bench(73.8%,+5.8)、SWE-bench 多语言(66.7%,+12.9)和 Terminal Bench 2.0(41.0%,+16.5)上实现了 SOTA 性能。

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

所有上传均使用 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 中本地运行!

circle-info

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

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

circle-check

推荐设置

针对不同用例使用不同设置。默认和多轮代理用例的推荐设置:

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

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 教程:

查看我们在 Ollamallama.cpp.

✨ 在 llama.cpp 中运行

1

获取最新的 llama.cppGitHub 此处arrow-up-right。您也可以按照下面的构建说明操作。将 -DGGML_CUDA=ON 更改为 -DGGML_CUDA=OFF 如果您没有 GPU 或仅想要 CPU 推理。

2

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

circle-info

使用 --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" 表示将门控、上投影和下投影的 MoE 层卸载,但仅从第 6 层开始。

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 分割文件合并为一个,如下面的代码所示。然后您需要在本地运行模型。

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

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

然后在 pip install openai :

使用 GLM 4.7 的工具调用 Tool Calling Guide 详见

"required": ["code"],

return messages 在通过 llama-server GLM-4.7 启动 GLM 4.7 之后, Tool Calling Guide 如在

或参见

"content": [{"type": "text", "text": "今天的日期加 3 天是几号?"}],

🏂 将生成的 Python 代码作为工具执行的调用(GLM 4.7)

使用 --fit on 提高生成速度 于 2025 年 12 月 15 日引入,以充分利用您的 GPU 和 CPU。详见arrow-up-right --fit on https://github.com/ggml-org/llama.cpp/pull/16653

会自动将模型尽可能多的部分卸载到 GPU,然后将剩余部分放到 CPU 上。

如果您有更多的 VRAM,可以尝试卸载更多的 MoE 层,或直接卸载整个层。 -ot ".ffn_.*_exps.=CPU" 通常,

如果您有更多的 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" 表示将门控、上投影和下投影的 MoE 层卸载,但仅从第 6 层开始。

会将所有 MoE 层卸载到 CPU!这实际上允许您将所有非 MoE 层放在 1 块 GPU 上,从而提高生成速度。如果您有更多 GPU 容量,可以自定义正则表达式以适配更多层。 Llama.cpp 还引入了高吞吐量模式。使用llama-parallel 。更多信息请阅读arrow-up-right此处 。您还可以 将 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 一起使用

最后更新于

这有帮助吗?