mirror of
https://github.com/kvcache-ai/sglang.git
synced 2026-07-07 07:47:25 +00:00
148 lines
3.7 KiB
Markdown
148 lines
3.7 KiB
Markdown
# SGLang Performance Dashboard
|
|
|
|
A web-based dashboard for visualizing SGLang nightly test performance metrics.
|
|
|
|
## Features
|
|
|
|
- **Performance Trends**: View throughput, latency, and TTFT trends over time
|
|
- **Model Comparison**: Compare performance across different models and configurations
|
|
- **Filtering**: Filter by GPU configuration, model, variant, and batch size
|
|
- **Interactive Charts**: Zoom, pan, and hover for detailed metrics
|
|
- **Run History**: View recent benchmark runs with links to GitHub Actions
|
|
|
|
## Quick Start
|
|
|
|
### Option 1: Run with Local Server (Recommended)
|
|
|
|
For live data from GitHub Actions artifacts:
|
|
|
|
```bash
|
|
# Install requirements
|
|
pip install requests
|
|
|
|
# Run the server
|
|
python server.py --fetch-on-start
|
|
|
|
# Visit http://localhost:8000
|
|
```
|
|
|
|
The server provides:
|
|
- Automatic fetching of metrics from GitHub
|
|
- Caching to reduce API calls
|
|
- `/api/metrics` endpoint for the frontend
|
|
|
|
### Option 2: Fetch Data Manually
|
|
|
|
Use the fetch script to download metrics data:
|
|
|
|
```bash
|
|
# Fetch last 30 days of metrics
|
|
python fetch_metrics.py --output metrics_data.json
|
|
|
|
# Fetch a specific run
|
|
python fetch_metrics.py --run-id 21338741812 --output single_run.json
|
|
|
|
# Fetch only scheduled (nightly) runs
|
|
python fetch_metrics.py --scheduled-only --days 7
|
|
```
|
|
|
|
## GitHub Token
|
|
|
|
To download artifacts from GitHub, you need authentication:
|
|
|
|
1. **Using `gh` CLI** (recommended):
|
|
```bash
|
|
gh auth login
|
|
```
|
|
|
|
2. **Using environment variable**:
|
|
```bash
|
|
export GITHUB_TOKEN=your_token_here
|
|
```
|
|
|
|
Without a token, the dashboard will show run metadata but not detailed benchmark results.
|
|
|
|
## Data Structure
|
|
|
|
The metrics JSON has this structure:
|
|
|
|
```json
|
|
{
|
|
"run_id": "21338741812",
|
|
"run_date": "2026-01-25T22:24:02.090218+00:00",
|
|
"commit_sha": "5cdb391...",
|
|
"branch": "main",
|
|
"results": [
|
|
{
|
|
"gpu_config": "8-gpu-h200",
|
|
"partition": 0,
|
|
"model": "deepseek-ai/DeepSeek-V3.1",
|
|
"variant": "TP8+MTP",
|
|
"benchmarks": [
|
|
{
|
|
"batch_size": 1,
|
|
"input_len": 4096,
|
|
"output_len": 512,
|
|
"latency_ms": 2400.72,
|
|
"input_throughput": 21408.64,
|
|
"output_throughput": 231.74,
|
|
"overall_throughput": 1919.43,
|
|
"ttft_ms": 191.32,
|
|
"acc_length": 3.19
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Deployment
|
|
|
|
### GitHub Pages
|
|
|
|
The dashboard can be deployed to GitHub Pages for public access:
|
|
|
|
1. Copy the dashboard files to `docs/performance_dashboard/`
|
|
2. Enable GitHub Pages in repository settings
|
|
3. Set up a GitHub Action to periodically update metrics data
|
|
|
|
### Self-Hosted
|
|
|
|
For a self-hosted deployment with live data:
|
|
|
|
1. Set up a server running `server.py`
|
|
2. Configure a cron job or systemd timer to refresh data
|
|
3. Optionally put behind nginx/caddy for SSL
|
|
|
|
## Metrics Explained
|
|
|
|
- **Overall Throughput**: Total tokens (input + output) processed per second
|
|
- **Input Throughput**: Input tokens processed per second (prefill speed)
|
|
- **Output Throughput**: Output tokens generated per second (decode speed)
|
|
- **Latency**: End-to-end time to complete the request
|
|
- **TTFT**: Time to First Token - time until the first output token
|
|
- **Acc Length**: Acceptance length for speculative decoding (MTP variants)
|
|
|
|
## Contributing
|
|
|
|
To add support for new metrics or visualizations:
|
|
|
|
1. Update `fetch_metrics.py` if data collection needs changes
|
|
2. Modify `app.js` to add new chart types or filters
|
|
3. Update `index.html` for UI changes
|
|
|
|
## Troubleshooting
|
|
|
|
**No data displayed**
|
|
- Check browser console for errors
|
|
- Verify GitHub API is accessible
|
|
- Try running with `server.py --fetch-on-start`
|
|
|
|
**API rate limits**
|
|
- Use a GitHub token for higher limits
|
|
- The server caches data for 5 minutes
|
|
|
|
**Charts not rendering**
|
|
- Ensure Chart.js is loading from CDN
|
|
- Check for JavaScript errors in console
|