feat(power): add query energy and TDP dashboard axes / 新增每请求能耗与 TDP 占比图表轴 - #735
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Claude finished @edwingao28's task in 5m 19s —— View job Review — PR #735: power-derived axes
Summary🟢 Solid, well-tested change. The three new derived axes are wired correctly end-to-end and verified at runtime. Verified:
One non-blocking note (inline): the PR body says "%TDP has no Pareto direction", but the config does assign it a roofline and the test enforces it — so Optimal Only filters the %TDP axis to a frontier (confirmed at runtime). Behavior is self-consistent and defensible; just reconcile the description (or drop the roofline) so reviewers aren't misled. No blocking issues found. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit bbd7f58. Configure here.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 308fbdd3e6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude finished @edwingao28's task in 3m 58s —— View job Re-review — PR #735: power-derived axes
SummaryThe three new axes are wired correctly end-to-end (config EN/ZH labels, One 🟡 WARNING (inline, also Codex's P1): Non-blocking (already noted by Bugbot / Codex / prior review): the PR body says "%TDP has no Pareto direction", but the config assigns it No blocking issues found. |
|
Claude finished @edwingao28's task in 1m 55s —— View job Re-review — PR #735: power-derived axes
SummaryRe-review of the two new commits since
Runtime: 🔴 BLOCKING — Lint & Format CI is failingThe Lint & Format check fails (run): Once formatting is fixed, this is good to go. |
|
Claude finished @edwingao28's task in 1m 9s —— View job Re-review — PR #735: power-derived axes
SummaryRe-review of the single new commit since the last review ( ✅ The prior 🔴 BLOCKING lint/format failure is resolved.
Lint & Format is now green, along with Tests (Unit), Code Quality, and PR #735. Tests (E2E) was still in progress at review time — worth a final glance before merge, but nothing in a formatting-only commit should affect it. Both prior WARNINGs remain correctly resolved (verified unchanged in the current tree):
Runtime: the only change since the last Playwright verification (commit 🟢 LGTM — no blocking issues found. Once Tests (E2E) reports green, this is good to merge. |
…ns (#850) Two weeks of AgentX work shipped concepts the glossary did not define, and left several existing entries describing behavior the dashboard no longer has. Add entries for E2E Normalized Interactivity (#847, #848), tokens per dollar (#770, #787, #793), energy per token (#734, #735), context parallelism (#745), KV cache offload (#729, #818), KV cache manager, KV-aware routing, and TileRT (#843). Refresh nine entries against current behavior: agentic curves merge speculative decoding into point-level metadata (#695) while fixed-sequence curves still split on it; best-per-SKU views merge permitted optimizations into one curve; cost and energy are derived from interpolated throughput rather than splined (#726); AgentX is the deliberate exception to the prefix-caching-disabled rule; agentic ISL/OSL is a lognormal distribution rather than a single pair (#810, #811). 中文:新增八条 AgentX 相关术语并更新九条既有释义。新增:端到端归一化交互性、 每美元 token 数、每 token 能耗、上下文并行、KV cache offload、KV cache 管理器、 KV 感知路由和 TileRT。更新内容对齐当前行为:agentic 曲线把投机解码作为数据点级 元数据合并(定长场景仍按曲线区分);每个 SKU 最佳配置视图合并允许的优化;成本与 能耗由插值吞吐量推导而非单独样条;AgentX 是禁用前缀缓存规则的有意例外;agentic 的 ISL/OSL 是对数正态分布而非单一取值。中英文条目同步更新。

What
Three derived measured-power axes for the inference dashboard:
y_measuredJPerSuccessfulQuery— joules per successful query (producer emitsjoules_per_successful_query)y_measuredWhPerSuccessfulQuery— the same energy in Wh (÷ 3600) for people who think in battery unitsy_measuredPowerPercentTdp—avg_power_w / TDP × 100, TDP from the shared hardware registry inpackages/constants/src/gpu-keys.ts(all 10 SKUs carry atdpentry)All three: EN/ZH labels, roofline directions (
lower_righton the interactivity block,lower_lefton the e2e block; %TDP has no Pareto direction — it is a utilization gauge, not an efficiency frontier), scatter + historical trends + unofficial-run overlay wiring, and gap-preserving behavior when the underlying fields are absent.Depends on
Stacked on #734 (power_valid / schema-semantics guard) — the first two commits here are that PR. Review only the last commit:
feat(power): add query energy and TDP dashboard axes. Merge #734 first, then this rebases to a single commit.Like the base PR, the J/query axes only render whole-deployment-stamped rows on disaggregated deployments; %TDP and role watts are unaffected.
Out of scope
The AI-generated chart path (
ai-chart/) shares theY_AXIS_METRICSwhitelist and has pre-existing defects for every lower-is-better metric (missing-as-zero in line charts, no radar inversion, top-N picks maxima). Those predate this PR — they date from the original six measured axes — and are tracked separately rather than mixed in here. This PR only adds avalidateSpectest pinning that the new keys survive spec validation.Verification
Note
Medium Risk
Touches measured-power contract semantics and chart roofline/table ordering for new lower-is-better axes; risk is mitigated by broad tests but display logic errors would mislead efficiency comparisons.
Overview
Adds three Measured Energy Y-axis options on the inference dashboard: joules per successful query, watt-hours per successful query (÷3600), and average measured power as % of hardware TDP from the GPU registry.
Data path:
joules_per_successful_queryis passed through benchmark transform (with the same schema-v2 /power_validguards as other whole-deployment joules on disagg rows). Chart points derive Wh/query and %TDP via sharedbuildMeasuredPowerChartFields, used by scatter charts and historical trend interpolation.Chart behavior: New keys are registered in
Y_AXIS_METRICS, chart JSON (EN/ZH), andChartControls. J/query and Wh/query use lower-is-better Pareto directions (lower_right/lower_leftby chart block) with roofline marking wired inmarkRooflinePoints. %TDP is plottable but has no_roofline— treated as a utilization gauge, not an efficiency frontier.Hardening: Invalid or malformed
power_valid/ schema normalization on unofficial-run overlays; non-power telemetry (temp, util, workers) is scrubbed whenpower_valid=0, alongside measured power fields.Reviewed by Cursor Bugbot for commit 1e1999a. Bugbot is set up for automated code reviews on this repo. Configure here.