You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a third option to the gated "Measured Energy" dropdown group:
- Measured J per Token (J/total-token: system energy / (input + output))
Distinct from the existing "Measured J per Output Token" which divides only
by output tokens (treating the prompt as free). For workload-shape-fair
comparisons — especially with prompt-heavy workloads like 8k/1k where
J/output-token is ~9x higher than J/total-token despite the same energy.
Wires the new field through the same plumbing as the existing measured-
power metrics:
- packages/constants/src/metric-keys.ts: register joules_per_total_token
- packages/app/src/lib/benchmark-transform.ts: pass through (left undefined for legacy rows)
- packages/app/src/components/inference/types.ts: extend AggDataEntry, InferenceData, YAxisMetricKey, ChartDefinition
- packages/app/src/lib/chart-utils.ts: extend Y_AXIS_METRICS, createChartDataPoint, roofline union, markRooflinePoints
- packages/app/src/components/inference/inference-chart-config.json: add y_measuredJPerTotalToken to both chartTypes (roofline lower_right / lower_left)
- packages/app/src/components/inference/ui/ChartControls.tsx: add to the Measured Energy gated group
Companion runner-side change: SemiAnalysisAI/InferenceX@363e49c4 emits
joules_per_total_token in every agg_<run>.json.
Tests: +3 covering the new field (presence, parallel independence from
J/output-token, graceful absence on legacy rows). 1944/1944 vitest pass.
0 commit comments