# Eval profiles guide Match what your model is supposed to improve to the right benchmark profile, then run it with one command. Catalog file: [`configs/eval_profiles.yaml`](../configs/eval_profiles.yaml) ## Quick commands ```bash # See all lm-eval profiles (reasoning, code, smoke, …) uv run --package slm-evals slm-lm-eval --list-profiles # Include agentic suites (slm-benchmark) and external notes uv run --package slm-evals slm-lm-eval --list-profiles-all # List lm-eval task names available in the harness uv run --package slm-evals slm-lm-eval --list-tasks # Agentic benchmark keys (BFCL, τ-bench, GAIA, SWE) uv run --package slm-evals slm-benchmark --list-benchmarks # Run a profile by name uv run --package slm-evals slm-lm-eval \ --profile reasoning \ --preset minicpm5-1b \ --experiment-name minicpm5-1b__reasoning-baseline ``` Install lm-eval extras first: `uv sync --group lm-eval` --- ## Three eval systems in this repo | System | CLI | What it measures | | ------ | --- | ---------------- | | Academic (lm-eval harness) | `slm-lm-eval` | ARC, GSM8K, HumanEval, IFEval, … | | Agentic | `slm-benchmark` | Function calling, multi-turn tools, GAIA, SWE | | Ensemble-specific | `jepa_harness`, `world_harness` | JEPA draft selection, world-model energy ranking | Use **one profile per claim**. Do not compare training loss to lm-eval accuracy. --- ## Match your claim → profile | If you claim… | Profile / suite | Tool | Tasks or benchmarks | | ------------- | ----------------- | ---- | ------------------- | | Quick sanity check | `smoke` | `slm-lm-eval` | `arc_easy`, `hellaswag` (limit 25) | | Better reasoning | `reasoning` | `slm-lm-eval` | `gsm8k`, `arc_easy`, `arc_challenge`, `hellaswag` | | Better language understanding | `understanding` | `slm-lm-eval` | `boolq`, `piqa`, `copa`, `rte` | | Better code generation | `code` | `slm-lm-eval` | `humaneval`, `mbpp` | | Better instruction following | `instructions` | `slm-lm-eval` | `ifeval` | | Better French / translation | `french` | `slm-lm-eval` | `french_bench_xnli`, `belebele_fra_Latn`, `wmt14-en-fr`, … | | Better multilingual understanding | `multilingual` | `slm-lm-eval` | `xnli`, `xcopa`, `xwinograd` | | General ~1B SLM baseline | `general_slm` | `slm-lm-eval` | 6-task mix (full splits) | | Baseline vs finetune study | `compare_study` | `slm-lm-eval` | Same 6 tasks, limit 100 | | Tool use / function calling | `agentic_tool_use` | `slm-benchmark` | `bfcl`, `tau_bench` | | End-to-end assistant tasks | `agentic_gaia` | `slm-benchmark` | `gaia` | | Real-world code repair | `agentic_code` | `slm-benchmark` | `swe_bench` | | JEPA / selector quality | `jepa_selector` | `jepa_harness` | Domain QA + draft ablations | | World model / planning | `world_model` | `world_harness` | Energy-ranked drafts on QA | | Better embeddings | `embeddings_mteb` | external (MTEB) | Not in this repo | | Chat quality (judge-based) | `chat_judge` | external | MT-Bench, AlpacaEval | --- ## Profile YAML files | Profile key | Config file | | ----------- | ----------- | | `smoke` | `lm_eval_smoke.yaml` | | `reasoning` | `lm_eval_reasoning.yaml` | | `understanding` | `lm_eval_understanding.yaml` | | `code` | `lm_eval_code.yaml` | | `instructions` | `lm_eval_instructions.yaml` | | `french` | `lm_eval_french.yaml` | | `multilingual` | `lm_eval_multilingual.yaml` | | `general_slm` | `lm_eval_minicpm5.yaml` | | `compare_study` | `lm_eval_compare_study.yaml` | Equivalent to `--profile reasoning`: ```bash uv run --package slm-evals slm-lm-eval \ --config research/evals/configs/lm_eval_reasoning.yaml \ --preset minicpm5-1b ``` --- ## Baseline vs candidate workflow Use the **same profile** for both runs; only change preset and experiment name: ```bash PROFILE=reasoning BASE=minicpm5-1b__reasoning-baseline CAND=minicpm5-1b-lora__reasoning uv run --package slm-evals slm-lm-eval \ --profile "$PROFILE" --preset minicpm5-1b --experiment-name "$BASE" uv run --package slm-evals slm-lm-eval \ --profile "$PROFILE" --preset minicpm5-1b-lesson-lora \ --experiment-name "$CAND" \ --compare-to "results/lm_eval/${BASE}/results.json" ``` Or after finetune: ```bash uv run python research/finetune.py --preset minicpm5-1b --mode lora \ --lm-eval-after \ --lm-eval-config research/evals/configs/lm_eval_reasoning.yaml \ --lm-eval-baseline minicpm5-1b ``` --- ## Results layout **slm-lm-eval** → `results/lm_eval//` | File | Contents | | ---- | -------- | | `results.json` | Full lm-eval payload + `run_meta` | | `summary.md` | Task → metric table | | `run_meta.json` | Profile tasks, preset, seed | | `comparison.md` | Delta vs baseline (with `--compare-to`) | **slm-benchmark** → `results//` (`results.json`, `results.csv`, `report.md`) --- ## Custom tasks Override tasks on any profile: ```bash uv run --package slm-evals slm-lm-eval \ --profile smoke \ --tasks gsm8k arc_easy \ --preset minicpm5-1b ``` Browse all harness tasks: `slm-lm-eval --list-tasks-all` See also: [USAGE.md](../USAGE.md), [benchmarks.md](benchmarks.md)