Skip to content

perf: add B300 SGLang GLM agentic decode data - #665

Open
simone-chen wants to merge 1 commit into
mainfrom
simonec/glm-agentic-op-data-20261030
Open

simone-chen wants to merge 1 commit into
mainfrom
simonec/glm-agentic-op-data-20261030

Conversation

@simone-chen

@simone-chen simone-chen commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Why and what changed

  • Add 220 B300 / SGLang 0.5.20 DSA decode measurements for GLM agentic replay: 110 with the indexer and 110 with index reuse. This versioned table is absent on the base branch.
  • Cover batches 4/8/16/32/52 and 22 past-KV lengths through 720,896, providing measured support for growing conversation history and the replay's decode batch sizes.
  • Preserve the measured nvidia/GLM-5.2-NVFP4 identity and distinct indexer/reuse operation names. GLM-5.3 consumes compatible attention geometry; the data is not relabelled as a GLM-5.3-specific measurement.
  • Include both collection events, artifact hashes, coverage documentation and the two generated backend-fact census entries. Existing 0.5.14/0.5.21 and glm53_attention tables remain unchanged.

Review map

  • Risk level: medium; published primary data can change predictions without code changes.
  • Start with benchmarks/evidence/collector/glm-agentic-20261029/README.md and manifest.json, then the new b300_sxm/sparse_attention/sglang/0.5.20/ table and sidecar.
  • Public or serialized contract changed: no. The schema-v2 sidecar uses the existing multi-event format; no SDK, collector logic or reuse-policy changes.
  • The existing shared-data manifest can expose these rows to other compatible models and versions. This addition does not qualify whole-model accuracy, prefill or every reuse target.

Evidence and provenance

  • Collector source: 3d41164034624251209588ee0284694e86a13bd8. Successful pipeline 77726488; jobs 517782462 and 517782464, Slurm 135871/135872. Both completed with zero collector errors; failed/cancelled attempts are excluded.
  • SGLang 0.5.20 source 94602c9c2b7cbdb8efd5c52802dac6a1c180089e; image digest sha256:06e4f2ed21afde4ff513cda65070124e727ba23ccaeff7712b8c40e1097d611f.
  • One B300 per job, TP8 local geometry with 8 attention heads, FP8 KV, BF16 attention and projection GEMMs, page 64, top-k 2048, TRTLLM DSA decode. All 220 shapes used CUDA graphs; latency units are milliseconds. TP8 describes geometry, not an eight-GPU serving run.
  • Integrity checks: exact concatenation of both 110-row source artifacts; complete expected grid; no nulls, duplicate physical keys, nonfinite or nonpositive latencies. Packaged SHA-256: 9614d95a6f2ee013d62c19f243ce26dde274971d2186e2bc1107af5e7f1203d0.
  • Local checks at 44ea5595d6bba45c6e72da07b5b45bedf40e6c84: 47 provenance tests passed; collector-data rules R1–R7 passed; backend-fact census passed (4,051 slices); native loading preserves all 220 latencies. Copyright and diff checks passed. The native loader check used the existing research binary with current Python source, not a fresh-main E2E run.
  • Fast CI: pending. Full CI: running for exact head 44ea5595d6bba45c6e72da07b5b45bedf40e6c84. CodeRabbit: pending. Codex: independently reviewed that head; no blocking findings in artifact, grid, schema, provenance, census or loader-policy checks.

Tracking

Signed-off-by: Simone Chen <simonec@nvidia.com>
@simone-chen
simone-chen requested review from a team as code owners October 30, 2026 20:51
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Summary

Risk: Medium. Human attention should focus on: (1) measurement provenance and the artifact’s 220-row coverage; (2) preserving the measured GLM-5.2-NVFP4 identity and distinct indexer operation names; (3) merge readiness, especially pending CI and the limits of the native-loader check.

Changes

Adds B300 SGLang 0.5.20 DSA decode measurements for GLM agentic replay. The collection metadata marks 220 rows complete, split into two collections of 110, and records the runtime image digest, source commit, collector reference, and collection-plan hashes. The measurements cover batches 4/8/16/32/52 and 22 past-KV lengths through 720,896, according to the supplied PR summary.

Adds backend-fact entries for dsa_generation_module and dsa_generation_module_skip_indexer. Both identify GlmMoeDsaForCausalLM, FP8 KV cache, bfloat16 MLA/GEMM, the trtllm_mla backend, and distinct kernel sources.

This adds performance data and registry facts. It does not implement linked issue #664’s vLLM collector changes. The data was collected independently of that fix. GLM-5.3 attention geometry is described as compatible, but these are not GLM-5.3-specific measurements.

Contracts and evidence

No exported API or row-schema change is reported. The additions extend the available performance dataset and backend-fact registry.

The supplied evidence reports 47 provenance tests, data rules R1–R7, and the backend-fact census passing. It also reports that native loading preserved all 220 latencies. That loader check used an existing research binary with current Python source; it was not a fresh-main end-to-end run.

Readiness and gaps

