arena-run-sweep
Run the arena evaluation sweep and interpret last_run.tsv and the leaderboard matrix.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Run the arena evaluation sweep and interpret last_run.tsv and the leaderboard matrix.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Operate the Open Arena REST API: start the server and make authenticated requests.
Start and operate the autonomous reward-R&D experiment loop (setup, confirm, then run until interrupted).
Add or iterate on a custom reward in src/rewards/ and wire it into the sweep.
Configure an Open Arena sweep: author/edit config.yaml datasets, rewards, metrics, and experiments blocks.
Prepare evaluation datasets: write prepare_data.py, wire loaders in config.yaml, smoke-test that rows load.
| name | arena-run-sweep |
| description | Run the arena evaluation sweep and interpret last_run.tsv and the leaderboard matrix. |
Read README.md (Run section) and AUTORESEARCH.md (Output format section) for full context. This skill covers the common invocations and how to read the output.
uv sync # installs the full workspace (open-arena + open-arena-cli + open-arena-core)
cp .env.example .env # fill in provider API keys you use
Install note:
uv syncinstalls the full workspace and is required for local sweeps. For remote API operations only,pip install open-arena-cliis sufficient.
arena # reads ./config.yaml, stores state in .open-arena/
arena -c configs/eval.yaml # -c / --config: different config file
arena --no-cache # discard per-dataset trial caches before running
arena --state-dir runs/exp1 # store trial state + TSVs under a custom dir
arena -v # show synalinks progress bar (verbose=1)
arena -vv # per-batch lines (verbose=2, good for log files)
arena --json results.json # also write the full result matrix as JSON
arena --json - # emit JSON on stdout only, skip TSV + tables
Always invoke via uv run arena (or inside the activated venv). Plain python -m src.evaluate fails outside the venv because keras_tuner is not on the system path.
arena --state-dir runs/baseline
arena --state-dir runs/exp1 --no-cache
Each --state-dir gets its own last_run.tsv, frontier.tsv, and per-dataset keras-tuner trial cache. Runs never clobber each other.
--no-cachePass --no-cache (or rm -rf .open-arena/*/) whenever:
experiments.language_modelsmetrics: blockexperiments.datasetsCompleted trials for unchanged axes are still reused — --no-cache only drops trials whose HP space changed.
.open-arena/last_run.tsvLong-format TSV, one row per (model, dataset, metric) cell:
model dataset metric value direction
ollama/mistral mmlu_test reward 0.440000 max
ollama/mistral mmlu_test lm_judge 0.612000 max
ollama/llama3.2 mmlu_test reward 0.520000 max
Columns:
model — litellm model identifier (e.g. ollama/mistral, openai/gpt-4o)dataset — dataset name from experiments.datasetsmetric — reward (primary) or a candidate alias from metrics:value — score in [0, 1] (higher = better for max, lower for min)direction — max or minFailed trials are omitted from the TSV (they appear in the JSON output with value: null).
frontier.tsvWhen a dataset has objective: true on more than one metric entry, a Pareto frontier is computed. Models on the frontier are printed as a markdown table to stdout and written to .open-arena/frontier.tsv:
dataset model axis direction value
my_dataset ollama/mistral reward max 0.520000
my_dataset ollama/mistral lm_judge max 0.710000
uv run python -c "
import csv, collections
rows = list(csv.DictReader(open('.open-arena/last_run.tsv'), delimiter='\t'))
# argmax per dataset for 'reward' and a candidate alias
best = collections.defaultdict(dict)
for r in rows:
ds, model, metric, val = r['dataset'], r['model'], r['metric'], float(r['value'])
if metric in ('reward', 'lm_judge'):
if model not in best[ds] or best[ds].get(metric, -1) < val:
best[ds][metric] = (model, val)
for ds, d in best.items():
agree = d.get('reward', ('?',))[0] == d.get('lm_judge', ('?',))[0]
print(ds, 'agree' if agree else 'DISAGREE', d)
"
Test that every dataset in experiments.datasets actually loads:
uv run python -c "
import yaml
from src.datasets import load_dataset_from_yaml
cfg = yaml.safe_load(open('config.yaml'))
for n in cfg['experiments']['datasets']:
it = iter(load_dataset_from_yaml('config.yaml', name=n))
next(it); print('ok', n)
"
pkill -f 'src.evaluate'
Each trial should take under 5 minutes. If a sweep exceeds 10 minutes, kill it, lower limit: in config.yaml, or drop a heavy candidate from the metrics: block.