eval-framework 0.6.3__tar.gz → 0.7.2__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.
- {eval_framework-0.6.3 → eval_framework-0.7.2}/PKG-INFO +7 -6
- {eval_framework-0.6.3 → eval_framework-0.7.2}/README.md +3 -1
- {eval_framework-0.6.3 → eval_framework-0.7.2}/pyproject.toml +9 -10
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/context/determined.py +6 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/context/eval.py +2 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/context/local.py +1 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/language_checker.py +6 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/response_generator.py +7 -2
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/run.py +8 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/suite.py +2 -0
- eval_framework-0.7.2/src/eval_framework/tasks/__init__.py +6 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/base.py +41 -35
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/copa.py +3 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/csqa.py +6 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/drop.py +6 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/gpqa.py +3 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/humaneval.py +3 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/math_reasoning.py +9 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/mbpp.py +1 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/medqa.py +4 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +2 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/piqa.py +4 -5
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/sciq.py +2 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/social_iqa.py +2 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/squad.py +5 -3
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/winogrande.py +2 -0
- eval_framework-0.7.2/src/eval_framework/tasks/dataset_revisions.py +84 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/eval_config.py +4 -0
- eval_framework-0.7.2/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +3 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/hf-dataset-revisions.json +1 -2
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/registry.py +32 -25
- eval_framework-0.7.2/src/eval_framework/tasks/task_names.py +85 -0
- eval_framework-0.6.3/src/eval_framework/metrics/completion/bleu.py +0 -76
- eval_framework-0.6.3/src/eval_framework/metrics/completion/chrf.py +0 -62
- eval_framework-0.6.3/src/eval_framework/metrics/completion/ter.py +0 -67
- eval_framework-0.6.3/src/eval_framework/tasks/__init__.py +0 -12
- eval_framework-0.6.3/src/eval_framework/tasks/dataset_revisions.py +0 -145
- eval_framework-0.6.3/src/eval_framework/tasks/task-dataset-revisions.json +0 -66
- eval_framework-0.6.3/src/eval_framework/tasks/task_names.py +0 -283
- {eval_framework-0.6.3 → eval_framework-0.7.2}/LICENSE +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/base_config.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/context/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/evaluation_generator.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/exceptions.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/drop_process_results.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/ifeval_impl/README.md +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/aleph_alpha.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/base.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/huggingface.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/mistral.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/models.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/openai.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/vllm.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/llm/vllm_local_server.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/logger.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/main.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/base.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/csv_format.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/f1.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/format_checker.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/ifeval.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/json_format.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/length_control.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/repetition.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/completion/text_counter.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/base.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/language.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/models.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/llm/utils.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/py.typed +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/result_processors/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/result_processors/base.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/result_processors/hf_uploader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/result_processors/result_processor.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/run_direct.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/shared/types.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/arc.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/arc_de.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/goldenswag.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/hellaswag.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/mmlu.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/triviaqa.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/perturbation.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/task_loader.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/task_style.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/utils.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/constants.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/file_ops.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/generate_task_docs.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/helpers.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/logging.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/packaging.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/utils/tqdm_handler.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/template_formatting/README.md +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/template_formatting/__init__.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/template_formatting/formatter.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/template_formatting/mistral_formatter.py +0 -0
- {eval_framework-0.6.3 → eval_framework-0.7.2}/src/template_formatting/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: eval-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: Evaluation Framework
|
|
5
5
|
Author: Aleph Alpha Research
|
|
6
6
|
License: Apache License
|
|
@@ -215,7 +215,6 @@ Requires-Dist: pyyaml>=6.0.3,<7
|
|
|
215
215
|
Requires-Dist: xmltodict>=1.0.4,<1.1
|
|
216
216
|
Requires-Dist: pydantic>=2.13.4,<3
|
|
217
217
|
Requires-Dist: datasets>=5.0.0,<6
|
|
218
|
-
Requires-Dist: sacrebleu>=2.6.0,<3
|
|
219
218
|
Requires-Dist: pycountry>=26.2.16,<27
|
|
220
219
|
Requires-Dist: nltk>=3.10.0,<4
|
|
221
220
|
Requires-Dist: python-dotenv>=1.2.2,<2
|
|
@@ -231,7 +230,7 @@ Requires-Dist: llm-sandbox[docker]==0.3.39
|
|
|
231
230
|
Requires-Dist: jsonlines>=4,<5
|
|
232
231
|
Requires-Dist: lxml>=6.1.1,<7
|
|
233
232
|
Requires-Dist: python-iso639>=2026.4.20
|
|
234
|
-
Requires-Dist: wandb>=0.28.
|
|
233
|
+
Requires-Dist: wandb>=0.28.1,<1
|
|
235
234
|
Requires-Dist: boto3>=1.43.19,<2
|
|
236
235
|
Requires-Dist: numpy>=2.2.6
|
|
237
236
|
Requires-Dist: antlr4-python3-runtime==4.11.0
|
|
@@ -241,10 +240,10 @@ Requires-Dist: eval-framework[determined,api,openai,transformers,accelerate,vllm
|
|
|
241
240
|
Requires-Dist: aleph-alpha-client>=11.5.1 ; extra == 'api'
|
|
242
241
|
Requires-Dist: determined>=0.38.1,<0.39 ; extra == 'determined'
|
|
243
242
|
Requires-Dist: tensorboard==2.21.0 ; extra == 'determined'
|
|
244
|
-
Requires-Dist: mistral-common>=1.11.
|
|
243
|
+
Requires-Dist: mistral-common>=1.11.6,<2 ; extra == 'mistral'
|
|
245
244
|
Requires-Dist: huggingface-hub>=0.36.2,<0.37 ; extra == 'mistral'
|
|
246
245
|
Requires-Dist: eval-framework[vllm] ; extra == 'mistral'
|
|
247
|
-
Requires-Dist: openai>=
|
|
246
|
+
Requires-Dist: openai>=2.46.0,<3 ; extra == 'openai'
|
|
248
247
|
Requires-Dist: tiktoken>=0.13.0,<1 ; extra == 'openai'
|
|
249
248
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'openai'
|
|
250
249
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'optional'
|
|
@@ -523,8 +522,10 @@ If you use `eval-framework` in your research, please cite:
|
|
|
523
522
|
|
|
524
523
|
```bibtex
|
|
525
524
|
@software{eval_framework,
|
|
525
|
+
author={Aleph Alpha Research},
|
|
526
526
|
title={Aleph Alpha Eval Framework},
|
|
527
|
-
year={
|
|
527
|
+
year={2026},
|
|
528
|
+
version = {x.y.z},
|
|
528
529
|
url={https://github.com/Aleph-Alpha-Research/eval-framework}
|
|
529
530
|
}
|
|
530
531
|
```
|
|
@@ -254,8 +254,10 @@ If you use `eval-framework` in your research, please cite:
|
|
|
254
254
|
|
|
255
255
|
```bibtex
|
|
256
256
|
@software{eval_framework,
|
|
257
|
+
author={Aleph Alpha Research},
|
|
257
258
|
title={Aleph Alpha Eval Framework},
|
|
258
|
-
year={
|
|
259
|
+
year={2026},
|
|
260
|
+
version = {x.y.z},
|
|
259
261
|
url={https://github.com/Aleph-Alpha-Research/eval-framework}
|
|
260
262
|
}
|
|
261
263
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "eval-framework"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.7.2"
|
|
4
4
|
description = "Evaluation Framework"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -22,7 +22,6 @@ dependencies = [
|
|
|
22
22
|
"xmltodict>=1.0.4,<1.1",
|
|
23
23
|
"pydantic>=2.13.4,<3",
|
|
24
24
|
"datasets>=5.0.0,<6",
|
|
25
|
-
"sacrebleu>=2.6.0,<3",
|
|
26
25
|
"pycountry>=26.2.16,<27",
|
|
27
26
|
"nltk>=3.10.0,<4",
|
|
28
27
|
"python-dotenv>=1.2.2,<2",
|
|
@@ -38,7 +37,7 @@ dependencies = [
|
|
|
38
37
|
"jsonlines>=4,<5",
|
|
39
38
|
"lxml>=6.1.1,<7",
|
|
40
39
|
"python-iso639>=2026.4.20",
|
|
41
|
-
"wandb>=0.28.
|
|
40
|
+
"wandb>=0.28.1,<1",
|
|
42
41
|
"boto3>=1.43.19,<2",
|
|
43
42
|
"numpy>=2.2.6",
|
|
44
43
|
# is a dependency of sympy, but not explicitly listed in the requirements.txt
|
|
@@ -55,7 +54,7 @@ determined = [
|
|
|
55
54
|
]
|
|
56
55
|
api = ["aleph-alpha-client>=11.5.1"]
|
|
57
56
|
openai = [
|
|
58
|
-
"openai>=
|
|
57
|
+
"openai>=2.46.0,<3",
|
|
59
58
|
"tiktoken>=0.13.0,<1",
|
|
60
59
|
"transformers>=4.45.2,<5",
|
|
61
60
|
]
|
|
@@ -70,7 +69,7 @@ vllm = [
|
|
|
70
69
|
"torch>=2.5,<3"
|
|
71
70
|
]
|
|
72
71
|
mistral = [
|
|
73
|
-
"mistral-common>=1.11.
|
|
72
|
+
"mistral-common>=1.11.6,<2",
|
|
74
73
|
"huggingface-hub>=0.36.2,<0.37",
|
|
75
74
|
"eval_framework[vllm]",
|
|
76
75
|
]
|
|
@@ -91,16 +90,16 @@ eval_framework = "eval_framework.run:run"
|
|
|
91
90
|
|
|
92
91
|
[dependency-groups]
|
|
93
92
|
dev = [
|
|
94
|
-
"mypy>=2.
|
|
93
|
+
"mypy>=2.3.0,<3",
|
|
95
94
|
"pytest>=9.1.1,<10",
|
|
96
95
|
"pytest-mock>=3.15.1",
|
|
97
96
|
"pytest-xdist>=3.8.0,<4",
|
|
98
97
|
"pytest-sugar>1.1,<2",
|
|
99
98
|
"types-pyyaml>=6.0.12.20260518,<7",
|
|
100
|
-
"types-python-dateutil>=2.9.0.
|
|
101
|
-
"types-requests>=2.33.0.
|
|
99
|
+
"types-python-dateutil>=2.9.0.20260716,<3",
|
|
100
|
+
"types-requests>=2.33.0.20260712,<3",
|
|
102
101
|
"plotly>=6.8.0,<7",
|
|
103
|
-
"ruff>=0.15.
|
|
102
|
+
"ruff>=0.15.22",
|
|
104
103
|
"pip-licenses>=5.5.5",
|
|
105
104
|
]
|
|
106
105
|
flash-attn = [
|
|
@@ -109,7 +108,7 @@ flash-attn = [
|
|
|
109
108
|
]
|
|
110
109
|
|
|
111
110
|
[build-system]
|
|
112
|
-
requires = ["uv_build>=0.11.
|
|
111
|
+
requires = ["uv_build>=0.11.29,<0.11.30"]
|
|
113
112
|
build-backend = "uv_build"
|
|
114
113
|
|
|
115
114
|
[tool.uv.build-backend]
|
|
@@ -30,6 +30,7 @@ class TaskArgs(BaseModel):
|
|
|
30
30
|
judge_model_args: dict[str, Any] = {}
|
|
31
31
|
task_subjects: list[str] | None = None
|
|
32
32
|
hf_revision: str | None = None
|
|
33
|
+
user_prompt_suffix: str | None = None
|
|
33
34
|
perturbation_config: PerturbationConfig | None = None
|
|
34
35
|
repeats: int | None = None
|
|
35
36
|
|
|
@@ -108,6 +109,7 @@ class DeterminedContext(EvalContext):
|
|
|
108
109
|
"task_subjects",
|
|
109
110
|
"batch_size",
|
|
110
111
|
"hf_revision",
|
|
112
|
+
"user_prompt_suffix",
|
|
111
113
|
"judge_model_name",
|
|
112
114
|
"judge_model_args",
|
|
113
115
|
"perturbation_config",
|
|
@@ -121,6 +123,9 @@ class DeterminedContext(EvalContext):
|
|
|
121
123
|
# Hyperparameters take precedence over core context
|
|
122
124
|
llm_name = self.hparams.llm_name or self.llm_name
|
|
123
125
|
judge_model_name = self.hparams.task_args.judge_model_name or self.judge_model_name
|
|
126
|
+
user_prompt_suffix = self.hparams.task_args.user_prompt_suffix
|
|
127
|
+
if user_prompt_suffix is None:
|
|
128
|
+
user_prompt_suffix = self.user_prompt_suffix
|
|
124
129
|
|
|
125
130
|
llm_class = _load_model(llm_name, models_path=self.models_path)
|
|
126
131
|
llm_judge_class: type[BaseLLM] | None = (
|
|
@@ -139,6 +144,7 @@ class DeterminedContext(EvalContext):
|
|
|
139
144
|
task_name=self.hparams.task_args.task_name,
|
|
140
145
|
task_subjects=self.hparams.task_args.task_subjects,
|
|
141
146
|
hf_revision=self.hparams.task_args.hf_revision or self.hf_revision,
|
|
147
|
+
user_prompt_suffix=user_prompt_suffix,
|
|
142
148
|
perturbation_config=self.hparams.task_args.perturbation_config or self.perturbation_config,
|
|
143
149
|
output_dir=self.hparams.output_dir,
|
|
144
150
|
llm_judge_class=llm_judge_class,
|
|
@@ -57,6 +57,7 @@ class EvalContext(AbstractContextManager):
|
|
|
57
57
|
task_name: str | None = None,
|
|
58
58
|
task_subjects: list[str] | None = None,
|
|
59
59
|
hf_revision: str | None = None,
|
|
60
|
+
user_prompt_suffix: str | None = None,
|
|
60
61
|
output_dir: Path | None = None,
|
|
61
62
|
wandb_project: str | None = None,
|
|
62
63
|
wandb_entity: str | None = None,
|
|
@@ -86,6 +87,7 @@ class EvalContext(AbstractContextManager):
|
|
|
86
87
|
self.task_name = task_name
|
|
87
88
|
self.task_subjects = task_subjects
|
|
88
89
|
self.hf_revision = hf_revision
|
|
90
|
+
self.user_prompt_suffix = user_prompt_suffix
|
|
89
91
|
self.output_dir = output_dir
|
|
90
92
|
self.wandb_project = wandb_project
|
|
91
93
|
self.wandb_entity = wandb_entity
|
|
@@ -52,6 +52,7 @@ class LocalContext(EvalContext):
|
|
|
52
52
|
task_name=self.task_name,
|
|
53
53
|
task_subjects=self.task_subjects,
|
|
54
54
|
hf_revision=self.hf_revision,
|
|
55
|
+
user_prompt_suffix=self.user_prompt_suffix,
|
|
55
56
|
output_dir=self.output_dir,
|
|
56
57
|
hf_upload_dir=self.hf_upload_dir,
|
|
57
58
|
hf_upload_repo=self.hf_upload_repo,
|
|
@@ -41,6 +41,9 @@ class LanguageConsistencyChecker(BaseMetric[Completion]):
|
|
|
41
41
|
if response.error is not None:
|
|
42
42
|
return [MetricResult(metric_name=self.NAME, value=None, higher_is_better=True, error=response.error)]
|
|
43
43
|
|
|
44
|
+
if not response.completion:
|
|
45
|
+
return [] # No completion means no language to detect, so it is excluded from aggregation
|
|
46
|
+
|
|
44
47
|
completion_language = response.get_completion_language()
|
|
45
48
|
target_language = response.get_instruction_language()
|
|
46
49
|
if completion_language == target_language == "":
|
|
@@ -57,6 +60,9 @@ class LanguageRawConsistencyChecker(BaseMetric[Completion]):
|
|
|
57
60
|
if response.error is not None:
|
|
58
61
|
return [MetricResult(metric_name=self.NAME, value=None, higher_is_better=True, error=response.error)]
|
|
59
62
|
|
|
63
|
+
if not response.raw_completion:
|
|
64
|
+
return [] # No completion means no language to detect, so it is excluded from aggregation
|
|
65
|
+
|
|
60
66
|
raw_completion_language = response.get_raw_completion_language()
|
|
61
67
|
target_language = response.get_instruction_language()
|
|
62
68
|
|
|
@@ -66,10 +66,14 @@ class ResponseGenerator:
|
|
|
66
66
|
config.num_fewshot,
|
|
67
67
|
config.task_subjects,
|
|
68
68
|
config.hf_revision,
|
|
69
|
+
user_prompt_suffix=config.user_prompt_suffix,
|
|
69
70
|
)
|
|
70
71
|
else:
|
|
71
72
|
self.task = registry()[config.task_name].create(
|
|
72
|
-
config.num_fewshot,
|
|
73
|
+
config.num_fewshot,
|
|
74
|
+
config.task_subjects,
|
|
75
|
+
config.hf_revision,
|
|
76
|
+
user_prompt_suffix=config.user_prompt_suffix,
|
|
73
77
|
)
|
|
74
78
|
|
|
75
79
|
self.response_type = self.task.get_response_type()
|
|
@@ -345,9 +349,10 @@ class ResponseGenerator:
|
|
|
345
349
|
"llm_args",
|
|
346
350
|
"perturbation_config",
|
|
347
351
|
"repeats",
|
|
352
|
+
"user_prompt_suffix",
|
|
348
353
|
]
|
|
349
354
|
for key in keys:
|
|
350
|
-
if loaded_metadata
|
|
355
|
+
if loaded_metadata.get(key) != current_metadata[key]:
|
|
351
356
|
raise ValueError(f"Existing metadata does not match current metadata for {key}.")
|
|
352
357
|
|
|
353
358
|
def __del__(self) -> None:
|
|
@@ -150,6 +150,13 @@ def parse_args() -> argparse.Namespace:
|
|
|
150
150
|
default=None,
|
|
151
151
|
help="A tag name, a branch name, or commit hash for the task HF dataset.",
|
|
152
152
|
)
|
|
153
|
+
parser.add_argument(
|
|
154
|
+
"--user-prompt-suffix",
|
|
155
|
+
type=str,
|
|
156
|
+
required=False,
|
|
157
|
+
default=None,
|
|
158
|
+
help="Text appended verbatim to the evaluated user prompt before formatting.",
|
|
159
|
+
)
|
|
153
160
|
parser.add_argument(
|
|
154
161
|
"--judge-models",
|
|
155
162
|
type=Path,
|
|
@@ -343,6 +350,7 @@ def _run_single_task(kwargs: dict) -> None:
|
|
|
343
350
|
task_name=kwargs["task_name"],
|
|
344
351
|
task_subjects=kwargs["task_subjects"],
|
|
345
352
|
hf_revision=kwargs["hf_revision"],
|
|
353
|
+
user_prompt_suffix=kwargs.get("user_prompt_suffix"),
|
|
346
354
|
output_dir=kwargs["output_dir"],
|
|
347
355
|
wandb_project=kwargs["wandb_project"],
|
|
348
356
|
wandb_entity=kwargs["wandb_entity"],
|
|
@@ -34,6 +34,7 @@ _EVAL_CONFIG_FIELDS = {
|
|
|
34
34
|
"batch_size",
|
|
35
35
|
"task_subjects",
|
|
36
36
|
"hf_revision",
|
|
37
|
+
"user_prompt_suffix",
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
_HYPERPARAM_FIELDS = _LLM_ARG_FIELDS | _EVAL_CONFIG_FIELDS
|
|
@@ -100,6 +101,7 @@ class TaskSuite(BaseModel):
|
|
|
100
101
|
batch_size: int | None = None
|
|
101
102
|
task_subjects: list[str] | None = None
|
|
102
103
|
hf_revision: str | None = None
|
|
104
|
+
user_prompt_suffix: str | None = None
|
|
103
105
|
|
|
104
106
|
@model_validator(mode="after")
|
|
105
107
|
def validate_suite(self) -> Self:
|
|
@@ -10,12 +10,10 @@ from typing import TYPE_CHECKING, Any, Self, TypeVar
|
|
|
10
10
|
|
|
11
11
|
import iso639
|
|
12
12
|
from datasets import DatasetDict, DownloadConfig, load_dataset
|
|
13
|
-
from huggingface_hub import HfApi
|
|
14
|
-
from huggingface_hub.errors import RevisionNotFoundError
|
|
15
13
|
from pydantic import BaseModel, ConfigDict
|
|
16
14
|
|
|
17
15
|
from eval_framework.shared.types import BaseMetricContext, Completion, Error, RawCompletion
|
|
18
|
-
from eval_framework.tasks.dataset_revisions import
|
|
16
|
+
from eval_framework.tasks.dataset_revisions import pinned_revision
|
|
19
17
|
from eval_framework.tasks.utils import classproperty, raise_errors
|
|
20
18
|
from template_formatting.formatter import Message, Role
|
|
21
19
|
|
|
@@ -93,7 +91,6 @@ class BaseTask[SubjectType](ABC):
|
|
|
93
91
|
SAMPLE_SPLIT: str
|
|
94
92
|
FEWSHOT_SPLIT: str
|
|
95
93
|
SUBJECTS: list[SubjectType]
|
|
96
|
-
HF_REVISION: str | None = None # tag name, or branch name, or commit hash to ensure reproducibility
|
|
97
94
|
|
|
98
95
|
# The lock file this task resolves its pinned dataset revision from, keyed by ``DATASET_PATH``.
|
|
99
96
|
# Each task sets this explicitly: point it at a lock file (e.g. ``HF_REVISIONS_LOCKFILE`` or a
|
|
@@ -115,23 +112,35 @@ class BaseTask[SubjectType](ABC):
|
|
|
115
112
|
|
|
116
113
|
def __init__(self, num_fewshot: int = 0) -> None:
|
|
117
114
|
self.num_fewshot = num_fewshot
|
|
115
|
+
self.user_prompt_suffix: str | None = None
|
|
118
116
|
self.stop_sequences: list[str] | None = None
|
|
119
117
|
self.max_tokens: int | None = None
|
|
120
|
-
self._apply_hf_revision()
|
|
118
|
+
self.hf_revision: str | None = self._apply_hf_revision()
|
|
121
119
|
|
|
122
|
-
def _apply_hf_revision(self, custom_hf_revision: str | None = None) -> None:
|
|
123
|
-
# Precedence: CLI/config override >
|
|
124
|
-
#
|
|
120
|
+
def _apply_hf_revision(self, custom_hf_revision: str | None = None) -> str | None:
|
|
121
|
+
# Precedence: CLI/config override > REVISION_LOCKFILE pin.
|
|
122
|
+
# Tasks without a Hugging Face dataset set REVISION_LOCKFILE to None and are not pinned.
|
|
125
123
|
if custom_hf_revision:
|
|
126
|
-
|
|
127
|
-
elif self.
|
|
128
|
-
self.
|
|
124
|
+
hf_revision = custom_hf_revision
|
|
125
|
+
elif self.REVISION_LOCKFILE is not None:
|
|
126
|
+
hf_revision = pinned_revision(self.REVISION_LOCKFILE, self.DATASET_PATH)
|
|
127
|
+
else:
|
|
128
|
+
hf_revision = None
|
|
129
|
+
return hf_revision
|
|
129
130
|
|
|
130
131
|
@classmethod
|
|
131
132
|
def with_overwrite(
|
|
132
|
-
cls,
|
|
133
|
+
cls,
|
|
134
|
+
num_fewshot: int,
|
|
135
|
+
*,
|
|
136
|
+
custom_subjects: list[str] | None,
|
|
137
|
+
custom_hf_revision: str | None,
|
|
138
|
+
user_prompt_suffix: str | None = None,
|
|
133
139
|
) -> Self:
|
|
134
140
|
instance = cls(num_fewshot=num_fewshot)
|
|
141
|
+
if user_prompt_suffix is not None and instance.get_response_type() != ResponseType.COMPLETION:
|
|
142
|
+
raise ValueError("user_prompt_suffix is only supported for completion tasks.")
|
|
143
|
+
instance.user_prompt_suffix = user_prompt_suffix
|
|
135
144
|
|
|
136
145
|
# If custom subjects were provided during initialization, they take precedence over the class-level SUBJECTS.
|
|
137
146
|
filtered_subjects = instance._filter_task_subjects(custom_subjects=custom_subjects)
|
|
@@ -139,7 +148,7 @@ class BaseTask[SubjectType](ABC):
|
|
|
139
148
|
logger.info(f"Setting SUBJECTS to `{filtered_subjects}` for the task {instance.__class__.__name__}")
|
|
140
149
|
instance.SUBJECTS = filtered_subjects # type: ignore[assignment]
|
|
141
150
|
|
|
142
|
-
instance._apply_hf_revision(custom_hf_revision)
|
|
151
|
+
instance.hf_revision = instance._apply_hf_revision(custom_hf_revision)
|
|
143
152
|
|
|
144
153
|
return instance
|
|
145
154
|
|
|
@@ -178,29 +187,14 @@ class BaseTask[SubjectType](ABC):
|
|
|
178
187
|
return custom_subjects # type: ignore[return-value]
|
|
179
188
|
|
|
180
189
|
def _load_hf_dataset(self, **kwargs: Any) -> Any:
|
|
181
|
-
# Check if the HF_REVISION is valid before loading the dataset
|
|
182
|
-
if self.HF_REVISION:
|
|
183
|
-
try:
|
|
184
|
-
_ = HfApi().dataset_info(repo_id=kwargs["path"], revision=self.HF_REVISION, timeout=100.0)
|
|
185
|
-
except Exception as e:
|
|
186
|
-
if isinstance(e, RevisionNotFoundError):
|
|
187
|
-
raise e
|
|
188
|
-
|
|
189
190
|
cache_dir: str = os.environ.get("HF_DATASET_CACHE_DIR", f"{Path.home()}/.cache/huggingface/datasets")
|
|
190
191
|
download_config = DownloadConfig(cache_dir=cache_dir, max_retries=5)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
)
|
|
198
|
-
except Exception:
|
|
199
|
-
return load_dataset(
|
|
200
|
-
**kwargs,
|
|
201
|
-
revision=self.HF_REVISION,
|
|
202
|
-
cache_dir=f"{Path.home()}/.cache/eval-framework",
|
|
203
|
-
)
|
|
192
|
+
return load_dataset(
|
|
193
|
+
**kwargs,
|
|
194
|
+
revision=self.hf_revision,
|
|
195
|
+
cache_dir=cache_dir,
|
|
196
|
+
download_config=download_config,
|
|
197
|
+
)
|
|
204
198
|
|
|
205
199
|
def _shuffle_splits(self, hf_dataset: DatasetDict) -> dict[str, Any]:
|
|
206
200
|
dataset = {}
|
|
@@ -241,7 +235,7 @@ class BaseTask[SubjectType](ABC):
|
|
|
241
235
|
|
|
242
236
|
def _get_messages(self, item: dict[str, Any]) -> list[Message]:
|
|
243
237
|
example_messages = self._get_example_messages(item)
|
|
244
|
-
instruction_message = self._get_instruction_messages(item)
|
|
238
|
+
instruction_message = self._apply_user_prompt_suffix(self._get_instruction_messages(item))
|
|
245
239
|
cue_text = self._get_cue_text(item)
|
|
246
240
|
cue_message = [Message(role=Role.ASSISTANT, content=cue_text)] if cue_text else []
|
|
247
241
|
messages = example_messages + instruction_message + cue_message
|
|
@@ -254,6 +248,18 @@ class BaseTask[SubjectType](ABC):
|
|
|
254
248
|
return [Message(role=Role.SYSTEM, content=system_prompt_text)] + messages
|
|
255
249
|
return messages
|
|
256
250
|
|
|
251
|
+
def _apply_user_prompt_suffix(self, instruction_messages: list[Message]) -> list[Message]:
|
|
252
|
+
"""Append the configured suffix verbatim to the evaluated user turn."""
|
|
253
|
+
if self.user_prompt_suffix is None:
|
|
254
|
+
return instruction_messages
|
|
255
|
+
|
|
256
|
+
for message in reversed(instruction_messages):
|
|
257
|
+
if message.role == Role.USER:
|
|
258
|
+
message.content = f"{message.content}{self.user_prompt_suffix}"
|
|
259
|
+
return instruction_messages
|
|
260
|
+
|
|
261
|
+
raise ValueError("Cannot append user_prompt_suffix: evaluated instruction contains no user message.")
|
|
262
|
+
|
|
257
263
|
def _get_instruction_messages(self, item: dict[str, Any]) -> list[Message]:
|
|
258
264
|
return [Message(role=Role.USER, content=self._get_instruction_text(item))]
|
|
259
265
|
|
|
@@ -17,6 +17,8 @@ class COPAEvalHarness(BaseTask[str]):
|
|
|
17
17
|
This version uses samples from the validation split as evaluation examples (same as lm-eval-harness).
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
21
|
+
|
|
20
22
|
NAME = "COPAEvalHarness"
|
|
21
23
|
DATASET_PATH = "aps/super_glue"
|
|
22
24
|
SAMPLE_SPLIT = "validation" # 100 examples (same split as lm-eval)
|
|
@@ -88,6 +90,7 @@ class COPA(COPAEvalHarness):
|
|
|
88
90
|
|
|
89
91
|
|
|
90
92
|
class COPA_IDKEvalHarness(COPAEvalHarness):
|
|
93
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
91
94
|
NAME = "COPA_IDKEvalHarness"
|
|
92
95
|
METRICS = [
|
|
93
96
|
AccuracyLoglikelihood,
|
|
@@ -13,6 +13,8 @@ from eval_framework.tasks.utils import get_n_letters
|
|
|
13
13
|
class CommonsenseQACloze(BaseTask[str]):
|
|
14
14
|
"""CommonsenseQA dataset: https://huggingface.co/datasets/tau/commonsense_qa"""
|
|
15
15
|
|
|
16
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
17
|
+
|
|
16
18
|
NAME = "CommonsenseQACloze"
|
|
17
19
|
DATASET_PATH = "tau/commonsense_qa"
|
|
18
20
|
SAMPLE_SPLIT = "validation"
|
|
@@ -53,6 +55,8 @@ class CommonsenseQAFullTextCloze(CommonsenseQACloze):
|
|
|
53
55
|
Scores loglikelihood over the full correct choice text; includes bits-per-byte.
|
|
54
56
|
"""
|
|
55
57
|
|
|
58
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
59
|
+
|
|
56
60
|
NAME = "CommonsenseQAFullTextCloze"
|
|
57
61
|
METRICS = [AccuracyLoglikelihood, AccuracyNormLoglikelihood, BitsPerByteLoglikelihood]
|
|
58
62
|
|
|
@@ -65,6 +69,8 @@ class CommonsenseQAFullTextCloze(CommonsenseQACloze):
|
|
|
65
69
|
class CommonsenseQAMC(CommonsenseQACloze):
|
|
66
70
|
"""Multiple-choice variant of CommonsenseQA where the model selects a letter (A-E)."""
|
|
67
71
|
|
|
72
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
73
|
+
|
|
68
74
|
NAME = "CommonsenseQAMC"
|
|
69
75
|
|
|
70
76
|
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
@@ -75,6 +75,8 @@ class DropCompletion(BaseTask[str]):
|
|
|
75
75
|
Uses DROP F1 and exact match. Stop at new paragraph or repeated prefixes.
|
|
76
76
|
"""
|
|
77
77
|
|
|
78
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
79
|
+
|
|
78
80
|
NAME = "DropCompletion"
|
|
79
81
|
DATASET_PATH = "EleutherAI/drop"
|
|
80
82
|
SAMPLE_SPLIT = "validation"
|
|
@@ -163,6 +165,8 @@ class DropCompletion_OLMES(DropCompletion):
|
|
|
163
165
|
class DropMC(BaseTask[str]):
|
|
164
166
|
"""Multiple-choice variant using allenai/drop-gen2mc (passage_original, question_original, choices, answerKey)."""
|
|
165
167
|
|
|
168
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
169
|
+
|
|
166
170
|
NAME = "DropMC"
|
|
167
171
|
DATASET_PATH = "allenai/drop-gen2mc"
|
|
168
172
|
SAMPLE_SPLIT = "validation"
|
|
@@ -233,6 +237,8 @@ class DropCloze(BaseTask[str]):
|
|
|
233
237
|
Includes BitsPerByte on the correct choice.
|
|
234
238
|
"""
|
|
235
239
|
|
|
240
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
241
|
+
|
|
236
242
|
NAME = "DropCloze"
|
|
237
243
|
DATASET_PATH = "allenai/drop-gen2mc"
|
|
238
244
|
SAMPLE_SPLIT = "validation"
|
|
@@ -22,6 +22,8 @@ logger = logging.getLogger(__name__)
|
|
|
22
22
|
class GPQA(BaseTask[str]):
|
|
23
23
|
"""GPQA dataset: https://huggingface.co/datasets/Idavidrein/gpqa"""
|
|
24
24
|
|
|
25
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
26
|
+
|
|
25
27
|
NAME = "GPQA"
|
|
26
28
|
DATASET_PATH = "Idavidrein/gpqa"
|
|
27
29
|
SAMPLE_SPLIT = "train"
|
|
@@ -172,6 +174,7 @@ class GPQA_IDK(GPQA):
|
|
|
172
174
|
|
|
173
175
|
|
|
174
176
|
class GPQA_COT(GPQA):
|
|
177
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
175
178
|
NAME = "GPQA_COT"
|
|
176
179
|
RESPONSE_TYPE = ResponseType.COMPLETION
|
|
177
180
|
METRICS = [AccuracyCompletion]
|
{eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/humaneval.py
RENAMED
|
@@ -28,6 +28,8 @@ class HumanEvalMetricContext(BaseMetricContext):
|
|
|
28
28
|
class HumanEval(BaseTask[str]):
|
|
29
29
|
"""HumanEval dataset: https://huggingface.co/datasets/openai/openai_humaneval/"""
|
|
30
30
|
|
|
31
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
32
|
+
|
|
31
33
|
NAME = "Human Eval"
|
|
32
34
|
DATASET_PATH = "openai/openai_humaneval"
|
|
33
35
|
SAMPLE_SPLIT = "test"
|
|
@@ -128,6 +130,7 @@ class HumanEval_OLMES(HumanEval):
|
|
|
128
130
|
|
|
129
131
|
class HumanEvalInstruct(HumanEval):
|
|
130
132
|
# See https://github.com/EleutherAI/lm-evaluation-harness/blob/main/lm_eval/tasks/humaneval/humaneval_instruct.yaml
|
|
133
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
131
134
|
NAME = "Human Eval Instruct"
|
|
132
135
|
CUE_PREFIX = "Here is the completed function:\n```python\n"
|
|
133
136
|
|
{eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/math_reasoning.py
RENAMED
|
@@ -482,6 +482,8 @@ class MATH500(MATHReasoning):
|
|
|
482
482
|
class MATH(MATHReasoning):
|
|
483
483
|
"""MATH dataset: https://huggingface.co/datasets/EleutherAI/hendrycks_math"""
|
|
484
484
|
|
|
485
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
486
|
+
|
|
485
487
|
NAME = "Math"
|
|
486
488
|
DATASET_PATH = "EleutherAI/hendrycks_math"
|
|
487
489
|
SAMPLE_SPLIT = "test"
|
|
@@ -559,6 +561,8 @@ class MATHMinervaEvalHarness(MATHReasoning):
|
|
|
559
561
|
Metrics: Exact Match, Exact Match (Flex) via MathMinervaCompletion.
|
|
560
562
|
"""
|
|
561
563
|
|
|
564
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
565
|
+
|
|
562
566
|
NAME = "MATHMinervaEvalHarness"
|
|
563
567
|
DATASET_PATH = "EleutherAI/hendrycks_math"
|
|
564
568
|
SAMPLE_SPLIT = "test"
|
|
@@ -595,6 +599,8 @@ class MATHMinerva(MATHMinervaEvalHarness):
|
|
|
595
599
|
"(The )Final Answer: The (final )answer is ...( I hope it is correct.)", where parentheses are optional.
|
|
596
600
|
"""
|
|
597
601
|
|
|
602
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
603
|
+
|
|
598
604
|
NAME = "MATHMinerva"
|
|
599
605
|
METRICS = [MathMinervaCompletionRelaxed]
|
|
600
606
|
|
|
@@ -610,6 +616,8 @@ class MATH500Minerva(MATHMinerva):
|
|
|
610
616
|
Uses HuggingFaceH4/MATH-500 which has a single 'default' config (no subject splits).
|
|
611
617
|
"""
|
|
612
618
|
|
|
619
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
620
|
+
|
|
613
621
|
NAME = "MATH500Minerva"
|
|
614
622
|
DATASET_PATH = "HuggingFaceH4/MATH-500"
|
|
615
623
|
SAMPLE_SPLIT = "test"
|
|
@@ -622,6 +630,7 @@ class MATH500Minerva(MATHMinerva):
|
|
|
622
630
|
|
|
623
631
|
|
|
624
632
|
class MATHLvl5(MATH):
|
|
633
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
625
634
|
NAME = "Math Lvl 5"
|
|
626
635
|
|
|
627
636
|
def _load_dataset(self, subject: SubjectType) -> None:
|
|
@@ -17,6 +17,8 @@ from eval_framework.tasks.utils import get_n_letters
|
|
|
17
17
|
class MedQACloze(BaseTask[str]):
|
|
18
18
|
"""MedQA cloze (loglikelihood over choice text)."""
|
|
19
19
|
|
|
20
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
21
|
+
|
|
20
22
|
NAME = "MedQACloze"
|
|
21
23
|
DATASET_PATH = "davidheineman/medqa-en"
|
|
22
24
|
SAMPLE_SPLIT = "test"
|
|
@@ -53,6 +55,8 @@ class MedQACloze(BaseTask[str]):
|
|
|
53
55
|
class MedQAMC(MedQACloze):
|
|
54
56
|
"""MedQA multiple choice (loglikelihood over A/B/C/D/...)."""
|
|
55
57
|
|
|
58
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
59
|
+
|
|
56
60
|
NAME = "MedQAMC"
|
|
57
61
|
|
|
58
62
|
def __init__(self, num_fewshot: int = 0) -> None:
|
{eval_framework-0.6.3 → eval_framework-0.7.2}/src/eval_framework/tasks/benchmarks/naturalqs_open.py
RENAMED
|
@@ -82,11 +82,13 @@ class _NaturalQsOpenChoice_Base(BaseTask[str]):
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
class NaturalQsOpenCloze(_NaturalQsOpenChoice_Base):
|
|
85
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
85
86
|
NAME = "NaturalQsOpenCloze"
|
|
86
87
|
TASK_STYLER = ClozeStyle()
|
|
87
88
|
|
|
88
89
|
|
|
89
90
|
class NaturalQsOpenMC(_NaturalQsOpenChoice_Base):
|
|
91
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
90
92
|
NAME = "NaturalQsOpenMC"
|
|
91
93
|
TASK_STYLER = MCStyle()
|
|
92
94
|
|
|
@@ -9,18 +9,17 @@ from eval_framework.metrics.loglikelihood.confidence_weighted_accuracy import Co
|
|
|
9
9
|
from eval_framework.metrics.loglikelihood.dcs import DistributionalCorrectnessScore
|
|
10
10
|
from eval_framework.metrics.loglikelihood.ternary import TernaryScore
|
|
11
11
|
from eval_framework.tasks.base import NO_SUBJECT, BaseTask, Language, ResponseType
|
|
12
|
-
from eval_framework.tasks.dataset_revisions import
|
|
12
|
+
from eval_framework.tasks.dataset_revisions import FROZEN_HF_REVISIONS_LOCKFILE
|
|
13
13
|
from eval_framework.tasks.utils import get_n_letters
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class PIQA(BaseTask[str]):
|
|
17
17
|
"""PIQA dataset: https://huggingface.co/datasets/ybisk/piqa"""
|
|
18
18
|
|
|
19
|
-
REVISION_LOCKFILE =
|
|
19
|
+
REVISION_LOCKFILE = FROZEN_HF_REVISIONS_LOCKFILE
|
|
20
20
|
|
|
21
21
|
NAME = "PIQA"
|
|
22
22
|
DATASET_PATH = "ybisk/piqa"
|
|
23
|
-
HF_REVISION = "6b3aceb3276e5ab7e51895d73151a718690af38c"
|
|
24
23
|
SAMPLE_SPLIT = "validation" # 1838 examples (same split as lm-eval)
|
|
25
24
|
FEWSHOT_SPLIT = "test" # 3084 examples
|
|
26
25
|
RESPONSE_TYPE = ResponseType.LOGLIKELIHOODS
|
|
@@ -54,7 +53,7 @@ class PIQA_OLMES(PIQA):
|
|
|
54
53
|
loglikelihood over " A"/" B".
|
|
55
54
|
"""
|
|
56
55
|
|
|
57
|
-
REVISION_LOCKFILE =
|
|
56
|
+
REVISION_LOCKFILE = FROZEN_HF_REVISIONS_LOCKFILE
|
|
58
57
|
|
|
59
58
|
NAME = "PIQA_OLMES"
|
|
60
59
|
SAMPLE_SPLIT = "train" # Use train split (largest) to best match OLMES, which evaluates all splits
|
|
@@ -79,7 +78,7 @@ class PIQA_OLMES(PIQA):
|
|
|
79
78
|
|
|
80
79
|
|
|
81
80
|
class PIQA_IDK(PIQA):
|
|
82
|
-
REVISION_LOCKFILE =
|
|
81
|
+
REVISION_LOCKFILE = FROZEN_HF_REVISIONS_LOCKFILE
|
|
83
82
|
NAME = "PIQA_IDK"
|
|
84
83
|
METRICS = [
|
|
85
84
|
AccuracyLoglikelihood,
|