WITHDRAWN (2026-09-01): do not deploy this exact NEXTN/EAGLE profile as a persistent service.
The profile originally described here passed bounded generation, retrieval, semantic, and disconnect tests, but later reproduced a separate invalid-probability crash under real multi-turn long-prefill traffic even with CUDA Graph and overlap scheduling disabled. The repository and v0.1.2-canary are now retained only as isolated failure-analysis assets.
Hi all,
This post documents the evolution—and eventual withdrawal—of a Qwen3.8-Flash-Next ModelOpt NVFP4 TP2 experiment on two GB10 systems. Historical throughput numbers remain useful as bounded measurements, but the serving profile is not service-stable.
Hardware and withdrawn profile
- Two ASUS Ascent GX10 / NVIDIA GB10 (SM121), TP2 over direct ConnectX-7 RoCEv2
- RadixArk/Qwen3.8-Flash-Next-NVFP4, native 262,144 context
- Pinned SGLang Qwen3.8 development path
- QSA enabled
- NEXTN/EAGLE 3/1/4 with linear ReplaySSM spec enabled
- Eager execution; CUDA Graph disabled
- Overlap scheduling disabled
- Radix cache disabled
- FP32 Mamba state, Triton GDN
- cuDNN dense FP4; FlashInfer CUTLASS MoE
- Maximum two running requests
Failure history
1. Original failure
The original speed-oriented profile used decode CUDA Graph and overlap. Under a long workload both TP ranks detected invalid sampling probabilities, followed by CUDA device-side assert, Xid 43, TP/NCCL termination, and container restart. This was not OOM.
2. Bounded isolation
Controlled changes showed:
- Dense CUTLASS was not necessary for the failure.
- CUDA Graph candidates could silently corrupt 1K non-looping output and 25K marker retrieval while still returning HTTP 200.
- Eager execution passed those bounded semantic prompts.
- Disabling overlap crossed several earlier transition tests.
- QSA draft-extend warmup required the focused field-compatibility fix in SGLang PR #37110.
Historical warmed 2,048-token measurements on the withdrawn eager profile were 41.60 / 42.39 / 42.86 tok/s (median 42.39). A 16,384-token continuous generation reached 48.01 tok/s. These are historical throughput observations, not stability qualification.
3. Streaming-disconnect lifecycle defect
A later client timeout removed tokenizer-side state while scheduler work continued, producing “state was deleted in TokenizerManager” before invalid probabilities and another rank crash. Backporting both commits from SGLang PR #36418 fixed this narrow zombie-request path:
- Real TCP disconnects reclaimed work in 2.155 and 2.183 seconds.
- Normal streams afterward completed.
- A 28,672-token continuous generation completed in 543.56 seconds at 52.76 tok/s.
- No restart occurred during that bounded validation.
4. Independent eager/no-disconnect recurrence
The lifecycle repair did not stabilize the overall stack. Later real multi-turn traffic reproduced the same service-level crash twice at different context lengths, approximately 29K and 50.6K. The latest incident had:
- One running request and no queue
- CUDA Graph disabled and overlap disabled
- Radix cache disabled
- Approximately 10% KV/token-pool use
- Both containers OOMKilled=false
- No client-disconnect or deleted-state precursor
Both ranks again reached invalid sampling probabilities, then CUDA assert, Xid 43, TP/NCCL termination, and restart. This disproves the earlier conclusion that eager/no-overlap plus the lifecycle fix was a correctness-qualified serving profile.
The sampler detected invalid probabilities; it is not proven to have created them. The unresolved suspect interaction is the repeated long-prefill to speculative-decode state path across NEXTN/EAGLE, ReplaySSM, recurrent GDN/Mamba state, QSA, and ModelOpt NVFP4.
Corrected conclusions
- SGLang #36418 remains a valid narrow fix for streaming-disconnect zombie requests.
- PR #37110 remains a valid narrow fix for QSA EAGLE draft-extend row sizing.
- CUDA Graph remains rejected because it silently corrupted bounded semantic outputs.
- The eager/no-overlap NEXTN/EAGLE profile is also withdrawn because it later crashed under multi-turn traffic.
- Continuous-generation and retrieval tests are not sufficient substitutes for repeated 32K–100K prefill/decode/tool-turn transitions.
- The exact root kernel is still unproven.
The repository launcher now fails closed unless ALLOW_WITHDRAWN_PROFILE=1 is set for isolated reproduction.
Public assets and upstream tracking
- Withdrawal advisory: qwen38-flash-next-dual-gb10/docs/withdrawal-advisory.md at main · hellojiaru/qwen38-flash-next-dual-gb10 · GitHub
- Withdrawn release: repository release v0.1.2-canary
- Qwen3.8 support PR: Introduce Qwen 3.8 Flash Next by JustinTong0323 · Pull Request #36497 · sgl-project/sglang · GitHub
- Related GB10 invalid-probability crash: [Bug] Qwen3.8-Flash-Next + NEXTN full decode graph: repeated dual-rank invalid-probability asserts on GB10 · Issue #37052 · sgl-project/sglang · GitHub
- Graph silent-corruption tracking: SGLang issue 37111
- Disconnect lifecycle fix: Fix zombie requests after streaming disconnect by maithilijoshi20 · Pull Request #36418 · sgl-project/sglang · GitHub
- QSA warmup compatibility fix: SGLang PR 37110
Reproductions on newer upstream images are welcome, but this exact profile should not be used as a production service.