@totheagi: 我们率先让完整的GLM-5.2 (FP8) 运行在 RTX 4090 上。GLM-5.2 是新的 753B 参数 SOTA 开放权重模型,并且…

X AI KOLs Timeline 模型

摘要

我们率先通过将稀疏注意力内核移植到 Ada GPU,在 RTX 4090 上运行完整的 GLM-5.2(753B FP8),从而让前沿开放权重模型可在消费级硬件上运行。

我们率先让完整的 GLM-5.2 (FP8) 运行在 RTX 4090 上。 GLM-5.2 是新的 753B 参数 SOTA 开放权重模型,官方仅支持数据中心 GPU:H100、H200、B200。我们将其稀疏注意力内核栈移植到了消费级硬件上。 一个前沿开放模型,从稀缺的 GPU 迁移到丰富的消费级 GPU 上。 http://github.com/renning22/glm-5.2-4090… @Zai_org
查看原文
查看缓存全文

缓存时间: 2026/06/18 20:21

我们是首个让完整 GLM-5.2(FP8)在 RTX 4090 上运行的公司。GLM-5.2 是全新的 753B 最先进开放权重模型,官方仅支持数据中心 GPU:H100、H200、B200。我们将其稀疏注意力内核栈移植到了消费级硬件上。一个前沿开放模型,从稀缺 GPU 迁移到充裕型 GPU。http://github.com/renning22/glm-5.2-4090… @Zai_org

renning22/glm-5.2-4090

来源:https://github.com/renning22/glm-5.2-4090

GLM-5.2 在 RTX 4090 上运行

在消费级 NVIDIA RTX 4090 GPU 上以原生 FP8 运行完整 GLM-5.2(https://huggingface.co/zai-org/GLM-5.2-FP8)——753B 参数的最先进开放权重模型。

据我们所知,这是首次在 Ada(sm_89)上正确运行 DeepSeek-Sparse-Attention(DSA)模型。原版 sglang / vLLM 栈为 GLM-5.2 硬性要求 Hopper(H100/H200)或 Blackwell(B200)——其稀疏注意力内核限定在 sm_90 / sm_100,无 Ada 回退。本仓库提供了一个即插即用的 ada_dsa.py,将该内核栈整体移植到 4090。

prompt: "The capital of France is"
output: "Paris. Distance from Paris to Lyon is 391 km, while direct flight time is 1 h 5 min"

亮点

  • 完整 753B 模型,全 FP8——非蒸馏或 int4 变体。完整 GLM-5.2-FP8 权重。
  • 24× RTX 4090-48GB(3 节点 × 8),流水线 + 张量并行——已验证,可进行连贯聊天/推理/代码生成。
  • 单流约 10 tokens/秒(CUDA-graph)——在通用显卡上运行完整 753B 模型的交互式速度。
  • 每个移植内核均经过验证,相对于参考实现误差低至约 1e-6——包括真实模型张量上的 0.999999 余弦相似度。
  • 开源——内核、一键安装脚本和验证脚本均在此处。

硬件规模

FP8 权重大约 753 GB,因此模型需要分配到足够多的显卡上以容纳权重、KV 缓存和激活值。大致如下:

GPU每卡显存所需 GPU 数量布局状态
RTX 409048 GB24TP=8 × PP=3(3 节点)✅ 已验证(本仓库)
RTX 409024 GB约 40–48TP=8 × PP=5–6(5–6 节点)规模估算
RTX 509032 GB约 32TP=8 × PP=4(4 节点)规模估算¹

¹ RTX 5090 是 sm_120(消费级 Blackwell),原版 sm_90/sm_100 DSA 内核同样不覆盖——因此也需要同样的移植(将能力检查范围扩大到包含 sm_120)。此处仅测试了 4090-48GB 配置;其他配置为显存适配估算(假设每卡预留约 6–8 GB 用于 KV + 激活值 + CUDA 上下文,更大的上下文窗口需要更多)。

使用方法

已针对带有 nsa / tilelang DSA 后端的 sglang 构建进行了测试,环境中需有 tilelang(我们整合了来自 KTransformers 的 tilelang 0.1.11 + tvm-ffi(https://github.com/kvcache-ai/ktransformers))。

  1. ada_dsa.py 放入 PYTHONPATH
  2. 应用两处小型的 sglang 编辑(幂等,会备份原文件):
python apply_sglang_patches.py

这将会 (a) 在 nsa_indexer.py 中调用 ada_dsa.apply_patches() 来替换 SM90+/SM100 DSA 内核,以及 (b) 添加 CUDA-graph 所需的一行 deep_gemm 防护。(两处编辑均在 TECHNICAL.md 中有文档说明,如果你愿意手动操作的话。)

  1. 启动(示例:24× RTX 4090-48GB,TP=8 × PP=3):
export SGLANG_NSA_FUSE_TOPK=1   # 使用移植的融合页面映射变换
export SGLANG_ENABLE_JIT_DEEPGEMM=0
python -m sglang.launch_server \
    --model-path zai-org/GLM-5.2-FP8 \
    --tp-size 8 --pp-size 3 --nnodes 3 --dist-init-addr :30200 \
    --trust-remote-code --kv-cache-dtype fp8_e4m3 --mem-fraction-static 0.85 \
    --attention-backend nsa --nsa-decode-backend tilelang --nsa-prefill-backend tilelang \
    --fp8-gemm-backend trion \
    --disable-shared-experts-fusion \   # Ada 上必需(MoE 修复),详见 TECHNICAL.md
    --tool-call-parser glm47 --reasoning-parser glm45 \
    --node-rank <0|1|2> --host 0.0.0.0 --port 8000

--disable-shared-experts-fusion 在 Ada 上是必需的。CUDA-graph 默认开启,可提供完整速度(单流约 10 tok/s,而 eager 模式约 2.5);需要在 deep_gemm_wrapper/entrypoint.py 中添加一行额外的防护(见 TECHNICAL.md)。如果你不想打那个补丁,可添加 --disable-cuda-graph 并运行 eager 模式。根据你的网络结构配置 NCCL 传输(NCCL_P2P_DISABLE / NCCL_IB_DISABLE)。

工作原理

ada_dsa.py 猴子修补了 GLM-5.2 的 SM90+/SM100 专用 DSA 内核——闪电索引器 GEMM、top-k + 页面映射以及 MLA 稀疏解码——用便携的 Triton 和基于非 WGMMA 的 tilelang 路径替代,仅在非 Hopper GPU 上生效。此外还有一个 MoE 配置修复。

完整的技术说明、内核逐项详解以及验证表:TECHNICAL.md

状态

GLM-5.2 在消费级硬件上正确运行(原版栈会硬崩溃),单流约 10 tokens/秒(CUDA-graph;eager 模式下约 2.5)。这是在通用显卡上运行完整 753B 模型的交互式速度。该便携索引器/top-k/页面变换栈与模型无关,应可稍作调整后应用于其他 DSA 模型(例如 DeepSeek-V3.2 风格)。

许可证

Apache-2.0。


由 @renning22 (https://github.com/renning22) 构建。

相似文章