@0xSero: 欢呼吧,各位6000系列爱好者。我们家里有GLM了
摘要
一套现成的Docker配置,用于在4块RTX PRO 6000 Blackwell GPU上通过vLLM部署GLM-5.2-NVFP4-REAP-469B模型,包含详细说明和配置选项。
查看缓存全文
缓存时间: 2026/06/19 00:13
各位六千系列用户,欢呼吧!
我们的“GLM”已经就位了
https://t.co/pAUQf4WPpe
0xSero/glm-5.2-sm120
来源:https://github.com/0xSero/glm-5.2-sm120
GLM-5.2-NVFP4-REAP-469B — 基于 vLLM 的服务(4× RTX PRO 6000 Blackwell)
一套开箱即用的 Docker 配置,用于在 4× NVIDIA RTX PRO 6000 Blackwell(SM120,单卡 96 GB) 上运行 0xSero/GLM-5.2-NVFP4-REAP-469B (https://huggingface.co/0xSero/GLM-5.2-NVFP4-REAP-469B)(经 REAP 剪枝、NVFP4 量化、DeepSeek 稀疏注意力)模型,并使用 voipmonitor 的 b12x vLLM 镜像。
模型: huggingface.co/0xSero/GLM-5.2-NVFP4-REAP-469B (https://huggingface.co/0xSero/GLM-5.2-NVFP4-REAP-469B) · 磁盘占用约 313 GB(NVFP4)· 经 REAP 剪枝的 469B MoE · DeepSeek 稀疏注意力 + MTP。
已验证配置:DCP=4 · 250k 上下文 · 约 3 倍并发 · 约 60 tok/s 解码 · fp8 KV 缓存 · MTP 推测解码 · 工具调用 · 默认关闭思考功能(可开启)。
硬件目标
| GPU | 4× RTX PRO 6000 Blackwell (SM120),单卡 96 GB,无 NVLink(PCIe) |
| 模型磁盘占用 | 约 313 GB (NVFP4),每 GPU 约驻留 78.6 GB |
| 互联方式 | PCIe — 需设置 NCCL_P2P_DISABLE=1(见下文) |
前提条件
- Docker + NVIDIA Container Toolkit。
- 拥有 b12x 镜像的访问权限(
voipmonitor/vllm:black-benediction-...)。该镜像是唯一集成了GlmMoeDsaForCausalLM+Glm4MoeMTPModel+ SM120 稀疏 MLA 内核 (B12X_MLA_SPARSE) + ModelOpt NVFP4 MoE 加载器的镜像。 - 模型权重需存放在本地路径(默认为
/mnt/llm_models/GLM-5.2-NVFP4-REAP-469B)。
快速开始 — 一条命令
# 1. 下载权重(约 313 GB NVFP4)—— 需要安装 hf CLI:pip install -U huggingface_hub
hf download 0xSero/GLM-5.2-NVFP4-REAP-469B --local-dir /mnt/llm_models/GLM-5.2-NVFP4-REAP-469B
# 2. (可选)修改权重路径 / 端口
cp .env.example .env # 默认已指向 /mnt/llm_models/...,端口 8000
# 3. 启动。该命令会启动服务器,等待就绪,并进行快速测试。
./launch.sh
launch.sh 会阻塞直到服务器真正响应,然后输出:
✅ 就绪 — GLM-5.2 正在服务,并已响应:READY
端点 : http://localhost:8000/v1 (模型:GLM-5.2-NVFP4-REAP-469B)
尝试使用 : ./chat.sh "写一首关于GPU的俳句"
(首次启动会编译内核并捕获 CUDA graphs,约需 6 分钟 — launch.sh 会等待完成,若失败则显示日志。)之后即可与其对话:
./chat.sh "用三点解释快速排序"
# 或直接调用 OpenAI 兼容 API:
curl -s http://localhost:8000/v1/chat/completions -H 'Content-Type: application/json' \
-d '{"model":"GLM-5.2-NVFP4-REAP-469B","messages":[{"role":"user","content":"hello"}]}'
docker compose up -d 同样可用(配置相同,默认关闭思考功能)。
推理(思考)— 默认关闭,开箱即用
GLM-5.2 是一个推理模型。思考功能默认是关闭的,因此即使 max_tokens 较小,普通请求也会在 message.content 中直接返回答案。
为什么重要:开启思考的推理模型会先消耗 token 预算用于“思考”。如果
max_tokens设置得短,回答前的思考过程就会耗尽预算,导致content返回为空(finish_reason: "length")。默认关闭思考功能可以完全避免这种情况 — 端点行为与普通聊天模型一致。
想要思维链(在困难的数学/代码/逻辑问题上表现更佳)?开启它:
ENABLE_THINKING=1 ./launch.sh # 重新启动并启用推理
./chat.sh --think "证明 sqrt(2) 是无理数"
当 ENABLE_THINKING=1 时,服务器会添加 --reasoning-parser glm45,因此思维链会流式进入 message.reasoning,答案进入 message.content。请为思考请求设置充足的 max_tokens(≥ 2000)。
| 模式 | 默认请求行为 | 使用场景 |
|---|---|---|
| 关闭思考 (默认) | 直接在 content 中回答,max_tokens 任意 | 通用场景、代理、工具调用 |
开启思考 (ENABLE_THINKING=1) | reasoning + content 分开;max_tokens 建议 ≥ 2000 | 困难推理、基准测试 |
工具调用(--tool-call-parser glm47)在两种模式下均可正常工作 — 按惯例解析 message.tool_calls。
已验证配置
| 设置项 | 值 | 原因 |
|---|---|---|
--tensor-parallel-size | 4 | 每 GPU 一个分片 |
--decode-context-parallel-size | 4 | 将 MLA KV 分片到 4 张 GPU 上 → 可容纳 250k 上下文 |
--max-model-len | 250000 | 710,593 token 池 → 在 250k 下实现约 2.84× 并发 |
--max-num-seqs | 2 | 目标并发数 |
--kv-cache-dtype | fp8 | fp8_ds_mla;SM120 必须使用(bf16 会导致垃圾输出) |
--quantization | modelopt_fp4 | NVFP4 权重 |
--attention-backend | B12X_MLA_SPARSE | SM120 原生稀疏 MLA 解码 |
--moe-backend | b12x | NVFP4 MoE |
--speculative-config | mtp, 3 tokens | MTP 推测解码 |
--hf-overrides | index_topk_pattern | 对连贯性至关重要(见下文) |
--tool-call-parser | glm47 | 工具调用(始终开启) |
--reasoning-parser | glm45 | 仅在 ENABLE_THINKING=1 时使用(默认关闭思考) |
为何 index_topk_pattern 对连贯性至关重要
GLM-5.2 使用 DeepSeek 稀疏注意力。vLLM 读取的是 index_topk_pattern,而非检查点中的 indexer_types 数组。没有此模式时,全部 78 层都会构建完整的 indexer,其中的 57 个“共享/跳过”(S) 层会破坏长上下文注意力 → 产生垃圾输出。78 字符的 F/S 字符串(21 个 F,57 个 S)源自模型的 indexer_types,并通过 --hf-overrides 注入。启动时您应看到 57 行日志:Using index_topk_pattern/index_topk_freq to skip sparse MLA indexer ...。
为何使用 DCP_SIZE=4
当 DCP=1 时,MLA KV 缓存会在每个 TP rank 上复制,因此单个 250k 请求需要约 14.5 GB,但每 GPU 仅有约 10.3 GB 空闲 → 显存不足(最大约 177k)。decode-context-parallel-size=4 将 KV 沿着序列维度分片到 4 张 GPU 上,得到 710,593 token 的池。
DCP=4 是最佳方案 — 250k 上下文,约 3 倍并发
DCP=4 是默认配置,也是经过验证的旗舰方案:250k 上下文 · 约 3 倍并发(710,593 token KV 池)· 约 60 tok/s 解码(热启动,启用 MTP)。将 MLA KV 沿着序列维度分片到 4 张 GPU 上,是实现 250k 上下文的关键。
DCP_SIZE | 最大上下文 | KV 池容量 | 并发数 | 解码(热) | |
|---|---|---|---|---|---|
| 4 (默认) | 250000 | 710,593 tok | 约 3× (2.84×) | 约 60 tok/s | 最佳方案 |
| 2 | 250000 | 约 355k tok | 1.42× | 约 49 tok/s | 折中方案 |
| 1 | 约 131k(超 ~177k 会 OOM) | 约 178k tok | 1.36× | 约 81 tok/s | 可选:小上下文,更快解码 |
测量条件:温度 0,b12x,MTP=3,fp8 KV。解码为稳态,且与 MTP 接受率相关(短上下文热启动约 60 tok/s)。冷启动 TTFT 受编译主导 — 对于新提示长度的首次请求会即时编译该长度桶(耗时数十秒),之后热启动 / 前缀缓存命中则快速。首次请求响应慢是内核缓存预热的表现,并非死机。
如果您仅需要较小、更快且上下文 ≤128k 的配置,可在 .env 中设置 DCP_SIZE=1 + MAX_MODEL_LEN=131072(约 81 tok/s,但上限约 131k,失去 250k / 约 3 倍并发的余量)。
为何需要 NCCL_P2P_DISABLE=1
这些 RTX PRO 6000 基于 PCIe(无 NVLink);b12x 的 PCIe allreduce 路径若不禁用 P2P,会在 NCCL 初始化时死锁。
性能(实测,热启动)
| 指标 | 数值 |
|---|---|
| 解码 | 约 60 tok/s(短上下文,热启动,MTP),64k–100k 时约 45 tok/s |
| 预填充 | 64k 时约 5,100 tok/s(热);前缀缓存命中时约 45k–65k tok/s |
| TTFT | 短上下文亚秒;全新未缓存 64k 预填充约 12 秒 |
| 并发数 | 250k 时约 3 倍(2.84×)(710,593 token KV 池) |
首次接触全新长前缀会进行一次该长度桶的单次编译(例如,全新的 99.5k 提示约需 195 秒)。后续相同长度的预填充和前缀缓存命中则快速。
测试
python3 test/coherence_test.py core # 逻辑、数学、代码、哲学、ASCII、多轮对话
python3 test/coherence_test.py long # 64k 大海捞针召回测试
python3 test/longctx_multiturn_test.py # 约 100k token,6 轮推理测试
所有测试均以无 max_tokens 方式流式输出,并报告 TTFT、预填充 tok/s 和解码 tok/s。推理模型会在 reasoning 字段中输出思维链,最终答案在 content 中。
SM120 上的 fp8 / fp4 KV 缓存
- fp8 KV (
fp8_ds_mla) 可用,且是实际的底线。检查点未提供k/v_scale,因此 fp8 以 scale 1.0 运行(启动时会有单行警告)。 - fp4 KV 在 SM120 上被硬件阻止:DSA fp4 索引器缓存断言要求 SM100(数据中心级 Blackwell,B200/GB200)。RTX PRO 6000 不可用。
故障排除
| 症状 | 解决方法 |
|---|---|
| 250k 时显存不足,“estimated maximum model length ~177728” | 设置 DCP_SIZE=4 |
| 长上下文输出杂乱无章 / 不连贯 | 确保设置了 INDEX_TOPK_PATTERN(启动时可见 57 行 skip 日志) |
| NCCL 初始化死锁 | 保持 NCCL_P2P_DISABLE=1 |
| 所有长度下输出乱码 | SM120 上必须使用 --kv-cache-dtype fp8 |
content 为空 / null | 开启了 ENABLE_THINKING=1 且 max_tokens 过小(思考过程消耗了预算) |
相似文章
@0xSero:GLM-5.1-478B-NVFP4 跑在:4×RTX Pro 6000、SGLang,最大 37 万 token(1.75× 满上下文),p10 27.7 | p90 45…
一份 478B 参数的量化 GLM-5.1 模型在 4 块 RTX Pro 6000 上用 SGLang 运行,支持 37 万 token 上下文,解码最高 45 tok/s,预填充 1340 tok/s,并现场演示操控 Figma。
@totheagi: 我们率先让完整的GLM-5.2 (FP8) 运行在 RTX 4090 上。GLM-5.2 是新的 753B 参数 SOTA 开放权重模型,并且…
我们率先通过将稀疏注意力内核移植到 Ada GPU,在 RTX 4090 上运行完整的 GLM-5.2(753B FP8),从而让前沿开放权重模型可在消费级硬件上运行。
@leopardracer: https://x.com/leopardracer/status/2055341758523883631
一位用户分享了他们搭建双GPU本地AI实验室的经验,使用了RTX 4080 Super和5060 Ti,通过llama.cpp和llama-swap运行Qwen 3.6模型,以降低API成本并实现无限制的实验。
我的 GLM-5.2-FP8 HGX-H200 SGLang Docker 部署配置
一位用户分享他们使用SGLang在HGX-H200硬件上运行GLM-5.2-FP8模型的Docker部署配置,实现了262k上下文和70 tokens/s的推理速度。
club-5060ti: 实用的RTX 5060 Ti本地LLM笔记与配置
一个GitHub仓库,提供在双RTX 5060 Ti 16GB显卡上使用vLLM和llama.cpp运行本地LLM(如Qwen3.6 27B)的实用配置和基准测试。