Commit Graph
394 Commits
Author SHA1 Message Date
yangzhuxinyzxandOpenAI Codex fc88f450f7 [Test] Report prefill stalls within the measured online phase
Retain full crossing gaps separately and support deliberate prefix-reuse probes. Correct snapshot scalar argument positions for shared and separate NVFP4 dispatch.

Co-authored-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-04 01:13:53 +08:00
yangzhuxinyzxandOpenAI Codex aeb0667306 [Kernel] Enable measured dense NVFP4 small-prefill dispatch
Use the measured 256-row crossover, preserve FP32 accumulation on the new small-prefill path, and cover QPN2 and TurboMind packed layouts with real kernel basis tests.

Co-authored-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-04 00:17:07 +08:00
yangzhuxinyzx f21b51b96d Merge remote-tracking branch 'onecat/main' into codex/v100-flash-next-mtp-admission-20261002-212208
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 08:48:34 +08:00
yangzhuxinyzxandPeuqui 63406aed6b [Kernel] Retain TurboMind for unsupported block QPN8 prefill rows
Keep the faster native small-row GEMM and preserve the existing Volta prefill arithmetic. Account for both packed layouts during startup and report runtime fallback constraints.

Co-authored-by: Peuqui <43776522+Peuqui@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 08:28:15 +08:00
yangzhuxinyzxandPeuqui b1db90c6b5 [Kernel] Select block FP8 QPN8 by capability and kernel policy
Adapt the block-FP8 implementation to the current linear kernel lifecycle. Keep native arithmetic unchanged and record explicit fallback reasons.

Co-authored-by: Peuqui <43776522+Peuqui@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 08:28:15 +08:00
yangzhuxinyzx 7c3d4c4b20 Merge remote-tracking branch 'onecat/main' into codex/v100-flash-next-mtp-admission-20261002-212208
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

# Conflicts:
#	docs/configuration/env_var_reference.md
#	tests/config/test_sm70_acceleration.py
#	vllm/envs.py
#	vllm/sm70_profiles/acceleration.py
2026-10-03 07:54:21 +08:00
yangzhuxinyzx e49abb378c [Bugfix] Preserve ModelOpt FP8 layout and fallback metadata
Keep the common scaled-MM weight orientation at the loader boundary, retain the original activation dtype for Marlin scale preparation, and record Turing NVFP4 fallback reasons for startup diagnostics.

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 06:46:36 +08:00
yangzhuxinyzx 0a10b96e05 [Kernel] Select Turing QPN linears through kernel capabilities
Use per-engine policy, native layout checks and registered linear kernels. Own prefill scratch per invocation and resolve workspace addresses inside opaque runtime operations. Preserve existing Volta execution and retain the original QPN arithmetic.

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 06:39:47 +08:00
Peuqui 7bfbadb140 [Feature][SM75] Run ModelOpt NVFP4 and FP8 linears on Turing through the SM70 QPN kernels
The compiled SM70 ops carry the QPN2 (NVFP4) and QPN8 (FP8) decode kernels
and the QPN8 dense prefill, none of which depend on the TurboMind GEMM
registry, but every gate admitted exact SM70 only and the registry itself
is Arch<700, 750>. A Turing worker therefore took Marlin for NVFP4 and,
for the mixed ModelOpt checkpoints, did not load at all (minimum
capability 89; with the gate lowered the Marlin FP8 path fails on
orig_dtype).

Turing now prepares NVFP4 linears as the QPN2 prepack only and runs the
QPN2 kernels for M <= 32 and a Triton dequantization into a transient
fp16 buffer plus cuBLAS above that, split inside one registered op so the
compiled decode graph keeps the kernel path; FP8 per-tensor linears become
QPN8 codes with channel scales and run the existing QPN8 dispatch. Gates
read the worker's own device. Volta keeps its TurboMind path unchanged.