Fast CI, Full CI, and CodeRabbit were pending for the new head in the supplied summary. Codex reported no blocking issues, but that review is not approval. Review severity counts are unavailable from the supplied findings. The reported checks support technical quality, but pending CI leaves merge readiness unresolved.

This change registers two B300 SGLang 0.5.20 DSA generation operations and adds runtime metadata for a complete 220-row performance table.

Changes: B300 SGLang DSA measurements

Layer / File(s) Summary
Register operations and collection data
python/aisimulate/collector/op_backend_facts.yaml, python/aisimulate/src/aisimulate_core/systems/data/b300_sxm/sparse_attention/sglang/0.5.20/collection_meta.yaml
Adds backend facts for regular and skip-indexer DSA generation with fp8 KV cache, bfloat16 MLA/GEMM, and trtllm_mla. Adds SGLang runtime metadata and a complete 220-row table made up of two 110-row collections.

Estimated code review effort: 2 (Simple) | ~8 minutes

Possibly related PRs

Merge Risk: Minimal · up to 44ea5

No actionable correctness or integration risk is established by the reviewed changes.

Pre-merge checks: Passed 6 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Linked Issues check Warning #664 is open and directly linked, so its coding requirements apply. The PR adds SGLang 0.5.20 GLM DSA data, collection metadata, and backend-fact entries. The available change summary does not show th… Implement or include the #664 collector, coverage, test, documentation, and attribution changes, or remove the direct link to #664 if this PR is not intended to satisfy that issue.
Out of Scope Changes check Warning The PR adds 220 published SGLang 0.5.20 GLM DSA measurements, collection events and metadata, artifact hashes, and two backend-fact census entries. These changes are separate data-publication work and… Move the GLM data publication changes to a separate PR or update the linked issue scope and linkage so these changes have a directly linked coding objective.
Passed Passed checks: 6 passed
Check name Status Explanation
Title check Passed The title precisely identifies the performance data addition, target B300 platform, SGLang version context, and GLM agentic decode behavior.
Cross-Layer Contract Passed PASS. The PR adds data and provenance entries. It does not add a public input, schema field, default, or API output. The existing collection_meta.yaml loader accepts schema v2 and validates the new …
Modeling And Data Evidence Passed The PR provides provenance and reproducible machine-readable evidence. manifest.json records the collector/runtime commits, immutable image digest, source shard hashes, exact 220-row grid, schema, p…
Compatibility Boundaries Passed PASS. The PR changes only collector evidence, two backend-fact entries, and one versioned Parquet table with schema-v2 metadata. The added sidecar parses as schema version 2 and matches the Python val…
Review Evidence Passed The PR provides relevant commands and results in benchmarks/evidence/collector/glm-agentic-20261029/README.md:69-79, including collector-data checks, the backend census, and 47 provenance tests. It …
Description check Passed The description covers the change, review map, risk, compatibility, evidence, provenance, tracking, and known validation limits. It omits a separate “Modeling or data provenance” heading and does not …
Full details: Cross-Layer Contract

Explanation

PASS. The PR adds data and provenance entries. It does not add a public input, schema field, default, or API output. The existing collection_meta.yaml loader accepts schema v2 and validates the new sidecar (python/aisimulate/src/aisimulate_core/sdk/perf_database.py:682-810). Existing Python and Rust consumers route dsa_generation_module_perf.parquet to full and skip-indexer views (python/aisimulate/src/aisimulate_core/sdk/operations/dsa.py:238-274; crates/core/src/perfmodel/perf_database/table_view.rs:2409-2414,2551-2555). The two kernel labels already have catalog, backend mapping, and reuse-manifest entries (python/aisimulate/collector/op_backend_catalog.yaml:117-122; kernel_source_backends.yaml:124-127; perf_data_reuse_manifest.yaml:317-341). Existing tests cover shipped DSA table identity and full/skip view behavior (tests/unit/sdk/database/test_mla_head_axis_keying.py:370-401; test_dsa_skip_indexer_fail_open.py:13-33; test_table_view_dsa_dsv4_shapes.py:177-208), while the collector-data and backend-facts checks scan the added path. The GLM-5.3 compatibility statement has repository evidence: the existing DSA cases alias GLM-5.3 checkpoints to the GLM-5.2 identity and preserve native 64-head geometry (collector/cases/models/GlmMoeDsaForCausalLM_cases.yaml:176-214), with model-resolution tests for the GLM-5.3 bundles (tests/unit/sdk/models/test_model_config.py:2100-2139). No stale Rust, Python, CLI, serialization, documentation, or test contract is introduced.

Full details: Modeling And Data Evidence

Explanation

The PR provides provenance and reproducible machine-readable evidence. manifest.json records the collector/runtime commits, immutable image digest, source shard hashes, exact 220-row grid, schema, packaged table and sidecar SHA-256 values, and per-shard job/checkpoint data. Its anomaly summary reports zero duplicate keys, null cells, nonfinite latency, and nonpositive latency; the recorded hashes match the committed files. The README explains the two 110-row collections and validation scope. The base ref has no 0.5.20 table, and the existing 0.5.14/0.5.21 paths are unchanged. This is not a binary-only validation.

