137 lines
13 KiB
Markdown
137 lines
13 KiB
Markdown
# Qwen3.6-27B non-MoE/hybrid preflight and topology-smoke record
|
||
|
||
> **Status (2026-07-17): `TOPOLOGY-SMOKE PASS; FRONTIER COVERAGE BLOCKED`.**
|
||
> The exact snapshot and official community-vLLM release are accepted through
|
||
> a fresh-server TP1/TP2/TP4 GPU smoke. No Frontier Qwen3.6 contract/profile,
|
||
> trace replay, or latency-matrix cell exists. The smoke is compatibility
|
||
> evidence only, not simulator-fidelity or latency-selection evidence.
|
||
|
||
## Decision enabled by this preflight
|
||
|
||
The latency-matrix experiment may add its dense branch only after the exact
|
||
model snapshot, a runnable open-source vLLM environment, and a Qwen3.6
|
||
Frontier contract/profile root exist on the same stack. Until then, all dense
|
||
matrix cells are **`NOT RUN`**. They are neither simulator failures nor
|
||
evidence for dense+MoE generalization.
|
||
|
||
## Executed staging record (after explicit approval)
|
||
|
||
| Step | Evidence | Result |
|
||
|---|---|---|
|
||
| Immutable snapshot staging | ModelScope `Qwen/Qwen3.6-27B@cea40373b9214dd387123e68841890af30dcd469` was downloaded to `/home/admin/cpfs/wjh/models/Qwen/Qwen3.6-27B`. The downloader recorded `download_start` and `download_complete` at `2026-07-17T07:42:00Z` and `2026-07-17T07:44:45Z`, respectively, in `/home/admin/cpfs/wjh/models/.staging/qwen36-27b-20260717/download.log`. | **PASS**; 29 snapshot files, approximately 52 GiB. |
|
||
| Snapshot integrity | Sorted per-file SHA-256 inventory: `/home/admin/cpfs/wjh/models/.staging/qwen36-27b-20260717/files.sha256`; inventory digest `031cea103726cbf27732b6971e898e210aee77f0c32e4bc703c947e0372349c4`. It includes `config.json`, tokenizer files, and all 15 `model-*.safetensors` shards; no `*.incomplete`, `*.lock`, or `*.tmp` files were found. | **PASS**. |
|
||
| CPU config/tokenizer parser | The preinstalled system `transformers==4.57.5` rejects `model_type=qwen3_5`; this environment is excluded. A dedicated CPU-only environment with `transformers==5.5.3` successfully parsed the snapshot with `CUDA_VISIBLE_DEVICES=""`: `Qwen3_5ForConditionalGeneration`, text model type `qwen3_5_text`, 64 layers, hidden size 5120, `mamba_ssm_dtype=float32`, tokenizer length 248077. | **PASS**, but only for checkpoint/tokenizer parsing; it is not the serving runtime. |
|
||
| Community vLLM release runtime | The initial source-build attempt was stopped before acceptance and is excluded. Official PyPI wheel `vllm==0.20.2` was staged at `wheel-probe-proxy/vllm-0.20.2-cp38-abi3-manylinux_2_35_x86_64.whl`, SHA-256 `22a7dd06eb03371298e13d6100f3dedbf307352342aaf08e87c929c60aae9b4d`, then installed into the clean environment `/home/admin/cpfs/wjh/venvs/qwen36-vllm-0.20.2`. `pip check` reports no broken requirements. | **PASS (CPU-only)**: vLLM `0.20.2`, Torch `2.11.0`, Transformers `5.14.1`; with `CUDA_VISIBLE_DEVICES=""`, `vllm.transformers_utils.config.get_config(..., trust_remote_code=False)` parses the exact snapshot as `Qwen3_5ForConditionalGeneration` / `qwen3_5`. |
|
||
| Fresh GPU topology smoke | Fresh text-only servers on H20 TP1, TP2, TP4 used the exact release runtime with requested `MNS=8`, `MBT=8192`, BF16, chunked prefill on, prefix cache off, and one `2048 → 1` request per topology. Every response reported exactly 2048 prompt and 1 completion token; all four used GPUs were zero-memory after cleanup. Evidence root: `artifacts/qwen36/smoke-v4-20260717/`; artifact inventory SHA-256 `5b09c94e61801bfb7085257cfeea88049dfa81001f50810d85b9f87468088be0`. | **PASS (GPU compatibility)**. It establishes that TP1/2/4 can serve this model on the intended release, not that any topology has lower latency. |
|
||
|
||
## Confirmed model identity and architecture
|
||
|
||
| Item | Confirmed fact | Consequence for the experiment |
|
||
|---|---|---|
|
||
| Canonical source | ModelScope [`Qwen/Qwen3.6-27B`](https://www.modelscope.cn/models/Qwen/Qwen3.6-27B) | Use this repository, not an inferred Hugging Face mirror or an old Qwen3.5 checkpoint. |
|
||
| Immutable revision | Read-only `git ls-remote --symref` on 2026-07-17 resolved `master`/`HEAD` to `cea40373b9214dd387123e68841890af30dcd469`. | Pin this commit hash in the download record. Do **not** record only the mutable name `master`. Re-resolve it immediately before an approved download; a changed hash requires a new review. |
|
||
| Model metadata | ModelScope API reports `Architectures=["Qwen3_5ForConditionalGeneration"]` and `ModelType=["qwen3_5"]`. The official card says the artifact is a causal language model with a vision encoder. | This is dense with respect to MoE routing, but it is **not** a conventional all-attention dense transformer. The text benchmark must send no media; the model runner must still be the architecture selected from the exact checkpoint config. |
|
||
| Text architecture (official card) | 27B parameters; hidden size 5120; padded token embedding / LM output 248320; 64 layers; `16 × (3 × (Gated DeltaNet → FFN) → 1 × (Gated Attention → FFN))`; DeltaNet has V=48/QK=16 heads of 128; gated attention has Q=24/KV=4 heads of 256 and RoPE dimension 64; FFN intermediate size 17408; native context 262144. | A Frontier profile must cover both DeltaNet/linear-state and gated-attention paths, in prefill, decode, and true mixed execution. An all-attention Qwen3.5 or Qwen3-30B/MoE profile is not a valid substitute. |
|
||
| Tokenizer | The staged snapshot contains the tokenizer artifacts in the immutable file inventory. The earlier dedicated CPU parser reported tokenizer length `248077`; `248320` above is still only the padded embedding/output size, not the tokenizer contract. | Request input/output lengths must be tokenized with this staged tokenizer. Before trace materialization, freeze a tokenizer/config subset digest and do not borrow counts from a Qwen3.5 tokenizer. |
|
||
|
||
The official ModelScope card states that these artifacts are compatible with
|
||
Transformers, vLLM, SGLang, and KTransformers. That is useful compatibility
|
||
evidence, not a successful run on the selected `dash0` stack.
|
||
|
||
## Runtime provenance and excluded alternatives
|
||
|
||
| Evidence | Read-only observation | Verdict |
|
||
|---|---|---|
|
||
| System vLLM | `/usr/local/bin/vllm` reports `0.13.0rc2.dev2111+gb44b43f43.d20260309`, with Torch `2.8.0a0+5228986c39.nv25.6` and Transformers `4.57.5`. Its installed source contains `qwen3_5.py`, `qwen3_5_mtp.py`, registry entries for `Qwen3_5ForConditionalGeneration`, and branches for `qwen3_5_text`. | Architecture-family support is present, but this development build is not yet the frozen community experiment runtime. |
|
||
| Uninstalled local source | `/home/admin/cpfs/wjh/agentic-kv/third_party/vllm_v20_build` is `v0.20.0` source with build by-products; `/home/admin/cpfs/wjh/venvs/vllm-0.20.0` does not contain a runnable vLLM/Transformers pair. | **Excluded.** It is not the experiment runtime and must not be cited as an alternative same-stack result. |
|
||
| Qwen-specific state/page rule | The v0.20 Qwen3.5 implementation obtains Mamba/DeltaNet state settings from the checkpoint when cache dtype is auto; the actual v0.20.2 GPU smoke then resolved its attention page to 784 tokens. | The state/page rule is a model-state contract, not an optional benchmark flag. The profile and simulator must consume the observed physical page setting. |
|
||
|
||
Therefore the defensible statement now is: **the exact Qwen3.6-27B snapshot
|
||
is CPU-parsed and GPU-served by the frozen official community vLLM release on
|
||
`dash0` at TP1/2/4. It is a non-MoE hybrid model, not a conventional
|
||
all-attention dense-transformer evidence point.**
|
||
|
||
## GPU topology-smoke observations (not a latency experiment)
|
||
|
||
The runner is a one-request topology/usage check, with a fresh server for
|
||
each TP. Its E2E values are retained only to audit that a request completed;
|
||
they are not steady-state samples, are not TTFT/TPOT measurements, and must
|
||
not be ranked.
|
||
|
||
| TP | Exact usage | Smoke E2E (audit only) | Resolved attention page/block size | GPU KV cache at `max_model_len=4096` |
|
||
|---|---|---:|---:|---:|
|
||
| 1 | 2048 prompt, 1 completion | 4581.977 ms | 784 tokens | 306,289 tokens |
|
||
| 2 | 2048 prompt, 1 completion | 5606.756 ms | 784 tokens | 1,068,600 tokens |
|
||
| 4 | 2048 prompt, 1 completion | 6252.274 ms | 784 tokens | 2,630,087 tokens |
|
||
|
||
vLLM accepted the requested `--block-size 16` but then logged, at every TP,
|
||
`Setting attention block size to 784 tokens to ensure that attention page size
|
||
is >= mamba page size.` Thus **block size 16 is not the actual engine state
|
||
for this model**. A later real/simulator comparison must freeze and expose the
|
||
resolved 784-token page/state contract (or deliberately select a different
|
||
legal engine mode before profiling); it may not label this stack as a
|
||
block-16 comparison. First TP1 startup also compiled FlashInfer GDN kernels
|
||
and performed a cold profile/warmup; these one-time costs remain outside all
|
||
request-latency metrics.
|
||
|
||
## Initial read-only `dash0` inventory (historical; superseded where noted)
|
||
|
||
All paths below were inspected without mutation on 2026-07-17.
|
||
|
||
| Area | Observation | Consequence |
|
||
|---|---|---|
|
||
| Disk | `/home/admin` root filesystem: 245 GiB available. Shared CPFS mounted at `/home/admin/cpfs`: 1.1 TiB available, already 95% used. Existing `/home/admin/cpfs/wjh/models` is 1.2 TiB and `/home/admin/resource/model` is 1.7 TiB. | Stage only after an explicit capacity check; do not rely on the root filesystem or an unconstrained default cache. |
|
||
| Checked model/cache locations | Before staging, the usual locations were absent. | **Superseded:** the immutable snapshot is now at `/home/admin/cpfs/wjh/models/Qwen/Qwen3.6-27B` and is bound by the inventory above. |
|
||
| Main checkout | `/home/admin/cpfs/wjh/aituner/aituner` had tracked and untracked user changes. | The smoke wrote only new artifacts and did not modify its source. A future profile implementation must use an explicitly versioned source/patch root rather than treating this dirty checkout as code provenance. |
|
||
| Frontier | Historical Frontier source exists at `/home/admin/cpfs/wjh/frontier-qwen30-vllm020-profile-v1/Frontier`, commit `d9cfeb6d8791fbf2f295dd9744c56a666171776e` (`pre-release-v0.2`), with a clean tracked tree. A source search found no `Qwen3.6`, `Qwen3_5`, or `qwen3_5` model-contract hit. | It is not an existing Qwen3.6 profile/model contract. A new dense adapter/spec must be versioned and accepted before it may be used. |
|
||
| Existing profiler contract | The old Qwen3-30B profile launcher hard-codes `model=qwen3-a3b-30b-moe`, `--is_moe`, vLLM 0.20 API adapters, and Frontier commit `d9cf…`. | It cannot be repurposed by only changing a model path; its MoE assumptions and compatibility adapter are excluded from the dense baseline. |
|
||
| Qwen3.6 artifacts | A read-only search of the checkout's `runs` subtree found no Qwen3.6-named run/profile/model path. | No dense Frontier profile or real/simulator output is admissible today. |
|
||
|
||
## Remaining gates before any latency-matrix cell
|
||
|
||
1. **Trace/tokenizer lock:** materialize the Qwen3.6 tokenized Fixed/Trace-P/
|
||
Trace-PD vectors and hash the exact tokenizer/config subset. Trace-PD is
|
||
not trace-faithful without the input, output, arrival and prefix-state
|
||
vector.
|
||
2. **New Frontier contract:** introduce a versioned Qwen3.6 **non-MoE hybrid** model spec
|
||
that maps the exact `config.json` to simulator operators. It must represent
|
||
Gated DeltaNet/linear-state, gated attention, FFN, TP collectives and KV/
|
||
state-cache capacity, including the resolved 784-token page rule. It may
|
||
not import the Qwen3-30B MoE routing profile, an all-attention Qwen3.5
|
||
profile, or an unrecorded additive timing scale. Any compatibility adapter
|
||
is a separate, hashed intervention.
|
||
3. **Profile manifest:** collect and freeze per-TP (1/2/4) profile rows for
|
||
the above stages over shapes covering Fixed-P, Fixed-PD, Trace-P and
|
||
Trace-PD. Include prefill, decode and genuine mixed batches, plus TP2/TP4
|
||
all-reduce. The manifest must bind model revision/config hash, tokenizer
|
||
hash, vLLM/environment hash, Frontier commit/adapter hash, hardware,
|
||
precision, profiler command, CSV hashes, and shape coverage.
|
||
4. **CPU simulator acceptance:** reject the profile root unless every required profile
|
||
family has finite rows for all legal TP values and requested shapes; all
|
||
identity hashes match the real-server lock; profile/model manifests name
|
||
Qwen3.6; and the simulator emits request-level TTFT/E2E/TPOT where defined
|
||
for a no-GPU fixture. A missing simulator operator is a **coverage
|
||
blocker**, not a license to borrow a Qwen30 profile.
|
||
|
||
Only after all four gates may a separately approved real/simulator 600-s
|
||
latency surface begin. The GPU smoke closed the runtime/topology gate only; it
|
||
does not close any of these simulator or evaluation gates.
|
||
|
||
## Evidence locations
|
||
|
||
- This record: `runs/simulator-tuning-latency-matrix-v0/dense-preflight.md`.
|
||
- Matrix decision/protocol: `runs/simulator-tuning-latency-matrix-v0/experiment-card.md`.
|
||
- Existing (excluded) MoE-v0.20 profile launcher and its hard-coded contract:
|
||
`runs/frontier-qwen30-vllm020-profile-v1/run_frontier_linear_smoke.sh` and
|
||
`runs/frontier-qwen30-vllm020-profile-v1/frontier_vllm020_compat.py`.
|
||
- Existing Frontier surface runner shows the required external source,
|
||
ReplayServe builder, profile root, request-level metric, and hash contract:
|
||
`runs/frontier-phase-factorial-v0/run_frontier_qwen30_prefill_surface.py`.
|
||
|
||
## Not completed
|
||
|
||
- No Qwen3.6 Frontier model spec or profile exists.
|
||
- No Qwen3.6 fixed/trace workload vector is frozen.
|
||
- No real or simulator latency measurement exists, so this record cannot
|
||
change the simulator-selection verdict.
|