Repository navigation
Qwen3.6-35B-A3B on CUDA: draft NVIDIA's NVFP4 checkpoint with a DFlash2 model - #1674
Merged
Merged
Conversation
This was referenced Oct 30, 2026
laudney
force-pushed
the
pr-q36-dflash2
branch
3 times, most recently
from
October 31, 2026 13:40
344da29 to
91e444e
Compare
On CUDA the Qwen3.6 MoE target wired --drafter to its MTP layer alone, though the engine's DFlash2 drafter already reads the SGLang recipe's incoai/Qwen3.6-35B-A3B-DFlash2. One openDrafter now serves both families: a directory whose config.json has dflash_config opens DFlash2, as every directory does under a dense target, and any other opens the MoE target's MTP layer. Both openers return one Opened struct whose prepare is optional, which cuda_drafted.zig now accepts. On a GB10 one build drafts with either; every drafted reply equals its plain run, and DFlash2 decodes 130.3 tok/s at one stream on a 4.2K-token prompt against MTP's 98.6.
ashhart
force-pushed
the
pr-q36-dflash2
branch
from
October 31, 2026 18:47
91e444e to
50a41a6
Compare
Owner
|
Thank you @laudney. This is merged into main with your commits under your own name, so you're listed as a TensorFold contributor. It ships in the next release, credited to you in the changelog and the release notes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #1656 (2 of 3). #1662 has landed in 1.2.0, so this is now one commit on
main:feat(qwen3_5): let the MoE target draft with a DFlash2 model. Rebased ontomainafter 1.2.0; the only conflict was the changelog line.Why
SGLang's DFlash recipe for this model pairs NVIDIA's
nvidia/Qwen3.6-35B-A3B-NVFP4withincoai/Qwen3.6-35B-A3B-DFlash2. Serving the same published target weights with the same published draft is what makes a comparison like for like, and it lets people who already run that recipe try TensorFold with the two checkpoints they have downloaded, with no conversion step.What
On CUDA the Qwen3.6 MoE target wired
--drafterto its MTP layer alone, though the engine's DFlash2 drafter already readsincoai/Qwen3.6-35B-A3B-DFlash2. OneopenDrafternow serves both: a directory whoseconfig.jsonhasdflash_configopens DFlash2 (as every directory does under a dense target), any other opens the target's MTP layer, so--drafter nvidia/Qwen3.6-35B-A3B-NVFP4keeps drafting with MTP. Both openers return oneOpenedstruct whoseprepareis optional, whichcuda_drafted.zignow accepts. The draft (eight target layers read) is quantized to affine-4 at load. Recipe section and changelog entry included.Gate (one DGX Spark: GB10, sm_121, CUDA 13.0; target
1355db6a, draft51ef7b69)"draft": falseruns (6 of 6: prose and code, greedy and two seeded temperatures); concurrent replies equal solo at one and four streams, greedy and sampled (8 of 8 cells).zig build testandzig build test-cuda-host(89/89) pass;zig fmt --checkandgit diff --checkare clean;lean_check.pyreports 426 problems, the same asmain.Numbers
bench.pyof spark-sglang-docker, 4.2K-token prompt, 512 tokens, one build, the same target with either drafter (MTP batched, as #1562 made it):DFlash2 proposes more rows a round and keeps fewer of them, so it leads at one and two streams and MTP keeps the lead under load; which drafter to name is a deployment choice, and both stay one flag away.
git merge-treeagainstmainafter 1.2.0: clean.