Full details: Compatibility Boundaries

Explanation

PASS. The PR changes only collector evidence, two backend-fact entries, and one versioned Parquet table with schema-v2 metadata. The added sidecar parses as schema version 2 and matches the Python validator contract in python/aisimulate/src/aisimulate_core/sdk/perf_database.py:704-810; its table and sidecar hashes match manifest.json. The Parquet footer contains the existing DSA columns, and the Rust DSA loader already consumes dsa_generation_module_perf.parquet with the same column and skip-indexer contract in crates/core/src/perfmodel/perf_database/dsa.rs:6-23. No Python API, Rust binding, version, default, or Dynamo dependency changed. The existing wheel package glob includes nested Parquet and YAML data (python/aisimulate/pyproject.toml:149-160), while CI still enforces exactly one wheel (.github/workflows/ci.yml:515-521) and the crate manifest remains unchanged.

Full details: Review Evidence

Explanation

The PR provides relevant commands and results in benchmarks/evidence/collector/glm-agentic-20261029/README.md:69-79, including collector-data checks, the backend census, and 47 provenance tests. It includes boundary and negative validation at README.md:50-65 and in manifest.json:77-82 (complete grid, zero errors, no nulls, duplicate keys, nonfinite, or nonpositive latency). The description distinguishes local native-extension checks, the existing research binary, and production collector pipelines, and explicitly marks Fast CI and Full CI as pending rather than presenting them as completed evidence. It does not cite inactive nested workflows as hosted CI evidence.

Full details: Description check

Explanation

The description covers the change, review map, risk, compatibility, evidence, provenance, tracking, and known validation limits. It omits a separate “Modeling or data provenance” heading and does not list exact test commands, but the required information is mostly present in the evidence section.

Full details: Linked Issues check

Explanation

#664 is open and directly linked, so its coding requirements apply. The PR adds SGLang 0.5.20 GLM DSA data, collection metadata, and backend-fact entries. The available change summary does not show the required vLLM 0.31 metadata and KV-cache compatibility, legacy-path preservation, kernel-page override and validation, expanded default context coverage, tests, documentation, or upstream attribution. The PR description also states that the SGLang data was collected independently and does not implement #664.

Resolution

Implement or include the #664 collector, coverage, test, documentation, and attribution changes, or remove the direct link to #664 if this PR is not intended to satisfy that issue.

Full details: Out of Scope Changes check

Explanation

The PR adds 220 published SGLang 0.5.20 GLM DSA measurements, collection events and metadata, artifact hashes, and two backend-fact census entries. These changes are separate data-publication work and are not part of #664's stated collector, tests, documentation, and upstream-attribution scope. #664 explicitly places the GLM and Qwen performance tables in separate data PRs.

Resolution

Move the GLM data publication changes to a separate PR or update the linked issue scope and linkage so these changes have a directly linked coding objective.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@tianhaox tianhaox left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, Simone. The data looks sound:

  • The 220 rows are internally consistent. Index reuse falls to about 0.05× the indexer path at 720K history, which fits an indexer that scales with history. The only non-monotonic steps are a few drops under 10% at the 25–50 µs end.
  • I compared them with the existing B300 0.5.21 zai-org/GLM-5.2 rows at the same geometry: FP8 KV, 8 heads, BF16 projections, TP8. Over the 116 shared points, 0.5.20 agrees within about ±10%; the median ratio is 0.96× with the indexer and 1.07× with index reuse.

Questions before merge:

  1. No collector for this lane after #649. The rows come from 3d41164 on 0.5.20, which predates #405, so #664's code doesn't reproduce them either; you note this in the PR. #649 retires the 0.5.20 model pins and pins collect_mla_module.py to 0.5.21. The 0.5.21 table already has this geometry; what's missing is batch 52 and long histories at batches 4–52. I'd prefer collecting those shapes on 0.5.21 with #649's collector, so they land in the current table rather than in a version outside the query slots. Keeping a 0.5.20 lane is a decision we should make together.

  2. Effect on default current queries. On B300, SGLang current is 0.5.21, and 0.5.20 isn't a queryable slot (query_versions.yaml). Same-backend backward fill (source_resolution.rs channel 3, nearest earlier first) would serve these rows before the 0.5.14 nvidia/GLM-5.2-NVFP4 rows for any key that 0.5.21 doesn't cover.

    • At the 114 points shared with 0.5.14, the 0.5.20 indexer path is about 34% faster (median 0.66×, range 0.59–0.80).
    • The served grid would then mix versions: batches 4–52 from 0.5.20, batches 1, 2 and 64+ from 0.5.14.

    Could you add a before/after for a default current GLM-5.2-NVFP4 decode query on B300? That shows what changes outside the agentic replay.

  3. CI. Full CI failed only because Platform Wheels / Build wheels (macosx_arm64) was cancelled. A rerun, or a rebase past #668, should clear it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants