J&M Labs Blog by Milo

Building the future, locally

← Back to Home

DeepSeek-V4.1-Flash on four DGX Sparks: stock vs abliterated

DeepSeek-V4.1-Flash now serves from Sparks 3–6 of GhettoRak. I ran stock and abliterated weights through the same tests on the same setup. Abliteration cost no speed and no accuracy on math, tool calls, chat or long context. It may cost a little on hard reasoning: GPQA-Diamond with thinking on went from 84.8% to 80.3% (p = 0.08, one run).

4 × GB10
tensor-parallel 4, stock clocks
1M
context, 5.2M-token KV pool
≈6,000
tok/s cold prefill at 32K–128K
68 / 96
tok/s prose / code, one request
208 / 303
tok/s total, 16 requests

The setup

DeepSeek-V4.1-Flash on Sparks 3–6 Four DGX Sparks run one model with tensor parallelism 4 over a MikroTik CRS804 at 200G each. Spark 3 is the head and serves the API on port 8888. Weights live on Spark 3 NVMe and are shared over NFS; Engram tables are packed onto each node's own NVMe. Swapping stock for abliterated weights changes 27 of 48 shards (layers 10–36); config, tokenizer and Engram tables are identical. A swap takes 8 to 11 minutes. One model, four Sparks · DeepSeek-V4.1-Flash, TP4 SGLang · knapcio v2.4 on Mia's kit · 1M context · DSpark speculative decoding · stock clocks Spark 3 rank 0 · head API :8888 ¼ of every layer Spark 4 rank 1 worker ¼ of every layer Spark 5 rank 2 worker ¼ of every layer Spark 6 rank 3 worker ¼ of every layer MikroTik CRS804 · one 200G RoCE link per Spark · all-reduce every layer Weights · 475 GiB One copy on Spark 3 NVMe, shared to ranks 1–3 over NFS on the 200G fabric Engram tables · ~47 GiB per node Packed onto each node's own NVMe, random reads while serving NVMe interrupt coalescing: off Swap only the weights Stock deepseek-ai · df42c109 Abliterated dealignai · d61c59ea 27 of 48 shards differ (layers 10–36) Config, tokenizer: identical Engram tables: identical Same image, same settings 8–11 min from stop to ready

Spark 3 is the head and serves the API. Only the weights change between the two runs.

Recipeknapcio v2.4 (commit 27616be) on Mia's 4-Spark kit. SGLang, TP4, DSpark speculative decoding, RoCE all-reduce. Base image pinned to the recipe's digest (sha256:3dbc3130…).
WeightsStock: deepseek-ai/DeepSeek-V4.1-Flash (df42c109, same shards as the recipe's pin). Abliterated: dealignai/DeepSeek-V4.1-Flash-UNCENSORED-FP8 (d61c59ea, MIT). Both SHA-256 checked.
Our changesInterface and HCA names for this switch, NVMe interrupt coalescing off, vm.swappiness=10, an API key, 64K max new tokens. No clock cap.

Results

Stock vs abliterated DeepSeek-V4.1-Flash: quality and speed Left: accuracy per test for stock and abliterated weights on an axis from 70 to 100 percent. Only GPQA with thinking on separates, 84.8 versus 80.3 percent, paired p 0.08. Right: abliterated decode speed relative to stock for 12 prompt and concurrency cells; all fall within 6 percent, and stock moved up to 3.3 percent between its own two runs. Stock vs abliterated: same speed, one soft spot Stock Abliterated · one run each, temperature 0, same image and settings Accuracy (axis starts at 70%) Only GPQA with thinking on separates 70% 80% 90% 100% GPQA, thinking on 84.8% vs 80.3% · p = 0.08 GPQA, thinking off 76.8% vs 74.7% · p = 0.54 GSM8K (200) 96.5% both · p = 1 Recipe qeval (75) 96.0% vs 94.7% Needle checksum (100) 100.0% both Decode speed, abliterated vs stock Grey band: how far stock moved against itself -8% -4% 0 +4% +8% Prose · 1 req −4.0% Prose · 8 req −5.7% Prose · 16 req +0.3% Code · 1 req +5.2% Code · 8 req −3.3% Code · 16 req −0.3% JSON · 1 req +1.8% JSON · 8 req +3.1% JSON · 16 req −2.0% Counting · 1 req +0.3% Counting · 8 req +0.2% Counting · 16 req +2.9% All 12 within 5.7% · stock re-run moved up to 3.3%

Left: accuracy, axis from 70%. Right: abliterated decode speed relative to stock, 256 new tokens per request.

TestStockAbliterated
GPQA-Diamond, thinking on (198)84.8%80.3% · p = 0.08
GPQA-Diamond, thinking off (198)76.8%74.7% · p = 0.54
GSM8K (200)193/200193/200
Recipe quality eval (75 tasks)72/7571/75
Needle checksum via tool call (100)100/100100/100
Passphrase found at 32K / 128K / 256K3/33/3
Gates: chat, thinking, tool call, tool round trip, image6/66/6
Refusals, 24 everyday and gray-zone prompts1/240/24

Cold prefill, with a unique prompt each time so nothing is cached: 31,054 tokens in 5.18 s, 126,788 in 20.53 s, 254,614 in 51.69 s on stock; abliterated took 5.15 s, 20.43 s and 43.78 s.

What the numbers mean

Method: temperature 0, one run per cell. GPQA used all 198 questions, 16 at a time, 64K max new tokens. Speed was re-checked on stock after the abliterated run.

Next