eval-framework 0.13.0__tar.gz → 0.13.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.13.0 → eval_framework-0.13.2}/PKG-INFO +3 -3
- {eval_framework-0.13.0 → eval_framework-0.13.2}/pyproject.toml +3 -3
- {eval_framework-0.13.0 → eval_framework-0.13.2}/pyproject.toml.orig +3 -3
- eval_framework-0.13.2/src/eval_framework/benchmarks/arc.py +69 -0
- eval_framework-0.13.2/src/eval_framework/benchmarks/arc_ellamind.py +71 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/gpqa_ellamind.py +10 -3
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/hle_ellamind.py +10 -3
- eval_framework-0.13.2/src/eval_framework/benchmarks/social_iqa.py +151 -0
- eval_framework-0.13.0/src/eval_framework/benchmarks/winogrande_ellamind.py → eval_framework-0.13.2/src/eval_framework/benchmarks/winogrande.py +18 -46
- eval_framework-0.13.2/src/eval_framework/benchmarks/winogrande_ellamind.py +65 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/composed.py +8 -17
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/math_minerva_completion.py +6 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/multipl_e_assertion.py +13 -4
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/response_generator.py +25 -3
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/dataset_loading.py +64 -3
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/eval_config.py +1 -11
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/hf-dataset-revisions.json +0 -1
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/task_names.py +12 -8
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/utils.py +1 -1
- eval_framework-0.13.0/src/eval_framework/tasks/benchmarks/arc.py +0 -108
- eval_framework-0.13.0/src/eval_framework/tasks/benchmarks/arc_ellamind.py +0 -72
- eval_framework-0.13.0/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -248
- eval_framework-0.13.0/src/eval_framework/tasks/benchmarks/winogrande.py +0 -162
- {eval_framework-0.13.0 → eval_framework-0.13.2}/LICENSE +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/README.md +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/base_config.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/arc_de.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/copa.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/csqa.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/csqa_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/goldenswag.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/hellaswag.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/hellaswag_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/medqa.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/mmlu.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/piqa.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/piqa_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/sciq.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/simpleqa_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/siqa_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/choices.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/context/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/context/determined.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/context/eval.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/context/local.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/contract.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/eval_kind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/evaluation_generator.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/exceptions.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/drop_process_results.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/ifeval_impl/README.md +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/fewshot.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/aleph_alpha.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/huggingface.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/models.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/llm/openai.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/logger.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/main.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/csv_format.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/f1.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/format_checker.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/ifeval.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/json_format.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/language_checker.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/length_control.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/repetition.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/completion/text_counter.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/efficiency/finish_reason.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/efficiency/token_counters.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/language.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/models.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/llm/utils.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/py.typed +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/result_processors/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/result_processors/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/result_processors/hf_uploader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/result_processors/result_processor.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/run.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/run_direct.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/shared/errors.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/shared/types.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/subjects.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/suite.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/base.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/drop.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/humaneval.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/humaneval_plus.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/benchmarks/squad.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/dataset_revisions.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/lazy.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/markdown_doc.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/registry.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/task_loader.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/tasks/task_style.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/constants.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/file_ops.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/helpers.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/logging.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/packaging.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/utils/tqdm_handler.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/template_formatting/README.md +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/template_formatting/__init__.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/template_formatting/formatter.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.2}/src/template_formatting/mistral_formatter.py +0 -0
- {eval_framework-0.13.0 → eval_framework-0.13.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.13.
|
|
3
|
+
Version: 0.13.2
|
|
4
4
|
Summary: Evaluation Framework
|
|
5
5
|
Author: Aleph Alpha Research
|
|
6
6
|
License: Apache License
|
|
@@ -232,7 +232,7 @@ Requires-Dist: jsonlines>=4,<5
|
|
|
232
232
|
Requires-Dist: lxml>=6.1.3,<7
|
|
233
233
|
Requires-Dist: python-iso639>=2026.7.23
|
|
234
234
|
Requires-Dist: wandb>=0.30.0,<1
|
|
235
|
-
Requires-Dist: boto3>=1.43.
|
|
235
|
+
Requires-Dist: boto3>=1.43.94,<2
|
|
236
236
|
Requires-Dist: numpy>=2.5.3
|
|
237
237
|
Requires-Dist: antlr4-python3-runtime==4.11.0
|
|
238
238
|
Requires-Dist: scipy>=1.18.1,<2
|
|
@@ -241,7 +241,7 @@ Requires-Dist: eval-framework[determined,api,openai,transformers,accelerate,opti
|
|
|
241
241
|
Requires-Dist: aleph-alpha-client>=11.5.1 ; extra == 'api'
|
|
242
242
|
Requires-Dist: determined>=0.38.1,<0.39 ; extra == 'determined'
|
|
243
243
|
Requires-Dist: tensorboard==2.21.0 ; extra == 'determined'
|
|
244
|
-
Requires-Dist: openai>=3.
|
|
244
|
+
Requires-Dist: openai>=3.14.0,<4 ; extra == 'openai'
|
|
245
245
|
Requires-Dist: tiktoken>=0.14.0,<1 ; extra == 'openai'
|
|
246
246
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'openai'
|
|
247
247
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'optional'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "eval-framework"
|
|
3
|
-
version = "0.13.
|
|
3
|
+
version = "0.13.2"
|
|
4
4
|
description = "Evaluation Framework"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12,<3.15"
|
|
@@ -35,7 +35,7 @@ dependencies = [
|
|
|
35
35
|
"lxml>=6.1.3,<7",
|
|
36
36
|
"python-iso639>=2026.7.23",
|
|
37
37
|
"wandb>=0.30.0,<1",
|
|
38
|
-
"boto3>=1.43.
|
|
38
|
+
"boto3>=1.43.94,<2",
|
|
39
39
|
"numpy>=2.5.3",
|
|
40
40
|
"antlr4-python3-runtime==4.11.0",
|
|
41
41
|
"scipy>=1.18.1,<2",
|
|
@@ -54,7 +54,7 @@ determined = [
|
|
|
54
54
|
]
|
|
55
55
|
api = ["aleph-alpha-client>=11.5.1"]
|
|
56
56
|
openai = [
|
|
57
|
-
"openai>=3.
|
|
57
|
+
"openai>=3.14.0,<4",
|
|
58
58
|
"tiktoken>=0.14.0,<1",
|
|
59
59
|
"transformers>=4.45.2,<5",
|
|
60
60
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "eval-framework"
|
|
3
|
-
version = "0.13.
|
|
3
|
+
version = "0.13.2"
|
|
4
4
|
description = "Evaluation Framework"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -39,7 +39,7 @@ dependencies = [
|
|
|
39
39
|
"lxml>=6.1.3,<7",
|
|
40
40
|
"python-iso639>=2026.7.23",
|
|
41
41
|
"wandb>=0.30.0,<1",
|
|
42
|
-
"boto3>=1.43.
|
|
42
|
+
"boto3>=1.43.94,<2",
|
|
43
43
|
"numpy>=2.5.3",
|
|
44
44
|
# is a dependency of sympy, but not explicitly listed in the requirements.txt
|
|
45
45
|
# https://github.com/sympy/sympy/blob/0204fa34e8f6f6f8ccb4de01209be9a2345c9d6e/doc/src/contributing/dependencies.md?plain=1#L125
|
|
@@ -55,7 +55,7 @@ determined = [
|
|
|
55
55
|
]
|
|
56
56
|
api = ["aleph-alpha-client>=11.5.1"]
|
|
57
57
|
openai = [
|
|
58
|
-
"openai>=3.
|
|
58
|
+
"openai>=3.14.0,<4",
|
|
59
59
|
"tiktoken>=0.14.0,<1",
|
|
60
60
|
"transformers>=4.45.2,<5",
|
|
61
61
|
]
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""ARC (AI2 Reasoning Challenge): https://huggingface.co/datasets/allenai/ai2_arc
|
|
2
|
+
|
|
3
|
+
Grade-school science multiple-choice questions, split into the ARC-Easy and ARC-Challenge subjects. The
|
|
4
|
+
base task scores the full answer text (cloze); the OLMES variant shows the options as space-prefixed
|
|
5
|
+
lettered choices and scores the letters; the IDK variant lets the model abstain with "I do not know".
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Any, final, override
|
|
9
|
+
|
|
10
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
11
|
+
from eval_framework.composed import ComposedBenchmark
|
|
12
|
+
from eval_framework.contract import Benchmark
|
|
13
|
+
from eval_framework.subjects import ListOfSubjects
|
|
14
|
+
from eval_framework.tasks.base import Language
|
|
15
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
16
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
17
|
+
from eval_framework.tasks.task_style import ClozeStyle, MCStyle, TaskStyler, answer_key_to_index
|
|
18
|
+
|
|
19
|
+
_IDK_PREAMBLE = (
|
|
20
|
+
"Answer only if you are confident, since mistakes may be penalised, while correct answers receive points. "
|
|
21
|
+
"It is acceptable to answer with 'I do not know' if you are unsure, and you will receive 0 points."
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@final
|
|
26
|
+
class ArcReader(ChoiceReader):
|
|
27
|
+
"""Reads an ARC item: the question and its answer options, with the correct one at ``answerKey`` —
|
|
28
|
+
a letter (A–E) or a 1-based number, both normalised to a 0-based index."""
|
|
29
|
+
|
|
30
|
+
@override
|
|
31
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
32
|
+
return ChoiceFields(
|
|
33
|
+
raw_question=item["question"],
|
|
34
|
+
choices=item["choices"]["text"],
|
|
35
|
+
correct_index=answer_key_to_index(item["answerKey"]),
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _arc_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
40
|
+
dataset_policy = dataset if dataset is not None else pinned_by_framework("allenai/ai2_arc")
|
|
41
|
+
return ComposedBenchmark.choice(
|
|
42
|
+
id=id,
|
|
43
|
+
reader=ArcReader(),
|
|
44
|
+
styler=styler,
|
|
45
|
+
sample_split="test",
|
|
46
|
+
fewshot_split="train",
|
|
47
|
+
subjects=ListOfSubjects(["ARC-Easy", "ARC-Challenge"]),
|
|
48
|
+
dataset_policy=dataset_policy,
|
|
49
|
+
language=Language.ENG,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def arc(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
54
|
+
return _arc_benchmark("ARC", ClozeStyle(question_prefix="Question: ", cue_text="Answer:"), dataset)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def arc_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
58
|
+
styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True)
|
|
59
|
+
return _arc_benchmark("ARC_OLMES", styler, dataset)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def arc_idk(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
63
|
+
styler = ClozeStyle(
|
|
64
|
+
question_prefix="Question: ", cue_text="Answer:", initial_prompt=lambda _subject: _IDK_PREAMBLE
|
|
65
|
+
).with_abstention_option(" I do not know.")
|
|
66
|
+
return _arc_benchmark("ARC_IDK", styler, dataset)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
ARC_BENCHMARKS: list[Benchmark] = [arc(), arc_olmes(), arc_idk()]
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""German ARC (EllaMind): https://huggingface.co/datasets/ellamind/arc-multilingual
|
|
2
|
+
|
|
3
|
+
Grade-school science questions in German. Every slice loads the single German config (``deu``); the
|
|
4
|
+
ARC-Easy and ARC-Challenge subjects are the rows of that config tagged by the ``arc_config`` column. Cloze
|
|
5
|
+
scores the full answer text, MC the letter labels, BPB only the ground-truth answer's bits-per-byte.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Any, final, override
|
|
9
|
+
|
|
10
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
11
|
+
from eval_framework.composed import ComposedBenchmark
|
|
12
|
+
from eval_framework.contract import Benchmark
|
|
13
|
+
from eval_framework.subjects import ListOfSubjects
|
|
14
|
+
from eval_framework.tasks.base import Language
|
|
15
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
16
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
17
|
+
from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, answer_key_to_index
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@final
|
|
21
|
+
class ArcEllamindReader(ChoiceReader):
|
|
22
|
+
"""Reads a German ARC item: the question and its answer options, with the correct one at ``answer_key``
|
|
23
|
+
(a letter A–E or a 1-based number)."""
|
|
24
|
+
|
|
25
|
+
@override
|
|
26
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
27
|
+
return ChoiceFields(
|
|
28
|
+
raw_question=item["question"],
|
|
29
|
+
choices=item["choices"],
|
|
30
|
+
correct_index=answer_key_to_index(item["answer_key"]),
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _arc_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
35
|
+
# ARC-Easy and ARC-Challenge share the single "deu" config, tagged by the ``arc_config`` column.
|
|
36
|
+
source = (
|
|
37
|
+
dataset
|
|
38
|
+
if dataset is not None
|
|
39
|
+
else pinned_by_framework("ellamind/arc-multilingual").subject_encoded_in_column(
|
|
40
|
+
config="deu", column="arc_config"
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
return ComposedBenchmark.choice(
|
|
44
|
+
id=id,
|
|
45
|
+
reader=ArcEllamindReader(),
|
|
46
|
+
styler=styler,
|
|
47
|
+
sample_split="test",
|
|
48
|
+
fewshot_split="test",
|
|
49
|
+
subjects=ListOfSubjects(["ARC-Easy", "ARC-Challenge"]),
|
|
50
|
+
dataset_policy=source,
|
|
51
|
+
language=Language.DEU,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def arc_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
56
|
+
return _arc_ellamind_benchmark("ARC_ELLAMIND_CLOZE_DE", ClozeStyle.for_language(Language.DEU), dataset)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def arc_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
60
|
+
return _arc_ellamind_benchmark("ARC_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def arc_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
64
|
+
return _arc_ellamind_benchmark("ARC_ELLAMIND_BPB_DE", BPBStyle.for_language(Language.DEU), dataset)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
ARC_ELLAMIND_BENCHMARKS: list[Benchmark] = [
|
|
68
|
+
arc_ellamind_cloze_de(),
|
|
69
|
+
arc_ellamind_mc_de(),
|
|
70
|
+
arc_ellamind_bpb_de(),
|
|
71
|
+
]
|
{eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/gpqa_ellamind.py
RENAMED
|
@@ -13,7 +13,7 @@ from eval_framework.composed import ComposedBenchmark
|
|
|
13
13
|
from eval_framework.contract import Benchmark
|
|
14
14
|
from eval_framework.subjects import ListOfSubjects
|
|
15
15
|
from eval_framework.tasks.base import Language
|
|
16
|
-
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
16
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
17
17
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
18
18
|
from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
|
|
19
19
|
|
|
@@ -47,8 +47,15 @@ def _gpqa_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
def _gpqa_ellamind_diamond_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
# The diamond variants keep only the ``is_diamond`` rows of the full dataset.
|
|
51
|
+
source = (
|
|
52
|
+
dataset
|
|
53
|
+
if dataset is not None
|
|
54
|
+
else pinned_by_framework("ellamind/gpqa-multilingual").subset(
|
|
55
|
+
lambda row: row["is_diamond"], description="the diamond subset"
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
return _gpqa_ellamind_benchmark(id, styler, source)
|
|
52
59
|
|
|
53
60
|
|
|
54
61
|
def gpqa_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
{eval_framework-0.13.0 → eval_framework-0.13.2}/src/eval_framework/benchmarks/hle_ellamind.py
RENAMED
|
@@ -13,7 +13,7 @@ from eval_framework.composed import ComposedBenchmark
|
|
|
13
13
|
from eval_framework.contract import Benchmark
|
|
14
14
|
from eval_framework.subjects import ListOfSubjects
|
|
15
15
|
from eval_framework.tasks.base import Language
|
|
16
|
-
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
16
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
17
17
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
18
18
|
from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
|
|
19
19
|
|
|
@@ -47,8 +47,15 @@ def _hle_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
def _hle_ellamind_native_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
# The NATIVE variants keep only the items that are natively multiple-choice in the original benchmark.
|
|
51
|
+
source = (
|
|
52
|
+
dataset
|
|
53
|
+
if dataset is not None
|
|
54
|
+
else pinned_by_framework("ellamind/hle-multilingual").subset(
|
|
55
|
+
lambda row: row["answer_type"] == "multipleChoice", description="the natively multiple-choice items"
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
return _hle_ellamind_benchmark(id, styler, source)
|
|
52
59
|
|
|
53
60
|
|
|
54
61
|
def hle_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"""Social IQa (English): https://huggingface.co/datasets/allenai/social_i_qa
|
|
2
|
+
|
|
3
|
+
Commonsense reasoning about social situations: a context and question with three answer options
|
|
4
|
+
(``answerA``/``answerB``/``answerC``) and a 1-indexed ``label`` marking the correct one. The registered
|
|
5
|
+
variant is OLMES-style: options are shown as space-prefixed lettered choices (" A. …") and the model is
|
|
6
|
+
scored over the letter labels.
|
|
7
|
+
|
|
8
|
+
``allenai/social_i_qa`` ships only a (no-longer-supported) loading script on its main branch, so it cannot
|
|
9
|
+
be loaded by a pinned commit under ``datasets`` >= 4. We load Hugging Face's auto-generated parquet branch
|
|
10
|
+
instead, falling back to the original AI2 Mosaic source if that branch is unavailable.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
import os
|
|
15
|
+
import zipfile
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
from typing import Any, final, override
|
|
18
|
+
from urllib.request import urlretrieve
|
|
19
|
+
|
|
20
|
+
from datasets import Dataset, DatasetDict, DownloadConfig, load_dataset
|
|
21
|
+
|
|
22
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
23
|
+
from eval_framework.composed import ComposedBenchmark
|
|
24
|
+
from eval_framework.contract import Benchmark
|
|
25
|
+
from eval_framework.tasks.base import Language
|
|
26
|
+
from eval_framework.tasks.dataset_loading import DatasetLoader, DatasetPolicy
|
|
27
|
+
from eval_framework.tasks.task_style import MCStyle
|
|
28
|
+
|
|
29
|
+
SOCIAL_I_QA_DATASET_PATH = "allenai/social_i_qa"
|
|
30
|
+
# Hugging Face auto-generates a parquet copy of every dataset on this hidden branch; we load from it
|
|
31
|
+
# because the dataset itself only ships a loading script (unsupported since datasets 4.x) on its main branch.
|
|
32
|
+
_PARQUET_REVISION = "refs/convert/parquet"
|
|
33
|
+
_SOURCE_ZIP_URL = "https://storage.googleapis.com/ai2-mosaic/public/socialiqa/socialiqa-train-dev.zip"
|
|
34
|
+
_ZIP_SUBDIR = "socialiqa-train-dev"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _cache_dir() -> str:
|
|
38
|
+
return os.environ.get("HF_DATASET_CACHE_DIR", f"{Path.home()}/.cache/huggingface/datasets")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _load_from_ai2_source(cache_dir: str) -> DatasetDict:
|
|
42
|
+
"""Rebuild train/validation from AI2 Mosaic's original zip (jsonl rows paired with label files),
|
|
43
|
+
used only if the Hugging Face parquet branch cannot be reached."""
|
|
44
|
+
root = Path(cache_dir) / "social_i_qa_direct"
|
|
45
|
+
extract_dir = root / _ZIP_SUBDIR
|
|
46
|
+
if not extract_dir.exists() or not list(extract_dir.glob("*.jsonl")):
|
|
47
|
+
zip_path = root / "socialiqa-train-dev.zip"
|
|
48
|
+
zip_path.parent.mkdir(parents=True, exist_ok=True)
|
|
49
|
+
if not zip_path.exists():
|
|
50
|
+
urlretrieve(_SOURCE_ZIP_URL, zip_path)
|
|
51
|
+
with zipfile.ZipFile(zip_path, "r") as zf:
|
|
52
|
+
zf.extractall(zip_path.parent)
|
|
53
|
+
|
|
54
|
+
def read_split(jsonl_path: Path, labels_path: Path) -> list[dict[str, Any]]:
|
|
55
|
+
labels = labels_path.read_text(encoding="utf-8").splitlines()
|
|
56
|
+
rows = []
|
|
57
|
+
for idx, line in enumerate(jsonl_path.read_text(encoding="utf-8").splitlines()):
|
|
58
|
+
data = json.loads(line)
|
|
59
|
+
rows.append(
|
|
60
|
+
{
|
|
61
|
+
"context": data["context"],
|
|
62
|
+
"question": data["question"],
|
|
63
|
+
"answerA": data["answerA"],
|
|
64
|
+
"answerB": data["answerB"],
|
|
65
|
+
"answerC": data["answerC"],
|
|
66
|
+
"label": labels[idx].strip(),
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
return rows
|
|
70
|
+
|
|
71
|
+
return DatasetDict(
|
|
72
|
+
{
|
|
73
|
+
"train": Dataset.from_list(read_split(extract_dir / "train.jsonl", extract_dir / "train-labels.lst")),
|
|
74
|
+
"validation": Dataset.from_list(read_split(extract_dir / "dev.jsonl", extract_dir / "dev-labels.lst")),
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@final
|
|
80
|
+
class _SocialIqaLoader(DatasetLoader):
|
|
81
|
+
"""Loads social_i_qa from Hugging Face's parquet branch, falling back to the original AI2 source."""
|
|
82
|
+
|
|
83
|
+
def __init__(self, revision: str) -> None:
|
|
84
|
+
self._revision = revision
|
|
85
|
+
|
|
86
|
+
@override
|
|
87
|
+
def load(self, name: str | None) -> DatasetDict:
|
|
88
|
+
cache_dir = _cache_dir()
|
|
89
|
+
try:
|
|
90
|
+
return load_dataset(
|
|
91
|
+
SOCIAL_I_QA_DATASET_PATH,
|
|
92
|
+
revision=self._revision,
|
|
93
|
+
cache_dir=cache_dir,
|
|
94
|
+
download_config=DownloadConfig(cache_dir=cache_dir, max_retries=5),
|
|
95
|
+
)
|
|
96
|
+
except Exception:
|
|
97
|
+
return _load_from_ai2_source(cache_dir)
|
|
98
|
+
|
|
99
|
+
@override
|
|
100
|
+
def metadata(self) -> dict[str, str]:
|
|
101
|
+
return {"dataset_path": SOCIAL_I_QA_DATASET_PATH}
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
@final
|
|
105
|
+
class _SocialIqaDataset(DatasetPolicy):
|
|
106
|
+
"""social_i_qa's data policy — see the module docstring for why it can't use a plain ``Pinned``."""
|
|
107
|
+
|
|
108
|
+
@override
|
|
109
|
+
def loader(self, custom_hf_revision: str | None) -> DatasetLoader:
|
|
110
|
+
return _SocialIqaLoader(custom_hf_revision or _PARQUET_REVISION)
|
|
111
|
+
|
|
112
|
+
@override
|
|
113
|
+
def documentation(self) -> str:
|
|
114
|
+
url = f"https://huggingface.co/datasets/{SOCIAL_I_QA_DATASET_PATH}"
|
|
115
|
+
return (
|
|
116
|
+
f"- Link to dataset: [{url}]({url})\n"
|
|
117
|
+
"- This dataset ships only a loading script on its `main` branch, which newer `datasets` versions no "
|
|
118
|
+
f"longer support; it is therefore loaded from Hugging Face's auto-generated parquet branch "
|
|
119
|
+
f"`{_PARQUET_REVISION}` instead."
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@final
|
|
124
|
+
class SocialIqaReader(ChoiceReader):
|
|
125
|
+
"""Reads a Social IQa item: the shown question is the context followed by the question, with the correct
|
|
126
|
+
option at the 1-indexed ``label``."""
|
|
127
|
+
|
|
128
|
+
@override
|
|
129
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
130
|
+
return ChoiceFields(
|
|
131
|
+
raw_question=f"{item['context']} {item['question']}".strip(),
|
|
132
|
+
choices=[item["answerA"], item["answerB"], item["answerC"]],
|
|
133
|
+
correct_index=int(item["label"]) - 1,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def social_iqa_mc_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
138
|
+
styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True)
|
|
139
|
+
dataset_policy = dataset if dataset is not None else _SocialIqaDataset()
|
|
140
|
+
return ComposedBenchmark.choice(
|
|
141
|
+
id="SocialIQAMC_OLMES",
|
|
142
|
+
reader=SocialIqaReader(),
|
|
143
|
+
styler=styler,
|
|
144
|
+
sample_split="train",
|
|
145
|
+
fewshot_split="train",
|
|
146
|
+
dataset_policy=dataset_policy,
|
|
147
|
+
language=Language.ENG,
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
SOCIAL_IQA_BENCHMARKS: list[Benchmark] = [social_iqa_mc_olmes()]
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Winogrande: https://huggingface.co/datasets/allenai/winogrande
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
shared suffix under each option-augmented prefix.
|
|
3
|
+
Pronoun-resolution sentences with a blank ``_`` filled by ``option1`` or ``option2``; ``answer`` selects
|
|
4
|
+
the correct one. The registered task uses partial evaluation: each item becomes two samples that score the
|
|
5
|
+
shared sentence suffix under each option-augmented prefix — ``p(suffix | prefix + option)``. ``WinograndeReader``
|
|
6
|
+
and ``PartialEval`` live here and are reused by the multilingual EllaMind variants.
|
|
8
7
|
"""
|
|
9
8
|
|
|
10
9
|
from typing import TYPE_CHECKING, Any, final, override
|
|
@@ -20,7 +19,7 @@ from eval_framework.subjects import ListOfSubjects
|
|
|
20
19
|
from eval_framework.tasks.base import Language
|
|
21
20
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
22
21
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
23
|
-
from eval_framework.tasks.task_style import ClozeStyle
|
|
22
|
+
from eval_framework.tasks.task_style import ClozeStyle
|
|
24
23
|
from template_formatting.formatter import Message
|
|
25
24
|
|
|
26
25
|
if TYPE_CHECKING:
|
|
@@ -99,48 +98,21 @@ class PartialEval(EvalKind):
|
|
|
99
98
|
return completion_text # partial evaluation is scored by loglikelihood; no completion path
|
|
100
99
|
|
|
101
100
|
|
|
102
|
-
def
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def _winogrande_choice(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
107
|
-
return ComposedBenchmark.choice(
|
|
108
|
-
id=id,
|
|
109
|
-
reader=WinograndeReader(),
|
|
110
|
-
styler=styler,
|
|
111
|
-
sample_split="validation",
|
|
112
|
-
fewshot_split="validation",
|
|
113
|
-
subjects=ListOfSubjects(["deu"]),
|
|
114
|
-
dataset_policy=_winogrande_dataset(dataset),
|
|
115
|
-
language=Language.DEU,
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
def winogrande_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
120
|
-
styler = ClozeStyle(question_prefix="", trailing_newline=False, cue_text="")
|
|
121
|
-
return _winogrande_choice("WINOGRANDE_ELLAMIND_CLOZE_DE", styler, dataset)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def winogrande_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
125
|
-
return _winogrande_choice("WINOGRANDE_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
def winogrande_ellamind_partial_eval_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
129
|
-
# Partial evaluation scores the suffix directly; its few-shot demonstrations render as ordinary cloze.
|
|
101
|
+
def winogrande_cloze(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
102
|
+
# "Cloze" is the registered name, but the task is partial evaluation; its few-shot demonstrations
|
|
103
|
+
# render as ordinary cloze (the prefix, then the correct option + suffix).
|
|
130
104
|
fewshot_styler = ClozeStyle(question_prefix="", trailing_newline=False, cue_text="")
|
|
105
|
+
dataset_policy = dataset if dataset is not None else pinned_by_framework("allenai/winogrande")
|
|
131
106
|
return ComposedBenchmark.compose(
|
|
132
|
-
id="
|
|
107
|
+
id="WINOGRANDECloze",
|
|
108
|
+
display_name="WinograndeCloze",
|
|
133
109
|
kind=PartialEval(),
|
|
134
|
-
sample_split="
|
|
135
|
-
fewshot=SampledFewShot(WinograndeReader(), fewshot_styler, "
|
|
136
|
-
subjects=ListOfSubjects(["
|
|
137
|
-
dataset_policy=
|
|
138
|
-
language=Language.
|
|
110
|
+
sample_split="train",
|
|
111
|
+
fewshot=SampledFewShot(WinograndeReader(), fewshot_styler, "train"),
|
|
112
|
+
subjects=ListOfSubjects(["winogrande_xl"]),
|
|
113
|
+
dataset_policy=dataset_policy,
|
|
114
|
+
language=Language.ENG,
|
|
139
115
|
)
|
|
140
116
|
|
|
141
117
|
|
|
142
|
-
|
|
143
|
-
winogrande_ellamind_cloze_de(),
|
|
144
|
-
winogrande_ellamind_mc_de(),
|
|
145
|
-
winogrande_ellamind_partial_eval_de(),
|
|
146
|
-
]
|
|
118
|
+
WINOGRANDE_BENCHMARKS: list[Benchmark] = [winogrande_cloze()]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""German Winogrande (EllaMind) tasks.
|
|
2
|
+
|
|
3
|
+
https://huggingface.co/datasets/ellamind/winogrande-multilingual
|
|
4
|
+
|
|
5
|
+
The sentence contains a blank ``_`` filled by ``option1`` or ``option2``; ``answer`` selects the correct
|
|
6
|
+
one. Cloze and MC score the two full "option + suffix" completions; partial evaluation instead scores the
|
|
7
|
+
shared suffix under each option-augmented prefix.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from eval_framework.benchmarks.winogrande import PartialEval, WinograndeReader
|
|
11
|
+
from eval_framework.composed import ComposedBenchmark
|
|
12
|
+
from eval_framework.contract import Benchmark
|
|
13
|
+
from eval_framework.fewshot import SampledFewShot
|
|
14
|
+
from eval_framework.subjects import ListOfSubjects
|
|
15
|
+
from eval_framework.tasks.base import Language
|
|
16
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
17
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
18
|
+
from eval_framework.tasks.task_style import ClozeStyle, MCStyle, TaskStyler
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _winogrande_dataset(dataset: DatasetPolicy | None) -> DatasetPolicy:
|
|
22
|
+
return dataset if dataset is not None else pinned_by_framework("ellamind/winogrande-multilingual")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _winogrande_choice(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
26
|
+
return ComposedBenchmark.choice(
|
|
27
|
+
id=id,
|
|
28
|
+
reader=WinograndeReader(),
|
|
29
|
+
styler=styler,
|
|
30
|
+
sample_split="validation",
|
|
31
|
+
fewshot_split="validation",
|
|
32
|
+
subjects=ListOfSubjects(["deu"]),
|
|
33
|
+
dataset_policy=_winogrande_dataset(dataset),
|
|
34
|
+
language=Language.DEU,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def winogrande_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
39
|
+
styler = ClozeStyle(question_prefix="", trailing_newline=False, cue_text="")
|
|
40
|
+
return _winogrande_choice("WINOGRANDE_ELLAMIND_CLOZE_DE", styler, dataset)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def winogrande_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
44
|
+
return _winogrande_choice("WINOGRANDE_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def winogrande_ellamind_partial_eval_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
48
|
+
# Partial evaluation scores the suffix directly; its few-shot demonstrations render as ordinary cloze.
|
|
49
|
+
fewshot_styler = ClozeStyle(question_prefix="", trailing_newline=False, cue_text="")
|
|
50
|
+
return ComposedBenchmark.compose(
|
|
51
|
+
id="WINOGRANDE_ELLAMIND_PARTIAL_EVAL_DE",
|
|
52
|
+
kind=PartialEval(),
|
|
53
|
+
sample_split="validation",
|
|
54
|
+
fewshot=SampledFewShot(WinograndeReader(), fewshot_styler, "validation"),
|
|
55
|
+
subjects=ListOfSubjects(["deu"]),
|
|
56
|
+
dataset_policy=_winogrande_dataset(dataset),
|
|
57
|
+
language=Language.DEU,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
WINOGRANDE_ELLAMIND_BENCHMARKS: list[Benchmark] = [
|
|
62
|
+
winogrande_ellamind_cloze_de(),
|
|
63
|
+
winogrande_ellamind_mc_de(),
|
|
64
|
+
winogrande_ellamind_partial_eval_de(),
|
|
65
|
+
]
|
|
@@ -5,8 +5,6 @@ import typing
|
|
|
5
5
|
from collections.abc import Iterable, Sequence
|
|
6
6
|
from typing import TYPE_CHECKING, Any, Self, final, override
|
|
7
7
|
|
|
8
|
-
from datasets import DatasetDict
|
|
9
|
-
|
|
10
8
|
from eval_framework.choices import ChoiceReader
|
|
11
9
|
from eval_framework.contract import Benchmark, Eval, ResponseType, Sample
|
|
12
10
|
from eval_framework.eval_kind import Choice, EvalKind, SampleBody
|
|
@@ -63,26 +61,19 @@ class ComposedEval(Eval):
|
|
|
63
61
|
self.language = language
|
|
64
62
|
self.rnd = rnd
|
|
65
63
|
|
|
66
|
-
def
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
for split, data in hf_dataset.items():
|
|
70
|
-
if split not in {self.sample_split, self._fewshot.split()}:
|
|
71
|
-
continue
|
|
72
|
-
|
|
73
|
-
data_list = list(data)
|
|
64
|
+
def _load_dataset(self, load_key: str | None) -> dict[str, list[dict[str, Any]]]:
|
|
65
|
+
hf_dataset = self.loader.load(load_key)
|
|
74
66
|
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
sample_rows = list(hf_dataset[self.sample_split])
|
|
68
|
+
self.rnd.shuffle(sample_rows)
|
|
69
|
+
dataset = {self.sample_split: sample_rows}
|
|
77
70
|
|
|
78
|
-
|
|
71
|
+
fewshot_split = self._fewshot.split()
|
|
72
|
+
if self.num_fewshot > 0 and fewshot_split is not None and fewshot_split != self.sample_split:
|
|
73
|
+
dataset[fewshot_split] = list(hf_dataset[fewshot_split])
|
|
79
74
|
|
|
80
75
|
return dataset
|
|
81
76
|
|
|
82
|
-
def _load_dataset(self, load_key: str | None) -> dict[str, list[dict[str, Any]]]:
|
|
83
|
-
hf_dataset = self.loader.load(load_key)
|
|
84
|
-
return self._shuffle_splits(hf_dataset=hf_dataset)
|
|
85
|
-
|
|
86
77
|
@override
|
|
87
78
|
def iterate_samples(self, num_samples: int | None = None) -> Iterable[Sample]:
|
|
88
79
|
for subject in self._subjects:
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Minerva-style MATH completion metric: exact_match and exact_match_flex.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
6
|
+
|
|
5
7
|
from eval_framework.metrics.aggregators.aggregators import PassAtK
|
|
6
8
|
from eval_framework.metrics.base import BaseMetric, MetricResult
|
|
7
9
|
from eval_framework.metrics.completion.minerva_math_utils import (
|
|
@@ -11,6 +13,8 @@ from eval_framework.metrics.completion.minerva_math_utils import (
|
|
|
11
13
|
)
|
|
12
14
|
from eval_framework.shared.types import Completion
|
|
13
15
|
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
14
18
|
|
|
15
19
|
class MathMinervaCompletion(BaseMetric[Completion]):
|
|
16
20
|
"""
|
|
@@ -73,6 +77,8 @@ class MathMinervaCompletion(BaseMetric[Completion]):
|
|
|
73
77
|
cot_style=self.cot_style,
|
|
74
78
|
relaxed=self.relaxed,
|
|
75
79
|
)
|
|
80
|
+
# Grading can be killed by the pod's memory limit; the last line seen names the sample.
|
|
81
|
+
logger.info("Grading %s_%s gold=%r candidates=%r", response.subject, response.id, gold, all_candidates)
|
|
76
82
|
|
|
77
83
|
exact_match = 0.0
|
|
78
84
|
if all_candidates:
|