zGLM-4.7-Flash:如何在本地运行

在您的设备上本地运行并微调 GLM-4.7-Flash!

GLM-4.7-Flash 是 Z.ai 的新一代 30B MoE 推理模型,针对本地部署构建,在编码、代理化工作流和聊天方面提供业内领先的性能。它使用约 3.6B 参数,支持 200K 上下文,并在 SWE-Bench、GPQA 以及推理/聊天基准上领先。

GLM-4.7-Flash 运行于 24GB 内存/显存/统一内存(全精度需 32GB),现在你也可以使用 Unsloth 进行微调。要在 vLLM 上运行 GLM 4.7 Flash,请参见 GLM-4.7-Flash

circle-check

运行教程微调

用于运行的 GLM-4.7-Flash GGUF: unsloth/GLM-4.7-Flash-GGUFarrow-up-right

⚙️ 使用指南

在与 Z.ai 团队沟通后,他们建议使用他们的 GLM-4.7 采样参数:

默认设置(大多数任务)
终端基准、SWE 基准已验证

temperature = 1.0

temperature = 0.7

top_p = 0.95

top_p = 1.0

repeat penalty = 禁用或 1.0

repeat penalty = 禁用或 1.0

  • 一般使用场景: --temp 1.0 --top-p 0.95

  • 用于工具调用: --temp 0.7 --top-p 1.0

  • 如果使用 llama.cpp,请设置 --min-p 0.01 因为 llama.cpp 的默认值是 0.05

  • 有时你需要试验哪些数值最适合你的使用场景。

circle-exclamation
  • 最大上下文窗口: 202,752

  • 使用 --jinja 用于 llama.cpp 变体

🖥️ 运行 GLM-4.7-Flash

根据你的使用场景,你需要使用不同的设置。有些 GGUF 大小最终相近,因为模型架构(例如 gpt-oss)的维度不能被 128 整除,因此部分无法量化到更低位数。

因为本指南使用 4 位,你将需要大约 18GB 内存/统一内存。我们建议至少使用 4 位精度以获得最佳性能。

circle-exclamation

Llama.cpp 教程(GGUF):

在 llama.cpp 中运行的说明(注意我们将使用 4 位以适配大多数设备):

1

获取最新的 llama.cppGitHub 上此处arrow-up-right。你也可以遵循下面的构建说明。将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF 如果你没有 GPU 或只想进行 CPU 推理。

2

你可以直接从 Hugging Face 拉取。你可以根据内存/显存增加上下文到 200K。若不使用 llama.cpp,请参阅我们的 使用指南在此

你也可以尝试 Z.ai 推荐的 GLM-4.7 采样参数:

  • 一般使用场景: --temp 1.0 --top-p 0.95

  • 用于工具调用: --temp 0.7 --top-p 1.0

  • 记得禁用重复惩罚!

按此用于 通用指令 用例:

按此用于 工具调用 用例:

3

通过以下方式下载模型(在安装 pip install huggingface_hub之后)。你可以选择 UD-Q4_K_XL 或其他量化版本。

4

然后以会话模式运行模型:

另外,根据需要调整 上下文窗口 至多可达 202752

减少重复和循环输出

circle-check

这意味着你现在可以使用 Z.ai 推荐的参数并获得很好的结果:

  • 一般使用场景: --temp 1.0 --top-p 0.95

  • 用于工具调用: --temp 0.7 --top-p 1.0

  • 如果使用 llama.cpp,请设置 --min-p 0.01 因为 llama.cpp 的默认值是 0.05

  • 记得禁用重复惩罚!或者设置为 --repeat-penalty 1.0

我们添加了 "scoring_func": "sigmoid" 改为 config.json 用于主模型 - 参见arrow-up-right.

circle-exclamation

🐦使用 UD-Q4_K_XL 的 Flappy Bird 示例

作为示例,我们通过使用 UD-Q4_K_XL 做了如下的长对话,命令为 ./llama.cpp/llama-cli --model unsloth/GLM-4.7-Flash-GGUF/GLM-4.7-Flash-UD-Q4_K_XL.gguf --fit on --temp 1.0 --top-p 0.95 --min-p 0.01 --jinja :

它以 HTML 形式呈现了以下 Flappy Bird 游戏:

chevron-rightHTML 形式的 Flappy Bird 游戏(可扩展)hashtag

我们还截取了一些屏幕截图(4 位工作):

🦥 微调 GLM-4.7-Flash

Unsloth 现在支持对 GLM-4.7-Flash 的微调,不过你需要使用 transformers v5。30B 模型无法放入免费的 Colab GPU;不过,你可以使用我们的笔记本。对 GLM-4.7-Flash 进行 16 位 LoRA 微调将使用大约 60GB 显存:

circle-exclamation

在对 MoE 进行微调时,微调路由器层可能不是一个好主意,因此我们默认将其禁用。如果你想保留其推理能力(可选),可以使用直接回答和链式思维示例的混合。至少使用 75% 推理25% 非推理 在你的数据集中使模型保留其推理能力。

🦙Llama-server 服务与部署

要将 GLM-4.7-Flash 部署到生产环境,我们使用 llama-server 在一个新终端(例如通过 tmux),通过以下方式部署模型:

然后在另一个新终端,在执行 pip install openai, 运行:

这将打印

💻vLLM 中的 GLM-4.7-Flash

你现在可以使用我们的新 FP8 动态量化arrow-up-right 来为模型提供高端且快速的推理。首先从 nightly 安装 vLLM:

然后启动服务 Unsloth 的动态 FP8 版本arrow-up-right 的模型。我们启用了 FP8 来将 KV 缓存内存使用量减少约 50%,并在 4 张 GPU 上运行。如果你只有 1 张 GPU,使用 CUDA_VISIBLE_DEVICES='0' 并设置 --tensor-parallel-size 1 或移除此参数。要禁用 FP8,移除 --quantization fp8 --kv-cache-dtype fp8

然后你可以通过 OpenAI API 调用已服务的模型:

vLLM GLM-4.7-Flash 试探性解码

我们发现使用 GLM 4.7 Flash 的 MTP(多标记预测)模块会使生成吞吐量从在 1 个 B200 上的 13,000 标记降到 1,300 标记!(慢 10 倍)在 Hopper 上,希望情况会好一些。

在 1xB200 上吞吐量仅为每秒 1,300 标记(每用户解码 130 标记/秒)

并且在 1xB200 上吞吐量为每秒 13,000 标记(每用户解码仍为 130 标记/秒)

🔨使用 GLM-4.7-Flash 的工具调用

参见 工具调用 LLM 指南 以获取有关如何进行工具调用的更多详细信息。在新终端中(如果使用 tmux,使用 CTRL+B+D),我们创建了一些工具,例如加两个数字、执行 Python 代码、执行 Linux 操作等等:

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

在通过 启动 GLM-4.7-Flash 之后, llama-server 像在 GLM-4.7-Flash 或参见 工具调用 LLM 指南 了解更多细节,我们随后可以进行一些工具调用:

用于 GLM 4.7 的数学操作工具调用

用于为 GLM-4.7-Flash 执行生成的 Python 代码的工具调用

基准测试

GLM-4.7-Flash 是在所有基准测试中表现最好的 30B 模型,除了 AIME 25。

最后更新于

这有帮助吗?