AEON-7 Claude Opus 4.8 (1M context) commited on
Commit
9d7f810
Β·
verified Β·
1 Parent(s): 57681b5

docs: vLLM compatibility status on aeon-vllm-ultimate:latest

Browse files

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files changed (2) hide show
  1. README.md +46 -1
  2. assets/perf/qwen27b_variant_family.svg +36 -0
README.md CHANGED
@@ -41,12 +41,57 @@ tags:
41
 
42
  > ## πŸ†• AEON vLLM Ultimate container
43
  >
44
- > [`ghcr.io/aeon-7/aeon-vllm-ultimate:latest`](https://github.com/AEON-7/vllm-ultimate-dgx-spark) (= tag `:2026-06-11-pr41703`; rollback `:2026-06-04-pr44389`) β€” the unified vLLM image for **all** Qwen3.6-27B AEON repos: NVFP4 KV cache + DFlash + TurboQuant K8V4 + AEON sm_121a patches, plus PR #40898 (sliding-window attention for the DFlash drafter) and PR #41703 (prefix-caching corruption-immunity with DFlash). This variant uses the same modelopt NVFP4 format, the same `qwen3_5_mtp` native head, and the same hybrid GDN+attention stack β€” it serves identically with `--quantization modelopt` and `--speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":3}'` (native MTP, the recommended drafter on dedicated-VRAM Blackwell β€” see Usage below).
45
  >
46
  > The image ENTRYPOINT is `/bin/bash`, so a raw `docker run` must pass `--entrypoint vllm` and then `serve ...` (do **not** write `IMAGE vllm serve`, which runs `bash vllm serve` and fails).
47
  >
48
  > **Why the long-context fix matters (DFlash path on DGX Spark):** if you instead drive this body with a DFlash drafter on a Spark/GB10, note that the z-lab Qwen3.6-27B DFlash drafter is a sliding-window model β€” 4 of its 5 layers use sliding-window attention (window 2048). PR #40898 (in `aeon-vllm-ultimate:latest`) runs those layers as proper SWA; earlier images ran them as full attention, so drafting collapsed once context grew past ~2048 tokens. PR #41703 additionally makes `--enable-prefix-caching` corruption-immune with DFlash. Net: long-context drafting holds up; short-context (<2048, one window) is unchanged. (This MTP repo's native `qwen3_5_mtp` head is the recommended drafter on dedicated VRAM β€” see the [`-Multimodal-NVFP4-MTP-XS`](https://huggingface.co/AEON-7/Qwen3.6-27B-AEON-Ultimate-Uncensored-Multimodal-NVFP4-MTP-XS) sibling for the Spark-side DFlash benchmarks.) Full setup + bench comparison: [container README](https://github.com/AEON-7/vllm-ultimate-dgx-spark).
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  ## Variants
51
 
52
  | Format | Size | Use case |
 
41
 
42
  > ## πŸ†• AEON vLLM Ultimate container
43
  >
44
+ > [`ghcr.io/aeon-7/aeon-vllm-ultimate:latest`](https://github.com/AEON-7/vllm-ultimate-dgx-spark) (= tag `:2026-06-18-v0.23.0-dflashfix`; rollback `:2026-06-11-pr41703`) β€” the unified **vLLM v0.23.0** image (built from source for sm_121a) for **all** Qwen3.6-27B AEON repos: NVFP4 KV cache + DFlash + TurboQuant K8V4 + AEON sm_121a patches, plus PR #40898 (sliding-window attention for the DFlash drafter) and the DFlash high-concurrency block-table fix. On **dedicated-VRAM Blackwell** this variant serves with `--quantization modelopt` and `--speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":3}'` (native MTP β€” see Usage below). **On the DGX Spark / GB10 this text export does not load** β€” see the vLLM-compatibility note immediately below.
45
  >
46
  > The image ENTRYPOINT is `/bin/bash`, so a raw `docker run` must pass `--entrypoint vllm` and then `serve ...` (do **not** write `IMAGE vllm serve`, which runs `bash vllm serve` and fails).
47
  >
48
  > **Why the long-context fix matters (DFlash path on DGX Spark):** if you instead drive this body with a DFlash drafter on a Spark/GB10, note that the z-lab Qwen3.6-27B DFlash drafter is a sliding-window model β€” 4 of its 5 layers use sliding-window attention (window 2048). PR #40898 (in `aeon-vllm-ultimate:latest`) runs those layers as proper SWA; earlier images ran them as full attention, so drafting collapsed once context grew past ~2048 tokens. PR #41703 additionally makes `--enable-prefix-caching` corruption-immune with DFlash. Net: long-context drafting holds up; short-context (<2048, one window) is unchanged. (This MTP repo's native `qwen3_5_mtp` head is the recommended drafter on dedicated VRAM β€” see the [`-Multimodal-NVFP4-MTP-XS`](https://huggingface.co/AEON-7/Qwen3.6-27B-AEON-Ultimate-Uncensored-Multimodal-NVFP4-MTP-XS) sibling for the Spark-side DFlash benchmarks.) Full setup + bench comparison: [container README](https://github.com/AEON-7/vllm-ultimate-dgx-spark).
49
 
50
+ ## vLLM compatibility (DGX Spark / aeon-vllm-ultimate:latest)
51
+
52
+ **Status: this text export does not load on the unified container as shipped.** Validated 2026-06-18 on [`ghcr.io/aeon-7/aeon-vllm-ultimate:latest`](https://github.com/AEON-7/vllm-ultimate-dgx-spark) (vLLM v0.23.0, sm_121a).
53
+
54
+ The reason is purely a packaging mismatch, not a problem with the weights:
55
+
56
+ - `config.json` declares the **multimodal architecture** `Qwen3_5ForConditionalGeneration` (`model_type: qwen3_5`), so vLLM routes it through the **multimodal loader**.
57
+ - The multimodal loader expects an **image processor** in the repo, but this is a text-only export (the vision tower was stripped during quantization), so no processor files ship here.
58
+ - vLLM therefore aborts during init with **"cannot load image processor"** before serving can start.
59
+
60
+ **This is fixable two ways**, either of which would let this exact NVFP4+MTP body serve on the Spark:
61
+
62
+ 1. **Re-export with a text-only architecture** (e.g. a `*ForCausalLM` head class instead of `Qwen3_5ForConditionalGeneration`), so vLLM uses the text loader and never looks for an image processor; or
63
+ 2. **Add the processor files** (`preprocessor_config.json` / image-processor config) so the multimodal loader can initialize even though no image input is used.
64
+
65
+ Until then, **for vLLM serving on `aeon-vllm-ultimate:latest` (DGX Spark / GB10), use the [`-Multimodal-NVFP4-MTP-XS`](https://huggingface.co/AEON-7/Qwen3.6-27B-AEON-Ultimate-Uncensored-Multimodal-NVFP4-MTP-XS) sibling instead** β€” it is the smallest NVFP4 export, loads cleanly, and is the **fastest single-stream** option in this family (~42 tok/s at c=1 with DFlash). This card still serves fine on **dedicated-VRAM Blackwell** (RTX PRO 6000 / B100 / B200) via the text path with native MTP β€” see Usage below.
66
+
67
+ ### Where this variant sits in the family
68
+
69
+ <p align="center"><img src="assets/perf/qwen27b_variant_family.svg" width="100%" alt="Qwen3.6-27B-AEON-Ultimate variant comparison: Multimodal-MTP-XS is fastest single-stream and the recommended Spark choice; BF16 baseline is ~2Γ— the memory"></p>
70
+
71
+ ### Recommended Spark alternative β€” measured c=1 throughput (Multimodal-NVFP4-MTP-XS)
72
+
73
+ These are the per-category single-stream numbers for the working sibling on `aeon-vllm-ultimate:latest` (DGX Spark / GB10, DFlash speculative decoding):
74
+
75
+ | Category | Decode tok/s | TTFT (ms) | TPOT (ms) | Prefill (tok/s) | DFlash accept % |
76
+ |---|---:|---:|---:|---:|---:|
77
+ | Coding | 42.6 | 141 | 23.5 | 318 | 34.5 |
78
+ | Math | 55.9 | 248 | 17.9 | 246 | 48.0 |
79
+ | Reasoning | 49.3 | 232 | 20.3 | 211 | 41.7 |
80
+ | Prose | 31.2 | 229 | 32.1 | 166 | 23.2 |
81
+ | Natural language | 34.8 | 228 | 28.7 | 175 | 26.6 |
82
+ | Extraction / JSON | 57.4 | 234 | 17.4 | 231 | 49.3 |
83
+
84
+ Long-context (β‰ˆ16k–32k) DFlash acceptance holds at ~45%. Aggregate throughput scales to **c=64** on the unified container (Reasoning peaks ~340 tok/s). Full per-concurrency data lives on the [XS sibling card](https://huggingface.co/AEON-7/Qwen3.6-27B-AEON-Ultimate-Uncensored-Multimodal-NVFP4-MTP-XS).
85
+
86
+ ## What we fixed for the DGX Spark
87
+
88
+ All AEON models run on one unified container β€” **`ghcr.io/aeon-7/aeon-vllm-ultimate:latest`** (= `:2026-06-18-v0.23.0-dflashfix`; rollback `:2026-06-11-pr41703`). It is **vLLM v0.23.0 built from source for sm_121a (GB10 / Blackwell)** and merged with the AEON speculative-decoding stack.
89
+
90
+ - **DFlash high-concurrency fix** *(new)* β€” slices the speculative drafter's KV block-table to the unpadded batch (`block_table[:num_reqs]`). The drafter previously **crashed at β‰₯32 concurrent requests** (padded-vs-unpadded block-table shape mismatch in FlashAttention); it now scales cleanly to **c=64**. A port of upstream PR #43982, which fixed this for MTP but never for DFlash.
91
+ - **Unified vLLM 0.23.0 image** β€” NVFP4 KV cache (PR #44389, the only 4-bit KV path on sm_121a) + DFlash sliding-window attention (PR #40898, so long-context draft acceptance holds) + sm_121a-native CUTLASS NVFP4/FP8 kernels + boot/CUDA-graph patches, all in a single tag.
92
+
93
+ > **Stock baseline pending fresh vanilla re-bench:** no apples-to-apples stock (vanilla vLLM, no DFlash, no sm_121a opts) baseline exists for this family yet. A fully-vanilla benchmark on the current version is pending; the optimized figures above are measured on `aeon-vllm-ultimate:latest` (vLLM 0.23.0).
94
+
95
  ## Variants
96
 
97
  | Format | Size | Use case |
assets/perf/qwen27b_variant_family.svg ADDED