The Turing FP8 QPN8 route registers its dense workspace with
sm70_layer_workspaces and dispatches through vllm::sm70_fp8_qpn8_dispatch
with the layer prefix, instead of keeping workspace.data_ptr() in the
layer state: an address passed from apply() is baked into AOT artifacts,
and every warm start of a Turing FP8 model then failed with "The
specified pointer resides on host memory".

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Peuqui <peuqui@github.com>
(cherry picked from commit 2d0796310150ee52b799c08bc636c0ed55580217)
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 06:39:47 +08:00
5fdf7b8226 [Build] Support SM72 targets and robust device diagnostics
Retain requested Volta targets across bundled builds, admit SM72 to supported kernels, and tolerate failed NVML name diagnostics. Preserve paired microbenchmark statistics as a CPU-tested utility.

Co-authored-by: WulanRamadhani <zhutaokm@qq.com>
Co-authored-by: Frenchy2k1 <Frenchy2k1@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 06:27:04 +08:00
PeuquiandClaude Opus 5.5 652f6b6eef [Feature][DeepSeek-V4] Run the SM70 route on Turing
The SM70 route's kernels are FP16 Triton with software FP8 and do not
depend on Volta. One predicate, is_device_capability_family(70), now
replaces exact (7, 0) at the route's gates: impl selection and
_use_sm70_path, the backend capability, the FlashMLA tile-scheduler skip,
the C128A fixed row stride, the FP16 indexer, the cuBLAS indexer decode,
the compressor kernel choice, DSpark's main_proj scale and context KV
insert, the --dtype half check and the compressed-index decode graph
buckets. Volta and Turing stages of one pipeline therefore declare the
same backend.

Turing takes Marlin for block FP8, which cannot serve the grouped matmul
of an is_bmm layer; Fp8LinearMethod now dequantizes such a weight to fp16
once at load and applies it per group, with the contract of the TurboMind
grouped path (DeepSeek-V4 wo_a).

The indexer test takes vLLM's current_stream() so that leaving its
capture contexts does not record torch's default stream as vLLM's current
stream and break later graph captures in the same process.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 05:42:24 +08:00
yangzhuxinyzx b75d3cd0fa [Kernel] Enable qualified Flash-Next batch defaults and MTP admission
AI-assisted-by: Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 05:32:36 +08:00
yangzhuxinyzx 333217c91a [Core] Move SM70 serialized FP8 dispatch into the linear kernel lifecycle
AI-assisted-by: Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 03:36:20 +08:00
yangzhuxinyzx eadab6b61e [Test] Make AWQ selector probes independent of the host platform
AI-assisted-by: Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 02:01:54 +08:00
yangzhuxinyzx bed4c1506a Merge remote-tracking branch 'onecat/main' into codex/v100-quant-policy-metadata-20261002-145609
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>

# Conflicts:
#	docs/design/sm70_v100_migration_control.md
2026-10-03 01:08:31 +08:00
yangzhuxinyzxandCodex a9c8b2d960 [Core] Select SM70 AWQ through the linear kernel framework
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-03 01:02:28 +08:00
yangzhuxinyzx e31b27d9e7 [Test] Integrate scheduler and SM70 fixture updates
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:56:13 +08:00
yangzhuxinyzx 519f1f1d5b [Bugfix] Integrate bounded MXFP4 weight repacking
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:56:12 +08:00
yangzhuxinyzx 0da2c3ae06 [Test] Keep MXFP4 repack regressions independent of CUDA devices
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:54:32 +08:00
yangzhuxinyzx b67224f841 [Test][SM70] Mock converter availability in CPU preparation tests
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:54:32 +08:00
PeuquiandClaude 48d7e6fdb3 [Bugfix][SM70] Repack DeepSeek-V4 MXFP4 experts for TurboMind without a second copy
process_weights_after_loading prepared every expert into a list and
stacked the list at the end, while the checkpoint tensors stayed alive
until both projections were stacked. Post-load processing runs with every
layer of the stage resident, so on DeepSeek-V4-Flash with eight layers per
V100 stage the stack no longer fit.

Copy each prepared expert straight into a preallocated stack and release
the w13 checkpoint before repacking w2. The prepared tensors are
byte-identical; only the order of allocation and release changes.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Peuqui <peuqui@github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:54:32 +08:00
PeuquiandClaude 90604f53a8 [Bugfix][SM70] Resolve SM70 linear workspace addresses on AOT reload
Several SM70 linear paths passed a scratch workspace address from apply()
as an int: Fp8LinearMethod to fp8_qpn8_dispatch_sm70_out (three sites) and
fp8_gemm_sm70_prefill_dispatch_out (two sites), qwen3_5.py to
fp8_qpn8_dispatch_ba_split_sm70_out, and the TurboMind NVFP4 QPN4 state to
nvfp4_qpn4_dispatch_sm70_out (two sites). TorchDynamo records the integer
as a constant, so the AOT artifact carries the compiling process's
address. The next process loads the artifact, the kernel writes through a
stale address, and the first forward fails with "The specified pointer
resides on host memory and is not registered with any CUDA device". #672
fixed the same pattern for compressed-tensors channel FP8 only.

New module quantization/utils/sm70_layer_workspaces.py: prepared layers
register their workspace under the layer prefix, which is identical in
every process, and apply() passes the prefix to four opaque custom ops
(vllm::sm70_fp8_qpn8_dispatch, vllm::sm70_fp8_prefill_dispatch,
vllm::sm70_fp8_qpn8_dispatch_ba_split, vllm::sm70_nvfp4_qpn4_dispatch)
that resolve the address at run time. A lookup by weight size like #672's
would not do here: depending on the route a layer holds the prefill-dense,
the PP2 x TP4 or the QPN4 workspace. Registering a second workspace for one
prefix, or a layer without a prefix, raises. fp8.py keeps
sm70_fp8_prefill_exact_dense_workspace_ptr as the "workspace present"
marker other gates read; the QPN4 state drops its pointer field.

Tests: export, save, re-register a new workspace and reload for the
dispatch ops; the existing dispatch and adapter tests register a workspace
instead of a fake pointer and run the opaque ops through a CPU kernel for
the test's duration. That fixture also registers #672's op, whose
CPU-tensor test fails on current main with "Could not run
'vllm::sm70_ct_fp8_qpn8_dispatch' with arguments from the 'CPU' backend".

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Peuqui <peuqui@github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:54:32 +08:00
PeuquiandClaude Opus 5.5 5dff4776fa [Test] Bring stale core and SM70 tests in line with current main
These fail on main 357d07bc for reasons in the tests, not in the code they
cover:

- test_scheduler: the scheduler strips reasoning tokens through
  structured_output_manager.trim_reasoning_for_advance before the grammar
  sees them; the Mock returned a Mock, which the grammar rejected. Pass the
  token ids through.
- test_spec_token_aliasing (2): the scheduler output carries
  ddtree_payloads_by_req_id and scheduled_ddtree_payloads now; the
  hand-built outputs lacked them.
- test_sm70_compressed_tensors_fastpaths: an SM70 VllmConfig built earlier
  in the process exports VLLM_SM70_BATCH_GEMM_LAYOUTS=1, which sends the
  QPN8 prepare test into the batch-GEMM layout and the stubbed
  fp8_sm70_prepare. Pin that layout off in the test; alone the test passed.
