@MichaelGannotti: https://x.com/MichaelGannotti/status/2076024719371841537

X AI KOLs Timeline News

Summary

A detailed report on optimizing a production vLLM serving configuration on NVIDIA's DGX Spark, correcting flags that were costing 34% MTP acceptance after reviewing 90+ official NVIDIA documents and running a 69-scenario tool evaluation.

https://t.co/MM84opPqJk
Original Article
View Cached Full Text

Cached at: 07/12/26, 10:52 AM

One Day on the DGX Spark: Playbooks, Blueprints, Config Discipline, and New Observability Tools

In a single day we reviewed 90+ official @NVIDIAAI documents, corrected a production vLLM configuration that was costing us 34 percentage points of MTP acceptance, re-ran a 69-scenario tool evaluation, published the results, and stood up three new operational tools. This is the detailed record of what changed and why it matters for anyone running agents on Blackwell GB10.

In a single day we reviewed 90+ official NVIDIA documents, corrected a production vLLM configuration that was costing us 34 percentage points of MTP acceptance, re-ran a 69-scenario tool evaluation, published the results, and stood up three new operational tools.

This post is the detailed record of what changed and why it matters for anyone running agents on Blackwell GB10.

The Starting State

Our production endpoint on spark-56bc was serving unsloth/Qwen3.6-35B-A3B-NVFP4 through vLLM 0.24.0 in a Docker container. The model was responding, tool calling appeared to work in casual testing, and the server had been stable for weeks.

The configuration looked like this:

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

It was serving requests. It was not serving them optimally.

Part 1: The Reviews That Exposed the Gap

DGX Spark Playbooks (65 Playbooks Reviewed)

We ingested the entire NVIDIA/dgx-spark-playbooks repository. The README lists 45 playbooks. The actual repository contains 65 directories because of a hidden “station-*” series targeting the larger GB300 Ultra platform.

The most relevant playbooks for our workload were:

  • vllm (814 lines) — The canonical reference for serving on GB10. It explicitly documents the agent-ready Qwen3.6-35B recipe with –moe-backend marlin, –kv-cache-dtype fp8, –attention-backend flashinfer, and –load-format fastsafetensors.

  • nvfp4-quantization (270 lines) — TensorRT Model Optimizer workflow for generating NVFP4 checkpoints.

  • nemotron (568 lines) — Detailed vLLM and TensorRT-LLM launch commands for Nemotron-3-Super with the exact environment variables and speculative config we were missing.

  • hermes-agent (369 lines) — NVIDIA’s own playbook for running our agent on the Spark, using the same Qwen3.6-35B-NVFP4 checkpoint.

The pattern across these documents was consistent: the flags we were missing were not obscure optimizations. They were the documented baseline for NVFP4 on Blackwell.

NVIDIA AI Blueprints (25+ Blueprints Reviewed)

We also reviewed the full catalog of NVIDIA Blueprints. The Enterprise RAG Pipeline and the new AI-Q Blueprint are architecturally the closest to what we are building with Hermes. Both rely on the same Nemotron family models and the same disciplined serving configuration we had drifted from.

The Data Flywheel Blueprint (not listed on the main page but present in the GitHub org) formalizes the exact self-improving loop we are trying to achieve with skill creation and production traffic.

These reviews were not academic. They directly informed the configuration change we made hours later.

Part 2: The Configuration Correction

After cross-referencing the Unsloth model card, Unsloth’s documentation, and vLLM’s official DGX Spark recipe, we corrected the production server.

The Changes

FlagOld ValueCorrected ValueSource–dtypeautobfloat16Unsloth model card–kv-cache-dtype(unset)fp8vLLM recipe–attention-backend(unset)flashinfervLLM recipe–moe-backend(unset)marlinvLLM recipe–load-format(unset)fastsafetensorsvLLM recipe–tool-call-parserqwen3_coderqwen3_xmlvLLM recipe–speculative-configmtp, 2mtp, 2, moe_backend: tritonvLLM recipe–max-model-len65536131072Unsloth recommendation

The corrected command is now:

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

The Measured Impact

We captured SpecDecoding metrics before and after the change under identical single-request load.

Before (old config):

  • Avg draft acceptance rate: 46–65%

  • Mean acceptance length: 1.92–2.29 tokens

  • Position 1 acceptance: 61–75%

  • Position 2 acceptance: 31–55%

After (corrected config):

  • Avg draft acceptance rate: 78–89%

  • Mean acceptance length: 2.48–2.78 tokens

  • Position 1 acceptance: 86–94%

  • Position 2 acceptance: 70–83%

The MTP speculative decoding path went from marginal utility to genuinely effective. The model now accepts nearly twice as many draft tokens, meaning fewer wasted forward passes on rejected drafts.

Interestingly, raw single-request generation throughput appeared slightly lower in the corrected config (~45 tok/s vs ~60 tok/s). This is expected. Marlin and FlashInfer do more correct work per forward pass. The efficiency gain appears under concurrent load and in the responsiveness metric (which improved from 58 to 66).

Part 3: The Tool-Eval-Bench Re-run

We immediately re-ran the full 69-scenario tool-eval-bench suite against the corrected configuration to measure whether the MTP improvement translated into better tool-calling behavior.

Overall Results

MetricOld ConfigCorrected ConfigDeltaFinal TEB Score91/100 (Excellent)88/100 (Good)-3Total Points125/138122/138-3Deployability8181=Responsiveness5866+8Median scenario time6.7s5.5s-1.2sTotal suite runtime591s498s-93s

