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 层卸载到内存)中。如果您还有额外的 165GB 内存,使用此配置大约可达 5 tokens/s。建议至少有 205GB 内存以运行该 4-bit。为获得最佳性能,您需要至少 205GB 的统一内存或 205GB 的 RAM+VRAM 组合以达到 5+ tokens/s。要了解如何提高生成速度并适配更长的上下文, 在此阅读.

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

参阅我们在以下平台上运行 GLM-4.7 的逐步指南, Ollamallama.cpp.

✨ 在 llama.cpp 中运行

1

获取最新的 llama.cppGitHub 这里arrow-up-right。您也可以按照下面的构建说明进行操作。将 -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。

circle-info

使用 --fit on 于 2025 年 12 月 15 日引入,以最大化您 GPU 和 CPU 的使用。

可选地,尝试 -ot ".ffn_.*_exps.=CPU" 将所有 MoE 层卸载到 CPU!这实际上允许您将所有非 MoE 层放在一块 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 分割文件合并为一个,如下面代码所示。然后您需要在本地运行模型。

✨ 使用 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 或参见

以获取更多详细信息,我们随后可以进行一些工具调用:

unsloth_inference(messages, temperature = 0.7, top_p = 1.0, top_k = -1, min_p = 0.00)

🏂 "content": [{"type": "text", "text": "用 Python 创建一个 Fibonacci 函数并求 fib(20)。"}],

使用 --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" 表示从第 6 层起卸载 gate、up 和 down MoE 层。

会将所有 MoE 层卸载到 CPU!这实际上允许您将所有非 MoE 层放在一块 GPU 上,从而提高生成速度。如果您有更多 GPU 容量,可以自定义正则表达式以卸载更多层。 Llama.cpp 还引入了高吞吐量模式。使用llama-parallel 。在arrow-up-right这里 您可以阅读更多相关内容。您还可以 将 KV 缓存量化为 4 位

例如以减少 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

最后更新于

这有帮助吗?