eval-framework 0.12.0__tar.gz → 0.13.0__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.12.0 → eval_framework-0.13.0}/PKG-INFO +1 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/pyproject.toml +1 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/pyproject.toml.orig +1 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/arc_de.py +3 -4
- eval_framework-0.13.0/src/eval_framework/benchmarks/copa.py +59 -0
- eval_framework-0.13.0/src/eval_framework/benchmarks/csqa.py +46 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/csqa_ellamind.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/goldenswag.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/gpqa_ellamind.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/hellaswag.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/hellaswag_ellamind.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/hle_ellamind.py +3 -4
- eval_framework-0.13.0/src/eval_framework/benchmarks/medqa.py +45 -0
- eval_framework-0.13.0/src/eval_framework/benchmarks/mmlu.py +266 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/piqa.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/piqa_ellamind.py +3 -4
- eval_framework-0.13.0/src/eval_framework/benchmarks/sciq.py +50 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/simpleqa_ellamind.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/siqa_ellamind.py +3 -4
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/winogrande_ellamind.py +53 -23
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/composed.py +69 -44
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/eval_kind.py +52 -18
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/evaluation_generator.py +63 -32
- eval_framework-0.13.0/src/eval_framework/fewshot.py +150 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/base.py +3 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/base.py +4 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/bigcodebench.py +3 -32
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/global_mmlu.py +1 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +42 -2
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +26 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/registry.py +1 -1
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/task_names.py +15 -7
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/utils.py +20 -0
- eval_framework-0.12.0/src/eval_framework/benchmarks/mmlu.py +0 -116
- eval_framework-0.12.0/src/eval_framework/tasks/benchmarks/copa.py +0 -119
- eval_framework-0.12.0/src/eval_framework/tasks/benchmarks/csqa.py +0 -116
- eval_framework-0.12.0/src/eval_framework/tasks/benchmarks/medqa.py +0 -101
- eval_framework-0.12.0/src/eval_framework/tasks/benchmarks/mmlu.py +0 -175
- eval_framework-0.12.0/src/eval_framework/tasks/benchmarks/sciq.py +0 -165
- {eval_framework-0.12.0 → eval_framework-0.13.0}/LICENSE +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/README.md +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/base_config.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/choices.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/context/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/context/determined.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/context/eval.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/context/local.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/contract.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/exceptions.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/drop_process_results.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/ifeval_impl/README.md +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/aleph_alpha.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/base.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/huggingface.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/models.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/llm/openai.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/logger.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/main.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/csv_format.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/f1.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/format_checker.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/ifeval.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/json_format.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/language_checker.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/length_control.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/repetition.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/completion/text_counter.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/efficiency/finish_reason.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/efficiency/token_counters.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/language.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/models.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/llm/utils.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/py.typed +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/response_generator.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/result_processors/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/result_processors/base.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/result_processors/hf_uploader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/result_processors/result_processor.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/run.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/run_direct.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/shared/errors.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/shared/types.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/subjects.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/suite.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/base.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/arc.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/arc_ellamind.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/drop.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/humaneval.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/humaneval_plus.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/squad.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/benchmarks/winogrande.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/dataset_loading.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/dataset_revisions.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/eval_config.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/hf-dataset-revisions.json +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/lazy.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/markdown_doc.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/task_loader.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/tasks/task_style.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/constants.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/file_ops.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/helpers.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/logging.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/packaging.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/utils/tqdm_handler.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/template_formatting/README.md +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/template_formatting/__init__.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/template_formatting/formatter.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/template_formatting/mistral_formatter.py +0 -0
- {eval_framework-0.12.0 → eval_framework-0.13.0}/src/template_formatting/py.typed +0 -0
|
@@ -5,7 +5,6 @@ from typing import Any, final, override
|
|
|
5
5
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
6
6
|
from eval_framework.composed import ComposedBenchmark
|
|
7
7
|
from eval_framework.contract import Benchmark
|
|
8
|
-
from eval_framework.eval_kind import Choice
|
|
9
8
|
from eval_framework.tasks.base import Language
|
|
10
9
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
11
10
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
@@ -34,12 +33,12 @@ def arc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
|
34
33
|
|
|
35
34
|
https://huggingface.co/datasets/LeoLM/ArcChallenge_de
|
|
36
35
|
"""
|
|
37
|
-
kind = Choice(reader=ArcDeReader(), styler=ClozeStyle(question_prefix="Frage: ", cue_text="Antwort:"))
|
|
38
36
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("LeoLM/ArcChallenge_de")
|
|
39
|
-
return ComposedBenchmark.
|
|
37
|
+
return ComposedBenchmark.choice(
|
|
40
38
|
id="ARC_DE",
|
|
41
39
|
display_name="ARC German",
|
|
42
|
-
|
|
40
|
+
reader=ArcDeReader(),
|
|
41
|
+
styler=ClozeStyle(question_prefix="Frage: ", cue_text="Antwort:"),
|
|
43
42
|
sample_split="test",
|
|
44
43
|
fewshot_split="validation",
|
|
45
44
|
dataset_policy=dataset_policy,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"""COPA (Choice of Plausible Alternatives): https://huggingface.co/datasets/aps/super_glue
|
|
2
|
+
|
|
3
|
+
Causal-reasoning items: a premise, a cause/effect cue, and two alternatives. The registered variant is
|
|
4
|
+
OLMES-style: the premise is recast as a sentence stem (its final period replaced by the causal connector),
|
|
5
|
+
the two alternatives are shown as space-prefixed lettered options (" A. …"), and the model is scored over
|
|
6
|
+
the letter labels. The prompt carries no assistant cue — the options directly continue the stem.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import Any, final, override
|
|
10
|
+
|
|
11
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
12
|
+
from eval_framework.composed import ComposedBenchmark
|
|
13
|
+
from eval_framework.contract import Benchmark
|
|
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 MCStyle
|
|
19
|
+
|
|
20
|
+
# The premise becomes a sentence stem: its trailing period is replaced by the causal connector, so each
|
|
21
|
+
# alternative continues it (e.g. "The man broke his toe because" + " he dropped a hammer on it.").
|
|
22
|
+
_COPA_CONNECTOR = {"cause": "because", "effect": "therefore"}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _decapitalize(text: str) -> str:
|
|
26
|
+
return text[0].lower() + text[1:]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@final
|
|
30
|
+
class CopaReader(ChoiceReader):
|
|
31
|
+
"""Reads a COPA item: the premise recast as a stem (final period → connector) and its two alternatives,
|
|
32
|
+
each lower-cased to continue the stem."""
|
|
33
|
+
|
|
34
|
+
@override
|
|
35
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
36
|
+
premise = item["premise"].strip()[:-1] + f" {_COPA_CONNECTOR[item['question']]}"
|
|
37
|
+
return ChoiceFields(
|
|
38
|
+
raw_question=premise,
|
|
39
|
+
choices=[_decapitalize(item["choice1"]), _decapitalize(item["choice2"])],
|
|
40
|
+
correct_index=item["label"],
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def copa_mc_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
45
|
+
styler = MCStyle(question_prefix="", cue_text="", space_prefixed_labels=True)
|
|
46
|
+
dataset_policy = dataset if dataset is not None else pinned_by_framework("aps/super_glue")
|
|
47
|
+
return ComposedBenchmark.choice(
|
|
48
|
+
id="COPA_OLMES",
|
|
49
|
+
reader=CopaReader(),
|
|
50
|
+
styler=styler,
|
|
51
|
+
sample_split="validation",
|
|
52
|
+
fewshot_split="test",
|
|
53
|
+
subjects=ListOfSubjects(["copa"]),
|
|
54
|
+
dataset_policy=dataset_policy,
|
|
55
|
+
language=Language.ENG,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
COPA_BENCHMARKS: list[Benchmark] = [copa_mc_olmes()]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""CommonsenseQA (English): https://huggingface.co/datasets/tau/commonsense_qa
|
|
2
|
+
|
|
3
|
+
Five-way multiple-choice commonsense questions. The registered variant is OLMES-style: the options are
|
|
4
|
+
shown as space-prefixed lettered choices (" A. …") and the model is scored over the letter labels.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Any, final, override
|
|
8
|
+
|
|
9
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
10
|
+
from eval_framework.composed import ComposedBenchmark
|
|
11
|
+
from eval_framework.contract import Benchmark
|
|
12
|
+
from eval_framework.tasks.base import Language
|
|
13
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
14
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
15
|
+
from eval_framework.tasks.task_style import MCStyle
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@final
|
|
19
|
+
class CommonsenseQaReader(ChoiceReader):
|
|
20
|
+
"""Reads a CommonsenseQA item: the question and its labelled options, with the correct one at ``answerKey``."""
|
|
21
|
+
|
|
22
|
+
@override
|
|
23
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
24
|
+
labels = item["choices"]["label"]
|
|
25
|
+
return ChoiceFields(
|
|
26
|
+
raw_question=item["question"],
|
|
27
|
+
choices=item["choices"]["text"],
|
|
28
|
+
correct_index=labels.index(item["answerKey"]),
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def csqa_mc_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
33
|
+
styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True)
|
|
34
|
+
dataset_policy = dataset if dataset is not None else pinned_by_framework("tau/commonsense_qa")
|
|
35
|
+
return ComposedBenchmark.choice(
|
|
36
|
+
id="CommonsenseQAMC_OLMES",
|
|
37
|
+
reader=CommonsenseQaReader(),
|
|
38
|
+
styler=styler,
|
|
39
|
+
sample_split="train",
|
|
40
|
+
fewshot_split="train",
|
|
41
|
+
dataset_policy=dataset_policy,
|
|
42
|
+
language=Language.ENG,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
CSQA_BENCHMARKS: list[Benchmark] = [csqa_mc_olmes()]
|
{eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/csqa_ellamind.py
RENAMED
|
@@ -10,7 +10,6 @@ from typing import Any, Literal, final, override
|
|
|
10
10
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
11
11
|
from eval_framework.composed import ComposedBenchmark
|
|
12
12
|
from eval_framework.contract import Benchmark
|
|
13
|
-
from eval_framework.eval_kind import Choice
|
|
14
13
|
from eval_framework.subjects import ListOfSubjects
|
|
15
14
|
from eval_framework.tasks.base import Language
|
|
16
15
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
@@ -39,11 +38,11 @@ class CsqaReader(ChoiceReader):
|
|
|
39
38
|
def _csqa_ellamind_benchmark(
|
|
40
39
|
id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
|
|
41
40
|
) -> Benchmark:
|
|
42
|
-
kind = Choice(reader=CsqaReader(distractor_level), styler=styler)
|
|
43
41
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/csqa-multilingual")
|
|
44
|
-
return ComposedBenchmark.
|
|
42
|
+
return ComposedBenchmark.choice(
|
|
45
43
|
id=id,
|
|
46
|
-
|
|
44
|
+
reader=CsqaReader(distractor_level),
|
|
45
|
+
styler=styler,
|
|
47
46
|
sample_split="validation",
|
|
48
47
|
fewshot_split="validation",
|
|
49
48
|
subjects=ListOfSubjects(["deu"]),
|
|
@@ -7,7 +7,6 @@ A curated subset of HellaSwag, read identically (sentence completion, scored as
|
|
|
7
7
|
from eval_framework.benchmarks.hellaswag import HellaswagReader
|
|
8
8
|
from eval_framework.composed import ComposedBenchmark
|
|
9
9
|
from eval_framework.contract import Benchmark
|
|
10
|
-
from eval_framework.eval_kind import Choice
|
|
11
10
|
from eval_framework.tasks.base import Language
|
|
12
11
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
13
12
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
@@ -21,11 +20,11 @@ _IDK_PREAMBLE = (
|
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
def _goldenswag_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
24
|
-
kind = Choice(reader=HellaswagReader(), styler=styler)
|
|
25
23
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("PleIAs/GoldenSwag")
|
|
26
|
-
return ComposedBenchmark.
|
|
24
|
+
return ComposedBenchmark.choice(
|
|
27
25
|
id=id,
|
|
28
|
-
|
|
26
|
+
reader=HellaswagReader(),
|
|
27
|
+
styler=styler,
|
|
29
28
|
sample_split="validation",
|
|
30
29
|
fewshot_split="validation",
|
|
31
30
|
dataset_policy=dataset_policy,
|
{eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/gpqa_ellamind.py
RENAMED
|
@@ -11,7 +11,6 @@ from typing import Any, final, override
|
|
|
11
11
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
12
12
|
from eval_framework.composed import ComposedBenchmark
|
|
13
13
|
from eval_framework.contract import Benchmark
|
|
14
|
-
from eval_framework.eval_kind import Choice
|
|
15
14
|
from eval_framework.subjects import ListOfSubjects
|
|
16
15
|
from eval_framework.tasks.base import Language
|
|
17
16
|
from eval_framework.tasks.dataset_loading import DatasetPolicy, Subset
|
|
@@ -34,11 +33,11 @@ class GpqaReader(ChoiceReader):
|
|
|
34
33
|
|
|
35
34
|
|
|
36
35
|
def _gpqa_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
37
|
-
kind = Choice(reader=GpqaReader(), styler=styler)
|
|
38
36
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/gpqa-multilingual")
|
|
39
|
-
return ComposedBenchmark.
|
|
37
|
+
return ComposedBenchmark.choice(
|
|
40
38
|
id=id,
|
|
41
|
-
|
|
39
|
+
reader=GpqaReader(),
|
|
40
|
+
styler=styler,
|
|
42
41
|
sample_split="train",
|
|
43
42
|
fewshot_split="train",
|
|
44
43
|
subjects=ListOfSubjects(["deu"]),
|
|
@@ -12,7 +12,6 @@ from typing import Any, final, override
|
|
|
12
12
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
13
13
|
from eval_framework.composed import ComposedBenchmark
|
|
14
14
|
from eval_framework.contract import Benchmark
|
|
15
|
-
from eval_framework.eval_kind import Choice
|
|
16
15
|
from eval_framework.tasks.base import Language
|
|
17
16
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
18
17
|
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
@@ -47,11 +46,11 @@ class HellaswagReader(ChoiceReader):
|
|
|
47
46
|
def _hellaswag_benchmark(
|
|
48
47
|
id: str, *, sample_split: str, fewshot_split: str, dataset: DatasetPolicy | None = None
|
|
49
48
|
) -> Benchmark:
|
|
50
|
-
kind = Choice(reader=HellaswagReader(), styler=ClozeStyle(question_prefix="", cue_text="", trailing_newline=False))
|
|
51
49
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("Rowan/hellaswag")
|
|
52
|
-
return ComposedBenchmark.
|
|
50
|
+
return ComposedBenchmark.choice(
|
|
53
51
|
id=id,
|
|
54
|
-
|
|
52
|
+
reader=HellaswagReader(),
|
|
53
|
+
styler=ClozeStyle(question_prefix="", cue_text="", trailing_newline=False),
|
|
55
54
|
sample_split=sample_split,
|
|
56
55
|
fewshot_split=fewshot_split,
|
|
57
56
|
dataset_policy=dataset_policy,
|
{eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/hellaswag_ellamind.py
RENAMED
|
@@ -12,7 +12,6 @@ from typing import Any, Literal, final, override
|
|
|
12
12
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
13
13
|
from eval_framework.composed import ComposedBenchmark
|
|
14
14
|
from eval_framework.contract import Benchmark
|
|
15
|
-
from eval_framework.eval_kind import Choice
|
|
16
15
|
from eval_framework.subjects import ListOfSubjects
|
|
17
16
|
from eval_framework.tasks.base import Language
|
|
18
17
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
@@ -46,11 +45,11 @@ class HellaswagReader(ChoiceReader):
|
|
|
46
45
|
def _hellaswag_ellamind_benchmark(
|
|
47
46
|
id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
|
|
48
47
|
) -> Benchmark:
|
|
49
|
-
kind = Choice(reader=HellaswagReader(distractor_level), styler=styler)
|
|
50
48
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/hellaswag-multilingual")
|
|
51
|
-
return ComposedBenchmark.
|
|
49
|
+
return ComposedBenchmark.choice(
|
|
52
50
|
id=id,
|
|
53
|
-
|
|
51
|
+
reader=HellaswagReader(distractor_level),
|
|
52
|
+
styler=styler,
|
|
54
53
|
sample_split="validation",
|
|
55
54
|
fewshot_split="validation",
|
|
56
55
|
subjects=ListOfSubjects(["deu"]),
|
{eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/hle_ellamind.py
RENAMED
|
@@ -11,7 +11,6 @@ from typing import Any, final, override
|
|
|
11
11
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
12
12
|
from eval_framework.composed import ComposedBenchmark
|
|
13
13
|
from eval_framework.contract import Benchmark
|
|
14
|
-
from eval_framework.eval_kind import Choice
|
|
15
14
|
from eval_framework.subjects import ListOfSubjects
|
|
16
15
|
from eval_framework.tasks.base import Language
|
|
17
16
|
from eval_framework.tasks.dataset_loading import DatasetPolicy, Subset
|
|
@@ -34,11 +33,11 @@ class HleReader(ChoiceReader):
|
|
|
34
33
|
|
|
35
34
|
|
|
36
35
|
def _hle_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
37
|
-
kind = Choice(reader=HleReader(), styler=styler)
|
|
38
36
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/hle-multilingual")
|
|
39
|
-
return ComposedBenchmark.
|
|
37
|
+
return ComposedBenchmark.choice(
|
|
40
38
|
id=id,
|
|
41
|
-
|
|
39
|
+
reader=HleReader(),
|
|
40
|
+
styler=styler,
|
|
42
41
|
sample_split="test",
|
|
43
42
|
fewshot_split="test",
|
|
44
43
|
subjects=ListOfSubjects(["deu"]),
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""MedQA (English): https://huggingface.co/datasets/davidheineman/medqa-en
|
|
2
|
+
|
|
3
|
+
Multiple-choice questions from medical licensing exams. The registered variant is OLMES-style: the options
|
|
4
|
+
are shown as space-prefixed lettered choices (" A. …") and the model is scored over the letter labels.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Any, final, override
|
|
8
|
+
|
|
9
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
10
|
+
from eval_framework.composed import ComposedBenchmark
|
|
11
|
+
from eval_framework.contract import Benchmark
|
|
12
|
+
from eval_framework.tasks.base import Language
|
|
13
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
14
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
15
|
+
from eval_framework.tasks.task_style import MCStyle
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@final
|
|
19
|
+
class MedqaReader(ChoiceReader):
|
|
20
|
+
"""Reads a MedQA item: the exam question and its options, with the correct one at ``answer_idx``."""
|
|
21
|
+
|
|
22
|
+
@override
|
|
23
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
24
|
+
return ChoiceFields(
|
|
25
|
+
raw_question=item["question"],
|
|
26
|
+
choices=item["choices"],
|
|
27
|
+
correct_index=int(item["answer_idx"]),
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def medqa_mc_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
32
|
+
styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True)
|
|
33
|
+
dataset_policy = dataset if dataset is not None else pinned_by_framework("davidheineman/medqa-en")
|
|
34
|
+
return ComposedBenchmark.choice(
|
|
35
|
+
id="MedQAMC_OLMES",
|
|
36
|
+
reader=MedqaReader(),
|
|
37
|
+
styler=styler,
|
|
38
|
+
sample_split="test",
|
|
39
|
+
fewshot_split="train",
|
|
40
|
+
dataset_policy=dataset_policy,
|
|
41
|
+
language=Language.ENG,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
MEDQA_BENCHMARKS: list[Benchmark] = [medqa_mc_olmes()]
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"""MMLU: https://huggingface.co/datasets/cais/mmlu
|
|
2
|
+
|
|
3
|
+
Multiple-choice knowledge questions across 57 subjects (each an HF config, loaded per subject); every
|
|
4
|
+
prompt is prefaced by a subject-templated preamble. The composed variants:
|
|
5
|
+
|
|
6
|
+
* ``MMLU`` / ``MMLU_OLMES`` — score the letter labels; OLMES adds a space before each option label.
|
|
7
|
+
* ``Full Text MMLU`` — shows the options as a bulleted list and scores the full answer text.
|
|
8
|
+
* ``MMLU_IDK`` — lets the model abstain with ``"?"`` and reports confidence-aware metrics.
|
|
9
|
+
* ``MMLU_COT`` — the model reasons freely and concludes with the answer, which is regex-extracted from
|
|
10
|
+
the generation (free-form completion, 0-shot).
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import re
|
|
14
|
+
from typing import TYPE_CHECKING, Any, final, override
|
|
15
|
+
|
|
16
|
+
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
17
|
+
from eval_framework.composed import ComposedBenchmark
|
|
18
|
+
from eval_framework.contract import Benchmark, ResponseType
|
|
19
|
+
from eval_framework.eval_kind import EvalKind, SampleBody
|
|
20
|
+
from eval_framework.fewshot import NoFewShot
|
|
21
|
+
from eval_framework.metrics.completion.accuracy_completion import AccuracyCompletion
|
|
22
|
+
from eval_framework.shared.types import BaseMetricContext
|
|
23
|
+
from eval_framework.subjects import ListOfSubjects
|
|
24
|
+
from eval_framework.tasks.base import Language
|
|
25
|
+
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
26
|
+
from eval_framework.tasks.dataset_revisions import pinned_by_framework
|
|
27
|
+
from eval_framework.tasks.task_style import ClozeStyle, MCStyle, TaskStyler
|
|
28
|
+
from eval_framework.tasks.utils import get_n_letters
|
|
29
|
+
from template_formatting.formatter import Message
|
|
30
|
+
|
|
31
|
+
if TYPE_CHECKING:
|
|
32
|
+
from eval_framework.metrics.base import BaseMetric
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# The 57 MMLU subjects; each is an HF config of ``cais/mmlu`` (also reused by GlobalMMLU).
|
|
36
|
+
MMLU_SUBJECTS = [
|
|
37
|
+
"abstract_algebra",
|
|
38
|
+
"anatomy",
|
|
39
|
+
"astronomy",
|
|
40
|
+
"business_ethics",
|
|
41
|
+
"clinical_knowledge",
|
|
42
|
+
"college_biology",
|
|
43
|
+
"college_chemistry",
|
|
44
|
+
"college_computer_science",
|
|
45
|
+
"college_mathematics",
|
|
46
|
+
"college_medicine",
|
|
47
|
+
"college_physics",
|
|
48
|
+
"computer_security",
|
|
49
|
+
"conceptual_physics",
|
|
50
|
+
"econometrics",
|
|
51
|
+
"electrical_engineering",
|
|
52
|
+
"elementary_mathematics",
|
|
53
|
+
"formal_logic",
|
|
54
|
+
"global_facts",
|
|
55
|
+
"high_school_biology",
|
|
56
|
+
"high_school_chemistry",
|
|
57
|
+
"high_school_computer_science",
|
|
58
|
+
"high_school_european_history",
|
|
59
|
+
"high_school_geography",
|
|
60
|
+
"high_school_government_and_politics",
|
|
61
|
+
"high_school_macroeconomics",
|
|
62
|
+
"high_school_mathematics",
|
|
63
|
+
"high_school_microeconomics",
|
|
64
|
+
"high_school_physics",
|
|
65
|
+
"high_school_psychology",
|
|
66
|
+
"high_school_statistics",
|
|
67
|
+
"high_school_us_history",
|
|
68
|
+
"high_school_world_history",
|
|
69
|
+
"human_aging",
|
|
70
|
+
"human_sexuality",
|
|
71
|
+
"international_law",
|
|
72
|
+
"jurisprudence",
|
|
73
|
+
"logical_fallacies",
|
|
74
|
+
"machine_learning",
|
|
75
|
+
"management",
|
|
76
|
+
"marketing",
|
|
77
|
+
"medical_genetics",
|
|
78
|
+
"miscellaneous",
|
|
79
|
+
"moral_disputes",
|
|
80
|
+
"moral_scenarios",
|
|
81
|
+
"nutrition",
|
|
82
|
+
"philosophy",
|
|
83
|
+
"prehistory",
|
|
84
|
+
"professional_accounting",
|
|
85
|
+
"professional_law",
|
|
86
|
+
"professional_medicine",
|
|
87
|
+
"professional_psychology",
|
|
88
|
+
"public_relations",
|
|
89
|
+
"security_studies",
|
|
90
|
+
"sociology",
|
|
91
|
+
"us_foreign_policy",
|
|
92
|
+
"virology",
|
|
93
|
+
"world_religions",
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@final
|
|
98
|
+
class MmluReader(ChoiceReader):
|
|
99
|
+
"""Reads an MMLU item: the question and its four answer choices, with the correct one at ``answer``."""
|
|
100
|
+
|
|
101
|
+
@override
|
|
102
|
+
def read(self, item: dict[str, Any]) -> ChoiceFields:
|
|
103
|
+
return ChoiceFields(
|
|
104
|
+
raw_question=item["question"].strip(),
|
|
105
|
+
choices=item["choices"],
|
|
106
|
+
correct_index=item["answer"],
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@final
|
|
111
|
+
class _FullTextMmluStyle(ClozeStyle):
|
|
112
|
+
"""Cloze scoring (full answer text) that additionally shows the options as a bulleted list."""
|
|
113
|
+
|
|
114
|
+
@override
|
|
115
|
+
def get_instruction_text(self, raw_question: str, choices: list[str]) -> str:
|
|
116
|
+
options = "".join(f"- {choice}\n" for choice in choices)
|
|
117
|
+
return f"{self.question_prefix}{raw_question}\nPossible answers:\n{options}"
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def _humanized(subject_label: str) -> str:
|
|
121
|
+
# Subject labels are underscored config names ("abstract_algebra"); read them as prose.
|
|
122
|
+
return " ".join(subject_label.split("_"))
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _mc_preamble(subject_label: str) -> str:
|
|
126
|
+
return f"The following are multiple choice questions (with answers) about {_humanized(subject_label)}."
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def _full_text_preamble(subject_label: str) -> str:
|
|
130
|
+
return (
|
|
131
|
+
f"The following are multiple choice questions (with possible answers) about {_humanized(subject_label)}.\n"
|
|
132
|
+
"Answer with the full text of the correct answer."
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def _idk_preamble(subject_label: str) -> str:
|
|
137
|
+
# Unlike the other variants, the IDK preamble names the subject by its raw (underscored) key.
|
|
138
|
+
return (
|
|
139
|
+
f"The following are multiple choice questions (with answers) about {subject_label}. "
|
|
140
|
+
"Answer only if you are confident, since mistakes may be penalised, while correct answers receive points. "
|
|
141
|
+
"It is acceptable to answer with '?' if you are unsure, and you will receive 0 points."
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
@final
|
|
146
|
+
class _MmluCotKind(EvalKind):
|
|
147
|
+
"""MMLU chain-of-thought: the model reasons freely and concludes with "Therefore, the answer is: X",
|
|
148
|
+
and the answer letter is extracted from the generation. Free-form (completion), 0-shot only."""
|
|
149
|
+
|
|
150
|
+
def __init__(self) -> None:
|
|
151
|
+
self._reader = MmluReader()
|
|
152
|
+
self._answer_re = re.compile(r"Therefore, the answer is: ([ABCD])")
|
|
153
|
+
|
|
154
|
+
@override
|
|
155
|
+
def response_type(self) -> ResponseType:
|
|
156
|
+
return ResponseType.COMPLETION
|
|
157
|
+
|
|
158
|
+
@override
|
|
159
|
+
def metrics(self) -> list[type["BaseMetric"]]:
|
|
160
|
+
return [AccuracyCompletion]
|
|
161
|
+
|
|
162
|
+
@override
|
|
163
|
+
def stop_sequences(self) -> list[str]:
|
|
164
|
+
return ["Question:"]
|
|
165
|
+
|
|
166
|
+
@override
|
|
167
|
+
def max_tokens(self) -> int | None:
|
|
168
|
+
return None
|
|
169
|
+
|
|
170
|
+
@override
|
|
171
|
+
def initial_prompt(self, subject_label: str) -> str | None:
|
|
172
|
+
return (
|
|
173
|
+
f"The following are multiple choice questions about {_humanized(subject_label)}. "
|
|
174
|
+
'Summarize your reasoning concisely, then conclude with "Therefore, the answer is: X", where X is '
|
|
175
|
+
"one of A, B, C, or D."
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
@override
|
|
179
|
+
def samples(self, item: dict[str, Any]) -> list[SampleBody]:
|
|
180
|
+
fields = self._reader.read(item)
|
|
181
|
+
keys = get_n_letters(len(fields.choices))
|
|
182
|
+
options = "\n".join(f"{key}. {choice}" for key, choice in zip(keys, fields.choices))
|
|
183
|
+
return [
|
|
184
|
+
SampleBody(
|
|
185
|
+
prompt=f"Question: {fields.raw_question}\n{options}",
|
|
186
|
+
cue="", # no assistant cue — the model continues with its reasoning
|
|
187
|
+
possible_completions=[], # free-form generation (normalized to None by ComposedEval)
|
|
188
|
+
ground_truth=keys[fields.correct_index], # the bare answer letter
|
|
189
|
+
)
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
@override
|
|
193
|
+
def extract_answer(
|
|
194
|
+
self,
|
|
195
|
+
completion_text: str,
|
|
196
|
+
*,
|
|
197
|
+
context: BaseMetricContext | list[BaseMetricContext] | None,
|
|
198
|
+
ground_truth: str | list[str] | None,
|
|
199
|
+
messages: list[Message],
|
|
200
|
+
) -> str:
|
|
201
|
+
for stop in self.stop_sequences():
|
|
202
|
+
completion_text = completion_text.split(stop)[0]
|
|
203
|
+
match = self._answer_re.search(completion_text)
|
|
204
|
+
return match.group(1) if match else "[invalid]"
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def _mmlu_dataset(dataset: DatasetPolicy | None) -> DatasetPolicy:
|
|
208
|
+
return dataset if dataset is not None else pinned_by_framework("cais/mmlu")
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def _mmlu_choice(
|
|
212
|
+
id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None, display_name: str | None = None
|
|
213
|
+
) -> Benchmark:
|
|
214
|
+
# The loglikelihood variants differ only in their styler; MmluReader and the dev fewshot split are shared.
|
|
215
|
+
return ComposedBenchmark.choice(
|
|
216
|
+
id=id,
|
|
217
|
+
display_name=display_name,
|
|
218
|
+
reader=MmluReader(),
|
|
219
|
+
styler=styler,
|
|
220
|
+
sample_split="test",
|
|
221
|
+
fewshot_split="dev",
|
|
222
|
+
subjects=ListOfSubjects(MMLU_SUBJECTS),
|
|
223
|
+
dataset_policy=_mmlu_dataset(dataset),
|
|
224
|
+
language=Language.ENG,
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def mmlu(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
229
|
+
styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", initial_prompt=_mc_preamble)
|
|
230
|
+
return _mmlu_choice("MMLU", styler, dataset)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def mmlu_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
234
|
+
styler = MCStyle(
|
|
235
|
+
question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True, initial_prompt=_mc_preamble
|
|
236
|
+
)
|
|
237
|
+
return _mmlu_choice("MMLU_OLMES", styler, dataset)
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def mmlu_full_text(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
241
|
+
styler = _FullTextMmluStyle(question_prefix="Question: ", cue_text="Answer:", initial_prompt=_full_text_preamble)
|
|
242
|
+
# The registry/hash identity is the compact "FullTextMMLU"; the display name keeps the spelled-out form.
|
|
243
|
+
return _mmlu_choice("FullTextMMLU", styler, dataset, display_name="Full Text MMLU")
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def mmlu_idk(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
247
|
+
styler = MCStyle(
|
|
248
|
+
question_prefix="Question: ", cue_text="Answer:", initial_prompt=_idk_preamble
|
|
249
|
+
).with_abstention_option(" ?")
|
|
250
|
+
return _mmlu_choice("MMLU_IDK", styler, dataset)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
def mmlu_cot(dataset: DatasetPolicy | None = None) -> Benchmark:
|
|
254
|
+
# Free-form (completion) and 0-shot only, so it takes the general compose path with its own kind.
|
|
255
|
+
return ComposedBenchmark.compose(
|
|
256
|
+
id="MMLU_COT",
|
|
257
|
+
kind=_MmluCotKind(),
|
|
258
|
+
sample_split="test",
|
|
259
|
+
fewshot=NoFewShot(),
|
|
260
|
+
subjects=ListOfSubjects(MMLU_SUBJECTS),
|
|
261
|
+
dataset_policy=_mmlu_dataset(dataset),
|
|
262
|
+
language=Language.ENG,
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
MMLU_BENCHMARKS: list[Benchmark] = [mmlu(), mmlu_olmes(), mmlu_full_text(), mmlu_idk(), mmlu_cot()]
|
|
@@ -12,7 +12,6 @@ from typing import Any, final, override
|
|
|
12
12
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
13
13
|
from eval_framework.composed import ComposedBenchmark
|
|
14
14
|
from eval_framework.contract import Benchmark
|
|
15
|
-
from eval_framework.eval_kind import Choice
|
|
16
15
|
from eval_framework.tasks.base import Language
|
|
17
16
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
18
17
|
from eval_framework.tasks.dataset_revisions import pinned_frozen
|
|
@@ -46,11 +45,11 @@ def _piqa_benchmark(
|
|
|
46
45
|
fewshot_split: str,
|
|
47
46
|
dataset: DatasetPolicy | None = None,
|
|
48
47
|
) -> Benchmark:
|
|
49
|
-
kind = Choice(reader=PiqaReader(), styler=styler)
|
|
50
48
|
dataset_policy = dataset if dataset is not None else pinned_frozen("ybisk/piqa")
|
|
51
|
-
return ComposedBenchmark.
|
|
49
|
+
return ComposedBenchmark.choice(
|
|
52
50
|
id=id,
|
|
53
|
-
|
|
51
|
+
reader=PiqaReader(),
|
|
52
|
+
styler=styler,
|
|
54
53
|
sample_split=sample_split,
|
|
55
54
|
fewshot_split=fewshot_split,
|
|
56
55
|
dataset_policy=dataset_policy,
|
{eval_framework-0.12.0 → eval_framework-0.13.0}/src/eval_framework/benchmarks/piqa_ellamind.py
RENAMED
|
@@ -10,7 +10,6 @@ from typing import Any, Literal, final, override
|
|
|
10
10
|
from eval_framework.choices import ChoiceFields, ChoiceReader
|
|
11
11
|
from eval_framework.composed import ComposedBenchmark
|
|
12
12
|
from eval_framework.contract import Benchmark
|
|
13
|
-
from eval_framework.eval_kind import Choice
|
|
14
13
|
from eval_framework.subjects import ListOfSubjects
|
|
15
14
|
from eval_framework.tasks.base import Language
|
|
16
15
|
from eval_framework.tasks.dataset_loading import DatasetPolicy
|
|
@@ -43,11 +42,11 @@ _CUE_TEXT = "Antwort:"
|
|
|
43
42
|
def _piqa_ellamind_benchmark(
|
|
44
43
|
id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
|
|
45
44
|
) -> Benchmark:
|
|
46
|
-
kind = Choice(reader=PiqaReader(distractor_level), styler=styler)
|
|
47
45
|
dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/piqa-multilingual")
|
|
48
|
-
return ComposedBenchmark.
|
|
46
|
+
return ComposedBenchmark.choice(
|
|
49
47
|
id=id,
|
|
50
|
-
|
|
48
|
+
reader=PiqaReader(distractor_level),
|
|
49
|
+
styler=styler,
|
|
51
50
|
sample_split="validation",
|
|
52
51
|
fewshot_split="validation",
|
|
53
52
|
subjects=ListOfSubjects(["deu"]),
|