@no_stp_on_snek: 所以我想测试一下Nvidia的TwoTowers,但它有点大,于是我对其进行了量化。但速度非常慢。看起来像是…
摘要
NVIDIA TwoTower块扩散语言模型(Nemotron-Labs-TwoTower-30B-A3B-Base)的4位量化,将两个塔压缩至约38 GB,使得在单GPU上推理速度缓慢(约2-4 tok/s)。
查看缓存全文
缓存时间: 2026/07/04 06:41
所以,我想测试英伟达的TwoTowers,但它有点大。于是我把它量化了。但速度非常慢。看起来 vllm 和 llamacpp 仍在努力支持块扩散。
所以霍比特人来了……等这些推理引擎支持双塔奇兵的时候就用它了。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B…
thetom-ai/Nemotron-TheHobbit-30B-A3B · Hugging Face
来源:https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#nemotron-thehobbit-30b-a3bNemotron-TheHobbit-30B-A3B
双塔奇兵,缩小到可以一体容纳。🧙
英伟达的 Nemotron-Labs-TwoTower-30B-A3B-Base (https://huggingface.co/nvidia/Nemotron-Labs-TwoTower-30B-A3B-Base) 是一种块扩散语言模型,其双塔设计在扩散模式下官方需要 2× 80 GB (H100/A100) —— 即每块 GPU 约 59 GB(BF16 精度)。而此模型采用 Config-I 精简方案:一种 4 位 TQ4\_1S 量化,将两个塔压缩至约 38 GB,使得完整的自回归和掩码扩散路径可在单块 GPU 上运行。一个走进魔多的霍比特人,而双塔奇兵却需要一支护戒小队。
已在单块 NVIDIA DGX Spark(GB10,128 GB 统一内存)上完成端到端验证。
⚠️ 研究原型——正确但缓慢。 使用即时执行 PyTorch 运行,依赖无核 torch 回退(没有融合的
mamba\_ssm/causal\_conv1d),串行执行原本需要两块数据中心 GPU 的工作:在 GB10 上约 2–4 tok/s。公开共享,以便社区在真实硬件上测试并提速——详见 寻求帮助。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#what-config-i-means“Config-I” 的含义
Config-I 是 TurboQuant (https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/) 的 TQ4\_1S 权重格式:对每 32 元素块应用 Walsh–Hadamard (RHT) 旋转,然后进行 4 位 16 级 Lloyd–Max 量化,并配有双半块缩放因子(约 5 位/权重)。旋转的巧妙之处在于它使每个权重分布高斯化,因此一个固定的 4 位码本对所有张量类型同时接近最优。这使其在 Mamba-2 状态空间循环中存活下来——而朴素的 int8 量化在那里会崩溃为垃圾数据。
每权重重建余弦 ≈ 0.997,均匀覆盖 Mamba-2、注意力机制和 128 专家 MoE 张量。SSM 标量参数 (A_log、dt、conv1d、D)、归一化层、路由器门、PixArt 风格的 adaLN 时间调节表以及嵌入层保持 BF16 精度。自回归和扩散模式均能生成连贯且相互一致的文本。
| 规模 | 尺寸 |
|---|---|
| BF16(英伟达参考) | 118 GB |
| ~59 GB × 2 GPU | |
Config-I TQ4\_1S | 38 GB |
| 1 GPU |
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#the-model-underneath底层模型
一种双塔块扩散语言模型:一个上下文塔 + 一个时间调节去噪塔,每个都是 Nemotron-H 混合体(Mamba-2 SSM + 注意力 + 128 专家 MoE,top-6,约 3 B 激活参数)。它通过迭代掩码去噪并行生成一个 token 块,而不是一次只生成一个 token。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#running-it运行
pip install torch transformers accelerate safetensors einops numpy python run_configi.py # 加载两个塔到 cuda:0,运行 AR + 扩散演示
run\_configi\.py 是自包含的:它为去噪器导入的 mamba\_ssm / causal\_conv1d 内核注入 torch 替代实现(因此你不需要 mamba-ssm,它在很多 GPU 上无法编译),将量化的线性层替换为即时 Config-I 反量化层,并应用无同步 MoE。有关 load() / generate\_ar / generate\_mask\_diffusion API,请参见脚本。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#performance–why-its-slow性能及为何缓慢
英伟达的吞吐量来自 2× 80 GB GPU 与融合的 mamba\_ssm / causal\_conv1d Triton 内核。而在这里,单块 GPU 上,模型受限于缺少融合内核以及每次前向传播的 4 位反量化。已应用加速措施——torch.compile 反量化、无同步 MoE(原始循环每 token 产生 18 次 CPU↔GPU 同步),以及 bf16 张量核心反量化 + autocast(原始路径退化为 fp32 SIMT 矩阵乘法)——共同实现 9× 加速(0.24 → 约 2 tok/s 扩散)。数据中心吞吐量仍需要融合内核和/或双 GPU 参考设置。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#engine-support-status-july-2026–%F0%9F%9A%A7-in-progress引擎支持状态(2026年7月——🚧 进行中)
对于双塔扩散路径,快速原生推理在 llama.cpp 或 vLLM 中尚不存在——基础模型仅发布数天。截至撰写本文时,两个引擎均不支持 TwoTower(已搜索两个仓库;没有“two-tower”相关的 PR/issue)。当前状态:
- vLLM——不支持双塔扩散。它确实支持 NemotronH 自回归主干(
NemotronHForCausalLM,PR #47088 (https://github.com/vllm-project/vllm/pull/47088)、#47440 (https://github.com/vllm-project/vllm/pull/47440)),因此vllm serve运行自回归路径,而非扩散双塔。通用块扩散基础设施正在通过 DiffusionGemma (#45982 (https://github.com/vllm-project/vllm/pull/45982)、#47462 (https://github.com/vllm-project/vllm/pull/47462)、#47464 (https://github.com/vllm-project/vllm/pull/47464)) 落地——这是 TwoTower 端口将依赖的基础设施。 - llama.cpp——不支持双塔 / 交叉注意力去噪器路径。块扩散正在针对 DiffusionGemma (#24427 (https://github.com/ggml-org/llama.cpp/pull/24427)) 和 LLaDA 2.0 (#17454 (https://github.com/ggml-org/llama.cpp/pull/17454)) 添加。你现在看到的任何针对 Nemotron 的“适用于 llama.cpp/Ollama/LM Studio 的 GGUF 量化”都指的是自回归主干(Nemotron-3-Nano),而非此扩散模型。
vLLM 和 llama.cpp 对此模型的支持仍在进行中——需要重新审视。 在快速引擎路径到来之前,英伟达的 2× 80 GB 参考方案(融合的
mamba\_ssm/causal\_conv1d内核)是吞吐量路径,而此仓库的run\_configi\.py是单 GPU(即时执行,约 2–4 tok/s)的途径。任何将 TwoTower 移植到快速引擎的人,很可能会基于当前正在落地的 DiffusionGemma / LLaDA 块扩散工作进行。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#help-wanted寻求帮助
- 在 2× 80 GB(或单块 H200/B200)上测试——报告 AR 与扩散的质量对比及吞吐量。
- fp8 权重缓存——将权重反量化一次并驻留为 fp8(约 63 GB,仍为 1 GPU),以消除每次前向传播的反量化开销(预计约 10–15 tok/s)。
- 融合内核 / CUDA 图,用于双塔扩散路径。
- 保持基准测试(MMLU / GSM8K / HumanEval,AR vs 扩散)与 BF16 参考的对比。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#reproduction复现
quantize\_twotower\_gpu\.py(已包含)可将 BF16 检查点在单 GPU 上量化至 Config-I,耗时约 7 分钟。
https://huggingface.co/thetom-ai/Nemotron-TheHobbit-30B-A3B#attribution归属
- 基础模型: © 英伟达,Nemotron-Labs-TwoTower-30B-A3B-Base (https://huggingface.co/nvidia/Nemotron-Labs-TwoTower-30B-A3B-Base),基于英伟达开放模型许可。这是一个独立的社区量化,与英伟达无关,也未获其认可。
- 量化: TurboQuant (https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/) Config-I /
tq4\_1s(RHT 旋转 4 位)。 - Torch 回退内核、无同步 MoE 以及单 GPU 加载器为此版本添加。
相似文章
@no_stp_on_snek: 相当不错。我自己跑了一些测试。在我看来这是个挺不错的模型。
NVIDIA 的 4 位量化 Qwen3.6-27B 模型(NVFP4)据称接近无损,在四分之一大小下保持了全尺寸质量。
NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B 在双RTX 3090上
关于在双RTX 3090上使用vLLM运行量化后的NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B模型的详细指南,支持完整的262K上下文,实现高推理速度且无需CPU卸载。
@no_stp_on_snek: 这太厉害了!3090 级别的 GPU 欢呼吧!
Unsloth AI 发布了量化版 Qwen3.6 模型,在消费级 GPU 上运行速度快了 2.5 倍。其中 27B 模型可适配 24GB 显存,35B-A3B 模型实现了高吞吐量。
@superalesha: 别急着埋葬RTX 3090,先读完这个!@UnslothAI本周发布了qwen3.6-35b的两个新4位量化版本。我花了…
对Qwen3.6-35B在RTX 3090上的nvfp4、nvfp4-fast和AWQ 4位量化进行了基准测试,结果显示性能相近,而MTP头技巧将吞吐量提升了41%。
@rumgewieselt:现在变得疯狂了……三块 1080 Ti(Pascal架构,33GB VRAM)Qwen 3.6 27B MTP 搭配 196K TurboQuant,持续 ~28-30 t/s
一位用户成功在三个 GTX 1080 Ti GPU 上对 27B 参数的 Qwen 模型进行本地推理,通过 TurboQuant 优化达到了约 28-30 tokens/秒的速度。