By Ezgi Tastan.
A free browser tool for engineers who benchmark GPUs, serve models or build profilers. Open an NVIDIA power CSV or CUDA counter logs to find missing measurements before you trust a result.
Choose Show me an example to see a missing GPU in demo data. Choose Check my logs to open your own files, set the GPUs and time range, and save a report. Files stay in your browser. The tool does not run a benchmark, connect to your GPU, or diagnose hardware failures.
This is the two-check application in the GPU Reliability Lab project. Its rules and examples are open for inspection.
Use See the complete recording or See the working counter to compare paired examples. Copy example link opens the selected public example for another person; the link never includes your input data. Save summary downloads a short text report without raw logs, filenames or counter labels. Save JSON keeps the detailed report.
JSON reports distinguish evidence_source from method_sources. Custom evidence remains unverified. JSON reports contain parsed evidence and settings, not the full custom power CSV; retain the original capture to reproduce an audit.
CUDA launch coverage accepts two raw Prometheus snapshots containing one gpu_cuda_kernel_launch_calls_total series and an optional known workload count. It checks series identity, counter resets, missing series, and observed delta versus expected count. Optional binary-import text identifies per-thread CUDA variants as a follow-up clue.
Missing is not zero. Multiple launch series are rejected instead of silently aggregated. Matching a count validates that specific test under the same-target, same-counter-lifetime, no-concurrent-workload assumptions. It does not prove coverage of every CUDA API, inspect CUDA graph internals, measure GPU utilization, or check ring-buffer loss.
Power-trace integrity accepts NVIDIA CSV captures. It checks expected GPU indices, timestamp order, window boundaries, and a user-declared maximum sample gap. Only if all selected domains pass those checks does it calculate a piecewise-linear energy estimate, interpolating the boundaries without extrapolation. A missing GPU or uncovered boundary withholds the whole requested total.
The power result is an estimate from sampled readings, not a calibrated meter result. Only selected GPU domains are included. Host, fabric, and facility power are excluded. Calendar timestamps use one local clock; synchronization across hosts and undetected clock changes remain outside scope.
Launch snapshots use Prometheus text exposition with exactly one matching raw counter series each. Other metrics and comments are ignored. Labels can be reordered without changing series identity. Explicit sample timestamps are epoch milliseconds; equal or reversed timestamps invalidate the comparison. Without them, before/after order remains a user-supplied assumption. Rates, fractional launch counts, malformed labels, resets, and multiple matching series are rejected or marked incomplete. The expected count is a positive integer or blank.
Power CSV supports:
timestamp, index, and power.draw, optionally with units such as [W].Timestamps can be numeric seconds or YYYY/MM/DD HH:mm:ss.SSS. Calendar captures are normalized to seconds since the earliest row; numeric values retain their supplied second axis. A declared timestamp unit must be [s] with numeric values. A declared power unit must be [W]; kilowatts and other units are rejected rather than silently rescaled. Values such as 234.85 W are accepted. Invalid or N/A power readings are not skipped.
Limits: 2 MB per text input, 20,000 CSV records, and 64 selected GPU indices. This version does not ingest arbitrary profiler traces, multiple Prometheus target series, or cross-host clock domains.
Six examples are included, but they are not six independent production incidents:
The original GB300 benchmark inspector is retained as an article companion. Its detailed methods are in BENCHMARK.md.
The original hero_ladder.py sampler integrates only samples inside the client submit-to-done window; it does not fill either edge. A controlled 1-second, 1,000-W fixture with samples at 0.2 and 0.7 seconds returns 0.5 kJ in that sampler, versus an analytical full-window 1 kJ. This demonstrates the boundary behavior, not the percentage error of the published runs. The retained TSVs cannot reconstruct their missing boundary power.
The lab's power checker refuses that fixture rather than inventing the missing values. When bracketing samples exist, tests verify its interpolated integral against analytical constant-power and linear-ramp examples.
The benchmark companion retains the original measurements, marks energy as estimated, preserves measurement notes through import/export, and distinguishes article-sourced driver 595.71.05 from an unknown exact SGLang revision.
From the companion repository root, Mac terminal — READ-ONLY apart from starting a temporary loopback preview process:
node space/serve.mjs
Open http://127.0.0.1:4173. The old comparison is at /benchmark.html. Ctrl-C stops the preview.
From a standalone Space checkout root, Mac terminal — READ-ONLY apart from starting the same preview process:
node serve.mjs
From the companion repository root, Mac terminal — READ-ONLY checks:
node --test space/tests/*.test.mjs
The provenance tests require the companion repository's original figdata files. A standalone HF checkout does not contain those test fixtures.
The static Space uses this public file set:
README.md, ROADMAP.md, index.html, lab.css, lab.mjs, audit.mjs, report.mjs, cases.json, power-example.csv, benchmark.html, BENCHMARK.md, styles.css, app.mjs, measurements.mjs, reference.json, serve.mjs, and the repository's original LICENSE.
Draft launch/story files, research notes, and tests remain in the companion repository. The app needs no build, paid compute, package installation, or backend.
This is a development tool and seed case set. It is not a validated benchmark of incident-response agents, an automated root-cause system, or evidence that a fleet is healthy. There are no model rankings, adoption claims, or proven superiority claims.
See ROADMAP.md for the larger direction and acceptance gates.
References: Prometheus exposition, NVIDIA SMI, Static Spaces.