Skip to content

feat(collectivex): chart KV-transfer scaling and lead kv-only runs with it / 为 KV 传输绘制扩展性图表并前置展示 - #689

Merged
Oseltamivir merged 3 commits into
masterfrom
collectivex-kv-card-placement
Aug 8, 2026
Merged

feat(collectivex): chart KV-transfer scaling and lead kv-only runs with it / 为 KV 传输绘制扩展性图表并前置展示#689
Oseltamivir merged 3 commits into
masterfrom
collectivex-kv-card-placement

Conversation

@Oseltamivir

@Oseltamivir Oseltamivir commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #688, addressing two things from the first production look at kv runs:

What

  • Placement: the kv card rendered below the EP explorer chart, so checking a kv-only run led with a legitimately empty chart ("no measured series") and two screens of controls before any data. The KV-cache transfer section now renders directly above the EP explorer chart.
  • Charts: the section grows a D3 chart on the same foundation as the EP explorer (log-log, zoom/pan, pinned tooltips, run-dash styling, config-stable colors via the shared theme palette):
    • Y: aggregate pull bandwidth (GB/s, p50) or burst completion latency (ms, p50).
    • X: batch size (read at the largest measured ISL, the concurrency-scaling story: Mooncake scales with batch, NIXL stays flat) or ISL (read at batch 1, the single-request handoff).
    • Page-size (64/16) and direction (pull/push) toggles; a caption states the pinned dimension.
    • One series per measured case per checked run, namespaced and dashed by run like the EP explorer; toggleable sidebar legend.
    • Paged rows only: the single-descriptor bulk ceiling stays a table column, since it has no batch or page dimension.
  • Tooltips carry the full row: latency percentiles, descriptors/request, MB/request, prep time, verify verdict.
  • The table from feat(collectivex): show KV-cache transfer cases on the CollectiveX tab / 在 CollectiveX 页展示 KV 缓存传输用例 #688 is unchanged beneath the chart; test ids are preserved.

Tests

  • Unit: chart point selection (batch view pins the largest ISL, ISL view pins batch 1, op/page filtering, series namespacing).
  • E2E (chrome, local run 26/26 passing): chart renders with the expected point counts, metric/axis/page toggles re-render correctly, and the kv section precedes the EP chart in the DOM; the EP-only no-card case still holds.
  • lint, fmt, typecheck green; the one failing unit file is the pre-existing timezone-sensitive visit-tracking test that also fails on a clean master checkout locally.

中文说明

作为 #688 的后续,解决 kv 运行首次在生产环境展示时发现的两个问题:

  • 位置:kv 卡片此前位于 EP 浏览器图表之下,勾选仅含 kv 的运行时,页面先呈现一张必然为空的图表与两屏控件,数据被埋没。现将 KV 缓存传输区块移至 EP 图表之上。
  • 图表:区块新增与 EP 浏览器同一基础设施的 D3 图表(对数坐标、缩放平移、可固定的悬浮提示、按运行虚线、共享主题配色):Y 轴为聚合 pull 带宽(GB/s,p50)或突发完成延迟(ms,p50);X 轴为批大小(取最大实测 ISL,体现并发扩展差异:Mooncake 随批扩展而 NIXL 平坦)或 ISL(取批 1,体现单请求交接);附页大小(64/16)与方向(pull/push)切换,标题注明被固定的维度。每个已勾选运行的每个实测用例一条序列,图例可切换。仅分页行入图;单描述符 bulk 上限保留为表格列。
  • feat(collectivex): show KV-cache transfer cases on the CollectiveX tab / 在 CollectiveX 页展示 KV 缓存传输用例 #688 的表格保持原样置于图表之下,测试 id 不变。

测试:图表取点逻辑单测(批视图取最大 ISL、ISL 视图取批 1、方向与页过滤);本地 Chrome E2E 26/26 通过(图表渲染点数、三组切换、kv 区块位于 EP 图表之前、EP-only 不渲染卡片);lint、fmt、typecheck 通过(唯一失败的单测文件为与本改动无关、干净 master 上同样失败的时区敏感用例)。