- test_sm70_flash_v100_multihead: the built-in long and grouped E4M3
  cases call SM70-only kernels and failed on Turing ("E4M3 grouped FP32
  supports SM70 only"); skip them off SM70. The XQA cases keep running
  there.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Peuqui <peuqui@github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 22:54:32 +08:00
yangzhuxinyzx bc8b673812 [Kernel] Integrate SM70 CT NVFP4 into linear kernel selection
Resolve QPN2 policy per engine and retain legacy aliases. Preserve native arithmetic and the independent 324-case category route matrix.

AI-assisted-by: Codex (GPT-6)
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-10-02 21:14:46 +08:00
yangzhuxinyzx a43fb95aa3 [Merge] Integrate MTP kernels without changing concurrent arithmetic
Keep separate HC transport channels and explicit FP32 concurrent versus existing MTP numerical policies. Preserve both dense/GDN dispatch contracts.

Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-28 00:43:59 +08:00
yangzhuxinyzx b772a0e962 [Merge] Integrate main before MTP4 audit
Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 18:43:16 +08:00
yangzhuxinyzx 54fb62b3a3 [Test] Gate native batch HC graph transitions and matched concurrency runs
Reuse the PR #692 engine measurement harness with full-precision control/candidate contracts. Native HC mode never loads research extensions.

Assisted-by: Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 11:00:58 +08:00
yangzhuxinyzx edef14275d [Kernel] Speed up SM70 concurrent long decode
Warm prepared compressed batch layouts before coordinated cache import,
prefetch weight/K panels, share merge work, and reduce sampling overhead.
Keep the draft context projection's concurrent reduction tree stable so
startup autotuning cannot erase the serving gain through acceptance drift.

Matched 32K/256 service medians improve C4/C8 pure decode by 15.44%/15.78%,
with identical output tokens and acceptance counters at C1/C2/C4/C8.

Assisted-by: OpenAI Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 07:48:20 +08:00
yangzhuxinyzx 2e4369373a [Merge] Integrate main into MTP4 batch decode qualification
Preserve both migration ledgers. The 23.85 ms measurement retains its original source and extension hashes; record post-integration validation separately.

Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 02:47:00 +08:00
yangzhuxinyzx 45248dc8d4 [Kernel] Qualify exact Flash-Next MTP4 batch decode stack
Reuse grouped MTP5 experts, fuse native gated RMSNorm, and pack GDN input projections. Record matched 23.85 ms rounds with token and acceptance parity and the remaining under-20 ms target.

Assisted-by: Codex
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 02:41:08 +08:00
yangzhuxinyzx 7e80145857 Merge remote-tracking branch 'onecat/main' into codex/v100-decode-round-20260926-111504
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-27 01:46:33 +08:00
yangzhuxinyzxandOpenAI Codex 818a2bab60 [Kernel] Coordinate SM70 quantized GEMM dispatch across TP ranks
Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-26 23:06:26 +08:00
yangzhuxinyzx 73cfbe6449 Merge pull request #576 from Peuqui/sm70-quant-gate-per-device
Read SM70 quantization gate from worker device
2026-09-26 23:00:35 +08:00
yangzhuxinyzxandCodex 9fab7604fd [Core] Sync MTP4 integration with current main
Include the current shared SM70 batch, loader, DCP, and dummy-run changes before final MTP4 qualification.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-26 19:10:21 +08:00
yangzhuxinyzxandOpenAI Codex aeede18c5b [Kernel] Enable shared SM70 C2 C4 C8 batch acceleration by default (#691)
Enable shared SM70 batch GEMM defaults by hardware and local operator capability.
Reuse existing compressed weights at C2/C4, improve batch activation supply,
and reuse computed logits on DFlash2 sampling fallback.

Three-run ordinary decode gains: C2 +10.58%, C4 +23.62%, C8 +11.37% in
their matched no-prefill windows. C2/C4 window acceptance is unchanged;
C8 loses 0.98 percentage points. Broader C8 and PRO targets remain open.
Record focused native/default tests, relative quality results and raw evidence.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-26 18:43:15 +08:00
yangzhuxinyzxandCodex eaccb7fb98 [Perf] Integrate Flash-Next MTP4 acceleration defaults
Merge PR #684 with main, enable the native M5 expert, TP4 push, and fused GDN metadata paths with explicit rollback flags, and repair the existing type/API lint failures.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-26 18:36:47 +08:00
yangzhuxinyzx 59463dd4cd Merge pull request #683 from Peuqui/sm70-moe-backend-explicit
[Bugfix][SM70] Let an explicit --moe-backend win over the TurboMind MoE gate
2026-09-25 22:10:05 +08:00
yangzhuxinyzx b8e05bcbe4 [Kernel] Add opt-in SM70 prescaled batch GEMM for FP8
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-24 19:10:46 +08:00
yangzhuxinyzx dd484d9f05 [Core] Add opt-in SM70 batched compressed GEMM layouts
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-24 03:26:18 +08:00
PeuquiandClaude a161bad764 [Bugfix][SM70] Let an explicit --moe-backend win over the TurboMind MoE gate
ModelOpt NVFP4 MoE on exact SM70 binds to ModelOptNvFp4SM70MoEMethod before
the backend oracle runs, and that method owns routing and the TurboMind
expert GEMMs -- it never reads --moe-backend. Its tuned prefill and decode
paths are gated on the TP4 shapes (num_experts 512, hidden 2560, w13 n=320),
in Python and again in the kernels' own TORCH_CHECKs. At other topologies
every fast path falls through to the per-expert dense stage, which re-reads
an expert's weights per call: on Qwen3.8-Flash-Next with TP2 that is about
147k launches of ~31 rows each per 18k-token prefill, 20.6 s of the 28 s.

Honour the user's explicit pick instead. Without --moe-backend nothing
changes. Measured on 2x Quadro RTX 8000 + 2x Tesla V100-PCIE-32GB (TP2 PP2),
18k prefill, needle tests at 30k and 124k 4/4 in all three arms:

  TurboMind (before)         prefill 26.6-27.2 s, step 53-56 ms
  --moe-backend sm70_skinny  prefill 19.3-19.4 s, step 52-55 ms
  --moe-backend marlin       prefill 17.7-17.8 s, step 56-59 ms

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Peuqui <peuqui@github.com>
2026-09-23 06:26:41 +02:00
yangzhuxinyzxandCodex 42b8c69ff4 [Test] Align QPN8 shape assertions with current main
Accept aligned local projections independently of TP size and retain checks rejecting partial packing rows and scale groups. The former TP4-only assertion predates the generalized source route.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 13:50:07 +08:00
yangzhuxinyzx 3b874bbc49 Merge remote-tracking branch 'onecat/main' into codex/v100-studio-startup-cache-20260922-005307
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 13:47:14 +08:00
yangzhuxinyzxandCodex a91596f558 [Core] Gate compact scale defaults on native scratch reuse support
Older extensions expose the original compact-scale operator but retain one allocation per captured layer. Keep persistent FP16 scales until the rebuilt reuse capability is available.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 10:21:29 +08:00
yangzhuxinyzxandCodex a03926298a [Bugfix][SM70] Resolve channel-FP8 workspaces after AOT cache reload
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 09:52:46 +08:00
yangzhuxinyzxandCodex ecd343177b [Test] Cover SM70 V2 graph budgeting and clean scale overrides
Include CUDA runtime before ATen for the native score workspace registration build.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 09:51:35 +08:00
yangzhuxinyzxandCodex 4bbaf64fc1 [Kernel] Reuse SM70 weight scales and prefill score storage
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-22 09:29:47 +08:00
yangzhuxinyzxandCodex 5810c3c8ce [Kernel][WIP] Generalize SM70 attention and projection shard layouts
Keep PR in Draft pending default-route, long-context and TP4 model acceptance.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-21 11:41:57 +08:00
yangzhuxinyzxandOpenAI Codex ac26d0cc1e [Kernel] Reduce DFlash2 scale and LM-head residency
Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-12 23:45:29 +08:00
yangzhuxinyzxandOpenAI Codex e449971a63 [Kernel] Share TurboMind NVFP4 codes with DFlash2 QPN2
Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
2026-09-12 23:45:22 +08:00
PeuquiandClaude Opus 5 48fefd4df5 test: widen the mxfp4 platform-gate stub to the device_id signature
test_mxfp4_sm70_platform_gate_is_exact replaces
current_platform.is_device_capability with a lambda that only accepts
`capability`. Now that is_exact_sm70_cuda_platform passes the worker's device
through, that stub raises TypeError. Widen it the way
tests/config/test_sm70_gates_any_visible_device.py already does; the test's
intent is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 00:14:04 +02:00