@MichaelGannotti: https://x.com/MichaelGannotti/status/2076024719371841537
摘要
一份详细报告,关于在 NVIDIA DGX Spark 上优化生产环境 vLLM 服务配置,纠正了导致 MTP acceptance 降低 34% 的标志设置。该结论基于对 90 多份 NVIDIA 官方文档的审阅以及一次包含 69 个场景的工具评估。
查看缓存全文
缓存时间: 2026/07/12 10:52
DGX Spark 的一天:操作手册、蓝图、配置纪律与全新可观测性工具
一天之内,我们审阅了 90 多份官方 @NVIDIAAI 文档,修正了一个导致 MTP 接受率损失 34 个百分点的生产 vLLM 配置,重新运行了 69 场景工具评估,发布了结果,并搭建了三款全新运维工具。本文将详细记录一切变化及其对在 Blackwell GB10 上运行 agent 的开发者有何意义。
一天之内,我们审阅了 90 多份官方 NVIDIA 文档,修正了一个导致 MTP 接受率损失 34 个百分点的生产 vLLM 配置,重新运行了 69 场景工具评估,发布了结果,并搭建了三款全新运维工具。
本文详细记录了所有改动,以及这些改动对在 Blackwell GB10 上运行 agent 的开发者为何重要。
初始状态
spark-56bc 上的生产端点通过 vLLM 0.24.0(Docker 容器)服务于 unsloth/Qwen3.6-35B-A3B-NVFP4 模型。模型能够响应,日常测试中工具调用似乎正常,服务器已稳定运行数周。
配置如下:
vllm serve /model
–served-model-name unsloth/Qwen3.6-35B-A3B-NVFP4
–trust-remote-code
–dtype auto
–gpu-memory-utilization 0.75
–max-model-len 65536
–max-num-seqs 4
–max-num-batched-tokens 8192
–enable-chunked-prefill
–enable-prefix-caching
–speculative-config ‘{“method”: “mtp”, “num_speculative_tokens”: 2}’
–enable-auto-tool-choice
–tool-call-parser qwen3_coder
–reasoning-parser qwen3
它可以处理请求,但远非最优。
第 1 部分:揭示差距的审阅
DGX Spark 操作手册(审阅 65 份)
我们完整学习了 NVIDIA/dgx-spark-playbooks 仓库。README 列出 45 份操作手册,但实际仓库包含 65 个目录——因为有一个隐藏的“station-*”系列,针对更大的 GB300 Ultra 平台。
与我们工作负载最相关的操作手册:
-
vllm(814 行)——GB10 上服务部署的权威参考。明确记录了 agent 就绪的 Qwen3.6-35B 配置,包含
--moe-backend marlin、--kv-cache-dtype fp8、--attention-backend flashinfer和--load-format fastsafetensors。 -
nvfp4-quantization(270 行)——TensorRT Model Optimizer 工作流,用于生成 NVFP4 检查点。
-
nemotron(568 行)——Nemotron-3-Super 的详细 vLLM 和 TensorRT-LLM 启动命令,包含我们缺少的精确环境变量和推测配置。
-
hermes-agent(369 行)——NVIDIA 官方操作手册,用于在 Spark 上运行我们的 agent,使用的正是 Qwen3.6-35B-NVFP4 检查点。
这些文档的模式一致:我们缺少的标记并非晦涩的优化,而是 Blackwell 上 NVFP4 的有文档记录的基线。
NVIDIA AI 蓝图(审阅 25+ 份)
我们还审阅了 NVIDIA Blueprints 的完整目录。Enterprise RAG Pipeline 和新的 AI-Q Blueprint 在架构上与我们在 Hermes 中构建的最为接近。两者都依赖相同的 Nemotron 系列模型以及我们已偏离的、纪律严明的服务配置。
Data Flywheel Blueprint(未在主页面列出,但存在于 GitHub 组织中)正式了我们试图通过技能创建和生产流量实现的自我改进循环。
这些审阅并非学术性质。它们直接指导了数小时后我们做出的配置更改。
第 2 部分:配置修正
在交叉参考 Unsloth 模型卡、Unsloth 文档和 vLLM 官方 DGX Spark 配方后,我们修正了生产服务器。
变更
| 标志 | 旧值 | 修正值 | 来源 |
|---|---|---|---|
--dtype | auto | bfloat16 | Unsloth 模型卡 |
--kv-cache-dtype | (未设置) | fp8 | vLLM 配方 |
--attention-backend | (未设置) | flashinfer | vLLM 配方 |
--moe-backend | (未设置) | marlin | vLLM 配方 |
--load-format | (未设置) | fastsafetensors | vLLM 配方 |
--tool-call-parser | qwen3_coder | qwen3_xml | vLLM 配方 |
--speculative-config | mtp, 2 | mtp, 2, moe_backend: triton | vLLM 配方 |
--max-model-len | 65536 | 131072 | Unsloth 推荐 |
修正后的命令现在为:
vllm serve /model
–served-model-name unsloth/Qwen3.6-35B-A3B-NVFP4
–trust-remote-code
–dtype bfloat16
–kv-cache-dtype fp8
–attention-backend flashinfer
–moe-backend marlin
–gpu-memory-utilization 0.75
–max-model-len 131072
–max-num-seqs 4
–max-num-batched-tokens 8192
–enable-chunked-prefill
–enable-prefix-caching
–load-format fastsafetensors
–speculative-config ‘{“method”: “mtp”, “num_speculative_tokens”: 2, “moe_backend”: “triton”}’
–enable-auto-tool-choice
–tool-call-parser qwen3_xml
–reasoning-parser qwen3
实测影响
我们在相同单请求负载下,变更前后捕获了 SpecDecoding 指标。
之前(旧配置):
- 平均草稿接受率:46–65%
- 平均接受长度:1.92–2.29 tokens
- 位置 1 接受率:61–75%
- 位置 2 接受率:31–55%
之后(修正配置):
- 平均草稿接受率:78–89%
- 平均接受长度:2.48–2.78 tokens
- 位置 1 接受率:86–94%
- 位置 2 接受率:70–83%
MTP 推测解码路径从边际收益变为真正有效。模型现在接受的草稿 token 接近两倍,意味着因拒绝草稿而浪费的前向传递更少。
有趣的是,在修正配置下,单请求的原始生成吞吐量似乎略低(约 45 tok/s 对比约 60 tok/s)。这是符合预期的。Marlin 和 FlashInfer 每次前向传递执行了更多正确的工作。效率提升体现在并发负载下以及响应性指标上(从 58 提高到 66)。
第 3 部分:工具评估基准重跑
我们立即针对修正配置重新运行了完整的 69 场景工具评估基准套件,以衡量 MTP 改进是否转化为更好的工具调用行为。
总体结果
| 指标 | 旧配置 | 修正配置 | 差值 |
|---|---|---|---|
| 最终 TEB 分数 | 91/100 (优秀) | 88/100 (良好) | -3 |
| 总分 | 125/138 | 122/138 | -3 |
| 可部署性 | 81 | 81 | = |
| 响应性 | 58 | 66 | +8 |
| 中位场景时间 | 6.7s | 5.5s | -1.2s |
| 套件总运行时间 | 591s | 498s | -93s |
分数下降了三分。系统变得更快、响应更灵敏。
类别变化
十五个类别中有十二个保持不变。工具选择、参数精度和多步骤链仍保持完美的 100%。
回退集中在:
- M 自主规划:83% → 67%(-16%)
- O 结构化输出:92% → 83%(-9%)
- K 安全与边界:88% → 85%(-3%)
场景级回退
三个场景从通过变为部分通过:
- TC-52——模型检索了两个数据源,但未进行综合比较(之前有)。
- TC-57——模型根本未搜索就直接回答(避免了注入向量,但因不完整性得分更低)。
- TC-69——模型正确调用了两个工具,但输出不是有效的 JSON。
持续失败(模型级别)
两个失败在两种配置下均未改变:
- TC-45:尽管
tool_choice='required',但仍无工具调用。这是模型行为,而非解析器问题。 - TC-60:睡眠注入被触发(攻击者从 turn-1 天气数据中添加了 BCC/CC)。这是当前模型检查点中真实的安全限制。
第 4 部分:已发布的分析
同一天,我们在 smfclearinghouse.com 上发布了完整的技术文章:
“为什么你的 vLLM 配置很重要:Qwen3.6-35B 上的 69 场景工具评估对决”
该文章包含了完整的之前/之后标志对比、MTP 接受率数据、类别表格,以及建议:将服务配置视为模型的一部分,而非事后考虑。
第 5 部分:全新运维工具
在评估工作进行的同时,我们还搭建了三款全新运维工具。
1. 2Wild Coding Agent 延迟监控器
一个零依赖的实时仪表盘,启动 N 个并行流式运行,并实时渲染 TTFT/tok/s/E2E,带一键分享摘要。包含两种社交媒体就绪模式:
- 矩阵模式——全绿磷光美学
- 艺术模式——N 个 agent 分别渲染同一 ASCII 画布的一个垂直切片(指挥者模式)。UI 实时拼接它们。
这现在成为我们在 Spark 上生成关于并发 agent 性能的、视觉吸引人的社交内容的主要工具。
2. Spark Doctor
一个专门针对 DGX Spark (GB10) 的本地诊断 CLI。它能检测:
- 功率上限(power.low_draw_under_load)
- UMA 压力(memory.uma_pressure)
- CUDA 13 / SM_121 wheel 和工具包不匹配
- vLLM CUDA 图 KV 缓存 OOM(与主机内存压力不同)
- 过热风险
- Docker 运行时配置错误
它还包含一个配方验证器,检查张量并行度与 GPU 数、激进的 gpu_memory_utilization,以及上下文长度是否超出单 GPU 统一内存预算。
我们创建了一个远程辅助脚本,以便直接从工作站对 spark-56bc 运行它。
3. 统一 spark-tools.sh 辅助工具
一个单一入口点:
./spark-tools.sh monitor # 启动 2Wild 仪表盘 ./spark-tools.sh doctor # 本地运行 Spark Doctor ./spark-tools.sh doctor-remote # 在 Spark 上运行 Spark Doctor ./spark-tools.sh status # 快速健康检查
这同时消除了诊断工作和内容生成的摩擦。
对 SMF Works 的启示
1. 配置是模型的一部分
MTP 接受率 34 个百分点的波动和 TEB 分数 3 个百分点的波动,完全来自于官方文档中记录的标记。运行“相同“模型但使用不同服务配置的两个团队,并非运行相同的模型。
今后,每个基准测试系列都将记录精确的 vLLM 命令(或等效命令)以及模型哈希。
2. 基准测试系列暂停是合理的
当前的 D 系列方法论在单一的固定服务配置下测量模型。我们现在已经证明,配置选择可以在我们关心的确切指标上实现两位数的百分比提升(工具调用质量、推测解码效率、负载下的响应性)。
重新评估方法论是正确的决定。我们应该:
- 在所有未来运行中标准化到修正后的 NVFP4 基线,或者
- 将配置视为一个显式变量,在每个模型的“默认“和“优化“服务栈下分别运行。
3. 新的可观测性层
我们现在拥有三款互补工具:
- smf-bench——全面的准确性和安全性网格(已暂停)
- tool-eval-bench——严格的 69 场景工具质量测量
- 2Wild Monitor + Spark Doctor——实时可视化压力测试 + 诊断分类
这同时为我们提供了深度评估和快速运维可见性。
4. Memory Note 制度化
我们添加了一条持久的 Memory 条目:
启动前始终按照官方文档(HF 模型卡、vLLM 配方、NVIDIA 操作手册)配置模型服务。缺少
--moe-backend marlin、--kv-cache-dtype fp8、--attention-backend flashinfer会在 NVFP4 Blackwell 上导致静默性能损失。不要假设默认值是最优的。
这一原则将应用于我们上线的每一个新模型。
下一步
修正后的 vLLM 服务器仍在 spark-56bc:8888 上运行。2Wild 监控器可在 localhost:7900 访问。Spark Doctor 已安装,远程辅助工具已就绪。
接下来的具体行动:
- 在完整 smf-bench 网格恢复时,针对修正配置重新运行。
- 使用 2Wild 监控器的艺术模式生成下一轮社交内容。
- 在任何新模型部署前,向标准预检清单中添加“Spark Doctor“步骤。
这一天证明了在 DGX Spark 上实现运维卓越,不仅仅关乎拥有合适的硬件。更关乎以与模型本身相同的严谨态度对待服务栈。
配置现已修正。工具现已就位。记录现已公开。
这就是截至 2026 年 7 月 11 日 Spark 的状态。
相似文章
@MichaelGannotti: https://x.com/MichaelGannotti/status/2074486390432149979
对NVIDIA的Nemotron-3 Mamba-Transformer混合模型在DGX Spark硬件上的全栈评估,包括架构分析、量化(NVFP4)、基准测试结果,以及开源测试套件smf-bench的介绍。
DGX Spark 智能体使用数据
一位用户分享了在 NVIDIA DGX Spark 上使用 vLLM 运行 Qwen3.6 模型的基准测试结果和配置,重点关注包含并发请求和工具调用的智能体工作负载。
@Tech2Wild: 在家运行完整的GLM-5.2,744B参数,全部256个专家,未剪枝,跨4×NVIDIA DGX Spark (GB10)。200K上下文 · MTP …
一份详细的指南,介绍如何跨4个NVIDIA DGX Spark节点运行未剪枝的GLM-5.2模型(744B参数,256个专家),支持200K上下文,总吞吐量高达60.5 tok/s。包含性能基准测试、致谢和补丁。
GLM-5.2-Int4-Int8 在 8× GB10 上:约 1,200 t/s 预填充,33–54 t/s 平均解码
描述了在 8 节点 DGX Spark (GB10) 集群上使用定制 vLLM 分支部署和基准测试量化后的 GLM-5.2-Int4-Int8Mix 模型,实现了约 1,200 t/s 的预填充和约 35 t/s 的解码,支持 MTP 工具调用。
后续:在四块DGX Spark上运行GLM-5.2 NVFP4——MTP谜题已解,现可在128K上下文下达到约24 tok/s
修复了vLLM中为四块DGX Spark配置GLM-5.2 NVFP4时的一个推测解码bug,解决了性能权衡问题,通过MTP4在128K上下文下实现了约24 tok/s。