347 Commits
Author SHA1 Message Date
yangzhuxinyzxandClaude Opus 5.5 9a33cee2ac [Perf][SM70][Spec Decode] Use the DFlash2 draft FP8 projections for 2-4 concurrent requests (#1289)
The SM70 DFlash2 draft quantizes its four large decoder projections to
channel FP8 for M=8, one drafting request. With 2-4 requests the decoder
sees M=16..32 query rows and fell back to an FP16 torch.mm over the
original matrices, which reads twice the bytes. fp8_qpn8_gemm_sm70_out
already covers M<=32, so route M=8..32 in steps of eight there, using
split 16 where M>16 needs split 12 or 16 (gate_up). Each request's rows
now see the same FP8 weights it uses when drafting alone; with an
unchanged split they are bit-identical to its M=8 result. Prefill,
context KV, partial blocks and M>32 keep the FP16 matrices.

Draft projection, 4x V100 TP4 shard, M32: gate_up 156 -> 77 us,
down 77 -> 40 us, qkv 41 -> 41 us, o 20 -> 23 us.

Qwen3.8-27B NVFP4 + DFlash2, 4x V100-SXM2-16GB, packaged profile,
official-style tasks (GSM8K / MT-Bench / HumanEval, T=1.0, thinking,
16 prompts each) with 4 concurrent clients, aggregate tok/s:
282 -> 303, 337 -> 414, 501 -> 587. Acceptance length at c4
4.78/3.14/4.73 -> 4.95/3.15/4.41, against 4.90/3.23/4.62 for the
same tasks at c1 (single-request path, unchanged and bit-identical).
c1 is unchanged.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 19:58:11 +08:00
yangzhuxinyzxandClaude Opus 5.5 899e9ed331 [Model] DeepSeek-V4.1-Flash on 4x V100: 512K packed KV, faster prefill, API launch (#1277)
Runs DeepSeek-V4.1-Flash-1017 (GSQ-RCO IQ2_XXS GGUF + Engram IQ4_NL +
DSpark5 draft) on 4x V100-32G (TP4, one x16 PCIe uplink, 62 GB host RAM)
with expert offloading. All new paths are lossless and switchable.

Prefill (G1-G7):
- G1 activation memory: per-tile MoE scratch + FP32 accumulator, in-place
  expand_hc / large all-reduce, windowed hc_transition, pynccl all_gather,
  empty_cache before big passes; chunks up to 16K.
- G2 cold-expert staging ring issued ahead across tiles and layers.
- G3 routed down projection split by output rows (no duplicated TP
  boundary blocks, -2.25 GiB/GPU) with an IPC peer gather for decode.
- G5 Engram readers, adaptive indexer tile, persistent activation grid.
- G6 routed-only staging for short prompts.
- G7 same-session prefix cache (scheduler guard + worker restore_prefix).

Long context (G4):
- Window layers keep 256-row private rings.
- Packed KV (VLLM_V41_PACKED_KV): FP4 + E4M3 compressed latents in a
  shared host memfd plus a 32K GPU hot ring, FP4 index keys on GPU, CUDA
  decode index scores and segment-parallel exact top-k. Enables 512K.
- RoPE rotates on the fly past its table; C2/Engram/guard limits and
  the DSpark draft length cap are lifted to the target length.

Results vs phase 1: TTFT short 5.6 -> 0.8-1.1 s, 8K 27.7 -> 5.8 s,
15K 44.0 -> 11.1 s; 128K 110 s and 500K 651 s (needle passes); follow-up
turns hit the prefix cache in ~1-1.7 s; fresh-text decode 57.8 -> 53.5
ms/round. Tokens at <=16K are identical with packed KV.

Tooling: benchmarks/deepseek_v41/ gains the v41k SM70 extension source
and build script, serve configs (phase 2: 16K, phase 3: 512K + prefix
cache + tools + thinking), launch/validation tools, GPU micro-tests and
HANDOFF.md. V4.1 switches are registered in vllm/envs.py and read through
vllm.envs.

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 23:33:35 +08:00
yangzhuxinyzx 3bdbb684be [Core] Slice packed GGUF rows before transcoding on the host fallback (#1253)
With device_transcode disabled, expert loading decoded each complete
projection on every TP rank and sliced the canonical result afterwards.
When the TP boundary keeps whole source blocks, slice the packed rows
first and decode only this rank's share; when the boundary cuts an
original quantization block, keep the decode-then-slice order because
canonical groups are smaller than source blocks.

Quantization codes, coefficients and prepared layouts are unchanged.
2026-10-24 00:36:05 +08:00
claude d67a10c4ff [Perf] Lower concurrent MTP verification cost on SM70
Concurrent verification (2-8 requests x 5 rows) now keeps the single-request
fast paths or a grouped equivalent; every change is bitwise equal to the
per-request result.

- QSA shared-key indexer scores several requests in one launch.
- Router, shared expert and PLE spec conv run 5..40 rows in one launch.
- Exact gated RMSNorm covers 64 tokens (was a 9-kernel torch chain at c4).
- Routed gate/up decodes each expert once per few of its routes (IQ3_S,
  IQ4_NL, IQ4_XS) from 10 rows.
- QSA fused side projection chooses its path per call: the decode compile
  range spans 1..40 rows and had frozen the unfused branch.
- Expert-cache lookups publish hits without system-scope fences.
- GDN replay helpers move to a neutral module; the commit-only verifier call
  lives with the native verifier.

54304 GPUs 4-7, MAX_NUM_SEQS=8, verify ms/round:
c1 4K 18.96, 32K 19.56; c2 4K 26.2, 32K 30.9; c4 4K 36.4, 32K 45.2;
c8 4K 62.9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:34:52 +08:00
claude 102753647a [WIP] Concurrent verification: batch routes for 10..40 rows
- HCX: one launch walks 8-row groups (bitwise equal to per-group
  launches); HCX_BATCH_M 40; per-group exchange regions.
- Dense projections: weight-major schedule for 9..40 rows (TM 3/5);
  segment kernel admits 40 rows.
- Shared expert, router, router top-k and GDN input: fused batch kernels
  for 10..40 rows (10-row pieces where the kernel is bounded).
- Draft hot cache 32K for concurrent serving.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:49:11 +08:00
macandClaude Opus 5.5 8a3c030b65 [Perf] Bring Codex's 9683 prefill campaign work onto the release line
Imports the uncommitted 2026-10-15 state of
codex/v100-flashnext-prefill-6k-9683-20261013-160548: predictive and
resident GGUF expert preparation, batched expert swap transport, the
256-thread original GDN prefill option, extra affine BLAS thresholds,
ID-only tokenizer encode and the QSA physical block-table fix. The MTP
expert-capacity fix keeps this branch's earlier version (898db479d).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 06:03:24 -07:00
mac 482c9661c2 Merge remote-tracking branch 'origin/codex/v100-flashnext-prefill-6k-9683-20261013-160548' into claude/flashnext-prefill-merge
# Conflicts:
#	docs/design/architecture/runtime_reference.md
#	tests/config/test_sm70_provider_lifecycle.py
#	tests/models/qwen4_exp/test_ple_short_conv_prefill.py
#	vllm/config/execution_policy.py
#	vllm/config/sm70_sparse.py
#	vllm/model_executor/kernels/ple/short_conv.py
#	vllm/models/qwen4_exp/nvidia/ops/qsa.py
#	vllm/models/qwen4_exp/nvidia/ple_layer.py
#	vllm/models/qwen4_exp/nvidia/sm70_fp16_hc.py
2026-10-20 05:59:45 -07:00
macandClaude Opus 5.5 d6c08324ac [Startup] Native GGUF->dmv13 decode+pack for SM70 side projections
The NumPy decode/pack of the fused side projections built whole-array
uint32 temporaries and spent ~49 s per worker at every startup. A C++ op in
_C does decode and pack in one pass per 32-row tile, tiles in parallel;
it is byte-identical to the NumPy path (36 synthetic cases over all six
GGUF types incl. row/K padding, and 15 real Flash-Next tensors), 22x
faster on real weights. The NumPy path remains the fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 01:57:11 -07:00
yangzhuxinyzx 81edd142bd [Memory] Commit HC rows into shared target storage
Reuse the target MTP buffer as the HC gather destination while preserving padded tails and qualified fallbacks. Qualify shared workspace ownership and FP16 draft staging at page-rounded 256K boundaries, retain the measured 2048-token Q8 prefill throughput, and version the full acceleration profile with a 512 MiB allocator reserve.

Assisted-by: GPT-6 (Codex)
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-15 13:37:40 +08:00
yangzhuxinyzx 898db479d7 [Bugfix] Bound GGUF MMQ experts by the weight tensor
Pass the actual expert count through the existing MMQ family instead of rejecting IDs above 255. Keep expert pointer arithmetic wide enough for larger banks. Cover expert-count boundaries, upper-half routing and changed-input graph replay against dequantized references.

Assisted-by: GPT-6 (Codex)
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-15 13:22:26 +08:00
macandClaude Opus 5.5 2efd1bc0df [Memory] Remove duplicated persistent buffers on the 9683 Flash-Next profile
- GGUF affine BLAS scratch is sized by the projections actually admitted
  (12.5 MiB) instead of the largest calibrated shape of any model (170 MiB).
- The speculator reads the target's persistent MTP hidden buffer in place
  instead of copying it into a second 8192 x 10240 buffer (160 MiB).
- The MTP layer borrows the target's serially reused QSA top-k workspace
  (64 MiB) and identical RoPE tables (32 MiB).
- MTP Q8 MoE prefill chunk 2048 -> 1024 tokens (its temporaries sit at the
  measured prefill peak).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-15 12:53:02 +08:00
yangzhuxinyzx ae2f6da127 [Bench] Gate merged projection rules on restored prefill chains
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-14 08:01:03 +08:00
yangzhuxinyzx ea6587e988 [Kernel] Cover merged Flash-Next projections and bounded QSA runs
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-14 07:28:32 +08:00
yangzhuxinyzx 3faaa58d08 [Bugfix] Preserve GGUF prefill policy with segment storage
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-14 04:33:48 +08:00
yangzhuxinyzx e150e9da8f [Kernel] Reduce Flash-Next prefill compute and cold expert traffic
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-14 03:43:21 +08:00
macandClaude Opus 5.5 d836d87d2d [Misc] Pre-commit compliance for the Flash-Next prefill branch
Register the new VLLM_* switches in vllm/envs.py and read them through
envs; torch.accelerator instead of torch.cuda; regex instead of re; read
the hybrid PLE flag through ple_policy; move the IQ4_NL packed PLE result
helpers to kernels/ple/gguf_packed_result.py; type annotations for lazily
started expert-cache state; ruff/clang-format/markdown fixes. The layering
baseline accepts the opt-in SM70 sparse target sampling hooks in the EAGLE
speculator and its greedy-draft rejection kernel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:41:13 -07:00
macandClaude Opus 5.5 908b94f3be Batch SM70 GGUF prefill: MMQ experts for every prefill chunk, wide native QSA slices
Prefill was launch-bound. The batched MMQ expert kernel was admitted only
for exactly 512 tokens of a calibrated source list, so every other chunk
ran the per-token MMVQ path (tens of thousands of launches per layer).
Admit MMQ from 64 tokens up for any expert bank the installed operator
supports.

Host-history QSA resolved and attended prefill rows in 8-row slices bounded
by the Triton staging rows. The native reader needs no staging: resolve
and attend 32 rows per launch (rows are independent, outputs unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 09:44:13 -07:00
yangzhuxinyzx 5b55fa6c9b [Bugfix] Gate fused GGUF side projections by native format support
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 09:51:57 +08:00
yangzhuxinyzx 2c7f4e0ba1 [Bugfix] Keep fused GGUF projection scratch in FP32
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 09:34:28 +08:00
yangzhuxinyzx 419c1b414a [Core] Size GGUF dense scratch to admitted shapes and single-request graphs
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 09:14:50 +08:00
yangzhuxinyzx 622c1b9936 [Core] Bound engine-owned TurboMind scratch for compact deployments
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 08:51:42 +08:00
yangzhuxinyzx 329e037dd3 [Core] Bound host attention staging and pack original expert allocations
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 08:19:29 +08:00
yangzhuxinyzx 700c891f94 [Core] Reduce host-KV startup and exact MTP storage peaks
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 07:01:42 +08:00
yangzhuxinyzx b54376ae09 [Core] Keep a single canonical Q6_K vocabulary bank
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 05:24:10 +08:00
yangzhuxinyzx ab3e419c83 [Core] Share packed GGUF planes with fused side projections
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 05:16:38 +08:00
yangzhuxinyzx 4cd7608e41 [Bugfix] Configure packed Flash-Next embeddings through adapter contract
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 04:30:46 +08:00
yangzhuxinyzx 93c6405277 [Kernel] Admit measured original-bank GGUF prefill on SM70
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 03:56:33 +08:00
yangzhuxinyzx 30aa08c024 [Core] Report shared GGUF storage and qualify routed intermediate packets
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 03:12:45 +08:00
yangzhuxinyzx 088b4f662f [Test] Compare fused expert intermediate against Q8 rounding
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 03:04:22 +08:00
yangzhuxinyzx be82a3b130 [Kernel] Decode original IQ4_XS expert blocks without a second bank
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 01:29:32 +08:00
yangzhuxinyzx 8faef7ea83 [Core] Bound original GGUF storage and host KV state on SM70
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-11 01:13:11 +08:00
yangzhuxinyzxandCodex 156ec4debb [Kernel] Share packed GEMM layouts and isolate runtime ownership
Use common weight/scale descriptors and dense launch plumbing for AWQ, FP8, MXFP4 and NVFP4. Keep runtime caches and workspace ownership behind a native interface without changing operators or numerical kernels.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-10 18:14:14 +08:00
yangzhuxinyzx 251888427a [Core] Record deterministic Marlin and native owner validation
Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-10 09:57:41 +08:00
yangzhuxinyzx c4d8716448 [Core] Bind remaining event observers and coalesce proven native scopes
Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-10 08:46:29 +08:00
yangzhuxinyzx 495fb442a3 [Core] Bind provider policy and native resources to engine lifecycle
Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-10 06:53:34 +08:00
macandClaude Opus 5.5 4bfd8f91ed [Core] Type the fast GGUF field reader as a GGUFReader subclass
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:32:49 -07:00
macandClaude Opus 5.5 04917634dd [Core] Transcode GGUF expert banks on the GPU and parse metadata once quickly
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:20:49 -07:00
yangzhuxinyzx fa94df7f22 [Kernel] Reuse dense GGUF weights across M20 verification rows
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-10 02:30:36 +08:00
yangzhuxinyzx bb1ba51ded [Core] Integrate main policies and isolate HC feature callbacks
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-09 18:23:23 +08:00
yangzhuxinyzx cdfec2ddac [Memory] Keep Qwen3.5 GGUF embeddings in packed row storage
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 23:13:31 +08:00
yangzhuxinyzx 3d56d99100 [Kernel] Share GGUF projection planes with TP2 shards (#1026)
* [Kernel] Share GGUF projection planes with TP2 shards

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

* [Doc] Record matched TP2 GGUF plane gains and TP4 regression

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

---------

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 16:38:06 +08:00
yangzhuxinyzx ec2e394646 [Kernel] Add device warp timing for GGUF projection diagnostics (#1018)
* [Kernel] Add calibrated warp timing for GGUF projections

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

* [Doc] Record installed GGUF clock calibration and model intervals

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

---------

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 10:49:56 +08:00
yangzhuxinyzx b5e9265503 [Kernel] Fuse measured three-format GGUF QKV projections (#1017)
* [Kernel] Fuse measured three-format GGUF QKV projections

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

* [Doc] Record ordinary QKV qualification and unprofiled graph boundaries

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

---------

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 09:24:37 +08:00
yangzhuxinyzx 7287f6d0c1 [Core] Merge main IQ2 projection and draft attention updates
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 08:39:52 +08:00
yangzhuxinyzx 7e08fa26ff [Bugfix] Preserve native IQ2 projection arithmetic
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 06:23:27 +08:00
yangzhuxinyzx 93e8db3599 Merge remote-tracking branch 'onecat/main' into codex/v100-hc-boundary-20261006-133129 2026-10-07 04:26:12 +08:00
yangzhuxinyzx af05ecbe8a [Test] Preserve canonical IQ2 outputs outside M8
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 03:54:30 +08:00
yangzhuxinyzx b8512d8b67 [Core] Declare IQ2 nibble capability and graph policy
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 03:50:50 +08:00
yangzhuxinyzx 556ddfe084 [Kernel] Screen bank-aware IQ lookup without expanding weights
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 03:47:57 +08:00
yangzhuxinyzx 39f033845b [Kernel] Decode IQ2 signed nibbles with original two-level scales
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-07 03:47:20 +08:00