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:
1 parent
68348aad72
commit
28c102e0d9
2 files changed
+30
-5
No files matched your search
+5
-5
@@ -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
|
||||||
```
|
```
|
||||||
Executable
+25
@@ -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
|
||||||
Reference in new issue
Block a user