Spaces:
Running
Running
Commit History
5 days ago
-
Remove synthetic data from the app entirely Running
Morgan Funtowicz- Delete src/lib/explorer/fixtures.ts; the deterministic generator moves to tests/fixtures.ts under neutral names (test-only, not shipped) - Drop the empty-/data synthetic fallback, 'Synthetic data' badge and synthetic sidebar section; empty /data shows the plain empty state - Remove the synthetic flag from KernelModel/buildKernelModel - Rewrite the fallback test into: empty state renders without fake data, and a real /data round-trip (manifest + JSONL) drives the explorerac3af6a -
Add kernel scaling explorer screen (Svelte 5)
Morgan FuntowiczNew 'Axis <-> performance' exploration flow for kernel benchmarks, built on a typed analysis layer with measurement correctness in mind: - model.ts: normalization to numeric shape axes, configuration matching (kernel + full shape + host + settings, revision varying deliberately), median repeat aggregation (one config = one vote), scaling model with measured points only and null (unavailable) baselines, Spearman rank correlation with average tie ranks, coverage gates, homogeneous comparison groups (never mixes hosts/revs), anchor selection + inspectAxis, linked scatter builder - fixtures.ts: deterministic seeded synthetic data (2 kernels, 2 hosts, 2 revs with injected regression, repeats, uneven grid), labelled 'Synthetic data' in the UI - Explorer screen: kernel selector, run filters (host/rev/period + secondary), permanent per-kernel axis filter row (OR within, AND across, All/Fixed/X-axis indicators), configuration vs sample counts, scaling chart with x-axis/me…b66867a -
Shape workload facet, readable shape dims, rev as commit identity
Morgan Funtowicz- Combined 'shape' facet whose values are full workload signatures (m=1k k=1k n=4k) so kernels can be filtered as workloads; per-dim groups relabeled 'shape · seq' with compact values (4k) and matching query-bar tokens (seq=4k) - rev treated as commit identity everywhere (abbreviated in legends/ chips, tooltips, excluded from default series split) alongside legacy commit; docs: rev is always a git commit id, never a branch name14e1edf -
Redesign UX: health-first hero, metric tiles, compact sticky query bar
Morgan Funtowicz- Hero answers 'did anything break' first: improved/regressed/unchanged health pills plus named worst-regression and best-improvement callouts, last-run line shows the commit behind it - Metric tiles (latest value, direction-aware delta, sparkline) ordered worst-regression first; click scrolls to the metric's chart - Compact sticky query bar with removable filter tokens and match count; faceted filter panel now collapsible behind a toggle - Charts and change matrix ordered by regression severity; matrix gets per-row sparklines; redundant summary strip removeda15716b -
Restructure layout: left sidebar with models/kernels menu
Morgan Funtowicz- Sticky sidebar with category sections (Models, Kernels, ...), each dataset as a menu item with run count and latest date - Remove top header and tabs; main area starts with a slim content header and gives filters/charts/tables full width - Sidebar stacks vertically under 860pxc02bc93 -
UX iteration: robust faceted filtering, chart overhaul, schema v1.1 docs
Morgan FuntowiczFiltering (fixes flaky 'no data' dead-ends): - Empty date From/To = unbounded: pinned date bounds no longer hide runs appended by the 60s polling reload; inverted ranges auto-swap - Faceted chips with per-value match counts given other groups' selections; zero-match values disabled; per-group 'All' clear chip; explicit selection state (highlight vs dim) - Records lacking a tag show as '(none)' facet instead of vanishing - Smart empty state: named blockers (date range, hosts, tags) with one-click recovery; 'N of M runs match' pill while filtering - Stale filter/group-by values pruned on hot reload; group-by never empties Charts: - Data-driven y-domains with nice 1/2/5 ticks (sub-1% changes visible, zero anchored only when near the data range); tick precision matches step; single-date series render centered instead of collapsing - HTML hover tooltips (value, direction-aware delta, commit), end-of-line value labels with collision nudging, stable name-hash series colors, …59a688b -
Add regression-tracking layer: change matrix, per-series deltas, commit tooltips
Morgan Funtowicz- New TrendsTable 'change matrix': rows = series, columns = metrics, latest value + direction-aware delta vs previous run, sorted worst regression first, with improved/regressed/unchanged counts - Chart legends show latest value + colored delta per series; latest point emphasized; header shows total change over the range - Delta compares the same series' previous point (was: best of any series) - Commit tag kept out of default series identity so runs line up over time; abbreviated in labels and named in point/delta tooltips - Dataset picker shows run count and latest date; summary shows last run8cfd3b2 -
Parse kernel shape tags into per-dimension pseudo-tags
Morgan FuntowiczShapes like '4096:4096:4096' (positional per op spec) and 'bs=8 seq=4096 heads=32 d=128' (k=v pairs) are expanded into shape.<dim> tags at load time, giving each dimension its own filter chip group, group-by option, table column and compact legend label (seq=4k). Numeric tag values sort numerically.67ec52c -
Add group-by selector and dynamic tag filters
Morgan Funtowicz- Group chart series by host, hardware, or any tag dimension (dtype, kernel, shape, ...) via a chip selector; default is host + all tags - Auto-generate multi-select filter chips for every tag with 2+ values - Filters state carries a tags map; preserved across hot reloadsdd036ac -
Replace stuck 'Loading dashboard' placeholder with boot progress bar
Morgan FuntowiczSvelte 5 mount() only clears text nodes of the target, so the <p> placeholder stayed visible forever. Show an indeterminate progress bar while the bundle loads and remove it explicitly before mounting.fc7be3e -
Support partitioned data layout, replace bar charts with line charts
Morgan Funtowicz- Walk category dirs recursively in both manifest generators to discover <category>/<host>/<date>/<name>.jsonl partitions (legacy flat files still work) - Group manifest paths by category+basename so one benchmark spanning many host/date partitions loads as a single dataset, with record dedup and date sorting - Render evolution-over-time line charts for all tabs (kernels included), drop BarChart component and buildKernelBars - Update README and DATA_FORMAT_PROMPT to describe the new layout482cab0
6 days ago
-
Convert to Docker Space with bucket volume at /data
Morgan Funtowicz- Dockerfile: multi-stage build (vite build -> node runtime), port 7860 - server.mjs: dependency-free server serving dist/ plus /data/* from DATA_DIR (bucket mount, default /data); /data/index.json is generated on the fly by scanning the data dir, so new bucket files are picked up within one poll interval — no manifest regeneration, no rebuild - README frontmatter switched to sdk: docker with deployment instructions - scripts/update-data-index.mjs kept for local dev / static hosting2e19148 -
Auto-refresh: poll /data so new benchmark files update the dashboard live
Morgan Funtowicz- Re-fetch the manifest + datasets every 60s (skipped while tab hidden); hot-swaps data when the signature changes, preserving tab/dataset/filters - All data fetches use cache: 'no-store' to avoid stale responses - Missing/invalid manifest (404 or SPA-fallback HTML) degrades to the empty state instead of an error - README documents the flow: regenerate index.json after adding bucket files; appended records need no manifest change6b38d50 -
Fetch data from absolute /data path (bucket-mounted on the Space)
Morgan Funtowicz- Loader now requests /data/index.json and /data/<category>/<file>.jsonl instead of paths relative to the app bundle - A missing manifest (404) degrades to the empty state instead of an error - update-data-index no longer writes an empty manifest, so builds never ship dist/data/ and cannot shadow the real /data mount - Local dev: sync/symlink bucket data into public/data/ (git-ignored) - Add docs/DATA_FORMAT_PROMPT.md (LLM prompt for the Python bench script)fb88477
7 days ago
-
Split dashboard into Models | Kernels tabs with per-category charts
Morgan Funtowicz- Datasets organized by category: public/data/models/ and public/data/kernels/ - data-index script now scans subfolders and writes a categories manifest; any new subfolder automatically becomes an extra tab - Models tab: time-evolution line charts (unchanged) - Kernels tab: grouped bar charts comparing kernel implementations per host, averaged over the filtered range, with best-result KPI and spread vs worst - Kernel records identified via the 'kernel' tag; added labels for duration_ms / bandwidth_gbs / tflops metrics - Sample kernel datasets: attention (flash-attn/sdpa/eager), matmul (cutlass/cublas/triton)9e9dfbc -
Add Svelte 5 performance dashboard for JSONL benchmark data
Morgan Funtowicz- Datasets stored as JSONL records in public/data/<name>.jsonl - Auto-generated data/index.json manifest via scripts/update-data-index.mjs - Filters: date range, host, hardware (multi-select chips) - Per-metric evolution line charts (SVG, no chart lib) with latest-value KPIs and direction-aware deltas vs previous run - Summary stats and full records table with dynamic tag/metric columns - Two sample datasets (llama-3.1-8b-instruct, qwen3-4b)4ed61ad -
Duplicate from static-templates/svelte
Co-authored-by: Eliott Coyac <coyotte508@users.noreply.huggingface.co>5071df6