章节 01
导读 / 主楼:NVIDIA DGX Spark 本地大模型推理栈实战:双服务架构与 MTP 加速深度解析
基于 NVIDIA DGX Spark (GB10) 的本地 LLM 推理方案,采用双服务架构(Coder + Architect)配合 MTP 多令牌预测技术,实现 30-67 t/s 的生成速度,128GB 统一内存池支持两模型同时运行。
正文
基于 NVIDIA DGX Spark (GB10) 的本地 LLM 推理方案,采用双服务架构(Coder + Architect)配合 MTP 多令牌预测技术,实现 30-67 t/s 的生成速度,128GB 统一内存池支持两模型同时运行。
章节 01
基于 NVIDIA DGX Spark (GB10) 的本地 LLM 推理方案,采用双服务架构(Coder + Architect)配合 MTP 多令牌预测技术,实现 30-67 t/s 的生成速度,128GB 统一内存池支持两模型同时运行。
章节 02
NVIDIA DGX Spark(代号 GB10)搭载 Grace Blackwell 超级芯片,为本地大模型推理带来了革命性的硬件基础。128GB 统一内存(CPU+GPU 共享)消除了传统 PCIe 瓶颈,让模型、KV 缓存和操作系统在同一内存池中以全带宽共存。本文深入解析一个基于此硬件构建的生产级 LLM 推理栈,涵盖架构设计、性能调优与工程实践。
章节 03
GB10 的核心配置令人印象深刻:
这种统一内存架构改变了大模型部署的游戏规则——整个模型、KV 缓存和操作系统可以共存于同一内存池,为超长上下文窗口提供了可能。
章节 04
项目采用创新的双服务设计,针对不同场景优化:
| 服务 | 模型 | 端口 | 角色 |
|---|---|---|---|
| qwen27-mtp | Qwen3.6-27B dense, UD-Q4_K_XL MTP | 8152 | 代码生成 |
| qwen35-mtp | Qwen3.6-35B-A3B MoE, Q4_K_XL MTP | 8154 | 架构设计/深度推理 |
两服务可同时运行于 128GB 内存池(合计约 77GB),也可通过 llm-switch 工具按需切换,让活动模型独享全部内存。
章节 05
2026年5月,MTP(Multi-Token Prediction)支持正式合并入 llama.cpp 主线(PR #22673)。这项技术让模型在每个前向传播中预测多个未来令牌,显著减少解码步骤。
性能实测:
27B Coder 服务:
--spec-draft-n-max 5)35B Architect 服务:
章节 06
针对 GB10 的 SM 12.1 架构和 ARM 特性,需要特定的编译配置:
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_NATIVE=ON \
-DGGML_CUDA=ON \
-DGGML_CURL=ON \
-DCMAKE_CUDA_ARCHITECTURES="121a-real" \
-DGGML_CUDA_FA=ON \
-DGGML_CUDA_FA_ALL_QUANTS=ON \
-DGGML_CUDA_FORCE_MMQ=ON \
-DGGML_CPU_KLEIDIAI=ON
关键参数解析:
121a-real:生成原生 GB10 SASS 指令,消除加载时的 JIT 编译开销GGML_CPU_KLEIDIAI=ON:启用 ARM KleidiAI 微内核,SVE2 优化的 GEMM 是 aarch64 平台的最大性能提升来源GGML_CUDA_FA_ALL_QUANTS=ON:为所有 KV 缓存类型启用 Flash Attention,否则非 f16 KV 会静默禁用 FAGGML_CUDA_FORCE_MMQ=ON:强制量化矩阵乘法路径,在 Blackwell 上更快章节 07
基于统一内存架构的特殊性,项目总结了几条关键经验:
--no-mmap 是必需的:统一内存上页面错误会严重 cripple 性能--spec-draft-n-max 5,MoE 35B 用 --spec-draft-n-max 2(MoE 从高草稿数获益较少)--reasoning-budget 4000,防止无限制思考耗尽 max_tokens章节 08
llm-switch 工具提供灵活的模型生命周期管理:
llm-switch coder # 停止 architect,启动 coder
llm-switch architect # 停止 coder,启动 architect
llm-switch both # 同时运行(共享部分内存带宽)
llm-switch off # 停止所有服务
llm-switch status # 查看运行状态与内存使用
这种设计让用户可以根据任务类型灵活分配 128GB 内存资源。