DSv4-Flash on RTX PRO 6000 Blackwell (SM120) — Lna-Lab Optimized Recipe
Lna-Lab production-tested optimization stack for deepseek-ai/DeepSeek-V4-Flash on
NVIDIA RTX PRO 6000 Blackwell Workstation Edition (SM 12.0), built on top of
@0xSero's SM120 kernel.
This repository goes beyond getting the model to run on consumer Blackwell silicon —
it pushes the system into production-grade decode throughput through:
✅ Increased --max-running-requests with KV-fit verification
✅ Triton MoE GEMM autotune for E=256, N=512, fp8_w8a8
✅ W8A8 Block FP8 GEMM autotune for the dense projection bottleneck (the actual hot path)
✅ Multi-step EAGLE patch for SGLang's compressed attention backend (works on the framework side; ceiling-bound by DSv4-Flash MTP head being single-layer)
✅ 6-GPU parallel autotune harness for fast turnaround on new hardware
TL;DR
bash
1# 1. Pull SGLang DSv4-Blackwell image (90 GB, one-time)2docker pull lmsysorg/sglang:deepseek-v4-blackwell
34# 2. Build 0xSero kernel (one-time, ~5 min)5git clone https://github.com/0xSero/deepseek-v4-flash-sm120.git
6cd deepseek-v4-flash-sm120 &&bash scripts/build_in_sglang_docker.sh
78# 3. Download SGL FP8 weights (274 GB, ~1.5 h on 200 MB/s link)9HF_HUB_ENABLE_HF_TRANSFER=1 hf download sgl-project/DeepSeek-V4-Flash-FP8 \10 --local-dir /path/to/DeepSeek-V4-Flash-FP8 --max-workers 161112# 4. Drop our config JSONs into the model dir, and launch13cp configs/*.json /path/to/DeepSeek-V4-Flash-FP8/
14NUM_STEPS=1NUM_DRAFT_TOKENS=2\15bash scripts/launch_eagle_tuned.sh
OpenAI-compatible server on http://localhost:9000.
Performance summary (RTX PRO 6000 Blackwell × 4, TP=4)
What this repo gets you that 0xSero alone does not
3× decode throughput at single + concurrent — by stacking EAGLE + max-running tuning on top of 0xSero's SM120 kernel.
Multi-step EAGLE works in SGLang DSv4 compressed backend — patch in PATCH_multistep_eagle_dsv4.md. It enables the path; on DSv4-Flash specifically the MTP head is single-layer so the gain is capped at accept_len ≈ 2.0. Should pay off immediately on DSv4.2 Flash when the MTP layer count grows.
6-GPU parallel autotune harness — tuning_block_wise_kernel.py and tuning_fused_moe_triton.py both run with custom batch lists × Ray distribution; full pipeline including JSON merge.
Verified W8A8 dense-GEMM bottleneck identification — MoE GEMM autotune yields ~0% on this model; it's the dense projections that dominate. run_w8a8_autotune.sh targets the right kernels.
Full transparency: failed paths documented (multi-step EAGLE → MTP capped, CUDA graph → TileLang/Inductor collision, --enable-single-batch-overlap → EAGLE incompatibility), so others don't have to repeat them.
Limitations & path forward
DSv4-Flash on SM120 has architectural ceilings independent of any framework patch:
Wall
Cause
Likely Resolution
accept_len ≈ 2.0 ceiling
MTP head is 1 layer
DSv4.2 Flash with deeper MTP
No CUDA graph
TileLang JIT vs torch._dynamo
DSv4 native CUDA path in vLLM (Q3 2026?)
TP=4 hard floor
KV/activation patterns + lack of FP8 native CUTLASS for SM120
TP=2 viable when vLLM matures (H2 2026)
See PATH_FORWARD.md for the full 6-month outlook and which assets in this repo retain value through the maturation cycle.
Hardware
4× NVIDIA RTX PRO 6000 Blackwell Workstation Edition (96 GiB / GPU, SM 12.0)
Driver/CUDA: see SGLang image base (CUDA 12.9.1)
Optional 5th–6th GPU used by the autotune harness (any SM ≥ 12.0)
Acknowledgements
@0xSero — the SM120 kernel that makes any of this possible
SGLang team — the DSv4 Blackwell image and compressed attention backend