eval-framework 0.9.2__tar.gz → 0.10.4__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.9.2 → eval_framework-0.10.4}/PKG-INFO +9 -10
- {eval_framework-0.9.2 → eval_framework-0.10.4}/README.md +0 -2
- eval_framework-0.10.4/pyproject.toml +162 -0
- eval_framework-0.9.2/pyproject.toml → eval_framework-0.10.4/pyproject.toml.orig +23 -12
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/context/determined.py +12 -17
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/context/eval.py +0 -15
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/context/local.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/response_generator.py +7 -18
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/run.py +6 -46
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/run_direct.py +0 -3
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/base.py +106 -106
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/arc.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/arc_de.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/arc_ellamind.py +72 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/copa.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/csqa.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/csqa_ellamind.py +95 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/drop.py +0 -3
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -4
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/gpqa_ellamind.py +114 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +87 -0
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/hellaswag_ellamind.py +73 -0
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +119 -0
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/hle_ellamind.py +101 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/humaneval.py +31 -2
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +102 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +172 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/medqa.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mmlu.py +0 -5
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -4
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -2
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/piqa.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/piqa_ellamind.py +95 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/sciq.py +0 -2
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/simpleqa_ellamind.py +94 -0
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/siqa_ellamind.py +92 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/squad.py +0 -2
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/winogrande.py +0 -1
- eval_framework-0.10.4/src/eval_framework/tasks/benchmarks/winogrande_ellamind.py +140 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/eval_config.py +1 -5
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/hf-dataset-revisions.json +13 -0
- eval_framework-0.10.4/src/eval_framework/tasks/lazy.py +56 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/markdown_doc.py +0 -3
- eval_framework-0.10.4/src/eval_framework/tasks/registry.py +164 -0
- eval_framework-0.10.4/src/eval_framework/tasks/task.py +104 -0
- eval_framework-0.10.4/src/eval_framework/tasks/task_loader.py +89 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/task_names.py +148 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/task_style.py +0 -1
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/utils.py +1 -209
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/template_formatting/formatter.py +8 -6
- eval_framework-0.9.2/src/eval_framework/tasks/perturbation.py +0 -83
- eval_framework-0.9.2/src/eval_framework/tasks/registry.py +0 -346
- eval_framework-0.9.2/src/eval_framework/tasks/task_loader.py +0 -81
- {eval_framework-0.9.2 → eval_framework-0.10.4}/LICENSE +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/base_config.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/context/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/evaluation_generator.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/exceptions.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/drop_process_results.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/README.md +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/aleph_alpha.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/base.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/huggingface.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/models.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/llm/openai.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/logger.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/main.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/base.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/csv_format.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/f1.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/format_checker.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/ifeval.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/json_format.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/language_checker.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/length_control.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/repetition.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/text_counter.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/base.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/language.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/models.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/utils.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/py.typed +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/result_processors/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/result_processors/base.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/result_processors/hf_uploader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/result_processors/result_processor.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/shared/types.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/suite.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/goldenswag.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/hellaswag.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/dataset_revisions.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/constants.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/file_ops.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/helpers.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/logging.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/packaging.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/eval_framework/utils/tqdm_handler.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/template_formatting/README.md +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/template_formatting/__init__.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/template_formatting/mistral_formatter.py +0 -0
- {eval_framework-0.9.2 → eval_framework-0.10.4}/src/template_formatting/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: eval-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.4
|
|
4
4
|
Summary: Evaluation Framework
|
|
5
5
|
Author: Aleph Alpha Research
|
|
6
6
|
License: Apache License
|
|
@@ -208,6 +208,8 @@ Classifier: Operating System :: OS Independent
|
|
|
208
208
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
209
209
|
Classifier: Programming Language :: Python
|
|
210
210
|
Classifier: Programming Language :: Python :: 3.12
|
|
211
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
212
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
211
213
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
212
214
|
Classifier: Topic :: Software Development :: Libraries
|
|
213
215
|
Classifier: Typing :: Typed
|
|
@@ -216,12 +218,11 @@ Requires-Dist: xmltodict>=1.0.4,<1.1
|
|
|
216
218
|
Requires-Dist: pydantic>=2.13.4,<3
|
|
217
219
|
Requires-Dist: datasets>=5.0.1,<6
|
|
218
220
|
Requires-Dist: pycountry>=26.2.16,<27
|
|
219
|
-
Requires-Dist: nltk>=3.10.
|
|
221
|
+
Requires-Dist: nltk>=3.10.3,<4
|
|
220
222
|
Requires-Dist: python-dotenv>=1.2.2,<2
|
|
221
223
|
Requires-Dist: lingua-language-detector>=2.2.0,<3
|
|
222
224
|
Requires-Dist: google-crc32c>=1.8.0,<2
|
|
223
225
|
Requires-Dist: langdetect>=1.0.9,<2
|
|
224
|
-
Requires-Dist: spacy>=3.8.14,<4
|
|
225
226
|
Requires-Dist: jsonschema>=4.26.0,<5
|
|
226
227
|
Requires-Dist: mysql-connector-python>=26.7.0,<27
|
|
227
228
|
Requires-Dist: psycopg2-binary>=2.9.12,<3
|
|
@@ -230,9 +231,9 @@ Requires-Dist: llm-sandbox[docker]==0.3.44
|
|
|
230
231
|
Requires-Dist: jsonlines>=4,<5
|
|
231
232
|
Requires-Dist: lxml>=6.1.1,<7
|
|
232
233
|
Requires-Dist: python-iso639>=2026.7.23
|
|
233
|
-
Requires-Dist: wandb>=0.28.
|
|
234
|
-
Requires-Dist: boto3>=1.43.
|
|
235
|
-
Requires-Dist: numpy>=2.5.
|
|
234
|
+
Requires-Dist: wandb>=0.28.2,<1
|
|
235
|
+
Requires-Dist: boto3>=1.43.72,<2
|
|
236
|
+
Requires-Dist: numpy>=2.5.2
|
|
236
237
|
Requires-Dist: antlr4-python3-runtime==4.11.0
|
|
237
238
|
Requires-Dist: scipy>=1.18.0,<2
|
|
238
239
|
Requires-Dist: accelerate ; extra == 'accelerate'
|
|
@@ -240,7 +241,7 @@ Requires-Dist: eval-framework[determined,api,openai,transformers,accelerate,opti
|
|
|
240
241
|
Requires-Dist: aleph-alpha-client>=11.5.1 ; extra == 'api'
|
|
241
242
|
Requires-Dist: determined>=0.38.1,<0.39 ; extra == 'determined'
|
|
242
243
|
Requires-Dist: tensorboard==2.21.0 ; extra == 'determined'
|
|
243
|
-
Requires-Dist: openai>=
|
|
244
|
+
Requires-Dist: openai>=3.1.0,<4 ; extra == 'openai'
|
|
244
245
|
Requires-Dist: tiktoken>=0.13.0,<1 ; extra == 'openai'
|
|
245
246
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'openai'
|
|
246
247
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'optional'
|
|
@@ -248,7 +249,7 @@ Requires-Dist: jinja2>=3.1.6,<4 ; extra == 'optional'
|
|
|
248
249
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'transformers'
|
|
249
250
|
Requires-Dist: torch>=2.13.0,<3 ; extra == 'transformers'
|
|
250
251
|
Requires-Dist: accelerate>=1.14.0,<2 ; extra == 'transformers'
|
|
251
|
-
Requires-Python: >=3.12, <3.
|
|
252
|
+
Requires-Python: >=3.12, <3.15
|
|
252
253
|
Project-URL: repository, https://github.com/Aleph-Alpha-Research/eval-framework
|
|
253
254
|
Provides-Extra: accelerate
|
|
254
255
|
Provides-Extra: all
|
|
@@ -314,8 +315,6 @@ There are optional extras available to unlock specific features of the library:
|
|
|
314
315
|
|
|
315
316
|
As a short hand, the `all` extra installs all of the above.
|
|
316
317
|
|
|
317
|
-
For local vLLM inference, see the sibling [`local-vllm-server/`](./local-vllm-server/README.md) package.
|
|
318
|
-
|
|
319
318
|
We use `uv` to better resolve dependencies when downloading the extras. You can install uv with:
|
|
320
319
|
```bash
|
|
321
320
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -53,8 +53,6 @@ There are optional extras available to unlock specific features of the library:
|
|
|
53
53
|
|
|
54
54
|
As a short hand, the `all` extra installs all of the above.
|
|
55
55
|
|
|
56
|
-
For local vLLM inference, see the sibling [`local-vllm-server/`](./local-vllm-server/README.md) package.
|
|
57
|
-
|
|
58
56
|
We use `uv` to better resolve dependencies when downloading the extras. You can install uv with:
|
|
59
57
|
```bash
|
|
60
58
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "eval-framework"
|
|
3
|
+
version = "0.10.4"
|
|
4
|
+
description = "Evaluation Framework"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12,<3.15"
|
|
7
|
+
classifiers = [
|
|
8
|
+
"Operating System :: OS Independent",
|
|
9
|
+
"License :: OSI Approved :: Apache Software License",
|
|
10
|
+
"Programming Language :: Python",
|
|
11
|
+
"Programming Language :: Python :: 3.12",
|
|
12
|
+
"Programming Language :: Python :: 3.13",
|
|
13
|
+
"Programming Language :: Python :: 3.14",
|
|
14
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
15
|
+
"Topic :: Software Development :: Libraries",
|
|
16
|
+
"Typing :: Typed",
|
|
17
|
+
]
|
|
18
|
+
dependencies = [
|
|
19
|
+
"pyyaml>=6.0.3,<7",
|
|
20
|
+
"xmltodict>=1.0.4,<1.1",
|
|
21
|
+
"pydantic>=2.13.4,<3",
|
|
22
|
+
"datasets>=5.0.1,<6",
|
|
23
|
+
"pycountry>=26.2.16,<27",
|
|
24
|
+
"nltk>=3.10.3,<4",
|
|
25
|
+
"python-dotenv>=1.2.2,<2",
|
|
26
|
+
"lingua-language-detector>=2.2.0,<3",
|
|
27
|
+
"google-crc32c>=1.8.0,<2",
|
|
28
|
+
"langdetect>=1.0.9,<2",
|
|
29
|
+
"jsonschema>=4.26.0,<5",
|
|
30
|
+
"mysql-connector-python>=26.7.0,<27",
|
|
31
|
+
"psycopg2-binary>=2.9.12,<3",
|
|
32
|
+
"sympy>=1.14.0,<2",
|
|
33
|
+
"llm-sandbox[docker]==0.3.44",
|
|
34
|
+
"jsonlines>=4,<5",
|
|
35
|
+
"lxml>=6.1.1,<7",
|
|
36
|
+
"python-iso639>=2026.7.23",
|
|
37
|
+
"wandb>=0.28.2,<1",
|
|
38
|
+
"boto3>=1.43.72,<2",
|
|
39
|
+
"numpy>=2.5.2",
|
|
40
|
+
"antlr4-python3-runtime==4.11.0",
|
|
41
|
+
"scipy>=1.18.0,<2",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[project.license]
|
|
45
|
+
file = "LICENSE"
|
|
46
|
+
|
|
47
|
+
[[project.authors]]
|
|
48
|
+
name = "Aleph Alpha Research"
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
determined = [
|
|
52
|
+
"determined>=0.38.1,<0.39",
|
|
53
|
+
"tensorboard==2.21.0",
|
|
54
|
+
]
|
|
55
|
+
api = ["aleph-alpha-client>=11.5.1"]
|
|
56
|
+
openai = [
|
|
57
|
+
"openai>=3.1.0,<4",
|
|
58
|
+
"tiktoken>=0.13.0,<1",
|
|
59
|
+
"transformers>=4.45.2,<5",
|
|
60
|
+
]
|
|
61
|
+
transformers = [
|
|
62
|
+
"transformers>=4.45.2,<5",
|
|
63
|
+
"torch>=2.13.0,<3",
|
|
64
|
+
"accelerate>=1.14.0,<2",
|
|
65
|
+
]
|
|
66
|
+
accelerate = ["accelerate"]
|
|
67
|
+
optional = [
|
|
68
|
+
"transformers>=4.45.2,<5",
|
|
69
|
+
"jinja2>=3.1.6,<4",
|
|
70
|
+
]
|
|
71
|
+
all = ["eval_framework[determined,api,openai,transformers,accelerate,optional]"]
|
|
72
|
+
|
|
73
|
+
[project.urls]
|
|
74
|
+
repository = "https://github.com/Aleph-Alpha-Research/eval-framework"
|
|
75
|
+
|
|
76
|
+
[project.scripts]
|
|
77
|
+
eval_framework = "eval_framework.run:run"
|
|
78
|
+
|
|
79
|
+
[dependency-groups]
|
|
80
|
+
dev = [
|
|
81
|
+
"mypy>=2.3.0,<3",
|
|
82
|
+
"pytest>=9.1.1,<10",
|
|
83
|
+
"pytest-mock>=3.15.1",
|
|
84
|
+
"pytest-xdist>=3.8.0,<4",
|
|
85
|
+
"pytest-sugar>1.1,<2",
|
|
86
|
+
"types-pyyaml>=6.0.12.20260724,<7",
|
|
87
|
+
"types-python-dateutil>=2.9.0.20260807,<3",
|
|
88
|
+
"types-requests>=2.33.0.20260712,<3",
|
|
89
|
+
"plotly>=6.9.0,<7",
|
|
90
|
+
"ruff>=0.16.3",
|
|
91
|
+
"pip-licenses>=5.5.5",
|
|
92
|
+
]
|
|
93
|
+
flash-attn = [
|
|
94
|
+
"flash-attn>=2.8.3.post1,<2.9",
|
|
95
|
+
"torch",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[build-system]
|
|
99
|
+
requires = ["uv_build>=0.12.5,<0.12.6"]
|
|
100
|
+
build-backend = "uv_build"
|
|
101
|
+
|
|
102
|
+
[tool.uv]
|
|
103
|
+
override-dependencies = ["requests>=2.32,<3"]
|
|
104
|
+
|
|
105
|
+
[tool.uv.build-backend]
|
|
106
|
+
module-name = [
|
|
107
|
+
"eval_framework",
|
|
108
|
+
"template_formatting",
|
|
109
|
+
]
|
|
110
|
+
|
|
111
|
+
[[tool.uv.extra-build-dependencies.flash-attn]]
|
|
112
|
+
requirement = "torch"
|
|
113
|
+
match-runtime = true
|
|
114
|
+
|
|
115
|
+
[tool.ruff]
|
|
116
|
+
line-length = 120
|
|
117
|
+
|
|
118
|
+
[tool.ruff.lint]
|
|
119
|
+
select = [
|
|
120
|
+
"E",
|
|
121
|
+
"F",
|
|
122
|
+
"UP",
|
|
123
|
+
"I",
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
[tool.ruff.lint.isort]
|
|
127
|
+
known-third-party = ["wandb"]
|
|
128
|
+
|
|
129
|
+
[tool.ruff.lint.extend-per-file-ignores]
|
|
130
|
+
"__init__.py" = ["F401"]
|
|
131
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_csqa_ellamind.py" = ["E501"]
|
|
132
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gpqa_ellamind.py" = ["E501"]
|
|
133
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gsm8k_ellamind.py" = ["E501"]
|
|
134
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hendrycks_math_ellamind.py" = ["E501"]
|
|
135
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hle_ellamind.py" = ["E501"]
|
|
136
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_mbpp_ellamind.py" = ["E501"]
|
|
137
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_piqa_ellamind.py" = ["E501"]
|
|
138
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_siqa_ellamind.py" = ["E501"]
|
|
139
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_winogrande_ellamind.py" = ["E501"]
|
|
140
|
+
|
|
141
|
+
[tool.mypy]
|
|
142
|
+
plugins = "pydantic.mypy"
|
|
143
|
+
disallow_untyped_defs = true
|
|
144
|
+
ignore_missing_imports = true
|
|
145
|
+
files = [
|
|
146
|
+
"src",
|
|
147
|
+
"utils",
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
[tool.pytest.ini_options]
|
|
151
|
+
testpaths = ["./tests"]
|
|
152
|
+
minversion = 8.0
|
|
153
|
+
addopts = "-p 'no:legacypath' --doctest-modules -n auto"
|
|
154
|
+
markers = [
|
|
155
|
+
"gpu: needs a GPU runner, otherwise test can not be run",
|
|
156
|
+
"cpu_slow: runs for a long time (on CPU)",
|
|
157
|
+
"slow_download: smoke tests that download large datasets (>15s); excluded from CI, run manually with -m slow_download",
|
|
158
|
+
"external_api: needs external services for execution",
|
|
159
|
+
"formatter_hash: formatter consistency tests using hash comparisons",
|
|
160
|
+
]
|
|
161
|
+
filterwarnings = ["ignore::DeprecationWarning:datasets.utils._dill:"]
|
|
162
|
+
env = ["WANDB_MODE = disabled"]
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "eval-framework"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.10.4"
|
|
4
4
|
description = "Evaluation Framework"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
7
|
-
requires-python = ">=3.12,<3.
|
|
7
|
+
requires-python = ">=3.12,<3.15"
|
|
8
8
|
authors = [
|
|
9
9
|
{ name = "Aleph Alpha Research" }
|
|
10
10
|
]
|
|
@@ -13,6 +13,8 @@ classifiers = [
|
|
|
13
13
|
"License :: OSI Approved :: Apache Software License",
|
|
14
14
|
"Programming Language :: Python",
|
|
15
15
|
"Programming Language :: Python :: 3.12",
|
|
16
|
+
"Programming Language :: Python :: 3.13",
|
|
17
|
+
"Programming Language :: Python :: 3.14",
|
|
16
18
|
"Programming Language :: Python :: 3 :: Only",
|
|
17
19
|
"Topic :: Software Development :: Libraries",
|
|
18
20
|
"Typing :: Typed",
|
|
@@ -23,12 +25,11 @@ dependencies = [
|
|
|
23
25
|
"pydantic>=2.13.4,<3",
|
|
24
26
|
"datasets>=5.0.1,<6",
|
|
25
27
|
"pycountry>=26.2.16,<27",
|
|
26
|
-
"nltk>=3.10.
|
|
28
|
+
"nltk>=3.10.3,<4",
|
|
27
29
|
"python-dotenv>=1.2.2,<2",
|
|
28
30
|
"lingua-language-detector>=2.2.0,<3",
|
|
29
31
|
"google-crc32c>=1.8.0,<2",
|
|
30
32
|
"langdetect>=1.0.9,<2", # required by the original ifeval implementation
|
|
31
|
-
"spacy>=3.8.14,<4",
|
|
32
33
|
"jsonschema>=4.26.0,<5",
|
|
33
34
|
"mysql-connector-python>=26.7.0,<27", # required for sql-related tasks
|
|
34
35
|
"psycopg2-binary>=2.9.12,<3", # required for sql-related tasks
|
|
@@ -37,9 +38,9 @@ dependencies = [
|
|
|
37
38
|
"jsonlines>=4,<5",
|
|
38
39
|
"lxml>=6.1.1,<7",
|
|
39
40
|
"python-iso639>=2026.7.23",
|
|
40
|
-
"wandb>=0.28.
|
|
41
|
-
"boto3>=1.43.
|
|
42
|
-
"numpy>=2.5.
|
|
41
|
+
"wandb>=0.28.2,<1",
|
|
42
|
+
"boto3>=1.43.72,<2",
|
|
43
|
+
"numpy>=2.5.2",
|
|
43
44
|
# is a dependency of sympy, but not explicitly listed in the requirements.txt
|
|
44
45
|
# https://github.com/sympy/sympy/blob/0204fa34e8f6f6f8ccb4de01209be9a2345c9d6e/doc/src/contributing/dependencies.md?plain=1#L125
|
|
45
46
|
"antlr4-python3-runtime==4.11.0",
|
|
@@ -54,7 +55,7 @@ determined = [
|
|
|
54
55
|
]
|
|
55
56
|
api = ["aleph-alpha-client>=11.5.1"]
|
|
56
57
|
openai = [
|
|
57
|
-
"openai>=
|
|
58
|
+
"openai>=3.1.0,<4",
|
|
58
59
|
"tiktoken>=0.13.0,<1",
|
|
59
60
|
"transformers>=4.45.2,<5",
|
|
60
61
|
]
|
|
@@ -89,10 +90,10 @@ dev = [
|
|
|
89
90
|
"pytest-xdist>=3.8.0,<4",
|
|
90
91
|
"pytest-sugar>1.1,<2",
|
|
91
92
|
"types-pyyaml>=6.0.12.20260724,<7",
|
|
92
|
-
"types-python-dateutil>=2.9.0.
|
|
93
|
+
"types-python-dateutil>=2.9.0.20260807,<3",
|
|
93
94
|
"types-requests>=2.33.0.20260712,<3",
|
|
94
95
|
"plotly>=6.9.0,<7",
|
|
95
|
-
"ruff>=0.16.
|
|
96
|
+
"ruff>=0.16.3",
|
|
96
97
|
"pip-licenses>=5.5.5",
|
|
97
98
|
]
|
|
98
99
|
flash-attn = [
|
|
@@ -101,7 +102,7 @@ flash-attn = [
|
|
|
101
102
|
]
|
|
102
103
|
|
|
103
104
|
[build-system]
|
|
104
|
-
requires = ["uv_build>=0.
|
|
105
|
+
requires = ["uv_build>=0.12.5,<0.12.6"]
|
|
105
106
|
build-backend = "uv_build"
|
|
106
107
|
|
|
107
108
|
[tool.uv.build-backend]
|
|
@@ -137,6 +138,16 @@ known-third-party = ["wandb"]
|
|
|
137
138
|
|
|
138
139
|
[tool.ruff.lint.extend-per-file-ignores]
|
|
139
140
|
"__init__.py" = ["F401"]
|
|
141
|
+
# Prompt strings are too long for:
|
|
142
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_csqa_ellamind.py" = ["E501"]
|
|
143
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gpqa_ellamind.py" = ["E501"]
|
|
144
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gsm8k_ellamind.py" = ["E501"]
|
|
145
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hendrycks_math_ellamind.py" = ["E501"]
|
|
146
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hle_ellamind.py" = ["E501"]
|
|
147
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_mbpp_ellamind.py" = ["E501"]
|
|
148
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_piqa_ellamind.py" = ["E501"]
|
|
149
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_siqa_ellamind.py" = ["E501"]
|
|
150
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_winogrande_ellamind.py" = ["E501"]
|
|
140
151
|
|
|
141
152
|
[tool.mypy]
|
|
142
153
|
plugins = "pydantic.mypy"
|
|
@@ -147,7 +158,7 @@ files = ["src", "utils"]
|
|
|
147
158
|
[tool.pytest.ini_options]
|
|
148
159
|
testpaths = ["./tests"]
|
|
149
160
|
minversion = 8.0
|
|
150
|
-
addopts = "-p 'no:legacypath' --doctest-modules"
|
|
161
|
+
addopts = "-p 'no:legacypath' --doctest-modules -n auto"
|
|
151
162
|
markers = [
|
|
152
163
|
"gpu: needs a GPU runner, otherwise test can not be run",
|
|
153
164
|
"cpu_slow: runs for a long time (on CPU)",
|
|
@@ -12,7 +12,6 @@ from eval_framework.context.eval import EvalContext
|
|
|
12
12
|
from eval_framework.context.local import _load_model
|
|
13
13
|
from eval_framework.llm.base import BaseLLM
|
|
14
14
|
from eval_framework.tasks.eval_config import EvalConfig
|
|
15
|
-
from eval_framework.tasks.perturbation import PerturbationConfig
|
|
16
15
|
from eval_framework.tasks.registry import validate_task_name
|
|
17
16
|
from eval_framework.tasks.task_loader import load_extra_tasks
|
|
18
17
|
|
|
@@ -31,7 +30,6 @@ class TaskArgs(BaseModel):
|
|
|
31
30
|
task_subjects: list[str] | None = None
|
|
32
31
|
hf_revision: str | None = None
|
|
33
32
|
user_prompt_suffix: str | None = None
|
|
34
|
-
perturbation_config: PerturbationConfig | None = None
|
|
35
33
|
repeats: int | None = None
|
|
36
34
|
|
|
37
35
|
|
|
@@ -48,7 +46,7 @@ class Hyperparameters(BaseModel):
|
|
|
48
46
|
description: str | None = None
|
|
49
47
|
task_args: TaskArgs
|
|
50
48
|
llm_args: dict[str, Any] | None = {}
|
|
51
|
-
|
|
49
|
+
extra_tasks_dir: str | None = None
|
|
52
50
|
delete_output_dir_after_upload: bool | None = None
|
|
53
51
|
|
|
54
52
|
|
|
@@ -67,19 +65,18 @@ class DeterminedContext(EvalContext):
|
|
|
67
65
|
raise RuntimeError("Failed to retrieve cluster info.")
|
|
68
66
|
|
|
69
67
|
# Load extra tasks if specified first
|
|
70
|
-
|
|
71
|
-
if
|
|
72
|
-
name = "
|
|
68
|
+
extra_tasks_dir = info.trial.hparams.get("extra_tasks_dir", None)
|
|
69
|
+
if extra_tasks_dir:
|
|
70
|
+
name = "extra_tasks_dir"
|
|
73
71
|
val_cli = getattr(self, name, None)
|
|
74
|
-
val_hparams =
|
|
75
|
-
if val_hparams:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
load_extra_tasks(val_hparams)
|
|
72
|
+
val_hparams = extra_tasks_dir
|
|
73
|
+
if val_cli and val_hparams and val_cli != val_hparams:
|
|
74
|
+
logger.info(
|
|
75
|
+
f"CLI argument {name} ({val_cli}) is being overridden by hyperparameters:"
|
|
76
|
+
f"({val_hparams}). If it fails due to duplicate task names, remove the CLI argument and"
|
|
77
|
+
"consolidate as a determined hyperparameter instead."
|
|
78
|
+
)
|
|
79
|
+
load_extra_tasks(val_hparams)
|
|
83
80
|
|
|
84
81
|
self.hparams = Hyperparameters(**info.trial.hparams)
|
|
85
82
|
|
|
@@ -112,7 +109,6 @@ class DeterminedContext(EvalContext):
|
|
|
112
109
|
"user_prompt_suffix",
|
|
113
110
|
"judge_model_name",
|
|
114
111
|
"judge_model_args",
|
|
115
|
-
"perturbation_config",
|
|
116
112
|
"repeats",
|
|
117
113
|
]:
|
|
118
114
|
val_cli = getattr(self, name, None)
|
|
@@ -145,7 +141,6 @@ class DeterminedContext(EvalContext):
|
|
|
145
141
|
task_subjects=self.hparams.task_args.task_subjects,
|
|
146
142
|
hf_revision=self.hparams.task_args.hf_revision or self.hf_revision,
|
|
147
143
|
user_prompt_suffix=user_prompt_suffix,
|
|
148
|
-
perturbation_config=self.hparams.task_args.perturbation_config or self.perturbation_config,
|
|
149
144
|
output_dir=self.hparams.output_dir,
|
|
150
145
|
llm_judge_class=llm_judge_class,
|
|
151
146
|
judge_model_args=self.hparams.task_args.judge_model_args or self.judge_model_args,
|
|
@@ -9,7 +9,6 @@ from typing import Any
|
|
|
9
9
|
import eval_framework
|
|
10
10
|
from eval_framework.llm.base import BaseLLM
|
|
11
11
|
from eval_framework.tasks.eval_config import EvalConfig
|
|
12
|
-
from eval_framework.tasks.perturbation import PerturbationConfig
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
def import_models(models_file: PathLike | str) -> dict[str, type[BaseLLM]]:
|
|
@@ -72,9 +71,6 @@ class EvalContext(AbstractContextManager):
|
|
|
72
71
|
judge_model_args: dict[str, Any] | None = None,
|
|
73
72
|
batch_size: int | None = None,
|
|
74
73
|
description: str | None = None,
|
|
75
|
-
perturbation_type: str | None = None,
|
|
76
|
-
perturbation_probability: float | None = None,
|
|
77
|
-
perturbation_seed: int | None = None,
|
|
78
74
|
randomize_judge_order: bool = False,
|
|
79
75
|
delete_output_dir_after_upload: bool | None = None,
|
|
80
76
|
repeats: int | None = None,
|
|
@@ -105,17 +101,6 @@ class EvalContext(AbstractContextManager):
|
|
|
105
101
|
self.randomize_judge_order = randomize_judge_order
|
|
106
102
|
self.delete_output_dir_after_upload = delete_output_dir_after_upload
|
|
107
103
|
self.repeats = repeats
|
|
108
|
-
if perturbation_type or perturbation_probability is not None:
|
|
109
|
-
perturbation = {
|
|
110
|
-
"type": perturbation_type,
|
|
111
|
-
"probability": perturbation_probability,
|
|
112
|
-
"seed": perturbation_seed,
|
|
113
|
-
}
|
|
114
|
-
self.perturbation_config: PerturbationConfig | None = PerturbationConfig(
|
|
115
|
-
**{k: v for k, v in perturbation.items() if v is not None}
|
|
116
|
-
)
|
|
117
|
-
else:
|
|
118
|
-
self.perturbation_config = None
|
|
119
104
|
|
|
120
105
|
self.config: EvalConfig | None = None
|
|
121
106
|
|
|
@@ -48,7 +48,6 @@ class LocalContext(EvalContext):
|
|
|
48
48
|
num_samples=self.num_samples,
|
|
49
49
|
max_tokens=self.max_tokens,
|
|
50
50
|
num_fewshot=self.num_fewshot,
|
|
51
|
-
perturbation_config=self.perturbation_config,
|
|
52
51
|
task_name=self.task_name,
|
|
53
52
|
task_subjects=self.task_subjects,
|
|
54
53
|
hf_revision=self.hf_revision,
|
|
@@ -60,23 +60,13 @@ class ResponseGenerator:
|
|
|
60
60
|
self.num_samples = config.num_samples
|
|
61
61
|
self.save_intermediate_results = config.save_intermediate_results
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
seed=RANDOM_SEED,
|
|
71
|
-
)
|
|
72
|
-
else:
|
|
73
|
-
self.task = registry()[config.task_name].create(
|
|
74
|
-
config.num_fewshot,
|
|
75
|
-
config.task_subjects,
|
|
76
|
-
config.hf_revision,
|
|
77
|
-
user_prompt_suffix=config.user_prompt_suffix,
|
|
78
|
-
seed=RANDOM_SEED,
|
|
79
|
-
)
|
|
63
|
+
self.task = registry()[config.task_name].create(
|
|
64
|
+
config.num_fewshot,
|
|
65
|
+
config.task_subjects,
|
|
66
|
+
config.hf_revision,
|
|
67
|
+
user_prompt_suffix=config.user_prompt_suffix,
|
|
68
|
+
seed=RANDOM_SEED,
|
|
69
|
+
)
|
|
80
70
|
|
|
81
71
|
self.response_type = self.task.get_response_type()
|
|
82
72
|
|
|
@@ -341,7 +331,6 @@ class ResponseGenerator:
|
|
|
341
331
|
"num_samples",
|
|
342
332
|
"llm_name",
|
|
343
333
|
"llm_args",
|
|
344
|
-
"perturbation_config",
|
|
345
334
|
"repeats",
|
|
346
335
|
"user_prompt_suffix",
|
|
347
336
|
]
|
|
@@ -42,11 +42,11 @@ def parse_args() -> argparse.Namespace:
|
|
|
42
42
|
help="The path to the Python module file containing model classes.",
|
|
43
43
|
)
|
|
44
44
|
parser.add_argument(
|
|
45
|
-
"--extra-
|
|
46
|
-
|
|
47
|
-
default=
|
|
45
|
+
"--extra-tasks-dir",
|
|
46
|
+
type=Path,
|
|
47
|
+
default=None,
|
|
48
48
|
required=False,
|
|
49
|
-
help="
|
|
49
|
+
help="Directory containing additional task plugin modules to load.",
|
|
50
50
|
)
|
|
51
51
|
parser.add_argument(
|
|
52
52
|
"--llm-name",
|
|
@@ -102,37 +102,6 @@ def parse_args() -> argparse.Namespace:
|
|
|
102
102
|
help="Randomize the order of answers presented to the LLM judge to mitigate position bias.",
|
|
103
103
|
)
|
|
104
104
|
|
|
105
|
-
# Perturbation arguments
|
|
106
|
-
parser.add_argument(
|
|
107
|
-
"--perturbation-type",
|
|
108
|
-
type=str,
|
|
109
|
-
required=False,
|
|
110
|
-
choices=[
|
|
111
|
-
"editor",
|
|
112
|
-
"permute",
|
|
113
|
-
"replace",
|
|
114
|
-
"delete",
|
|
115
|
-
"uppercase",
|
|
116
|
-
],
|
|
117
|
-
help=(
|
|
118
|
-
"The type of perturbation to apply. Note that this may not make sense for some prompts, for example those "
|
|
119
|
-
"containing math and code."
|
|
120
|
-
),
|
|
121
|
-
)
|
|
122
|
-
parser.add_argument(
|
|
123
|
-
"--perturbation-probability",
|
|
124
|
-
type=float,
|
|
125
|
-
required=False,
|
|
126
|
-
default=None,
|
|
127
|
-
help="The probability of applying a perturbation to each word or character (between 0.0 and 1.0).",
|
|
128
|
-
)
|
|
129
|
-
parser.add_argument(
|
|
130
|
-
"--perturbation-seed",
|
|
131
|
-
type=int,
|
|
132
|
-
required=False,
|
|
133
|
-
default=42,
|
|
134
|
-
help="Random seed controlling perturbations.",
|
|
135
|
-
)
|
|
136
105
|
parser.add_argument(
|
|
137
106
|
"--task-subjects",
|
|
138
107
|
type=str,
|
|
@@ -313,12 +282,6 @@ def parse_args() -> argparse.Namespace:
|
|
|
313
282
|
|
|
314
283
|
args.judge_model_args = judge_model_args
|
|
315
284
|
|
|
316
|
-
# if args.extra_task_modules:
|
|
317
|
-
# # Convert the comma-separated string into a list
|
|
318
|
-
# args.extra_task_modules = [file_or_dir.strip() for file_or_dir in args.extra_task_modules.split(",")]
|
|
319
|
-
# else:
|
|
320
|
-
# args.extra_task_modules = None
|
|
321
|
-
|
|
322
285
|
if args.task_suite and args.task_name:
|
|
323
286
|
parser.error("--task-suite and --task-name are mutually exclusive.")
|
|
324
287
|
|
|
@@ -336,8 +299,8 @@ def _run_single_task(kwargs: dict) -> None:
|
|
|
336
299
|
now = datetime.datetime.now()
|
|
337
300
|
logger.info(f"starting time: {now}")
|
|
338
301
|
|
|
339
|
-
if kwargs.get("
|
|
340
|
-
load_extra_tasks(kwargs["
|
|
302
|
+
if kwargs.get("extra_tasks_dir"):
|
|
303
|
+
load_extra_tasks(kwargs["extra_tasks_dir"])
|
|
341
304
|
|
|
342
305
|
context_name = kwargs.pop("context")
|
|
343
306
|
|
|
@@ -366,9 +329,6 @@ def _run_single_task(kwargs: dict) -> None:
|
|
|
366
329
|
judge_model_args=kwargs["judge_model_args"],
|
|
367
330
|
batch_size=kwargs["batch_size"],
|
|
368
331
|
description=kwargs["description"],
|
|
369
|
-
perturbation_type=kwargs["perturbation_type"],
|
|
370
|
-
perturbation_probability=kwargs["perturbation_probability"],
|
|
371
|
-
perturbation_seed=kwargs["perturbation_seed"],
|
|
372
332
|
randomize_judge_order=kwargs["randomize_judge_order"],
|
|
373
333
|
delete_output_dir_after_upload=kwargs["delete_output_dir_after_upload"],
|
|
374
334
|
# save_logs=kwargs["save_logs"],
|