You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge origin/main into row/ENG-RESIDENCY-CONFIG-W2
The base moved while W2 was under review and repair, and #1200 landed edits to
`.agents/specs/expert-streaming.md` two rows above this row's own entry.
FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
# Conflicts:
# .agents/specs/expert-streaming.md
Copy file name to clipboardExpand all lines: docs/ENVIRONMENT.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -78,6 +78,7 @@ These change how the engine runs and have no CLI flag (or complement one).
78
78
|`VT_VULKAN_DEVICE`| first suitable device | Forces the Vulkan physical device index. Required on a multi-GPU host to pin the intended device |
79
79
|`VT_KV_CACHE_F32`| off (native KV dtype) | Forces the KV cache to fp32. A precision/diagnostic lever, at the cost of double the KV memory |
80
80
| `VLLM_CPP_VOCODER_DEVICE` | `cpu` | Which device the shared 1-D BigVGAN vocoder core (`vllm::vocoder1d` — MiniMax-Music3, MiniMax-H3's audio VAE, LTX-2.5's audio VAE, IndexTTS-2.5) runs its convolutions on. It takes any device name `vt` knows (`vt::DeviceTypeName` — `cpu`, `cuda`, `metal`, `vulkan`, `xpu`, `rocm`, `tenstorrent`) and resolves it through `vt::DeviceTypeFromName`, so a provider registered for a new backend becomes reachable here with no edit. A name `vt` does not know, or one whose device has no registered `vt::Conv1d` / `vt::ConvTranspose1d` provider in this build, is REFUSED by name — never silently downgraded to the host, because a silent fallback means an operator who asked for a device never learns they did not get one. The transposed convolution is 88.5 % of MiniMax-Music3's acoustic-half profile and on scalar host loops a 45 s clip is a multi-hour decode, so this is the knob that decides whether that stage runs on the GPU. The two providers are BYTE-IDENTICAL — one f64 accumulator per output element walked in the same order, the host pinned `-ffp-contract=off` and the device kernel pinned with `__dmul_rn`/`__dadd_rn` — and `tests/vt/test_ops_conv1d_general.cpp` gates that with `memcmp`, not a tolerance. It still defaults to `cpu`: flipping four shipped audio models onto a device arm is not a default the row that ADDED the arm is entitled to set, and the flip is owed to the wiring row named in [.agents/specs/minimax-music3.md](../.agents/specs/minimax-music3.md) §11.4. Requires a CUDA build — asking for `cuda` without one throws rather than falling back silently ([#672](https://github.com/mudler/vllm.cpp/issues/672)) |
81
+
| `VLLM_CPP_MUSIC3_PROFILE` | unset (off) | Prints a per-STAGE wall-clock and RSS split for a MiniMax-Music3 request to **stderr** when it finishes. `examples/minimax_music3_gen/main.cpp` times only the checkpoint load and the whole of `vllm_synthesize`, and at a real duration those two numbers cannot say which of the six stages spent the time — four of the six are still host reference loops ([.agents/specs/minimax-music3.md](../.agents/specs/minimax-music3.md) §11.1, §14.2), so the split is the question. Rows are LEAVES (they partition the request and are summed) or SPANS (they enclose leaves and are printed but never added), plus pure counters; `unattributed` is the glue between the leaves and is printed rather than spread silently over the measured stages. `calls` on `denoise.dit_device` counts denoise STEPS, so the DiT forward count is twice it. Accepts `1`, `true`, `on`, `yes` (case-insensitive) — **any other value, including a near miss like `y`, leaves it off**, because an operator who mistypes should get a run with no table rather than a run whose meaning quietly changed. With it off no clock is read and no `/proc` file is opened. It is an attribution instrument and takes no GPU clock window ([.agents/benchmarking.md](../.agents/benchmarking.md)), so its rows are a within-run split and must not be quoted as per-kernel or cross-box figures ([#672](https://github.com/mudler/vllm.cpp/issues/672)) |
81
82
|`VT_ENABLE_JUMP_FORWARD`| off | Opt-in to jump-forward constrained decoding (SGLang parity SW3): when a grammar/structured-output request reaches a state with exactly one valid next token, that token is emitted without a model step. Currently drives only the standalone driver (`DrainForcedTokens`); output-identical by construction (it fires only where the constrained sampler already has a single valid token), so it changes speed, never tokens. Off by default until the production scheduler splice (jumped-token KV recompute) lands. Set `1`/`true`/`on` to enable |
82
83
|`VT_SERVER_MAX_PROMPT_CHARS`|`200000`| Rejects larger `/v1/chat/completions` prompts before scheduling. `0` disables the guard. This is a character count after chat-template rendering, not a token limit |
83
84
|`VT_SERVER_MAX_NEW_TOKENS`|`4096`| Caps the request's `max_tokens` value for `/v1/chat/completions`. `0` disables the cap |
| Block-wise (fine-grained 128x128) FP8, the `weight_scale_inv` layout |☐ REFUSED BY NAME at load (#1166): `Qwen/Qwen3.8-27B-FP8` declares `weight_block_size`[128, 128] and this build is per-tensor FP8 only ([spec](../.agents/specs/fp8-blockwise-refusal.md)) | ✅ | ✅ | ☐ |
82
+
| Block-wise (fine-grained 128x128) FP8, the `weight_scale_inv` layout |◐ LOADS, cannot run (#1189 M3): weight + `cdiv` scale rung + config/tensor cross-check; BF16 scale widened to f32. Linear method is M4, so `Prepare` refuses by name ([spec](../.agents/specs/model-fp8-block-weight.md)) | ✅ | ✅ | ☐ |
83
83
| Per-tensor FP8 W8A8 linear is a shared seam any model can bind | ✅ `models/dense_fp8_gemm.h` + `layers::Fp8W8A8LinearMethod` (#940), bound via `layers::MakeLinearMethod`. One definition, CUDA only ([spec](../.agents/specs/vt-fp8-shared-seam.md)) | ✅ `Fp8LinearMethod`| ✅ | ☐ |
84
84
| FP8 W8A8 works on a CUDA arch without `cutlass-fp8`| ✅ `vt::QuantFp8Static` registers from an unconditional TU (#960); sm_110 measured ([spec](../.agents/specs/vt-fp8-quant-arch-gate.md)) | ✅ | ✅ | ☐ |
ptxas info : Compiling entry function '_Z25ProbeReplaySsmFusedKernelI13__nv_bfloat16fLi128ELi16ELi32ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf' for 'sm_121a'
15
+
ptxas info : Function properties for _Z25ProbeReplaySsmFusedKernelI13__nv_bfloat16fLi128ELi16ELi32ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf
ptxas info : Used 95 registers, used 0 barriers, 1224 bytes smem
18
+
ptxas info : Compile time = 203.592 ms
19
+
ptxas info : Compiling entry function '_Z28ProbeReplaySsmFlushSeqKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf' for 'sm_121a'
20
+
ptxas info : Function properties for _Z28ProbeReplaySsmFlushSeqKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf
ptxas info : Used 94 registers, used 0 barriers, 1156 bytes smem
23
+
ptxas info : Compile time = 178.604 ms
24
+
ptxas info : Compiling entry function '_Z25ProbeReplaySsmFlushKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf' for 'sm_121a'
25
+
ptxas info : Function properties for _Z25ProbeReplaySsmFlushKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf
ptxas info : Used 94 registers, used 0 barriers, 1156 bytes smem
28
+
ptxas info : Compile time = 178.771 ms
29
+
ptxas info : Compiling entry function '_Z28ProbeReplaySsmNonFlushKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf' for 'sm_121a'
30
+
ptxas info : Function properties for _Z28ProbeReplaySsmNonFlushKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf
ptxas info : Used 42 registers, used 0 barriers, 1224 bytes smem
33
+
ptxas info : Compile time = 123.199 ms
34
+
ptxas info : Compiling entry function '_Z27ProbeReplaySsmRegTileKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf' for 'sm_121a'
35
+
ptxas info : Function properties for _Z27ProbeReplaySsmRegTileKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf
ptxas info : Used 255 registers, used 0 barriers, 96 bytes cumulative stack size, 1224 bytes smem
38
+
ptxas info : Compile time = 269.512 ms
39
+
ptxas info : Compiling entry function '_Z25ProbeControlRegTileKernelI13__nv_bfloat16fLi128EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_PKilllllllllf' for 'sm_121a'
40
+
ptxas info : Function properties for _Z25ProbeControlRegTileKernelI13__nv_bfloat16fLi128EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_PKilllllllllf
ptxas info : Used 255 registers, used 0 barriers, 56 bytes cumulative stack size, 1024 bytes smem
43
+
ptxas info : Compile time = 187.856 ms
44
+
--- cuobjdump -res-usage ---
45
+
46
+
Fatbin ptx code:
47
+
================
48
+
arch = sm_121
49
+
code version = [9,0]
50
+
host = linux
51
+
compile_size = 64bit
52
+
compressed
53
+
ptxasOptions = -v
54
+
55
+
Fatbin elf code:
56
+
================
57
+
arch = sm_121a
58
+
code version = [1,8]
59
+
host = linux
60
+
compile_size = 64bit
61
+
62
+
Resource usage:
63
+
Common:
64
+
GLOBAL:0
65
+
Function _Z25ProbeReplaySsmFusedKernelI13__nv_bfloat16fLi128ELi16ELi32ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf:
Function _Z28ProbeReplaySsmFlushSeqKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf:
Function _Z25ProbeReplaySsmFlushKernelI13__nv_bfloat16fLi128ELi16ELi64EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf:
Function _Z28ProbeReplaySsmNonFlushKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf:
Function _Z27ProbeReplaySsmRegTileKernelI13__nv_bfloat16fLi128ELi16EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_SA_SA_PfPKiSD_lllllllllf:
Function _Z25ProbeControlRegTileKernelI13__nv_bfloat16fLi128EEvPT_PKS1_S4_S4_PKvN45_GLOBAL__N__f6ac47b2_8_probe_cu_24629ce9_31385DTypeES6_S8_PT0_PKilllllllllf:
0 commit comments