omnisealbench / README.md
Mark Duppenthaler
Add fallback path handling for SPA and start descriptions
d411f8a
---
title: Omniseal Leaderboard
emoji: 🦀
colorFrom: red
colorTo: green
sdk: docker
pinned: false
short_description: Leaderboard for watermarking models
---
## Docker Build Instructions
### Prerequisites
- Docker installed on your system
- Git repository cloned locally
### Build Steps (conda)
1. Initialize conda environment
```bash
cd backend
conda env create -f environment.yml -y
conda activate omniseal-benchmark-backend
```
2. Build frontend (outputs html, js, css into frontend/dist). Note you only need this if you are updating the frontend, the repository would already have a build checked in at frontend/dist
```bash
cd frontend
npm install
npm run build -- --mode prod
```
3. Run backend server from project root. This would serve frontend files from port http://localhost:7860
```bash
gunicorn --chdir backend -b 0.0.0.0:7860 app:app --reload
```
4. Server will be running on `http://localhost:7860`
### Build Steps (Docker, huggingface)
2. Build the Docker image from project root:
```bash
docker build -t omniseal-benchmark .
```
OR
```bash
docker buildx build -t omniseal-benchmark .
```
3. Run the container (this runs in auto-reload mode when you update python files in the backend directory). Note the -v argument make it so the backend could hot reload:
```bash
docker run -p 7860:7860 -v $(pwd)/backend:/app/backend omniseal-benchmark
```
4. Access the application at `http://localhost:7860`
### Local Development
When updating the backend, you can run it in whichever build steps above to take advantage of hot-reload so you don't have to restart the server.
For the frontend:
1. Create a `.env.local` file in the frontend directory. Set `VITE_API_SERVER_URL` to where your backend server is running. When running locally it will be `VITE_API_SERVER_URL=http://localhost:7860`. This overrides the configuration in `.env` so the frontend will connect with your backend URL of choice.
2. Run the development server with hot-reload:
```bash
cd frontend
npm install
npm run dev
```
### Local datasets
By default, datasets are loaded over the network based on `backend/config.py`. Please see the file there and modify if loading different datasets.
`ABS_DATASET_DOMAIN`, `ABS_DATASET_PATH` controls where datasets are loaded from and are used in `DATASET_CONFIGS` and `EXAMPLE_CONFIGS`. Any datasets and examples to be added would need to update the above constants to be visualized in the UI.
There is commented out code that sets the `ABS_DATASET_DOMAIN` to the `backend/data` directory. You can see the data formats of the csv / json files required to render the leaderboard as well as examples there.
In the `data` directory, by default this matches the path structure for loading over the network. Each dataset should be placed under `data/omnisealbench` as a directory, e.g. `data/omnisealbench/sav_val_full_v2` and in the directory have files:
- `{type}_benchmark.csv` for leaderboard tables
- `{type}_attacks_variations.csv` for leaderboard chart
- `examples_eval_results.json` for examples
Please see reference csv and json files for what these need to look like.