[WIP][DNM] feat(charts): add output throughput per total GPUs y-metrics / 新增按总 GPU 数归一化的输出吞吐量 Y 轴指标#613
Open
functionstackx wants to merge 1 commit into
Open
[WIP][DNM] feat(charts): add output throughput per total GPUs y-metrics / 新增按总 GPU 数归一化的输出吞吐量 Y 轴指标#613functionstackx wants to merge 1 commit into
functionstackx wants to merge 1 commit into
Conversation
Add two Y-axis metrics that normalize output throughput over the TOTAL GPU count instead of decode GPUs only: - y_outputTputPerTotalGpu = (output tok/s/gpu * num_decode_gpus) / (num_prefill_gpus + num_decode_gpus); equals output tok/s/gpu for aggregated (non-disagg) configs. - y_outputTputPerTotalMw = (outputTputPerTotalGpu * 1000) / all-in utility power per GPU (kW). Wired through Y_AXIS_METRICS, createChartDataPoint, roofline computation/marking, chart config (EN/ZH labels for both chart types), Y-axis dropdown, historical-trend interpolation, AI-chart metric catalog, and the unofficial-run overlay path. The per-pool disagg caveat does not apply to these metrics; they instead get a note explaining the total-GPU normalization, and the per-MW variant keeps the power source badges. 中文:新增两个按总 GPU 数归一化输出吞吐量的 Y 轴指标: y_outputTputPerTotalGpu =(每解码 GPU 输出吞吐量 × 解码 GPU 数)/ (预填充 + 解码 GPU 总数),聚合配置下与每 GPU 输出吞吐量一致; y_outputTputPerTotalMw = 前者 × 1000 / 每 GPU 全包功耗(kW)。 已接入指标注册、数据点构建、Roofline 计算与标记、图表配置(含中文标签)、 Y 轴下拉菜单、历史趋势插值、AI 图表目录及非官方运行叠加路径, 并为新指标添加总 GPU 数归一化说明(不再显示按解码/预填充池计算的免责声明)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds two new Y-axis metrics to the inference (and historical-trends) charts that normalize output throughput over the total GPU count instead of decode GPUs only:
y_outputTputPerTotalGpu)(output tok/s/gpu × num_decode_gpus) / (num_prefill_gpus + num_decode_gpus)For aggregated (non-disagg) configs this equals
output tok/s/gpuas-is, since every GPU decodes.y_outputTputPerTotalMw)(outputTputPerTotalGpu × 1000) / hardwarePower(all-in utility kW per GPU), following the existing per-MW metric convention.Changes
chart-utils.ts— registered both keys inY_AXIS_METRICS, derived both fields increateChartDataPoint, extendedcalculateRoofline/computeAllRooflineskey unions, added reset + marking branches inmarkRooflinePointstypes.ts—InferenceDatafields,YAxisMetricKeyentries,ChartDefinitionfieldsinference-chart-config.json— full entries (label/labelZh/title/titleZh/roofline) in both the interactivity (upper_left) and e2e (upper_right) chart definitionsChartControls.tsx— both metrics added to the Throughput dropdown groupchart-display-helpers.tsx— the per-MW variant keeps the power source badges; neither metric shows the per-decode/prefill-pool disagg caveat (the normalization is the whole point) — instead both show a bilingual note explaining the total-GPU normalizationuseInterpolatedTrendData.ts— trend interpolation supports both metrics (same derivation mirrored inrowToLightweightPoint)prompt-templates.ts,use-ai-chart.ts) — metric catalog + short labelsUnofficial run overlay support
Works for both official runs and
?unofficialrun=overlays: overlay rows flow through the sametransformBenchmarkRows→createChartDataPointpipeline, so the derived fields appear on overlay points automatically, andprocessOverlayChartDataresolves the new keys generically. Unit tests exercise the overlay path for both new metrics (utils.test.ts). Manual verification with a live?unofficialrun=URL still pending — this PR is [WIP][DNM].Tests
chart-utils.test.ts— disagg formula, non-disagg passthrough, omission whenoutput_tput_per_gpuis 0, per-MW derivation, roofline marking for both metricsbenchmark-transform.test.ts— end-to-end pipeline for disagg and non-disagg rowsutils.test.ts— overlay path (processOverlayChartData) for both metricschart-display-helpers.test.tsx— power badges without per-pool caveat; total-GPU note visibilitypnpm typecheck,pnpm lint,pnpm fmt, and the fullpnpm test:unitsuite (2740 tests) all pass.中文说明
新增两个 Y 轴指标,将输出吞吐量按总 GPU 数(而非仅解码 GPU)归一化:
y_outputTputPerTotalGpu):(每解码 GPU 输出吞吐量 × 解码 GPU 数)/(预填充 GPU 数 + 解码 GPU 数)。
聚合(非分离式)配置下与每 GPU 输出吞吐量一致。
y_outputTputPerTotalMw):前者 × 1000 / 每 GPU 全包功耗(kW),与现有 per-MW 指标口径一致。
改动范围:指标注册与数据点构建(
chart-utils.ts)、类型定义、图表配置(两种图表类型均含中英文标签与 Roofline 方向)、Y 轴下拉菜单、历史趋势插值、AI 图表目录,以及非官方运行叠加(?unofficialrun=)路径。新指标不再显示按解码/预填充池计算的免责声明,改为显示总 GPU 数归一化说明(中英双语);per-MW 变体保留功耗来源标注。已补充单元测试(含叠加路径),typecheck/lint/fmt/全量单测均通过。尚未用线上?unofficialrun=URL 做人工验证 — 本 PR 为 [WIP][DNM]。🤖 Generated with Claude Code
Note
Low Risk
Additive chart metrics and derived fields with broad unit test coverage; no auth, API, or data-migration changes.
Overview
Adds two Y-axis metrics so output throughput can be compared across aggregated and disaggregated configs on a total-GPU basis:
y_outputTputPerTotalGpuandy_outputTputPerTotalMw(per-MW variant uses the same normalized throughput).For disaggregated runs, output tok/s is derived as
(output_tput_per_gpu × num_decode_gpu) / (num_prefill_gpu + num_decode_gpu); non-disagg rows keep the existing per-GPU output value. The same logic is applied increateChartDataPoint, historical trend interpolation (useInterpolatedTrendData), chart config (interactivity + e2e, EN/ZH labels, rooflines), throughput dropdown, AI chart prompts/labels, and roofline marking.UI copy: the per-pool disagg caveat is not shown for these metrics; instead a bilingual TotalGpuNote explains total-GPU normalization. Per-MW total-GPU still shows power source badges.
Tests cover transform, rooflines, overlay remapping, and assumption notes.
Reviewed by Cursor Bugbot for commit 4ebb82f. Bugbot is set up for automated code reviews on this repo. Configure here.