FastVideo Performance Dashboard
Local FastAPI + React dashboard for records stored in the Hugging Face performance tracking dataset.
Data Source
The dashboard reads the same normalized JSON records used by
fastvideo/tests/performance/compare_baseline.py.
Defaults:
HF_REPO_ID=FastVideo/performance-trackingPERFORMANCE_TRACKING_ROOT=/tmp/fastvideo-perf-dashboardPERF_MAX_REGRESSION=0.05
Records can include source metadata:
run_source:pr,local,scheduled_main, orunknownbaseline_eligible: only successful scheduled-main records should be true- Buildkite metadata such as branch, PR number, build URL, build ID, and job ID
Set one of HF_API_KEY, HUGGINGFACE_HUB_TOKEN, or HF_TOKEN if the
configured dataset repo requires authenticated access:
export HF_TOKEN=hf_...
If Hugging Face returns 401 Unauthorized, confirm that HF_REPO_ID points to
the dataset repo you expect and that your token has access to it.
Development
Run the API:
python -m fastvideo.performance_dashboard --host 127.0.0.1 --port 8000 --reload
Run the React dev server:
cd performance_dashboard/frontend
npm install
npm run dev
Open http://127.0.0.1:5173. Vite proxies /api/* to the FastAPI server on
port 8000.
Single-Port Mode For ngrok
Build the frontend:
cd performance_dashboard/frontend
npm install
npm run build
Serve API and built frontend from one FastAPI process:
python -m fastvideo.performance_dashboard --host 0.0.0.0 --port 8000
Expose it:
ngrok http 8000
The ngrok URL will serve the dashboard UI and all /api/performance/*
endpoints from the same local port.
Dashboard Behavior
The dashboard supports model, GPU, source, and day-window filters.
Trend charts show metric-specific axes and exact point details on hover/focus:
- metric value and unit
- timestamp
- commit SHA
- run source
- stored status
- baseline eligibility
- PR number, branch, and Buildkite URL when present
The latest status table uses the stored JSON success value. Recomputed
baseline context is shown separately and does not override stored status.
API
GET /api/performance/healthPOST /api/performance/refreshGET /api/performance/summary?days=90&run_source=prGET /api/performance/trends?days=90&run_source=scheduled_mainGET /api/performance/records?days=90&run_source=local
The current v1 grouping key is (model_id, gpu_type). Baselines are computed
from the latest five previous successful records in each group for dashboard
context. CI gating uses only records marked baseline_eligible=true.