AEON-7/AEON-DFlash-Qwen3.6-35B-A3B

🤗 On Hugging Facetext-generationmit474M params948 MBsafetensorsChecksums witnessedupdated today
Magnet

AEON DFlash — Qwen3.6 / Ornith 35B-A3B

!AEON Qwen — Supreme Being of the Digital Cosmos

A DFlash speculative-decoding drafter for Qwen/Qwen3.6-35B-A3B and its derivatives — including Ornith-1.0-35B-AEON-Ultimate-Uncensored (a light RL post-train of that base). ~0.9 GB. Gives ~1.9× single-stream decode on a DGX Spark with no quality loss (lossless speculative decoding: the target model verifies every token).

What makes it different

This drafter is 8 layers of full attention — deliberately no sliding-window attention (SWA). That single design choice is the difference:

| | This drafter (AEON) | Typical SWA drafter (e.g. z-lab) |

|---|---|---|

| Layers | 8 × full attention | 6 × (5 sliding + 1 full), window 4096 |

| KV page size | aligns with the target's pages | larger (windowed) → mismatch |

| Serves on the AEON vLLM image | yes, no patch | needs a kv_cache_utils patch |

Why the no-patch part matters. Qwen3.6-35B-A3B / Ornith is a hybrid stack — full attention + GatedDeltaNet (Mamba) recurrent state. vLLM unifies KV-cache page sizes across layer types by scaling block_size, but Mamba/GDN state pages are shape-based and don't scale. A drafter with SWA layers introduces a larger KV page that can't be reconciled with the GDN pages → vLLM aborts at engine init with unify_kv_cache_spec_page_size … AssertionError (see issue #1). An all-full-attention drafter has no oversized page, so it loads cleanly on the stock AEON image — a true drop-in.

It also targets the right hidden states for this stack: DFlash reads target layers [1, 10, 19, 28, 37] of the 40-layer 35B-A3B model.

A note on KV cache (and why SWA doesn't help here)

This model serves with BF16 KV cache, and a sliding-window drafter does not change that. The BF16-KV requirement comes from two places, neither of which is the drafter's window type:

1. the vision tower (non-causal vision attention → FA2 backend only → no FP8 KV), and

2. DFlash's non-causal verification (block-parallel → FA2/FLEX only → no FP8 KV).

KV dtype is a property of the main model's attention backend, not the drafter's layers. SWA changes the drafter's own (tiny, windowed) KV footprint only — it can't unlock FP8 KV for the target.

Usage

Point any Qwen3.6-35B-A3B / Ornith deploy's --speculative-config at this drafter:

  --speculative-config '{"method":"dflash","model":"/drafter","num_speculative_tokens":6}'

Validated on a DGX Spark (GB10) with the Ornith NVFP4 QuickStart. ⚠️ Keep --max-num-seqs ≤ 16 with DFlash on the Spark (unified-memory limit — see the QuickStart).

Performance

Head-to-head on Ornith-1.0-35B NVFP4 (DGX Spark GB10 · n=6 · max-num-seqs 16 · single stream):

| Drafter | c=1 decode | Accept length | Draft accept rate | Patch needed |

|---|---|---|---|---|

| AEON (8L full-attn) — this repo | 72.9 tok/s | 3.71 | 45.1% | none |

| z-lab (6L SWA) | 74.4 tok/s | 3.35 | 39.2% | KV page-size hotfix |

Speed is effectively tied (c=1 within ~2% — noise; this drafter is slightly ahead at c=8 aggregate). This drafter wins on acceptance — its 8 full-attention layers draft more accurately (3.71 vs 3.35 tokens accepted per step; 45% vs 39%) than the SWA variant's 6 layers, which trade accuracy for a cheaper forward pass. Combined with no patch required and no padded-Mamba-page overhead, it's the recommended default. Both are lossless (the target verifies every token); ~1.9× over plain decode either way.

Credits

  • Drafter: AEON-7. Method: DFlash speculative decoding.
  • KV page-size diagnosis + the patch for SWA-drafter compatibility: @newjordan (issue #1 / PR #2).

License: MIT.