Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 9 additions & 12 deletions 3rdparty/patches/msa_strided_paged_kv.patch
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ diff --git a/python/fmha_sm100/cute/test_sparse_atten.py b/python/fmha_sm100/cut
index 21c777e..b5f078b 100644
--- a/python/fmha_sm100/cute/test_sparse_atten.py
+++ b/python/fmha_sm100/cute/test_sparse_atten.py
@@ -61,6 +61,81 @@ DECODE_DIM = 128
@@ -61,6 +61,78 @@ DECODE_DIM = 128
DECODE_KV_TOKEN_SWEEP = tuple(2**exp for exp in range(3, 21))


Expand All @@ -387,14 +387,11 @@ index 21c777e..b5f078b 100644
+
+def test_prepare_paged_hnd_input_materializes_unpacked_tokens() -> None:
+ pages, heads, page_size, head_dim = 5, 2, 128, 128
+ storage = torch.empty(
+ pages,
+ heads,
+ page_size * 2,
+ head_dim,
+ dtype=torch.float8_e4m3fn,
+ storage = torch.arange(
+ pages * heads * page_size * 2 * head_dim,
+ dtype=torch.int32,
+ device="cuda",
+ )
+ ).remainder(16).to(torch.float8_e4m3fn).reshape(pages, heads, page_size * 2, head_dim)
+ view = storage[:, :, ::2, :]
+
+ prepared = sparse_interface._prepare_paged_hnd_input(view, page_size)
Expand All @@ -406,11 +403,11 @@ index 21c777e..b5f078b 100644
+def test_prepare_paged_hnd_input_materializes_unaligned_outer_stride() -> None:
+ pages, heads, page_size, head_dim = 5, 2, 128, 128
+ outer_stride = heads * page_size * head_dim + 1
+ storage = torch.empty(
+ storage = torch.arange(
+ pages * outer_stride,
+ dtype=torch.float8_e4m3fn,
+ dtype=torch.int32,
+ device="cuda",
+ )
+ ).remainder(16).to(torch.float8_e4m3fn)
+ view = storage.as_strided(
+ (pages, heads, page_size, head_dim),
+ (outer_stride, page_size * head_dim, head_dim, 1),
Expand Down Expand Up @@ -444,7 +441,7 @@ index 21c777e..b5f078b 100644
@contextmanager
def _nvtx_range(message: str):
torch.cuda.nvtx.range_push(message)
@@ -1786,6 +1861,74 @@ def test_sparse_page_atten(
@@ -1786,6 +1858,74 @@ def test_sparse_page_atten(

_assert_forward_close(out, out_ref, out_pt.float(), lse, lse_ref)

Expand Down
34 changes: 21 additions & 13 deletions docs/source/_ext/llmapi_config_telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,16 @@
for the wire schema.

**No PII or free-form fields are captured.** LLM API configuration capture is
*type-driven*: fields whose type is categorical (`Literal`/`Enum`/`bool`) or
numeric (`int`/`float`), plus safe collections of those, are captured
automatically. Free-form `str`/`Any`/`Path`/`dict`/`Callable` are never captured
unless a field carries an explicit allowlist (`TelemetryField.categorical(...)`),
and any field may opt out with `telemetry=False`. Every captured field is listed
below; the runtime can capture nothing absent from this list.
automatic for `bool`, `int`, finite `float`, `Literal`, `Enum`, supported unions,
and homogeneous sequences. Unsafe scalar `str`, `Any`, and `object` branches
require `TelemetryField.categorical(...)`; paths, mappings, callables, and
unsupported structures always fail closed. Use `telemetry=False` to exclude a
field. The runtime can capture nothing absent from the list below.

`capture_policy` branches separated by `|` are tried independently; `enum[X]`
requires the exact enum type `X`. The categorical domain lists tokens from
`Literal`/`Enum` annotations or explicit `allowed_values`; it does not restrict
`bool`, `int`, or `float` branches.

If the manifest check fails, run `python3 scripts/generate_llm_args_golden_manifest.py`, then commit
`tensorrt_llm/usage/llm_args_golden_manifest.json`; new fields require telemetry/privacy CODEOWNER approval.
Expand All @@ -55,20 +59,24 @@ def _escape(text: str) -> str:
return text.replace("|", "\\|").replace("\n", " ")


def _format_values(values: list[str]) -> str:
return ", ".join(f"`{_escape(v)}`" for v in values) if values else ""
def _format_values(values: list[object]) -> str:
def format_value(value: object) -> str:
text = value if isinstance(value, str) else json.dumps(value)
return f"`{_escape(text)}`"

return ", ".join(format_value(value) for value in values)


def _table(rows: list[dict]) -> str:
lines = [
"| Captured key | Annotation | Kind | Converter | Allowed values |",
"|--------------|------------|------|-----------|----------------|",
"| Captured key | Capture policy | Kind | Categorical domain |",
"|--------------|----------------|------|--------------------|",
]
for row in rows:
lines.append(
f"| `{_escape(row['path'])}` | `{_escape(row['annotation'])}` | "
f"`{_escape(row['kind'])}` | {_escape(row['converter'])} | "
f"{_format_values(row['allowed_values'])} |"
f"| `{_escape(row['path'])}` | `{_escape(row['capture_policy'])}` | "
f"`{_escape(row['kind'])}` | "
f"{_format_values(row.get('allowed_values', []))} |"
)
return "\n".join(lines)

Expand Down
16 changes: 16 additions & 0 deletions docs/source/_static/config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,18 @@
"model_url": "https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B-FP8",
"scenario": "Max Throughput (Static EPLB, MTP3)"
},
{
"command": "trtllm-serve Qwen/Qwen3.8-Flash-Next-FP8 --config ${TRTLLM_DIR}/examples/configs/curated/qwen3.8-flash-next.yaml",
"config_filename": "qwen3.8-flash-next.yaml",
"config_github_url": "https://github.com/NVIDIA/TensorRT-LLM/blob/main/examples/configs/curated/qwen3.8-flash-next.yaml",
"config_path": "examples/configs/curated/qwen3.8-flash-next.yaml",
"config_raw_url": "https://raw.githubusercontent.com/NVIDIA/TensorRT-LLM/main/examples/configs/curated/qwen3.8-flash-next.yaml",
"gpu_compatibility": "B200, B300, GB200, GB300",
"model": "Qwen/Qwen3.8-Flash-Next-FP8",
"model_display_name": "Qwen3.8-Flash-Next (FP8)",
"model_url": "https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8",
"scenario": "General deployment (MTP3)"
},
{
"command": "trtllm-serve nvidia/Qwen3.5-397B-A17B-NVFP4 --config ${TRTLLM_DIR}/examples/configs/curated/qwen3.5.yaml",
"config_filename": "qwen3.5.yaml",
Expand Down Expand Up @@ -4278,6 +4290,10 @@
"display_name": "Qwen3.8-2.4T-A95B (FP8)",
"url": "https://huggingface.co/Qwen/Qwen3.8-2.4T-A95B-FP8"
},
"Qwen/Qwen3.8-Flash-Next-FP8": {
"display_name": "Qwen3.8-Flash-Next (FP8)",
"url": "https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8"
},
"deepseek-ai/DeepSeek-R1-0528": {
"display_name": "DeepSeek-R1",
"url": "https://huggingface.co/deepseek-ai/DeepSeek-R1-0528"
Expand Down
Loading
Loading