feat(bench): add scripts/bench.sh wrapper for speed-bench runs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
haylanandClaude Bot committed 2026-10-31 16:45:27 +01:00
1 parent 68348aad72
commit 28c102e0d9
2 files changed
+30 -5

No files matched your search

+5 -5
View File
@@ -1,6 +1,6 @@
# Operations # Operations
> **Source of truth:** [`scripts/update.sh`](../scripts/update.sh), [`.env.example`](../.env.example), and the `speed-bench` service in [`docker-compose.yml`](../docker-compose.yml) with its [`speed-bench/Dockerfile`](../speed-bench/Dockerfile). This page explains *what the script does and why*; the steps and defaults live in the source. If they disagree, the source wins. > **Source of truth:** [`scripts/update.sh`](../scripts/update.sh), [`.env.example`](../.env.example), and the `speed-bench` service in [`docker-compose.yml`](../docker-compose.yml) with its [`speed-bench/Dockerfile`](../speed-bench/Dockerfile) and [`scripts/bench.sh`](../scripts/bench.sh). This page explains *what the script does and why*; the steps and defaults live in the source. If they disagree, the source wins.
The stack runs on the **server**. After any change to the repo, run `./scripts/update.sh` there: it is the one command that brings the running stack in sync. It's safe to re-run at any time, and it only recreates what changed. The stack runs on the **server**. After any change to the repo, run `./scripts/update.sh` there: it is the one command that brings the running stack in sync. It's safe to re-run at any time, and it only recreates what changed.
@@ -49,14 +49,14 @@ Each model file has its own one-off downloader service in the `tools` compose pr
- **It reaches the backend over the compose network**, so llama-server needs no host port. The dataset (`nvidia/SPEED-Bench`, not gated) downloads on first run and is cached in the `hf-cache` volume. Results land in `bench-results/` (gitignored). - **It reaches the backend over the compose network**, so llama-server needs no host port. The dataset (`nvidia/SPEED-Bench`, not gated) downloads on first run and is cached in the `hf-cache` volume. Results land in `bench-results/` (gitignored).
- **It measures speed, not correctness.** The output text isn't saved, so it won't catch a drafter that corrupts tokens. - **It measures speed, not correctness.** The output text isn't saved, so it won't catch a drafter that corrupts tokens.
Run it on the server. Pass `--concurrency` equal to `LLAMA_PARALLEL` for throughput, or leave it at 1 for the single-session speed one CLI sees: Run it on the server with `./scripts/bench.sh`. It wraps the compose calls and creates `bench-results/` first, so Docker doesn't create it root-owned. Extra arguments go to the SPEED-Bench client. Pass `--concurrency` equal to `LLAMA_PARALLEL` for throughput, or leave it at 1 for the single-session speed one CLI sees:
```sh ```sh
docker compose --profile tools run --rm speed-bench --category coding --limit 8 --output spec.json ./scripts/bench.sh run spec --category coding --limit 8
``` ```
To get a speedup figure, also run a **baseline** without speculative decoding. Temporarily remove the `--spec-*` and `-md` lines from the llama-server command, run `docker compose up -d llama-server`, then run the same bench with `--output baseline.json`. Keep `--bench`, `--category`, `--osl` and `--limit` identical. Restore the lines with `git checkout docker-compose.yml`, then compare: To get a speedup figure, also run a **baseline** without speculative decoding. Temporarily remove the `--spec-*` and `-md` lines from the llama-server command, run `docker compose up -d llama-server`, then run `./scripts/bench.sh run baseline` with the same arguments. Keep `--bench`, `--category`, `--osl` and `--limit` identical. Restore the lines with `git checkout docker-compose.yml` and `docker compose up -d llama-server`, then compare:
```sh ```sh
docker compose --profile tools run --rm --entrypoint python speed-bench /app/speed_bench_compare.py --baseline baseline.json --speculative spec.json ./scripts/bench.sh compare baseline spec
``` ```
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Benchmarks llama-server with SPEED-Bench; see docs/operations.md#speed-bench
set -euo pipefail
cd "$(dirname "$0")/.."
usage() {
echo "Usage: $0 run <name> [speed_bench args...] # writes bench-results/<name>.json" >&2
echo " $0 compare <baseline> <speculative> # names from earlier runs" >&2
exit 1
}
case "${1:-}" in
run)
[ $# -ge 2 ] || usage
name=$2; shift 2
mkdir -p bench-results
docker compose --profile tools run --rm speed-bench --output "$name.json" "$@"
;;
compare)
[ $# -eq 3 ] || usage
docker compose --profile tools run --rm --entrypoint python speed-bench \
/app/speed_bench_compare.py --baseline "$2.json" --speculative "$3.json"
;;
*) usage ;;
esac