slm-eval 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- slm_eval-0.0.1/LICENSE.md +21 -0
- slm_eval-0.0.1/LICENSE_NOTES.md +118 -0
- slm_eval-0.0.1/MANIFEST.in +1 -0
- slm_eval-0.0.1/NOTICE +56 -0
- slm_eval-0.0.1/PKG-INFO +328 -0
- slm_eval-0.0.1/README.md +213 -0
- slm_eval-0.0.1/pyproject.toml +167 -0
- slm_eval-0.0.1/setup.cfg +4 -0
- slm_eval-0.0.1/slm_eval/__init__.py +29 -0
- slm_eval-0.0.1/slm_eval/__main__.py +14 -0
- slm_eval-0.0.1/slm_eval/_cli/__init__.py +8 -0
- slm_eval-0.0.1/slm_eval/_cli/harness.py +60 -0
- slm_eval-0.0.1/slm_eval/_cli/ls.py +81 -0
- slm_eval-0.0.1/slm_eval/_cli/run.py +518 -0
- slm_eval-0.0.1/slm_eval/_cli/subcommand.py +19 -0
- slm_eval-0.0.1/slm_eval/_cli/utils.py +209 -0
- slm_eval-0.0.1/slm_eval/_cli/validate.py +112 -0
- slm_eval-0.0.1/slm_eval/api/__init__.py +0 -0
- slm_eval-0.0.1/slm_eval/api/filter.py +56 -0
- slm_eval-0.0.1/slm_eval/api/group.py +407 -0
- slm_eval-0.0.1/slm_eval/api/instance.py +38 -0
- slm_eval-0.0.1/slm_eval/api/metrics.py +695 -0
- slm_eval-0.0.1/slm_eval/api/model.py +571 -0
- slm_eval-0.0.1/slm_eval/api/registry.py +884 -0
- slm_eval-0.0.1/slm_eval/api/samplers.py +144 -0
- slm_eval-0.0.1/slm_eval/api/task.py +1808 -0
- slm_eval-0.0.1/slm_eval/api/utils.py +100 -0
- slm_eval-0.0.1/slm_eval/caching/__init__.py +0 -0
- slm_eval-0.0.1/slm_eval/caching/cache.py +88 -0
- slm_eval-0.0.1/slm_eval/config/__init__.py +6 -0
- slm_eval-0.0.1/slm_eval/config/evaluate_config.py +505 -0
- slm_eval-0.0.1/slm_eval/config/group.py +123 -0
- slm_eval-0.0.1/slm_eval/config/task.py +218 -0
- slm_eval-0.0.1/slm_eval/decontamination/__init__.py +0 -0
- slm_eval-0.0.1/slm_eval/decontamination/archiver.py +174 -0
- slm_eval-0.0.1/slm_eval/decontamination/decontaminate.py +166 -0
- slm_eval-0.0.1/slm_eval/decontamination/janitor.py +329 -0
- slm_eval-0.0.1/slm_eval/defaults.py +51 -0
- slm_eval-0.0.1/slm_eval/eval_avg.py +228 -0
- slm_eval-0.0.1/slm_eval/evaluator.py +714 -0
- slm_eval-0.0.1/slm_eval/evaluator_utils.py +540 -0
- slm_eval-0.0.1/slm_eval/filters/__init__.py +33 -0
- slm_eval-0.0.1/slm_eval/filters/custom.py +17 -0
- slm_eval-0.0.1/slm_eval/filters/decontamination.py +25 -0
- slm_eval-0.0.1/slm_eval/filters/extraction.py +247 -0
- slm_eval-0.0.1/slm_eval/filters/selection.py +61 -0
- slm_eval-0.0.1/slm_eval/filters/transformation.py +123 -0
- slm_eval-0.0.1/slm_eval/int_index.py +330 -0
- slm_eval-0.0.1/slm_eval/loggers/__init__.py +3 -0
- slm_eval-0.0.1/slm_eval/loggers/evaluation_tracker.py +586 -0
- slm_eval-0.0.1/slm_eval/loggers/trackio_logger.py +200 -0
- slm_eval-0.0.1/slm_eval/loggers/utils.py +172 -0
- slm_eval-0.0.1/slm_eval/loggers/wandb_logger.py +360 -0
- slm_eval-0.0.1/slm_eval/models/__init__.py +83 -0
- slm_eval-0.0.1/slm_eval/models/_onnx_base.py +311 -0
- slm_eval-0.0.1/slm_eval/models/anthropic_llms.py +385 -0
- slm_eval-0.0.1/slm_eval/models/api_models.py +880 -0
- slm_eval-0.0.1/slm_eval/models/dummy.py +67 -0
- slm_eval-0.0.1/slm_eval/models/gguf.py +307 -0
- slm_eval-0.0.1/slm_eval/models/hf_audiolm.py +301 -0
- slm_eval-0.0.1/slm_eval/models/hf_steered.py +280 -0
- slm_eval-0.0.1/slm_eval/models/hf_vlms.py +750 -0
- slm_eval-0.0.1/slm_eval/models/huggingface.py +1782 -0
- slm_eval-0.0.1/slm_eval/models/ibm_watsonx_ai.py +477 -0
- slm_eval-0.0.1/slm_eval/models/litellm_llms.py +157 -0
- slm_eval-0.0.1/slm_eval/models/mamba_lm.py +164 -0
- slm_eval-0.0.1/slm_eval/models/megatron_lm.py +1350 -0
- slm_eval-0.0.1/slm_eval/models/mistral3.py +96 -0
- slm_eval-0.0.1/slm_eval/models/nemo_lm.py +548 -0
- slm_eval-0.0.1/slm_eval/models/neuron_optimum.py +685 -0
- slm_eval-0.0.1/slm_eval/models/onnxruntime_genai.py +151 -0
- slm_eval-0.0.1/slm_eval/models/onnxruntime_ort.py +303 -0
- slm_eval-0.0.1/slm_eval/models/openai_completions.py +402 -0
- slm_eval-0.0.1/slm_eval/models/optimum_habana.py +187 -0
- slm_eval-0.0.1/slm_eval/models/optimum_ipex.py +79 -0
- slm_eval-0.0.1/slm_eval/models/optimum_lm.py +88 -0
- slm_eval-0.0.1/slm_eval/models/sglang_causallms.py +533 -0
- slm_eval-0.0.1/slm_eval/models/sglang_generate_API.py +100 -0
- slm_eval-0.0.1/slm_eval/models/textsynth.py +172 -0
- slm_eval-0.0.1/slm_eval/models/trtllm_causallms.py +631 -0
- slm_eval-0.0.1/slm_eval/models/utils.py +987 -0
- slm_eval-0.0.1/slm_eval/models/utils_hf.py +129 -0
- slm_eval-0.0.1/slm_eval/models/vllm_causallms.py +824 -0
- slm_eval-0.0.1/slm_eval/models/vllm_vlms.py +318 -0
- slm_eval-0.0.1/slm_eval/models/winml.py +152 -0
- slm_eval-0.0.1/slm_eval/prompts/__init__.py +130 -0
- slm_eval-0.0.1/slm_eval/result_schema.py +217 -0
- slm_eval-0.0.1/slm_eval/tasks/README.md +32 -0
- slm_eval-0.0.1/slm_eval/tasks/__init__.py +177 -0
- slm_eval-0.0.1/slm_eval/tasks/__pycache__/__init__.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/__pycache__/_factory.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/__pycache__/_index.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/__pycache__/_yaml_loader.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/__pycache__/manager.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/_factory.py +285 -0
- slm_eval-0.0.1/slm_eval/tasks/_index.py +199 -0
- slm_eval-0.0.1/slm_eval/tasks/_yaml_loader.py +208 -0
- slm_eval-0.0.1/slm_eval/tasks/manager.py +367 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/CONVENTIONS.md +136 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/__init__.py +5 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/__pycache__/__init__.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/__pycache__/_shared.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/_shared.py +67 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_challenge/README.md +112 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_challenge/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_challenge/arc_challenge.yaml +42 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_challenge/utils.py +74 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_easy/README.md +116 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_easy/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_easy/arc_easy.yaml +42 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arc_easy/utils.py +73 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_2/README.md +42 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_2/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_2/arithmark_2.yaml +30 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_2/utils.py +56 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_3_0/README.md +83 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_3_0/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_3_0/arithmark_3_0.yaml +27 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/arithmark_3_0/utils.py +53 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/README.md +179 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4.yaml +43 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_irrelevance.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_multi_turn_base.yaml +50 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_multi_turn_long_context.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_multi_turn_miss_func.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_multi_turn_miss_param.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_multiple.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_parallel.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_parallel_multiple.yaml +49 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_simple_java.yaml +50 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_simple_javascript.yaml +50 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/bfcl_v4_simple_python.yaml +48 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/bfcl_v4/utils.py +713 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/gpqa_diamond/README.md +120 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/gpqa_diamond/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/gpqa_diamond/gpqa_diamond.yaml +37 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/gpqa_diamond/utils.py +320 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/hellaswag/README.md +104 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/hellaswag/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/hellaswag/hellaswag.yaml +36 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/hellaswag/utils.py +69 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/int_index/README.md +82 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/int_index/int_index.yaml +36 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/math_500/README.md +79 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/math_500/__pycache__/utils.cpython-312.pyc +0 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/math_500/math_500.yaml +40 -0
- slm_eval-0.0.1/slm_eval/tasks/slm/math_500/utils.py +160 -0
- slm_eval-0.0.1/slm_eval/utils.py +927 -0
- slm_eval-0.0.1/slm_eval.egg-info/PKG-INFO +328 -0
- slm_eval-0.0.1/slm_eval.egg-info/SOURCES.txt +156 -0
- slm_eval-0.0.1/slm_eval.egg-info/dependency_links.txt +1 -0
- slm_eval-0.0.1/slm_eval.egg-info/entry_points.txt +3 -0
- slm_eval-0.0.1/slm_eval.egg-info/requires.txt +115 -0
- slm_eval-0.0.1/slm_eval.egg-info/top_level.txt +1 -0
- slm_eval-0.0.1/tests/test_eval_avg.py +136 -0
- slm_eval-0.0.1/tests/test_scoring.py +483 -0
- slm_eval-0.0.1/tests/test_task_registry.py +155 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 EleutherAI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Licence notes for the supported benchmarks
|
|
2
|
+
|
|
3
|
+
`slm_eval` ships **task definitions and scoring code only**. It does not vendor
|
|
4
|
+
any benchmark dataset. Each task downloads its dataset at run time from the
|
|
5
|
+
publisher's own distribution point, so the publisher's licence applies to the
|
|
6
|
+
data and this project's MIT licence applies to the code.
|
|
7
|
+
|
|
8
|
+
Read this file before you use `slm_eval` for anything beyond internal research.
|
|
9
|
+
|
|
10
|
+
Metadata below was read from `https://huggingface.co/api/datasets/<id>` on
|
|
11
|
+
**2026-09-20**.
|
|
12
|
+
|
|
13
|
+
## Rule for this project
|
|
14
|
+
|
|
15
|
+
A benchmark is only supported if it is 100% usable commercially. That means: no
|
|
16
|
+
NonCommercial clause, no NoDerivatives clause. Attribution requirements and
|
|
17
|
+
ShareAlike requirements are accepted, and this repository meets them. If a
|
|
18
|
+
benchmark's licence cannot be verified, the benchmark is not shipped.
|
|
19
|
+
|
|
20
|
+
## Summary
|
|
21
|
+
|
|
22
|
+
| Benchmark | Task name | Dataset licence | Safe for commercial use? |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| HellaSwag | `hellaswag` | MIT (see note 1) | Yes |
|
|
25
|
+
| ARC Easy / ARC Challenge | `arc_easy`, `arc_challenge` | CC-BY-SA-4.0 | Yes, with attribution (note 2) |
|
|
26
|
+
| ArithMark 3.0 | `arithmark_3_0` | Apache-2.0 | Yes |
|
|
27
|
+
| ArithMark 2.0 | `arithmark_2` | Apache-2.0 | Yes |
|
|
28
|
+
| MATH-500 | `math_500` | MIT (see note 3) | Yes |
|
|
29
|
+
| GPQA Diamond | `gpqa_diamond` | CC-BY-4.0 | Yes, with attribution (note 4) |
|
|
30
|
+
| BFCL v4 | `bfcl_v4` | Apache-2.0 | Yes (note 6) |
|
|
31
|
+
| Int Index | `int_index` | derived from the above | Yes |
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
**1. HellaSwag.** The dataset metadata field is empty, which is why it usually
|
|
36
|
+
shows up as "unknown". The dataset card body states "Licensing Information: MIT",
|
|
37
|
+
and the accompanying GitHub repository (`rowanz/hellaswag`) carries an MIT
|
|
38
|
+
licence file. Treated as MIT. No attribution is required, but the source is
|
|
39
|
+
credited in `NOTICE` anyway.
|
|
40
|
+
|
|
41
|
+
**2. ARC (AI2 Reasoning Challenge).** The card metadata is
|
|
42
|
+
`['cc-by-sa-4.0']`. CC-BY-SA-4.0 permits commercial use. Two obligations apply
|
|
43
|
+
to the *data*: attribution, and ShareAlike on redistribution of a modified copy.
|
|
44
|
+
This project redistributes nothing: the task downloads `allenai/ai2_arc` at run
|
|
45
|
+
time and stores it in the HuggingFace cache. If you republish the ARC rows
|
|
46
|
+
yourself, you must carry the attribution and the same licence forward. The
|
|
47
|
+
attribution line is in `NOTICE`.
|
|
48
|
+
|
|
49
|
+
**3. MATH-500.** The dataset card metadata field is empty. The dataset is
|
|
50
|
+
published by HuggingFace under an MIT licence, and it is a 500-problem subset of
|
|
51
|
+
the MATH dataset (`hendrycks/competition_math`, MIT). Treated as MIT.
|
|
52
|
+
|
|
53
|
+
**4. GPQA Diamond.** Card metadata is `cc-by-4.0`, and the repository is gated
|
|
54
|
+
(`gated: auto`). CC-BY-4.0 permits commercial use and requires attribution. The
|
|
55
|
+
gating is about access, not about commercial terms: you must accept the terms on
|
|
56
|
+
Hugging Face and authenticate to load it. This task therefore tries the gated
|
|
57
|
+
source first and falls back to the open mirror `fingertap/GPQA-Diamond`, logging
|
|
58
|
+
which source it used. Attribution is in `NOTICE`.
|
|
59
|
+
|
|
60
|
+
**5. BFCL v4.** The task reads the data that the `bfcl-eval` Python package
|
|
61
|
+
ships, which comes from the `ShishirPatil/gorilla` repository under
|
|
62
|
+
Apache-2.0. The Apache-2.0 licence covers the Berkeley Function Calling
|
|
63
|
+
Leaderboard data and code.
|
|
64
|
+
|
|
65
|
+
## Benchmarks that were removed
|
|
66
|
+
|
|
67
|
+
Each of these was checked and then removed, either because the licence fails the
|
|
68
|
+
rule above or because the benchmark is impractical for a CPU-only SLM suite.
|
|
69
|
+
|
|
70
|
+
**GSM-Symbolic (`apple/ml-gsm-symbolic`) — CC-BY-NC-ND-4.0.** NonCommercial and
|
|
71
|
+
NoDerivatives. Disqualified under every licence bar. Removed.
|
|
72
|
+
|
|
73
|
+
**AgentIF (`THU-KEG/AgentIF`) — CC-BY-NC-4.0.** NonCommercial. Removed.
|
|
74
|
+
|
|
75
|
+
**WildBench (`allenai/WildBench`).** Two problems. The benchmark is scored by an
|
|
76
|
+
LLM judge, so results are subjective, judge-biased, and billed per sample. The
|
|
77
|
+
underlying WildChat conversations are also released under AI2's ImpACT License
|
|
78
|
+
(Low Risk Artifacts), which is not an OSI licence and adds use restrictions.
|
|
79
|
+
Removed as too subjective and licence-encumbered.
|
|
80
|
+
|
|
81
|
+
**BrowseComp (`openai/BrowseCompLongContext`).** MIT licensed, but the benchmark
|
|
82
|
+
needs a live browsing agent and multi-step web search, which this suite cannot
|
|
83
|
+
provide. Removed as too complex.
|
|
84
|
+
|
|
85
|
+
**SWE-bench Lite (`princeton-nlp/SWE-bench_Lite`).** MIT licensed, but every
|
|
86
|
+
sample needs a full repository checkout and a Docker sandbox. Removed as too
|
|
87
|
+
heavy for a CPU-only suite.
|
|
88
|
+
|
|
89
|
+
**PIQA (`ybisk/piqa`) — licence unverifiable.** The card metadata is
|
|
90
|
+
`['unknown']`, and the card body states no licence. Commercial use therefore
|
|
91
|
+
cannot be verified, so PIQA is not shipped. This has one visible consequence:
|
|
92
|
+
PIQA is a published component of the Int Index. The published method drops an
|
|
93
|
+
unavailable component from both the numerator and the denominator, so the Int
|
|
94
|
+
Index here is computed as `(HellaSwag + ARC + 0.65 x ArithMark-3) / 2.65`.
|
|
95
|
+
|
|
96
|
+
**LiveCodeBench (`livecodebench/code_generation_lite`) — licence
|
|
97
|
+
unverifiable.** The dataset card metadata is the incomplete SPDX value `cc`,
|
|
98
|
+
which names no licence variant, so it covers CC-BY, CC-BY-NC and CC-BY-ND
|
|
99
|
+
alike. The repository that publishes the data
|
|
100
|
+
(`LiveCodeBench/LiveCodeBench`) is MIT, but that licence covers the software, and
|
|
101
|
+
the problems themselves are collected from LeetCode, AtCoder and Codeforces. No
|
|
102
|
+
grant that names a commercial-use-safe licence therefore covers the problem
|
|
103
|
+
data. Removed under the suite rule. This is the one removal that costs a whole
|
|
104
|
+
capability: the suite no longer ships a coding benchmark. To restore it, ask the
|
|
105
|
+
LiveCodeBench maintainers to state the dataset licence explicitly.
|
|
106
|
+
|
|
107
|
+
**BananaMind Base Bench 1.1
|
|
108
|
+
(`BananaMind/BananaMind-Base-Bench-1.1`) — licence unverifiable.** The card
|
|
109
|
+
metadata declares no licence and the repository is gated. Excluded until the
|
|
110
|
+
authors declare a licence. (The author's Hugging Face account is `Monster-Code`,
|
|
111
|
+
the same person who maintains this suite, so the exclusion can be lifted from
|
|
112
|
+
this side at any time by declaring a licence on the dataset card.)
|
|
113
|
+
|
|
114
|
+
## Engine licence
|
|
115
|
+
|
|
116
|
+
The evaluation engine is the MIT-licensed LM Evaluation Harness by EleutherAI.
|
|
117
|
+
`LICENSE.md` retains that copyright notice, as the MIT licence requires.
|
|
118
|
+
`NOTICE` records the attribution.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
recursive-include tests
|
slm_eval-0.0.1/NOTICE
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
slm_eval
|
|
2
|
+
========
|
|
3
|
+
|
|
4
|
+
An evaluation suite for small language models, maintained by TheLimeDev
|
|
5
|
+
(GitHub: https://github.com/TheLimeDev, Hugging Face: https://huggingface.co/Monster-Code)
|
|
6
|
+
|
|
7
|
+
This product includes software developed by EleutherAI
|
|
8
|
+
(https://www.eleuther.ai/): the evaluation engine is derived from the
|
|
9
|
+
MIT-licensed LM Evaluation Harness. The MIT copyright notice is retained in
|
|
10
|
+
LICENSE.md. The task definitions for that engine were removed and replaced by
|
|
11
|
+
the benchmark tasks shipped here.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Benchmark data attribution
|
|
15
|
+
--------------------------
|
|
16
|
+
|
|
17
|
+
slm_eval ships task definitions and scoring code only. No benchmark dataset is
|
|
18
|
+
redistributed with this product: each task downloads its dataset at run time
|
|
19
|
+
from the publisher's own distribution point.
|
|
20
|
+
|
|
21
|
+
The following benchmark datasets require attribution, and are used under the
|
|
22
|
+
licence stated:
|
|
23
|
+
|
|
24
|
+
* ARC (AI2 Reasoning Challenge) -- tasks `arc_easy`, `arc_challenge`
|
|
25
|
+
Dataset: allenai/ai2_arc
|
|
26
|
+
Copyright Allen Institute for AI. Licensed under CC-BY-SA-4.0.
|
|
27
|
+
License text: https://creativecommons.org/licenses/by-sa/4.0/
|
|
28
|
+
Citation: Clark et al., "Think you have Solved Question Answering? Try ARC,
|
|
29
|
+
the AI2 Reasoning Challenge", arXiv:1803.05457.
|
|
30
|
+
|
|
31
|
+
* GPQA Diamond -- task `gpqa_diamond`
|
|
32
|
+
Dataset: Idavidrein/gpqa, with open mirror fingertap/GPQA-Diamond
|
|
33
|
+
Copyright the GPQA authors. Licensed under CC-BY-4.0.
|
|
34
|
+
License text: https://creativecommons.org/licenses/by/4.0/
|
|
35
|
+
Citation: Rein et al., "GPQA: A Graduate-Level Google-Proof Q&A Benchmark",
|
|
36
|
+
arXiv:2311.12022.
|
|
37
|
+
|
|
38
|
+
The remaining datasets are used under permissive licences and are credited here
|
|
39
|
+
for completeness:
|
|
40
|
+
|
|
41
|
+
* HellaSwag -- task `hellaswag` (MIT). Dataset: Rowan/hellaswag.
|
|
42
|
+
Citation: Zellers et al., "HellaSwag: Can a Machine Really Finish Your
|
|
43
|
+
Sentence?", arXiv:1905.07830.
|
|
44
|
+
* ArithMark 3.0 / ArithMark 2.0 -- tasks `arithmark_3_0`, `arithmark_2`
|
|
45
|
+
(Apache-2.0). Datasets: AxiomicLabs/Arithmark-3.0,
|
|
46
|
+
AxiomicLabs/ArithMark-2.0. Copyright Axiomic Labs.
|
|
47
|
+
* MATH-500 -- task `math_500` (MIT). Dataset: HuggingFaceH4/MATH-500.
|
|
48
|
+
A 500-problem subset of the MATH dataset by Hendrycks et al.,
|
|
49
|
+
"Measuring Mathematical Problem Solving With the MATH Dataset",
|
|
50
|
+
arXiv:2103.03874.
|
|
51
|
+
* BFCL v4 -- task `bfcl_v4` (Apache-2.0). Data shipped by the `bfcl-eval`
|
|
52
|
+
package, from the ShishirPatil/gorilla repository. Copyright the Gorilla
|
|
53
|
+
project authors.
|
|
54
|
+
* Int Index -- task group `int_index`. Not a dataset. The composite formula is
|
|
55
|
+
published by Axiomic Labs on the Open SLM Leaderboard:
|
|
56
|
+
https://huggingface.co/spaces/AxiomicLabs/Open_SLM_Leaderboard
|
slm_eval-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: slm_eval
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: An evaluation suite for small language models (SLMs) with objective, reproducible benchmarks
|
|
5
|
+
Author: TheLimeDev (@Monster-Code)
|
|
6
|
+
Maintainer: TheLimeDev (@Monster-Code)
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/TheLimeDev/SLM-Eval
|
|
9
|
+
Project-URL: Repository, https://github.com/TheLimeDev/SLM-Eval
|
|
10
|
+
Project-URL: Author, https://github.com/TheLimeDev
|
|
11
|
+
Project-URL: Hugging-Face, https://huggingface.co/Monster-Code
|
|
12
|
+
Project-URL: Documentation, https://github.com/TheLimeDev/SLM-Eval/blob/main/docs/README.md
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE.md
|
|
19
|
+
License-File: LICENSE_NOTES.md
|
|
20
|
+
License-File: NOTICE
|
|
21
|
+
Requires-Dist: datasets>=2.16.0
|
|
22
|
+
Requires-Dist: numpy
|
|
23
|
+
Requires-Dist: evaluate>=0.4.0
|
|
24
|
+
Requires-Dist: jinja2
|
|
25
|
+
Requires-Dist: pytablewriter
|
|
26
|
+
Requires-Dist: rouge-score>=0.0.4
|
|
27
|
+
Requires-Dist: sacrebleu>=1.5.0
|
|
28
|
+
Requires-Dist: scikit-learn>=0.24.1
|
|
29
|
+
Requires-Dist: sqlitedict
|
|
30
|
+
Requires-Dist: dill
|
|
31
|
+
Requires-Dist: word2number
|
|
32
|
+
Requires-Dist: more_itertools
|
|
33
|
+
Requires-Dist: typing_extensions
|
|
34
|
+
Requires-Dist: tqdm>=4.59.0
|
|
35
|
+
Provides-Extra: api
|
|
36
|
+
Requires-Dist: requests; extra == "api"
|
|
37
|
+
Requires-Dist: aiohttp; extra == "api"
|
|
38
|
+
Requires-Dist: tenacity; extra == "api"
|
|
39
|
+
Requires-Dist: tqdm; extra == "api"
|
|
40
|
+
Requires-Dist: tiktoken; extra == "api"
|
|
41
|
+
Provides-Extra: archiver
|
|
42
|
+
Requires-Dist: jsonlines; extra == "archiver"
|
|
43
|
+
Requires-Dist: zstandard; extra == "archiver"
|
|
44
|
+
Provides-Extra: hf
|
|
45
|
+
Requires-Dist: transformers>=4.1; extra == "hf"
|
|
46
|
+
Requires-Dist: torch>=1.8; extra == "hf"
|
|
47
|
+
Requires-Dist: accelerate>=0.26.0; extra == "hf"
|
|
48
|
+
Requires-Dist: peft>=0.2.0; extra == "hf"
|
|
49
|
+
Provides-Extra: vllm
|
|
50
|
+
Requires-Dist: vllm>=0.18; extra == "vllm"
|
|
51
|
+
Provides-Extra: gptq
|
|
52
|
+
Requires-Dist: auto-gptq[triton]>=0.6.0; extra == "gptq"
|
|
53
|
+
Provides-Extra: gptqmodel
|
|
54
|
+
Requires-Dist: gptqmodel>=1.0.9; extra == "gptqmodel"
|
|
55
|
+
Provides-Extra: ipex
|
|
56
|
+
Requires-Dist: optimum-intel; extra == "ipex"
|
|
57
|
+
Provides-Extra: ibm-watsonx-ai
|
|
58
|
+
Requires-Dist: ibm_watsonx_ai>=1.1.22; extra == "ibm-watsonx-ai"
|
|
59
|
+
Requires-Dist: python-dotenv; extra == "ibm-watsonx-ai"
|
|
60
|
+
Provides-Extra: onnxruntime-genai
|
|
61
|
+
Requires-Dist: onnxruntime-genai; extra == "onnxruntime-genai"
|
|
62
|
+
Requires-Dist: transformers; extra == "onnxruntime-genai"
|
|
63
|
+
Requires-Dist: numpy; extra == "onnxruntime-genai"
|
|
64
|
+
Provides-Extra: onnxruntime
|
|
65
|
+
Requires-Dist: onnxruntime>=1.23; extra == "onnxruntime"
|
|
66
|
+
Requires-Dist: transformers; extra == "onnxruntime"
|
|
67
|
+
Requires-Dist: numpy; extra == "onnxruntime"
|
|
68
|
+
Provides-Extra: litellm
|
|
69
|
+
Requires-Dist: litellm<1.85,>=1.60; extra == "litellm"
|
|
70
|
+
Requires-Dist: aiohttp; extra == "litellm"
|
|
71
|
+
Requires-Dist: requests; extra == "litellm"
|
|
72
|
+
Requires-Dist: tenacity; extra == "litellm"
|
|
73
|
+
Requires-Dist: tqdm; extra == "litellm"
|
|
74
|
+
Provides-Extra: optimum
|
|
75
|
+
Requires-Dist: optimum[openvino]; extra == "optimum"
|
|
76
|
+
Provides-Extra: habana
|
|
77
|
+
Requires-Dist: optimum-habana; extra == "habana"
|
|
78
|
+
Provides-Extra: sparsify
|
|
79
|
+
Requires-Dist: sparsify; extra == "sparsify"
|
|
80
|
+
Provides-Extra: dev
|
|
81
|
+
Requires-Dist: pytest>=9.0; extra == "dev"
|
|
82
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
83
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
84
|
+
Requires-Dist: requests; extra == "dev"
|
|
85
|
+
Requires-Dist: aiohttp; extra == "dev"
|
|
86
|
+
Requires-Dist: tenacity; extra == "dev"
|
|
87
|
+
Requires-Dist: tqdm; extra == "dev"
|
|
88
|
+
Requires-Dist: tiktoken; extra == "dev"
|
|
89
|
+
Requires-Dist: sentencepiece; extra == "dev"
|
|
90
|
+
Requires-Dist: pillow; extra == "dev"
|
|
91
|
+
Provides-Extra: ifeval
|
|
92
|
+
Requires-Dist: langdetect; extra == "ifeval"
|
|
93
|
+
Requires-Dist: immutabledict; extra == "ifeval"
|
|
94
|
+
Requires-Dist: nltk>=3.9.1; extra == "ifeval"
|
|
95
|
+
Provides-Extra: math
|
|
96
|
+
Requires-Dist: sympy>=1.12; extra == "math"
|
|
97
|
+
Requires-Dist: antlr4-python3-runtime==4.11; extra == "math"
|
|
98
|
+
Requires-Dist: math_verify[antlr4_11_0]; extra == "math"
|
|
99
|
+
Provides-Extra: benchmarks
|
|
100
|
+
Requires-Dist: slm_eval[math]; extra == "benchmarks"
|
|
101
|
+
Requires-Dist: slm_eval[ifeval]; extra == "benchmarks"
|
|
102
|
+
Requires-Dist: slm_eval[api]; extra == "benchmarks"
|
|
103
|
+
Provides-Extra: sentencepiece
|
|
104
|
+
Requires-Dist: sentencepiece>=0.1.98; extra == "sentencepiece"
|
|
105
|
+
Provides-Extra: trackio
|
|
106
|
+
Requires-Dist: trackio>=0.23.0; extra == "trackio"
|
|
107
|
+
Provides-Extra: wandb
|
|
108
|
+
Requires-Dist: wandb>=0.16.3; extra == "wandb"
|
|
109
|
+
Requires-Dist: pandas; extra == "wandb"
|
|
110
|
+
Requires-Dist: numpy; extra == "wandb"
|
|
111
|
+
Provides-Extra: zeno
|
|
112
|
+
Requires-Dist: pandas; extra == "zeno"
|
|
113
|
+
Requires-Dist: zeno-client; extra == "zeno"
|
|
114
|
+
Dynamic: license-file
|
|
115
|
+
|
|
116
|
+
# slm_eval
|
|
117
|
+
|
|
118
|
+
An evaluation suite for **small language models (SLMs)**. It ships a small,
|
|
119
|
+
hand-picked set of benchmarks, each chosen because it can be scored objectively,
|
|
120
|
+
reproducibly, and on a single CPU machine.
|
|
121
|
+
|
|
122
|
+
Maintained by [TheLimeDev](https://github.com/TheLimeDev)
|
|
123
|
+
(Hugging Face: [@Monster-Code](https://huggingface.co/Monster-Code)).
|
|
124
|
+
|
|
125
|
+
The evaluation engine, model backends, filters and metrics come from the
|
|
126
|
+
MIT-licensed LM Evaluation Harness by EleutherAI. All ~14,000 of its task
|
|
127
|
+
definitions were removed. Only the benchmarks below remain, so anything you
|
|
128
|
+
already know about running the engine still applies — the task registry is
|
|
129
|
+
different.
|
|
130
|
+
|
|
131
|
+
## The supported benchmarks
|
|
132
|
+
|
|
133
|
+
| Task name | Benchmark | What it measures | Data source | Licence |
|
|
134
|
+
|---|---|---|---|---|
|
|
135
|
+
| `hellaswag` | HellaSwag | Commonsense continuation of a described activity | `Rowan/hellaswag` | MIT |
|
|
136
|
+
| `arc_easy` | ARC Easy | Grade-school science questions | `allenai/ai2_arc` (`ARC-Easy`) | CC-BY-SA-4.0 |
|
|
137
|
+
| `arc_challenge` | ARC Challenge | Harder science questions that retrieval alone does not solve | `allenai/ai2_arc` (`ARC-Challenge`) | CC-BY-SA-4.0 |
|
|
138
|
+
| `arithmark_3_0` | ArithMark 3.0 | Arithmetic continuation, resistant to memorisation | `AxiomicLabs/Arithmark-3.0` | Apache-2.0 |
|
|
139
|
+
| `arithmark_2` | ArithMark 2.0 | The predecessor of ArithMark 3.0 | `AxiomicLabs/ArithMark-2.0` | Apache-2.0 |
|
|
140
|
+
| `math_500` | MATH-500 | Competition mathematics needing multi-step reasoning | `HuggingFaceH4/MATH-500` | MIT |
|
|
141
|
+
| `gpqa_diamond` | GPQA Diamond | Graduate-level "Google-proof" science questions | `Idavidrein/gpqa`, mirror `fingertap/GPQA-Diamond` | CC-BY-4.0 |
|
|
142
|
+
| `bfcl_v4` | BFCL v4 | Function calling and JSON-schema adherence | `bfcl-eval` package data | Apache-2.0 |
|
|
143
|
+
| `int_index` | Int Index | A composite score over HellaSwag, ARC and ArithMark-3 | derived, not a dataset | n/a |
|
|
144
|
+
|
|
145
|
+
`int_index` is a group, not a dataset: it evaluates its component benchmarks and
|
|
146
|
+
then combines them with the published formula. See
|
|
147
|
+
`slm_eval/tasks/slm/int_index/README.md`.
|
|
148
|
+
|
|
149
|
+
### Every licence here is usable commercially
|
|
150
|
+
|
|
151
|
+
No benchmark in this suite is NonCommercial (`NC`) or NoDerivatives (`ND`), and
|
|
152
|
+
every benchmark rests on a licence value that names a specific
|
|
153
|
+
commercial-use-safe licence. Two benchmarks carry obligations, and both are met
|
|
154
|
+
by this repository:
|
|
155
|
+
|
|
156
|
+
- **ARC** is CC-BY-SA-4.0. Attribution is required, and redistributing a
|
|
157
|
+
modified copy of the ARC data must stay under CC-BY-SA-4.0. This repository
|
|
158
|
+
never redistributes the data: the task downloads it from Hugging Face at run
|
|
159
|
+
time. The attribution is in `NOTICE` and in the task README.
|
|
160
|
+
- **GPQA** is CC-BY-4.0. Attribution is required. The public GPQA repository is
|
|
161
|
+
gated, so a Hugging Face token helps; without one the task falls back to an
|
|
162
|
+
open mirror and says so in the log. Attribution is in `NOTICE`.
|
|
163
|
+
|
|
164
|
+
Full research, with sources checked against the live dataset metadata, is in
|
|
165
|
+
`LICENSE_NOTES.md`.
|
|
166
|
+
|
|
167
|
+
### Benchmarks that were removed, and why
|
|
168
|
+
|
|
169
|
+
| Benchmark | Reason |
|
|
170
|
+
|---|---|
|
|
171
|
+
| GSM-Symbolic | CC-BY-NC-ND-4.0: NonCommercial and NoDerivatives |
|
|
172
|
+
| AgentIF | CC-BY-NC-4.0: NonCommercial |
|
|
173
|
+
| WildBench | Subjective: needs an LLM judge, so results are biased and costly |
|
|
174
|
+
| BrowseComp | Too complex: needs a live browsing agent |
|
|
175
|
+
| SWE-bench Lite | Too heavy: needs a full Docker sandbox per sample |
|
|
176
|
+
| PIQA | The dataset card declares no licence, so commercial use cannot be verified |
|
|
177
|
+
| LiveCodeBench | The card declares only the unversioned `cc` tag, and the problems come from third-party contest sites |
|
|
178
|
+
| BananaMind Base Bench 1.1 | The dataset card declares no licence, and the repository is gated |
|
|
179
|
+
|
|
180
|
+
PIQA is a published component of the Int Index. Because it is not shipped here,
|
|
181
|
+
the Int Index is computed from HellaSwag, ARC and ArithMark-3 with a denominator
|
|
182
|
+
of 2.65, which is what the published method prescribes for a missing component.
|
|
183
|
+
|
|
184
|
+
LiveCodeBench is the only removal that costs a whole capability: the suite no
|
|
185
|
+
longer ships a coding benchmark. `LICENSE_NOTES.md` records the full reasoning.
|
|
186
|
+
|
|
187
|
+
## Install
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
pip install -e ".[hf,api,benchmarks]"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`hf` provides the HuggingFace `transformers` backend. `benchmarks` adds the
|
|
194
|
+
scoring dependencies the tasks need (`math_verify`, `langdetect`, and friends).
|
|
195
|
+
|
|
196
|
+
## Run
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Everything at once. `slm` is a tag group: every task tagged `slm` runs.
|
|
200
|
+
python3 -m slm_eval \
|
|
201
|
+
--model hf --model_args pretrained=HuggingFaceTB/SmolLM2-135M \
|
|
202
|
+
--tasks slm --device cpu --batch_size 8
|
|
203
|
+
|
|
204
|
+
# One benchmark.
|
|
205
|
+
python3 -m slm_eval \
|
|
206
|
+
--model hf --model_args pretrained=HuggingFaceTB/SmolLM2-135M \
|
|
207
|
+
--tasks arithmark_3_0 --device cpu
|
|
208
|
+
|
|
209
|
+
# A quick wiring check on a few examples.
|
|
210
|
+
python3 -m slm_eval \
|
|
211
|
+
--model hf --model_args pretrained=HuggingFaceTB/SmolLM2-135M \
|
|
212
|
+
--tasks hellaswag --limit 16 --device cpu
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
List the available tasks:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
python3 -m slm_eval ls tasks
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## The Int Index
|
|
222
|
+
|
|
223
|
+
The Int Index is the composite score published on the Open SLM Leaderboard:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
N(score, chance) = 100 x (score - chance) / (100 - chance)
|
|
227
|
+
|
|
228
|
+
Int Index = (HellaSwag + ARC + PIQA + 0.65 x ArithMark-3) / 3.65
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Run the components in one pass, then compute the index from the saved results:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
python3 -m slm_eval --model hf \
|
|
235
|
+
--model_args pretrained=HuggingFaceTB/SmolLM2-135M \
|
|
236
|
+
--tasks int_index --device cpu --output_path logs/tiny-run
|
|
237
|
+
|
|
238
|
+
# The tracker writes logs/tiny-run/<model name>/results_<timestamp>.json,
|
|
239
|
+
# so let the shell expand the path.
|
|
240
|
+
python3 -m slm_eval.int_index --results logs/tiny-run/*/results_*.json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
The scale is small: chance level scores about 0, and the strongest reported
|
|
244
|
+
sub-10B models reach roughly 5. It is not a percentage. Each component is
|
|
245
|
+
rescaled so that guessing maps to 0 and a perfect score maps to 100.
|
|
246
|
+
|
|
247
|
+
## Average percentage (`eval_avg`)
|
|
248
|
+
|
|
249
|
+
`eval_avg` is the plain number: the average of the per-benchmark percentages in
|
|
250
|
+
a result file, with no weighting and no chance correction.
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
python3 -m slm_eval.eval_avg --results logs/tiny-run/*/results_*.json
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
It picks exactly one metric per benchmark, in this order of preference:
|
|
257
|
+
`acc_norm`, `acc`, `exact_match`, `function_name_match`, `ast_match`,
|
|
258
|
+
`valid_json`. If a benchmark reports none of those, it uses its alphabetically
|
|
259
|
+
first scored metric. `acc_norm` is preferred because raw `acc` carries a
|
|
260
|
+
token-length bias.
|
|
261
|
+
|
|
262
|
+
Diagnostics such as `unparseable` and `output_emitted` measure the harness, not
|
|
263
|
+
the model, so they are never chosen. A benchmark with no usable metric is
|
|
264
|
+
reported as skipped and leaves the average, instead of counting as zero. The
|
|
265
|
+
printed table names the metric used for every benchmark, so the number stays
|
|
266
|
+
auditable.
|
|
267
|
+
|
|
268
|
+
`eval_avg` is a plain mean, so it is comparable only between runs over the same
|
|
269
|
+
benchmark set. It is not the Int Index, which is chance-corrected, weighted and
|
|
270
|
+
published.
|
|
271
|
+
|
|
272
|
+
## Scoring tiers
|
|
273
|
+
|
|
274
|
+
`bfcl_v4` is built in two tiers:
|
|
275
|
+
|
|
276
|
+
- **Tier 1** always works. It builds the real prompt, generates a real response,
|
|
277
|
+
and computes a deterministic format or rule-based metric.
|
|
278
|
+
- **Tier 2** is the official metric. It is implemented, but gated behind an
|
|
279
|
+
explicit prerequisite. If you request it without the prerequisite, the task
|
|
280
|
+
raises a `RuntimeError` that names exactly what is missing. It never silently
|
|
281
|
+
returns zero.
|
|
282
|
+
|
|
283
|
+
| Task | Tier 1 | Tier 2 |
|
|
284
|
+
|---|---|---|
|
|
285
|
+
| `bfcl_v4` | `valid_json`, `function_name_match` | `ast_match`, needs `--metadata enable_tier2_metric=True` |
|
|
286
|
+
|
|
287
|
+
No shipped benchmark executes generated code: BFCL Tier 2 runs the official AST
|
|
288
|
+
checker over the predicted call. The engine still enforces
|
|
289
|
+
`--confirm_run_unsafe_code` for any task that marks itself unsafe, so a task added
|
|
290
|
+
later cannot execute code without that confirmation. Per-task limits and
|
|
291
|
+
prerequisites are documented in each task's `README.md`.
|
|
292
|
+
|
|
293
|
+
## A note on the inherited documentation
|
|
294
|
+
|
|
295
|
+
`docs/`, `scripts/` and `examples/` document the engine, the CLI and the model
|
|
296
|
+
backends, which this suite does not change. Some examples inside them name
|
|
297
|
+
benchmarks that were removed here. For the tasks that do exist,
|
|
298
|
+
`slm_eval/tasks/slm/CONVENTIONS.md` and the per-task `README.md` files are
|
|
299
|
+
authoritative.
|
|
300
|
+
|
|
301
|
+
## Layout
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
slm_eval/ evaluation engine
|
|
305
|
+
int_index.py the Int Index composite calculator
|
|
306
|
+
eval_avg.py the plain average-percentage calculator
|
|
307
|
+
tasks/
|
|
308
|
+
CONVENTIONS.md the task authoring contract
|
|
309
|
+
slm/ the supported benchmarks live here
|
|
310
|
+
hellaswag/ arc_easy/ arc_challenge/
|
|
311
|
+
arithmark_2/ arithmark_3_0/
|
|
312
|
+
math_500/ gpqa_diamond/ bfcl_v4/
|
|
313
|
+
int_index/ composite group (not a dataset)
|
|
314
|
+
tests/ tests for this suite
|
|
315
|
+
LICENSE_NOTES.md licence research for every benchmark
|
|
316
|
+
NOTICE attribution for the CCPL benchmarks and the engine
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Add or change a task
|
|
320
|
+
|
|
321
|
+
Read `slm_eval/tasks/slm/CONVENTIONS.md`. Task discovery globs
|
|
322
|
+
`slm_eval/tasks/**/*.yaml`, so a new directory with a YAML file is enough.
|
|
323
|
+
|
|
324
|
+
## Licence
|
|
325
|
+
|
|
326
|
+
The engine is MIT, from EleutherAI. `LICENSE.md` keeps that notice. See `NOTICE`
|
|
327
|
+
for the attribution required by the CC-BY-4.0 and CC-BY-SA-4.0 datasets, and
|
|
328
|
+
`LICENSE_NOTES.md` for the per-benchmark research.
|