Note

Low Risk
UI-only CollectiveX visualization and table changes; no API or auth changes. Regression risk is limited to chart data selection and layout ordering, covered by new unit and E2E tests.

Overview
KV-cache transfer is now a full section (CollectiveXKvSection) with a log-log D3 chart (bandwidth vs latency, batch vs ISL, page size, pull/push), toggleable legend aligned with EP run dash patterns, and the existing data table underneath. CollectiveXKvTable is removed in favor of this section.

Layout: The KV block renders above the EP explorer chart so kv-only runs show data before an empty EP chart.

Runs table: A Suites column shows EP and KV badges from kv_cases vs total case counts (older summaries without kv_cases stay EP-only).

Data layer: collectiveXKvChartPoints and related helpers drive chart series (paged rows only; bulk stays in the table). Unit and Cypress tests cover chart toggles, DOM order, suite badges, and EP-only behavior.

Reviewed by Cursor Bugbot for commit e0e07e6. Bugbot is set up for automated code reviews on this repo. Configure here.

…th it

The kv card rendered below the EP chart, so a kv-only run led with a
legitimately empty chart and read as having no data. The kv section now
renders above the EP explorer and grows a D3 chart: aggregate pull GB/s or
burst latency against batch size (at the largest measured ISL, the
concurrency-scaling story) or against ISL (at batch 1, the single-request
handoff), with page-size and direction toggles, per-case series colored
like the EP explorer, run-index dashes, and a toggleable legend. Paged
rows only; the single-descriptor bulk ceiling stays a table column.

中文:此前 kv 卡片位于 EP 图表之下,仅含 kv 的运行首屏是一张必然为空的
图表,看似没有数据。现将 kv 区块移至 EP 浏览器之上,并新增 D3 图表:
聚合 pull 带宽(GB/s)或突发延迟对批大小(取最大实测 ISL,体现并发扩展)
或对 ISL(取批 1,体现单请求交接)作图,附页大小与方向切换、与 EP 一致
的按配置着色和按运行虚线、可切换图例。仅分页行入图;单描述符 bulk 上限
保留为表格列。
@Oseltamivir
Oseltamivir requested a review from adibarra as a code owner August 7, 2026 17:04
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
inferencemax-app Ready Ready Preview Aug 7, 2026 5:21pm

Request Review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 3 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit abb357e. Configure here.

Comment thread packages/app/src/components/collectivex/CollectiveXKvChart.tsx Outdated
Comment thread packages/app/src/components/collectivex/CollectiveXKvSection.tsx
Comment thread packages/app/src/components/collectivex/CollectiveXKvSection.tsx Outdated
The bandwidth axis names the selected direction instead of always pull;
legend selection is keyed to the current series set so newly checked runs
start active instead of inheriting a stale toggle set; kv run dashes come
from the explorer's shared selection-order index so a run keeps one dash
pattern across both charts while loads settle.

中文:带宽轴标签跟随所选方向而非固定为 pull;图例选择与当前序列集合绑定,
新勾选的运行默认激活而不继承过期的切换状态;kv 虚线索引改用与 EP 浏览器
共享的选择顺序映射,加载过程中同一运行在两张图上保持一致的虚线样式。
A kv-only sweep was indistinguishable from an EP sweep in the run picker.
Each row now carries EP and KV badges derived from the stored summary
(kv_cases is absent on pre-kv summaries, which read as EP-only), with
measured/requested counts in the badge tooltip.

中文:运行列表此前无法区分 kv-only 与 EP 运行。每行现按存储摘要显示
EP 与 KV 徽标(旧摘要无 kv_cases,视为仅 EP),悬浮提示含实测/请求
用例数。
@Oseltamivir
Oseltamivir merged commit 0e176e1 into master Aug 8, 2026
24 checks passed
@Oseltamivir
Oseltamivir deleted the collectivex-kv-card-placement branch August 8, 2026 09:54
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.

1 participant