Spaces:
Runtime error
Runtime error
File size: 4,877 Bytes
13b1fcc 576f5ef 13b1fcc 576f5ef 13b1fcc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
---
title: Transformers.js Benchmark Leaderboard
emoji: π
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 5.49.1
app_file: src/leaderboard/app.py
pinned: false
---
# Transformers.js Benchmark Leaderboard
A Gradio-based leaderboard that displays benchmark results from a HuggingFace Dataset repository.
## Features
- π Display benchmark results in a searchable/filterable table
- π Filter by model name, task, platform, device, mode, and dtype
- π Refresh data on demand from HuggingFace Dataset
- π View performance metrics (load time, inference time, p50/p90 percentiles)
## Setup
1. Install dependencies:
```bash
uv sync
```
2. Configure environment variables:
```bash
cp .env.example .env
```
Edit `.env` and set:
- `HF_DATASET_REPO`: Your HuggingFace dataset repository (e.g., `username/transformersjs-benchmarks`)
- `HF_TOKEN`: Your HuggingFace API token (optional, for private datasets)
## Usage
Run the leaderboard:
```bash
uv run python -m leaderboard.app
```
Or using the installed script:
```bash
uv run leaderboard
```
The leaderboard will be available at: http://localhost:7861
## Data Format
The leaderboard reads JSONL files from the HuggingFace Dataset repository. Each line should be a JSON object with the following structure:
```json
{
"id": "benchmark-id",
"platform": "web",
"modelId": "Xenova/all-MiniLM-L6-v2",
"task": "feature-extraction",
"mode": "warm",
"repeats": 3,
"batchSize": 1,
"device": "wasm",
"browser": "chromium",
"dtype": "fp32",
"headed": false,
"status": "completed",
"timestamp": 1234567890,
"result": {
"metrics": {
"load_ms": {"p50": 100, "p90": 120},
"first_infer_ms": {"p50": 10, "p90": 15},
"subsequent_infer_ms": {"p50": 8, "p90": 12}
},
"environment": {
"cpuCores": 10,
"memory": {"deviceMemory": 8}
}
}
}
```
## Deployment on Hugging Face Spaces
This leaderboard is designed to be deployed on [Hugging Face Spaces](https://huggingface.co/spaces) using the Gradio SDK.
### Quick Deploy
1. **Create a new Space** on Hugging Face:
- Go to https://huggingface.co/new-space
- Choose **Gradio** as the SDK
- Set the Space name (e.g., `transformersjs-benchmark-leaderboard`)
2. **Upload files to your Space**:
```bash
# Clone your Space repository
git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
cd YOUR_SPACE_NAME
# Copy leaderboard files
cp -r /path/to/leaderboard/* .
# Commit and push
git add .
git commit -m "Initial leaderboard deployment"
git push
```
3. **Configure Space secrets**:
- Go to your Space settings β **Variables and secrets**
- Add the following secrets:
- `HF_DATASET_REPO`: Your dataset repository (e.g., `username/benchmark-results`)
- `HF_TOKEN`: Your HuggingFace API token (for private datasets)
4. **Space will automatically deploy** and be available at:
```
https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
```
### Space Configuration
The Space is configured via the YAML frontmatter in `README.md`:
```yaml
---
title: Transformers.js Benchmark Leaderboard
emoji: π
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: 5.49.1
app_file: src/leaderboard/app.py
pinned: false
---
```
**Key configuration options:**
- `sdk`: Must be `gradio` for Gradio apps
- `sdk_version`: Gradio version (matches your `pyproject.toml`)
- `app_file`: Path to the main Python file (relative to repository root)
- `pinned`: Set to `true` to pin the Space on your profile
### Requirements
The Space will automatically install dependencies from `pyproject.toml`:
- `gradio>=5.9.1`
- `pandas`
- `huggingface-hub`
- `python-dotenv`
### Environment Variables
Set these in your Space settings or in a `.env` file (not recommended for production):
| Variable | Required | Description |
|----------|----------|-------------|
| `HF_DATASET_REPO` | Yes | HuggingFace dataset repository containing benchmark results |
| `HF_TOKEN` | No | HuggingFace API token (only for private datasets) |
### Auto-Restart
Spaces automatically restart when:
- Code is pushed to the repository
- Dependencies are updated
- Environment variables are changed
### Monitoring
- View logs in the Space's **Logs** tab
- Check status in the **Settings** tab
- Monitor resource usage (CPU, memory)
## Development
The leaderboard is built with:
- **Gradio**: Web UI framework
- **Pandas**: Data manipulation
- **HuggingFace Hub**: Dataset loading
### Local Development
1. Install dependencies:
```bash
uv sync
```
2. Set environment variables:
```bash
export HF_DATASET_REPO="your-username/benchmark-results"
export HF_TOKEN="your-hf-token" # Optional
```
3. Run locally:
```bash
uv run python -m leaderboard.app
```
4. Access at: http://localhost:7861
|