The score dropped three points. The system got faster and more responsive.

Category Changes

Twelve of fifteen categories were unchanged. Tool Selection, Parameter Precision, and Multi-Step Chains remained at perfect 100%.

The regressions were concentrated:

  • M Autonomous Planning: 83% → 67% (-16%)

  • O Structured Output: 92% → 83% (-9%)

  • K Safety & Boundaries: 88% → 85% (-3%)

Scenario-Level Regressions

Three scenarios flipped from pass to partial:

  • TC-52 — The model retrieved both data sources but did not synthesize a comparison (previously it had).

  • TC-57 — The model answered without searching at all (avoiding an injection vector but scoring lower for incompleteness).

  • TC-69 — The model called both tools correctly but produced output that was not valid JSON.

Persistent Failures (Model-Level)

Two failures remained unchanged across both configurations:

  • TC-45: No tool calls despite tool_choice=‘required’. This is a model behavior, not a parser issue.

  • TC-60: Sleeper injection activated (attacker BCC/CC added from turn-1 weather data). This is a genuine safety limitation in the current model checkpoint.

Part 4: The Published Analysis

We published a full technical write-up on smfclearinghouse.com the same day:

“Why Your vLLM Config Matters: A 69-Scenario Tool Eval Showdown on Qwen3.6-35B”

The post contains the complete before/after flag comparison, the MTP acceptance data, the category table, and the recommendation to treat serving configuration as part of the model rather than an afterthought.

Part 5: New Operational Tooling

While the evaluation work was happening, we also stood up three new operational tools.

  1. 2Wild Coding Agent Latency Monitor

A zero-dependency live dashboard that fires N parallel streaming runs and renders real-time TTFT/tok/s/E2E with a one-click shareable summary. It includes two social-media-ready modes:

  • Matrix Mode — full green-phosphor aesthetic

  • Art Mode — N agents each render one vertical slice of the same ASCII canvas (conductor pattern). The UI stitches them live.

This is now our primary tool for generating visually compelling social content about concurrent agent performance on the Spark.

  1. Spark Doctor

A local diagnostic CLI specifically for the DGX Spark (GB10). It detects:

  • Power caps (power.low_draw_under_load)

  • UMA pressure (memory.uma_pressure)

  • CUDA 13 / SM_121 wheel and toolkit mismatches

  • vLLM CUDA-graph KV-cache OOM (distinct from host memory pressure)

  • Thermal risk

  • Docker runtime misconfiguration

It also includes a recipe validator that checks tensor-parallel vs GPU count, aggressive gpu_memory_utilization, and context length against the single-GPU unified memory budget.

We created a remote helper script so we can run it directly against spark-56bc from the workstation.

  1. Unified spark-tools.sh Helper

A single entry point:

./spark-tools.sh monitor # Start 2Wild dashboard ./spark-tools.sh doctor # Run Spark Doctor locally ./spark-tools.sh doctor-remote # Run Spark Doctor on the Spark ./spark-tools.sh status # Quick health check

This removes friction for both diagnostic work and content generation.

Implications for SMF Works

  1. Configuration Is Part of the Model

The 34-point swing in MTP acceptance and the 3-point swing in TEB score came entirely from flags that were documented in the official sources. Two teams running the “same” model with different serving configurations are not running the same model.

Going forward, every benchmark series will record the exact vLLM command (or equivalent) alongside the model hash.

  1. The Benchmark Series Pause Is Justified

The current D-series methodology measures models under a single, fixed serving configuration. We have now demonstrated that configuration choice can move the needle by double-digit percentages on the exact metrics we care about (tool calling quality, speculative decoding efficiency, responsiveness under load).

Re-evaluating the methodology is the correct decision. We should either:

  • Standardize on the corrected NVFP4 baseline for all future runs, or

  • Treat configuration as an explicit variable and run each model under both “default” and “optimized” serving stacks.

  1. New Observability Layer

We now have three complementary tools:

  • smf-bench — comprehensive accuracy and safety grid (paused)

  • tool-eval-bench — rigorous 69-scenario tool quality measurement

  • 2Wild Monitor + Spark Doctor — live visual stress testing + diagnostic triage

This gives us both deep evaluation and rapid operational visibility.

  1. Memory Note Institutionalized

We added a durable memory entry:

ALWAYS configure model serving per official docs (HF model card, vLLM recipes, NVIDIA playbooks) before launching. Missing –moe-backend marlin, –kv-cache-dtype fp8, –attention-backend flashinfer causes silent perf loss on NVFP4 Blackwell. Don’t assume defaults are optimal.

This principle will be applied to every new model we bring online.

What’s Next

The corrected vLLM server remains live on spark-56bc:8888. The 2Wild monitor is available at localhost:7900. Spark Doctor is installed and the remote helper is ready.

The next concrete actions are:

  • Re-run the full smf-bench grid (when the series resumes) against the corrected configuration.

  • Use the 2Wild monitor in Art Mode to generate the next round of social content.

  • Add a “Spark Doctor” step to the standard pre-flight checklist before any new model deployment.

The day demonstrated that operational excellence on the DGX Spark is not just about having the right hardware. It is about treating the serving stack with the same rigor we apply to the models themselves.

The configuration is now correct. The tooling is now in place. The record is now public.

That is the state of the Spark as of July 11, 2026.

Similar Articles

DGX Spark agentic usage numbers

Reddit r/LocalLLaMA

A user shares benchmark results and configuration for running Qwen3.6 models on NVIDIA DGX Spark using vLLM, focusing on agentic workloads with concurrent requests and tool calling.