Skip to content

feat(dspark): add Qwen3.5-4B draft config and managed-local NPU disaggregated recipe - #727

Draft
curnane-lab wants to merge 5 commits into
sgl-project:mainfrom
curnane-lab:dspark_npu_disaggregated
Draft

feat(dspark): add Qwen3.5-4B draft config and managed-local NPU disaggregated recipe#727
curnane-lab wants to merge 5 commits into
sgl-project:mainfrom
curnane-lab:dspark_npu_disaggregated

Conversation

@curnane-lab

@curnane-lab curnane-lab commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Motivation

Add a Qwen3.5-4B DSpark draft config and a recipe for the managed-local disaggregated stack on Ascend NPU, mirroring the DFlash recipe from #722.

Modifications

  • configs/qwen3.5-4b-dspark.json: DSparkDraftModel config for Qwen3.5-4B (block_size 16, 5 draft layers on target layers [1, 8, 15, 22, 29], markov_rank 256, confidence head).
  • examples/configs/qwen3.5-4b-dspark-disaggregated-npu.yaml: single-node managed-local recipe (Mooncake + capture server on device 0 + 14-rank trainer on devices 2-15; 8-card fallback in comments). DSpark loss weights ce/l1/confidence = 0.1/0.9/1.0, num_anchors: 186, sdpa.
  • examples/README.md: register the recipe.

Note: beyond DFlash, DSpark also streams the target final hidden state (target_last_hidden_states) through the same capture sink; that path is exercised for the first time on Ascend here, so an A3 smoke run should precede merge.

Related Issues

Stacked on #722 (merge after it): the branch is main + the recipe commit + a merge of npu_disaggregated. The diff shrinks to the recipe alone once #722 lands. Incremental view: curnane-lab/SpecForge@npu_disaggregated...dspark_npu_disaggregated

Accuracy Test

NA (no model-side code modified)

Benchmark & Profiling

NA

Checklist

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@curnane-lab curnane-lab changed the title Dspark npu disaggregated feat(dspark): add Qwen3.5-4B draft config and managed-local NPU disaggregated recipe Jul 28, 2026
@curnane-lab
curnane-lab marked this pull request as ready for review August 10, 2026 11:16
@curnane-lab
curnane-lab force-pushed the dspark_npu_disaggregated branch from 6cdb0af to e174c15 Compare August 10, 2026 11:47
@curnane-lab
curnane-lab force-pushed the dspark_npu_disaggregated branch from 6ecb278 to 1ea0216 Compare August 10, 2026 12:56
curnane-lab and others added 2 commits August 10, 2026 20:58
Resolve conflicts against upstream's directory-based recipe layout:
- move qwen3.5-4b-dspark-disaggregated-npu.yaml to
  examples/configs/online/disaggregated/managed-local/
- take upstream examples/README.md and directory-derived
  topology/reachability tests (golden registries removed upstream)
@curnane-lab
curnane-lab marked this pull request as draft August 21, 2026 16:02
Mirrors qwen3.5-4b-dspark-disaggregated-npu.yaml for the text target
Qwen/Qwen3-4B + deepseek-ai/dspark_qwen3_4b_block7 draft geometry
(configs/qwen3-4b-dspark.json): drops embedding_key/trust_remote_code
(text target) and uses the qwen chat template per the external
qwen3-4b-dspark recipe.
Upstream's default_kv_lease_ttl_ms=500 knob is tuned for fast CUDA
teardown drains. On Ascend the consumer's get_into path re-registers
the receive buffer per tensor; under capture/trainer startup contention
the transfer does not fit a 500ms lease and fails with LEASE_EXPIRED
(-707) on the first batch. Set 5000ms (Mooncake's stock default, used
by all previously validated NPU runs); the ~19.5s teardown drain window
still covers it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants