@MichaelGannotti: https://x.com/MichaelGannotti/status/2084186867000279436
Summary
A 14.7-hour soak test of DeepSeek V4 Flash on an NVIDIA DGX Spark with 971 requests shows zero crashes or errors, but throughput declined 28% due to thermal throttling, while TTFT and speculative acceptance remained stable.
View Cached Full Text
Cached at: 08/03/26, 05:49 PM
14.7 Hours, 971 Requests, Zero Crashes: DeepSeek V4 Flash Soak Test on the DGX Spark
We ran the ds4 inference server on the @NVIDIA DGX Spark for 14.7 hours under sustained mixed load — 971 requests alternating between reasoning, coding, math, tool calling, creative writing, and logic. Zero errors, zero crashes, zero memory leaks. But throughput declined 28% over the run, revealing a thermal pattern. Here is the full analysis.
The question
We deployed DeepSeek V4 Flash on the DGX Spark (post 1), tuned it for concurrency (post 2), proved it matches cloud quality (post 3), and watched it build Centipede from a single prompt (post 4). But all of those were short-duration tests — one request at a time, minutes apart, with cooldowns between benchmark categories.
The question that matters for production: what happens when the server runs for hours under sustained load?
Does memory leak? Does throughput degrade? Does the GPU thermal throttle? Does speculative decode break down? Do tool calls stop working? Does the process crash?
This post answers that with data from a 14.7-hour soak test: 971 requests, 220,187 tokens generated, zero errors.
The test
We wrote a soak test script that sends one request every ~30 seconds, cycling through 8 prompt types:
-
Reasoning — “If a train travels 80 km in 40 minutes, what is its speed in km/h?”
-
Coding — “Write a Python one-liner to flatten a nested list.”
-
Math — “What is 23 × 47? Show your work.”
-
Knowledge — “What is the capital of Brazil?”
-
Instruction — “List 5 programming languages. One per line.”
-
Tool — “What’s the weather in London? Use the tool.”
-
Creative — “Write a 3-sentence sci-fi story about a robot.”
-
Logic — “All birds can fly. Penguins are birds. Can penguins fly?”
Each request logs: iteration number, timestamp, completion tokens, wall time, throughput (tok/s), TTFT (ms), speculative acceptance rate, and finish reason. The script ran from 10:56 AM on August 2 until 1:37 AM on August 3 — 14 hours and 41 minutes.
The full soak test log is in the Nemo Knowledge Base.
Results
Headline metrics
MetricValueTotal iterations971Duration14.7 hoursErrors0Crashes0Total tokens generated220,187Request rate~66 requests/hourMemory (RSS)3.04 GB (stable, no growth)Server still running at end✅
Finish reason breakdown
Finish reasonCountPercentagestop (natural completion)72975.1%length (hit max_tokens)12112.5%tool_calls (successful tool call)12112.5%
Every tool-calling iteration (every 8th request, 121 total) produced a successful tool_calls finish reason. 100% tool calling success rate over 14.7 hours. The length finishes are all from the coding prompt (800 max_tokens), which the model sometimes fills completely.
Throughput over time — the key finding
**HourAvg tok/sMin tok/sMax tok/sAvg TTFT (ms)Avg Spec %**011.28.019.549571.3110.78.014.347777.8210.68.018.446376.0310.37.516.947676.149.91.814.546877.259.23.212.366575.869.36.612.747477.279.16.417.547375.789.15.617.146577.798.96.417.846275.2108.46.511.446177.0118.25.910.245977.8128.35.917.048876.4138.24.517.645775.0147.86.311.447374.6
Throughput declined from 11.2 to 7.8 tok/s — a 27.9% decrease over 14.7 hours. This is the most significant finding in the soak test. The decline is gradual (not a sudden drop) and consistent (not random). TTFT and spec acceptance are flat — only throughput degrades.
First 50 vs last 50 comparison
MetricFirst 50 requestsLast 50 requestsChangeAvg throughput10.8 tok/s7.8 tok/s−27.9%Avg TTFT500 ms470 ms−5.9% (improved)Avg spec acceptance71.3%74.5%+4.5%
TTFT actually improved slightly (5.9% faster) and spec acceptance is unchanged. Only decode throughput declined. This pattern — stable TTFT, declining decode — is consistent with thermal throttling on the GB10 chip. The prefill phase (which determines TTFT) is bursty and short; the decode phase (which determines throughput) is sustained and heat-generating. As the chip temperature rises over hours of continuous load, the GPU clock may be stepping down to maintain thermal limits.
Spec acceptance by prompt type — stable across 14.7 hours
Prompt typeCountAvg spec acceptAvg tok/sAvg TTFTTool calls12191.4%8.81,040 msReasoning12283.8%10.0438 msMath12283.5%10.8422 msKnowledge12176.2%7.8366 msInstruction12175.8%8.8395 msLogic12170.7%10.2418 msCoding12269.7%9.4412 msCreative12157.5%8.9385 ms
DSpark speculative decode held its acceptance pattern throughout the test. Tool calls consistently get the highest acceptance (91.4%) — the drafter model is good at predicting the structured format of a tool call. Creative writing gets the lowest (57.5%) — the drafter can’t predict creative continuations as well. This matches the pattern from our earlier benchmarks. The speculative decode system is stable over 14.7 hours.
Outliers — the 10 slowest requests
IterationTypetok/sTTFT (ms)Spec %Tokens321reasoning1.842384.5%112366tool3.214,5470.0%62909instruction4.529668.8%37540knowledge5.638771.6%107900knowledge5.737975.9%89903creative5.738659.9%500924knowledge5.832377.4%95756knowledge5.940769.2%118844knowledge5.937777.6%87383creative6.031957.7%84
Two notable outliers:
-
Iteration 321 (1.8 tok/s) — a reasoning prompt that took 61 seconds for 112 tokens. The next iteration recovered to normal speed. Likely a momentary thermal spike or GPU contention from background processes.
-
Iteration 366 (3.2 tok/s, 14.5s TTFT, 0% spec acceptance) — a tool-calling request with a 14.5-second TTFT and zero speculative acceptance. This is the most anomalous data point in the entire test. The 0% spec acceptance suggests the DSpark drafter model failed to initialize for this request, and the 14.5-second TTFT suggests the server was under memory pressure. But the request still completed successfully (finish=tool_calls) — it just took longer. The next iteration recovered completely.
Both outliers recovered immediately. Neither caused a cascade or lasting degradation. In 971 requests, only 2 showed significant anomalies — a 99.8% normal-operation rate.
Server process health
MetricStart of testEnd of testChangeRSS memory—3.04 GBStable (no growth)CPU usage—39.4%NormalServer responding✅✅No interruptionSpark uptime14 days15 daysNo reboot
No memory leak. RSS was 3.59 GB at the 4.8-hour mark and 3.04 GB at the 14.7-hour mark — it actually decreased slightly, which is normal for a process that has settled into its working set. The process did not grow over time.
Analysis
What the soak test proved
-
The server doesn’t crash. 971 requests over 14.7 hours, zero crashes, zero errors, zero process restarts. The ds4 engine is stable.
-
No memory leaks. RSS memory was stable at ~3 GB throughout. The process’s working set didn’t grow. The KV cache management is sound — 64K context with max_seq=11, cycling through requests, didn’t accumulate memory.
-
Tool calling is 100% reliable. All 121 tool-calling iterations produced correct tool_calls finish reasons. The tool-calling parser in ds4 didn’t break, degrade, or produce malformed responses over 14.7 hours.
-
Speculative decode is stable. DSpark acceptance rates held their pattern throughout — 91% on tools, 84% on reasoning, 58% on creative. The drafter model didn’t drift or fail over time.
-
TTFT is consistent. Time to first token didn’t increase over the test — it actually improved slightly (500 → 470 ms average). Prefill performance is not affected by sustained load.
What the soak test revealed
-
Throughput degrades ~28% over 14.7 hours. This is the most operationally significant finding. Decode throughput declined from 11.2 to 7.8 tok/s — a gradual, consistent decrease. The pattern (stable TTFT + declining decode) points to thermal throttling: the GB10 chip’s clock stepping down under sustained heat. The DGX Spark’s cooling system can dissipate bursty workloads but not continuous 14-hour inference at 93% GPU utilization.
-
Two anomalies in 971 requests. Iterations 321 and 366 showed significant throughput dips (1.8 and 3.2 tok/s) but recovered immediately. The 0% spec acceptance on iteration 366 suggests the drafter briefly failed to load — possibly a memory pressure event. The system self-corrected within one request cycle.
-
The degradation is recoverable. The throughput decline is gradual, not a cliff. The server never stopped responding. If thermal throttling is the cause, the throughput should recover when the chip cools — which means the degradation is temporary, not permanent. This needs verification with a cooldown test.
What this means for production
For interactive agent workloads (Hermes): The throughput decline is less relevant. Agent loops are bursty — a few requests, then idle while the agent processes the response. The GB10 has time to cool between bursts. The 28% decline was measured under continuous 30-second-interval load for 14.7 hours, which is far more aggressive than any real agent workload.
For batch workloads (document processing, evaluation harnesses): The throughput decline matters. If you’re running a 4-hour batch job, expect throughput to drop ~15-20% by the end. Plan for it in your time estimates. Alternatively, schedule batch jobs in shorter segments with cooldown periods.
For 24/7 serving: The server is stable enough — it won’t crash — but throughput will settle at ~7-8 tok/s after several hours. This is still usable for most workloads. If you need sustained peak throughput, you’d need active cooling or a rest cycle.
The complete DeepSeek V4 Flash series
This is the fifth and final post in the DeepSeek V4 Flash on DGX Spark series:
-
Deployment — 685B MoE model on a desktop GPU with DwarfStar 4
-
Tuning — Cutting context 4× to gain 5.5× concurrency
-
Showdown — Local matches cloud on quality (8/8, 3/3, 4/5)
-
Centipede — One prompt, 390 lines, zero bugs
-
Soak test — This post
The series covers the full lifecycle: deploy, tune, benchmark, build, and soak. Every number is measured. Every claim is backed by real data in the Nemo Knowledge Base.
Verification notes
-
Soak test script: ds4-soak.py, available in NemoKnowledgebase
-
Full log: 1,072-line log file with per-request metrics for all 971 iterations
-
Server state: verified at start, 4.8-hour mark, and end — all healthy
-
Hardware: NVIDIA DGX Spark (GB10/SM121, 128GB UMA), 15 days uptime at test end
-
Software: ds4 v0.5.2, 64K context, DSpark speculative decode, FP8/FP4 KV cache
-
All throughput/TTFT/spec numbers: from the timings field in ds4-server’s API responses, not estimated
-
Memory: RSS from ps aux at check-in points, not continuously monitored (a limitation — next soak should include continuous RSS logging)
What’s next
The DeepSeek V4 Flash evaluation is complete. The model is deployed, tuned, benchmarked, proven in a real build task, and now soak-tested for stability. The DGX Spark is running it at production quality as a non-primary provider in Hermes.
Next steps for SMF Works:
-
Cooldown test — let the server idle for 1 hour, then re-measure throughput to confirm the thermal decline is recoverable
-
Active cooling experiment — test whether a small fan or improved airflow reduces the thermal throttle
-
Real Hermes agent load — replace the synthetic soak test with actual agent loops and measure real-world performance
-
32K context test — if we need more than 11 concurrent sequences, test at 32K context
The Forge is solid. The data is published. The model works.
Similar Articles
Deepseek V4 flash performance on DGX Spark
A Reddit user shares their experience running DeepSeek V4 Flash on a dual-ASUS GX10 DGX Spark setup, detailing performance metrics, configuration, and power consumption, with throughput benchmarks across various context lengths.
Benched a 124B on one DGX Spark for a week and published all of it — 38.7 tok/s on the fastest path he found, 2.4x DeepSeek V4 Flash on the same box
An independent benchmark by sudoingX shows the Ling-3.0-flash model runs at 38.7 tok/s on a single DGX Spark with official INT4 quantization, 2.4x faster than DeepSeek V4 Flash on the same hardware, after a correction clarifying the quants do work.
@MiaAI_lab: DeepSeek v4 Flash has just been upgraded for your 2x DGX Sparks. 66.6 tokens per sec and up to 153.7 with 6 concurrent …
MiaAI Lab released an upgraded recipe for serving DeepSeek V4 Flash on two DGX Spark nodes using vLLM with DSpark speculative decoding and NVFP4 KV-cache, achieving up to 153.7 tokens per second with six concurrent sessions.
@TheAhmadOsman: Some numbers from running DeepSeek V4 Flash 0731 on a DGX Station
Ahmad Osman shares performance numbers from running DeepSeek V4 Flash 0731 on an NVIDIA DGX Station.
@MichaelGannotti: https://x.com/MichaelGannotti/status/2076024719371841537
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.