eval-framework 0.11.16__tar.gz → 0.12.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.
Files changed (182) hide show
  1. {eval_framework-0.11.16 → eval_framework-0.12.0}/PKG-INFO +2 -2
  2. {eval_framework-0.11.16 → eval_framework-0.12.0}/pyproject.toml +2 -2
  3. {eval_framework-0.11.16 → eval_framework-0.12.0}/pyproject.toml.orig +2 -2
  4. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/goldenswag.py +5 -3
  5. eval_framework-0.12.0/src/eval_framework/benchmarks/mmlu.py +116 -0
  6. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/piqa.py +2 -2
  7. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/composed.py +13 -4
  8. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/contract.py +8 -0
  9. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/eval_kind.py +5 -4
  10. eval_framework-0.12.0/src/eval_framework/metrics/efficiency/finish_reason.py +39 -0
  11. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/response_generator.py +3 -3
  12. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/base.py +8 -0
  13. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/mmlu.py +0 -70
  14. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/task_names.py +4 -4
  15. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/task_style.py +50 -23
  16. {eval_framework-0.11.16 → eval_framework-0.12.0}/LICENSE +0 -0
  17. {eval_framework-0.11.16 → eval_framework-0.12.0}/README.md +0 -0
  18. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/__init__.py +0 -0
  19. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/base_config.py +0 -0
  20. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/__init__.py +0 -0
  21. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/arc_de.py +0 -0
  22. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/csqa_ellamind.py +0 -0
  23. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/gpqa_ellamind.py +0 -0
  24. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/hellaswag.py +0 -0
  25. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/hellaswag_ellamind.py +0 -0
  26. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/hle_ellamind.py +0 -0
  27. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/piqa_ellamind.py +0 -0
  28. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/simpleqa_ellamind.py +0 -0
  29. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/siqa_ellamind.py +0 -0
  30. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/benchmarks/winogrande_ellamind.py +0 -0
  31. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/choices.py +0 -0
  32. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/context/__init__.py +0 -0
  33. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/context/determined.py +0 -0
  34. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/context/eval.py +0 -0
  35. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/context/local.py +0 -0
  36. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/evaluation_generator.py +0 -0
  37. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/exceptions.py +0 -0
  38. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/drop_process_results.py +0 -0
  39. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/ifeval_impl/README.md +0 -0
  40. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
  41. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
  42. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
  43. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
  44. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/__init__.py +0 -0
  45. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/aleph_alpha.py +0 -0
  46. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/base.py +0 -0
  47. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/huggingface.py +0 -0
  48. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/models.py +0 -0
  49. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/llm/openai.py +0 -0
  50. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/logger.py +0 -0
  51. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/main.py +0 -0
  52. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/__init__.py +0 -0
  53. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
  54. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
  55. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/base.py +0 -0
  56. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/__init__.py +0 -0
  57. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
  58. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
  59. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
  60. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
  61. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/csv_format.py +0 -0
  62. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
  63. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
  64. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/f1.py +0 -0
  65. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/format_checker.py +0 -0
  66. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
  67. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/ifeval.py +0 -0
  68. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/json_format.py +0 -0
  69. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/language_checker.py +0 -0
  70. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/length_control.py +0 -0
  71. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
  72. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
  73. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
  74. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
  75. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
  76. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/repetition.py +0 -0
  77. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
  78. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
  79. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
  80. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
  81. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/completion/text_counter.py +0 -0
  82. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
  83. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
  84. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/efficiency/token_counters.py +0 -0
  85. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/__init__.py +0 -0
  86. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/base.py +0 -0
  87. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
  88. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
  89. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
  90. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
  91. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
  92. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
  93. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
  94. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/language.py +0 -0
  95. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
  96. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/models.py +0 -0
  97. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
  98. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
  99. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
  100. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
  101. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
  102. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
  103. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
  104. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
  105. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
  106. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
  107. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
  108. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
  109. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
  110. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
  111. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
  112. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/llm/utils.py +0 -0
  113. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
  114. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
  115. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
  116. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
  117. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
  118. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
  119. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
  120. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
  121. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/py.typed +0 -0
  122. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/result_processors/__init__.py +0 -0
  123. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/result_processors/base.py +0 -0
  124. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/result_processors/hf_uploader.py +0 -0
  125. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/result_processors/result_processor.py +0 -0
  126. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
  127. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/run.py +0 -0
  128. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/run_direct.py +0 -0
  129. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/shared/errors.py +0 -0
  130. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/shared/types.py +0 -0
  131. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/subjects.py +0 -0
  132. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/suite.py +0 -0
  133. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
  134. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/__init__.py +0 -0
  135. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
  136. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/arc.py +0 -0
  137. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/arc_ellamind.py +0 -0
  138. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
  139. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/copa.py +0 -0
  140. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/csqa.py +0 -0
  141. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/drop.py +0 -0
  142. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -0
  143. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -0
  144. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
  145. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +0 -0
  146. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +0 -0
  147. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/humaneval.py +0 -0
  148. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +0 -0
  149. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/humaneval_plus.py +0 -0
  150. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
  151. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -0
  152. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
  153. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +0 -0
  154. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/medqa.py +0 -0
  155. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
  156. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
  157. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -0
  158. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/sciq.py +0 -0
  159. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -0
  160. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/squad.py +0 -0
  161. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/benchmarks/winogrande.py +0 -0
  162. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/dataset_loading.py +0 -0
  163. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/dataset_revisions.py +0 -0
  164. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/eval_config.py +0 -0
  165. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
  166. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/hf-dataset-revisions.json +0 -0
  167. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/lazy.py +0 -0
  168. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/markdown_doc.py +0 -0
  169. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/registry.py +0 -0
  170. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/task_loader.py +0 -0
  171. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/tasks/utils.py +0 -0
  172. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/constants.py +0 -0
  173. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/file_ops.py +0 -0
  174. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/helpers.py +0 -0
  175. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/logging.py +0 -0
  176. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/packaging.py +0 -0
  177. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/eval_framework/utils/tqdm_handler.py +0 -0
  178. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/template_formatting/README.md +0 -0
  179. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/template_formatting/__init__.py +0 -0
  180. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/template_formatting/formatter.py +0 -0
  181. {eval_framework-0.11.16 → eval_framework-0.12.0}/src/template_formatting/mistral_formatter.py +0 -0
  182. {eval_framework-0.11.16 → eval_framework-0.12.0}/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.11.16
3
+ Version: 0.12.0
4
4
  Summary: Evaluation Framework
5
5
  Author: Aleph Alpha Research
6
6
  License: Apache License
@@ -232,7 +232,7 @@ Requires-Dist: jsonlines>=4,<5
232
232
  Requires-Dist: lxml>=6.1.3,<7
233
233
  Requires-Dist: python-iso639>=2026.7.23
234
234
  Requires-Dist: wandb>=0.30.0,<1
235
- Requires-Dist: boto3>=1.43.92,<2
235
+ Requires-Dist: boto3>=1.43.93,<2
236
236
  Requires-Dist: numpy>=2.5.3
237
237
  Requires-Dist: antlr4-python3-runtime==4.11.0
238
238
  Requires-Dist: scipy>=1.18.1,<2
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eval-framework"
3
- version = "0.11.16"
3
+ version = "0.12.0"
4
4
  description = "Evaluation Framework"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12,<3.15"
@@ -35,7 +35,7 @@ dependencies = [
35
35
  "lxml>=6.1.3,<7",
36
36
  "python-iso639>=2026.7.23",
37
37
  "wandb>=0.30.0,<1",
38
- "boto3>=1.43.92,<2",
38
+ "boto3>=1.43.93,<2",
39
39
  "numpy>=2.5.3",
40
40
  "antlr4-python3-runtime==4.11.0",
41
41
  "scipy>=1.18.1,<2",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eval-framework"
3
- version = "0.11.16"
3
+ version = "0.12.0"
4
4
  description = "Evaluation Framework"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -39,7 +39,7 @@ dependencies = [
39
39
  "lxml>=6.1.3,<7",
40
40
  "python-iso639>=2026.7.23",
41
41
  "wandb>=0.30.0,<1",
42
- "boto3>=1.43.92,<2",
42
+ "boto3>=1.43.93,<2",
43
43
  "numpy>=2.5.3",
44
44
  # is a dependency of sympy, but not explicitly listed in the requirements.txt
45
45
  # https://github.com/sympy/sympy/blob/0204fa34e8f6f6f8ccb4de01209be9a2345c9d6e/doc/src/contributing/dependencies.md?plain=1#L125
@@ -11,7 +11,7 @@ from eval_framework.eval_kind import Choice
11
11
  from eval_framework.tasks.base import Language
12
12
  from eval_framework.tasks.dataset_loading import DatasetPolicy
13
13
  from eval_framework.tasks.dataset_revisions import pinned_by_framework
14
- from eval_framework.tasks.task_style import ClozeStyle, IdkClozeStyle, TaskStyler
14
+ from eval_framework.tasks.task_style import ClozeStyle, TaskStyler
15
15
 
16
16
  _IDK_PREAMBLE = (
17
17
  "Complete the sentence only if you are confident, since mistakes may be penalised, while correct "
@@ -39,8 +39,10 @@ def goldenswag(dataset: DatasetPolicy | None = None) -> Benchmark:
39
39
 
40
40
 
41
41
  def goldenswag_idk(dataset: DatasetPolicy | None = None) -> Benchmark:
42
- cloze = ClozeStyle(question_prefix="", cue_text="", trailing_newline=False)
43
- styler = IdkClozeStyle(abstention_option=" I do not know.", initial_prompt=_IDK_PREAMBLE, cloze=cloze)
42
+ cloze = ClozeStyle(
43
+ question_prefix="", cue_text="", trailing_newline=False, initial_prompt=lambda _subject: _IDK_PREAMBLE
44
+ )
45
+ styler = cloze.with_abstention_option(" I do not know.")
44
46
  return _goldenswag_benchmark("GoldenSwag_IDK", styler, dataset)
45
47
 
46
48
 
@@ -0,0 +1,116 @@
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
+
10
+ ``MMLU_COT`` stays BaseTask until the composed design supports generative (completion) tasks.
11
+ """
12
+
13
+ from typing import Any, final, override
14
+
15
+ from eval_framework.choices import ChoiceFields, ChoiceReader
16
+ from eval_framework.composed import ComposedBenchmark
17
+ from eval_framework.contract import Benchmark
18
+ from eval_framework.eval_kind import Choice
19
+ from eval_framework.subjects import ListOfSubjects
20
+ from eval_framework.tasks.base import Language
21
+ from eval_framework.tasks.benchmarks.mmlu import MMLU_SUBJECTS # single source of truth for the 57 subjects
22
+ from eval_framework.tasks.dataset_loading import DatasetPolicy
23
+ from eval_framework.tasks.dataset_revisions import pinned_by_framework
24
+ from eval_framework.tasks.task_style import ClozeStyle, MCStyle, TaskStyler
25
+
26
+
27
+ @final
28
+ class MmluReader(ChoiceReader):
29
+ """Reads an MMLU item: the question and its four answer choices, with the correct one at ``answer``."""
30
+
31
+ @override
32
+ def read(self, item: dict[str, Any]) -> ChoiceFields:
33
+ return ChoiceFields(
34
+ raw_question=item["question"].strip(),
35
+ choices=item["choices"],
36
+ correct_index=item["answer"],
37
+ )
38
+
39
+
40
+ @final
41
+ class _FullTextMmluStyle(ClozeStyle):
42
+ """Cloze scoring (full answer text) that additionally shows the options as a bulleted list."""
43
+
44
+ @override
45
+ def get_instruction_text(self, raw_question: str, choices: list[str]) -> str:
46
+ options = "".join(f"- {choice}\n" for choice in choices)
47
+ return f"{self.question_prefix}{raw_question}\nPossible answers:\n{options}"
48
+
49
+
50
+ def _humanized(subject_label: str) -> str:
51
+ # Subject labels are underscored config names ("abstract_algebra"); read them as prose.
52
+ return " ".join(subject_label.split("_"))
53
+
54
+
55
+ def _mc_preamble(subject_label: str) -> str:
56
+ return f"The following are multiple choice questions (with answers) about {_humanized(subject_label)}."
57
+
58
+
59
+ def _full_text_preamble(subject_label: str) -> str:
60
+ return (
61
+ f"The following are multiple choice questions (with possible answers) about {_humanized(subject_label)}.\n"
62
+ "Answer with the full text of the correct answer."
63
+ )
64
+
65
+
66
+ def _idk_preamble(subject_label: str) -> str:
67
+ # Unlike the other variants, the IDK preamble names the subject by its raw (underscored) key.
68
+ return (
69
+ f"The following are multiple choice questions (with answers) about {subject_label}. "
70
+ "Answer only if you are confident, since mistakes may be penalised, while correct answers receive points. "
71
+ "It is acceptable to answer with '?' if you are unsure, and you will receive 0 points."
72
+ )
73
+
74
+
75
+ def _mmlu_benchmark(
76
+ id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None, display_name: str | None = None
77
+ ) -> Benchmark:
78
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("cais/mmlu")
79
+ return ComposedBenchmark.compose(
80
+ id=id,
81
+ display_name=display_name,
82
+ kind=Choice(reader=MmluReader(), styler=styler),
83
+ sample_split="test",
84
+ fewshot_split="dev",
85
+ subjects=ListOfSubjects(MMLU_SUBJECTS),
86
+ dataset_policy=dataset_policy,
87
+ language=Language.ENG,
88
+ )
89
+
90
+
91
+ def mmlu(dataset: DatasetPolicy | None = None) -> Benchmark:
92
+ styler = MCStyle(question_prefix="Question: ", cue_text="Answer:", initial_prompt=_mc_preamble)
93
+ return _mmlu_benchmark("MMLU", styler, dataset)
94
+
95
+
96
+ def mmlu_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
97
+ styler = MCStyle(
98
+ question_prefix="Question: ", cue_text="Answer:", space_prefixed_labels=True, initial_prompt=_mc_preamble
99
+ )
100
+ return _mmlu_benchmark("MMLU_OLMES", styler, dataset)
101
+
102
+
103
+ def mmlu_full_text(dataset: DatasetPolicy | None = None) -> Benchmark:
104
+ styler = _FullTextMmluStyle(question_prefix="Question: ", cue_text="Answer:", initial_prompt=_full_text_preamble)
105
+ # The registry/hash identity is the compact "FullTextMMLU"; the display name keeps the spelled-out form.
106
+ return _mmlu_benchmark("FullTextMMLU", styler, dataset, display_name="Full Text MMLU")
107
+
108
+
109
+ def mmlu_idk(dataset: DatasetPolicy | None = None) -> Benchmark:
110
+ styler = MCStyle(
111
+ question_prefix="Question: ", cue_text="Answer:", initial_prompt=_idk_preamble
112
+ ).with_abstention_option(" ?")
113
+ return _mmlu_benchmark("MMLU_IDK", styler, dataset)
114
+
115
+
116
+ MMLU_BENCHMARKS: list[Benchmark] = [mmlu(), mmlu_olmes(), mmlu_full_text(), mmlu_idk()]
@@ -16,7 +16,7 @@ from eval_framework.eval_kind import Choice
16
16
  from eval_framework.tasks.base import Language
17
17
  from eval_framework.tasks.dataset_loading import DatasetPolicy
18
18
  from eval_framework.tasks.dataset_revisions import pinned_frozen
19
- from eval_framework.tasks.task_style import ClozeStyle, IdkClozeStyle, MCStyle, TaskStyler
19
+ from eval_framework.tasks.task_style import ClozeStyle, MCStyle, TaskStyler
20
20
 
21
21
  _IDK_PREAMBLE = (
22
22
  "Complete the sentence only if you are confident, since mistakes may be penalised, while correct "
@@ -75,7 +75,7 @@ def piqa_olmes(dataset: DatasetPolicy | None = None) -> Benchmark:
75
75
  def piqa_idk(dataset: DatasetPolicy | None = None) -> Benchmark:
76
76
  return _piqa_benchmark(
77
77
  "PIQA_IDK",
78
- IdkClozeStyle(abstention_option=" I do not know", initial_prompt=_IDK_PREAMBLE),
78
+ ClozeStyle(initial_prompt=lambda _subject: _IDK_PREAMBLE).with_abstention_option(" I do not know"),
79
79
  sample_split="validation",
80
80
  fewshot_split="test",
81
81
  dataset=dataset,
@@ -15,6 +15,7 @@ from eval_framework.metrics.efficiency.bytes_per_sequence_position import (
15
15
  SequencePositionsCompletion,
16
16
  SequencePositionsLoglikelihood,
17
17
  )
18
+ from eval_framework.metrics.efficiency.finish_reason import FinishReason
18
19
  from eval_framework.metrics.efficiency.token_counters import TokenCounts
19
20
  from eval_framework.shared.errors import raise_errors
20
21
  from eval_framework.shared.types import Completion, Error, RawCompletion
@@ -85,6 +86,7 @@ class ComposedEval(Eval):
85
86
  dataset = self._load_dataset(subject.load_key)
86
87
  fewshot_pool = dataset[self.fewshot_split] if self.num_fewshot > 0 else []
87
88
  assert len(dataset[self.sample_split]) > 0
89
+ initial_prompt = self._kind.initial_prompt(subject.label)
88
90
  sample_id = 0 # ids and the num_samples cap are per subject, matching BaseTask
89
91
  done = False
90
92
  for item in dataset[self.sample_split]:
@@ -96,7 +98,7 @@ class ComposedEval(Eval):
96
98
  yield Sample(
97
99
  id=sample_id,
98
100
  subject=subject.label,
99
- messages=self._messages(prefix, sample_body),
101
+ messages=self._messages(prefix, sample_body, initial_prompt),
100
102
  ground_truth=sample_body.ground_truth,
101
103
  possible_completions=sample_body.possible_completions,
102
104
  context=None,
@@ -106,9 +108,8 @@ class ComposedEval(Eval):
106
108
  done = True
107
109
  break
108
110
 
109
- def _messages(self, prefix: list[Message], body: SampleBody) -> list[Message]:
111
+ def _messages(self, prefix: list[Message], body: SampleBody, initial_prompt: str | None) -> list[Message]:
110
112
  messages = [*prefix, Message(role=Role.USER, content=body.prompt)]
111
- initial_prompt = self._kind.initial_prompt()
112
113
  if initial_prompt is not None:
113
114
  first = messages[0]
114
115
  messages[0] = Message(role=first.role, content=f"{initial_prompt}\n\n{first.content}")
@@ -236,6 +237,14 @@ class ComposedEval(Eval):
236
237
  )
237
238
  return completion_list
238
239
 
240
+ @override
241
+ def get_stop_sequences(self) -> list[str]:
242
+ return []
243
+
244
+ @override
245
+ def get_max_tokens(self) -> int | None:
246
+ return None
247
+
239
248
  @override
240
249
  def get_response_type(self) -> ResponseType:
241
250
  return self._kind.response_type
@@ -250,7 +259,7 @@ def _metrics_for(kind: EvalKind) -> list[type["BaseMetric"]]:
250
259
  response_type_metrics: list[type[BaseMetric]]
251
260
  match kind.response_type:
252
261
  case ResponseType.COMPLETION:
253
- response_type_metrics = [BytesCompletion, SequencePositionsCompletion, TokenCounts]
262
+ response_type_metrics = [BytesCompletion, SequencePositionsCompletion, TokenCounts, FinishReason]
254
263
  case ResponseType.LOGLIKELIHOODS:
255
264
  response_type_metrics = [BytesLoglikelihood, SequencePositionsLoglikelihood]
256
265
  case _:
@@ -52,6 +52,14 @@ class Eval(ABC):
52
52
  def get_metadata(self) -> dict[str, str | list[str]]:
53
53
  """Descriptive metadata about the eval for result reporting."""
54
54
 
55
+ @abstractmethod
56
+ def get_stop_sequences(self) -> list[str]:
57
+ """Stop sequences the eval requests for completion generation."""
58
+
59
+ @abstractmethod
60
+ def get_max_tokens(self) -> int | None:
61
+ """Token limit the eval requests for completion generation, or ``None`` for no limit."""
62
+
55
63
  @abstractmethod
56
64
  def get_response_type(self) -> ResponseType: ...
57
65
 
@@ -47,8 +47,9 @@ class EvalKind(ABC):
47
47
  """Kind-specific metadata merged into the eval's ``get_metadata`` (e.g. the task style)."""
48
48
  return {}
49
49
 
50
- def initial_prompt(self) -> str | None:
51
- """A preamble prepended once at the top of the prompt (before any few-shot examples), or None."""
50
+ def initial_prompt(self, subject_label: str) -> str | None:
51
+ """A preamble prepended once at the top of the prompt for the given subject (before any few-shot
52
+ examples), or None."""
52
53
  return None
53
54
 
54
55
 
@@ -90,5 +91,5 @@ class Choice(EvalKind):
90
91
  return self._styler.get_extra_metadata()
91
92
 
92
93
  @override
93
- def initial_prompt(self) -> str | None:
94
- return self._styler.initial_prompt()
94
+ def initial_prompt(self, subject_label: str) -> str | None:
95
+ return self._styler.initial_prompt(subject_label)
@@ -0,0 +1,39 @@
1
+ from eval_framework.metrics.base import BaseMetric, MetricResult
2
+ from eval_framework.shared.types import Completion
3
+
4
+
5
+ class FinishReason(BaseMetric[Completion]):
6
+ """Why the backend ended the generation, as one 0/1 indicator per reason.
7
+
8
+ Averaged over a benchmark, each key becomes a rate: `FinishReason/Repetition`
9
+ is the share of completions vLLM aborted through its `repetition_detection`
10
+ sampling parameter (looping output), `FinishReason/Length` the share that hit
11
+ `max_tokens`, and `FinishReason/Stop` the share that ended on their own (EOS
12
+ or a stop sequence). Reasons outside these keys (e.g. `tool_calls`) count as
13
+ 0 for all of them.
14
+
15
+ Reads the `finish_reason` backends already attach to the response. All values
16
+ are None when the backend did not report one (e.g. HuggingFace) or when the
17
+ sample errored, so such samples do not dilute the rates.
18
+ """
19
+
20
+ NAME = "FinishReason"
21
+ KEYS = ["Stop", "Length", "Repetition"]
22
+ _REASONS = {"Stop": "stop", "Length": "length", "Repetition": "repetition"}
23
+
24
+ def calculate(self, response: Completion) -> list[MetricResult]:
25
+ finish_reason = response.raw_completion_finish_reason
26
+ if response.error or finish_reason is None:
27
+ values: dict[str, float | None] = {key: None for key in self.KEYS}
28
+ else:
29
+ values = {key: float(finish_reason.lower() == reason) for key, reason in self._REASONS.items()}
30
+
31
+ return [
32
+ MetricResult(
33
+ metric_name=f"{self.NAME}/{key}",
34
+ value=value,
35
+ higher_is_better=key == "Stop",
36
+ error=response.error,
37
+ )
38
+ for key, value in values.items()
39
+ ]
@@ -80,8 +80,8 @@ class ResponseGenerator:
80
80
  """
81
81
  llm_stop_sequences = getattr(self.llm, "stop_sequences", None)
82
82
  llm_max_tokens = getattr(self.llm, "max_tokens", None)
83
- task_stop_sequences = getattr(self.task, "stop_sequences", None)
84
- task_max_tokens = self.config.max_tokens or getattr(self.task, "max_tokens", None)
83
+ task_stop_sequences = self.task.get_stop_sequences()
84
+ task_max_tokens = self.config.max_tokens or self.task.get_max_tokens()
85
85
  # if both task and model define a max_token, the smaller value is used
86
86
  max_tokens = min(
87
87
  [x for x in [llm_max_tokens, task_max_tokens] if x is not None],
@@ -89,7 +89,7 @@ class ResponseGenerator:
89
89
  )
90
90
  logger.info(f"Set max_tokens to {max_tokens}")
91
91
  # if both task and model define stop sequences, those are merged into one list
92
- stop_sequences_merged = (llm_stop_sequences or []) + (task_stop_sequences or [])
92
+ stop_sequences_merged = (llm_stop_sequences or []) + task_stop_sequences
93
93
  stop_sequences = sorted(list(set(stop_sequences_merged))) if stop_sequences_merged else None
94
94
  logger.info(f"Set stop_sequences to {stop_sequences}")
95
95
  return stop_sequences, max_tokens
@@ -18,6 +18,7 @@ from eval_framework.metrics.efficiency.bytes_per_sequence_position import (
18
18
  SequencePositionsCompletion,
19
19
  SequencePositionsLoglikelihood,
20
20
  )
21
+ from eval_framework.metrics.efficiency.finish_reason import FinishReason
21
22
  from eval_framework.metrics.efficiency.token_counters import TokenCounts
22
23
  from eval_framework.shared.errors import raise_errors
23
24
  from eval_framework.shared.types import BaseMetricContext, Completion, Error, RawCompletion
@@ -444,6 +445,12 @@ class BaseTask[SubjectType](Eval):
444
445
  )
445
446
  return completion_list
446
447
 
448
+ def get_stop_sequences(self) -> list[str]:
449
+ return self.stop_sequences or []
450
+
451
+ def get_max_tokens(self) -> int | None:
452
+ return self.max_tokens
453
+
447
454
  @classmethod
448
455
  def get_response_type(cls) -> ResponseType:
449
456
  """Return the response type of the task (or the styler if it exists)."""
@@ -468,6 +475,7 @@ class BaseTask[SubjectType](Eval):
468
475
  BytesCompletion,
469
476
  SequencePositionsCompletion,
470
477
  TokenCounts,
478
+ FinishReason,
471
479
  ]
472
480
  case ResponseType.LOGLIKELIHOODS:
473
481
  metrics = [BytesLoglikelihood, SequencePositionsLoglikelihood]
@@ -8,9 +8,6 @@ from eval_framework.metrics.loglikelihood.accuracy_loglikelihood import (
8
8
  AccuracyNormLoglikelihood,
9
9
  )
10
10
  from eval_framework.metrics.loglikelihood.bits_per_byte import BitsPerByteLoglikelihood
11
- from eval_framework.metrics.loglikelihood.confidence_weighted_accuracy import ConfidenceWeightedAccuracy
12
- from eval_framework.metrics.loglikelihood.dcs import DistributionalCorrectnessScore
13
- from eval_framework.metrics.loglikelihood.ternary import TernaryScore
14
11
  from eval_framework.tasks.base import BaseTask, Language, ResponseType, Sample
15
12
  from eval_framework.tasks.dataset_revisions import HF_REVISIONS_LOCKFILE
16
13
  from eval_framework.tasks.utils import get_n_letters
@@ -126,73 +123,6 @@ class MMLU(BaseTask[str]):
126
123
  return [f" {key}" for key in self.keys]
127
124
 
128
125
 
129
- class MMLU_OLMES(MMLU):
130
- """
131
- MMLU with OLMES-style prompt: space before each label in the prompt (" A.", " B.", ...).
132
- """
133
-
134
- REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
135
-
136
- NAME = "MMLU_OLMES"
137
-
138
- def _get_instruction_text(self, item: dict[str, Any]) -> str:
139
- question = item["question"].strip()
140
- choices = "".join([f" {key}. {choice}\n" for key, choice in zip(self.keys, item["choices"])])
141
- return f"Question: {question}\n{choices}"
142
-
143
-
144
- class FullTextMMLU(MMLU):
145
- """MMLU dataset but where the model is expected to replicate choice text, rather than just the key."""
146
-
147
- NAME = "Full Text MMLU"
148
- METRICS = [
149
- AccuracyLoglikelihood,
150
- AccuracyNormLoglikelihood,
151
- AccuracyBayesianLoglikelihood,
152
- BitsPerByteLoglikelihood,
153
- ]
154
-
155
- def _get_initial_prompt_text(self, item: dict[str, Any]) -> str:
156
- subject_name = self._get_subject_name(item)
157
- return f"""The following are multiple choice questions (with possible answers) about {subject_name}.
158
- Answer with the full text of the correct answer."""
159
-
160
- def _get_instruction_text(self, item: dict[str, Any]) -> str:
161
- question = item["question"].strip()
162
- choices = "".join([f"- {choice}\n" for choice in item["choices"]])
163
- return f"Question: {question}\nPossible answers:\n{choices}"
164
-
165
- def _get_ground_truth(self, item: dict[str, Any]) -> str | None:
166
- return f" {item['choices'][item['answer']]}"
167
-
168
- def _get_possible_completions(self, item: dict[str, Any]) -> list[str] | None:
169
- return [f" {choice}" for choice in item["choices"]]
170
-
171
-
172
- class MMLU_IDK(MMLU):
173
- REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
174
- NAME = "MMLU_IDK"
175
- METRICS = [
176
- AccuracyLoglikelihood,
177
- AccuracyNormLoglikelihood,
178
- AccuracyBayesianLoglikelihood,
179
- ConfidenceWeightedAccuracy,
180
- DistributionalCorrectnessScore,
181
- TernaryScore,
182
- ]
183
-
184
- def _get_initial_prompt_text(self, item: dict[str, Any]) -> str:
185
- return (
186
- f"The following are multiple choice questions (with answers) about {item['subject']}. "
187
- "Answer only if you are confident, since mistakes may be penalised, while correct answers receive points. "
188
- "It is acceptable to answer with '?' if you are unsure, and you will receive 0 points."
189
- )
190
-
191
- def _get_possible_completions(self, item: dict[str, Any]) -> list[str] | None:
192
- completions = super()._get_possible_completions(item)
193
- return (completions or []) + [" ?"]
194
-
195
-
196
126
  class MMLU_COT(MMLU):
197
127
  """
198
128
  MMLU dataset with instruction to summarize reasoning and conclude with answer.
@@ -7,6 +7,7 @@ from eval_framework.benchmarks.gpqa_ellamind import GPQA_ELLAMIND_BENCHMARKS
7
7
  from eval_framework.benchmarks.hellaswag import HELLASWAG_BENCHMARKS
8
8
  from eval_framework.benchmarks.hellaswag_ellamind import HELLASWAG_ELLAMIND_BENCHMARKS
9
9
  from eval_framework.benchmarks.hle_ellamind import HLE_ELLAMIND_BENCHMARKS
10
+ from eval_framework.benchmarks.mmlu import MMLU_BENCHMARKS
10
11
  from eval_framework.benchmarks.piqa import PIQA_BENCHMARKS
11
12
  from eval_framework.benchmarks.piqa_ellamind import PIQA_ELLAMIND_BENCHMARKS
12
13
  from eval_framework.benchmarks.simpleqa_ellamind import SIMPLEQA_ELLAMIND_BENCHMARKS
@@ -117,10 +118,9 @@ def register_math_reasoning_tasks(registry: Registry) -> None:
117
118
 
118
119
  def register_mmlu_tasks(registry: Registry) -> None:
119
120
  """Register mmlu benchmark tasks."""
120
- register_lazy_task("eval_framework.tasks.benchmarks.mmlu.MMLU", registry=registry)
121
- register_lazy_task("eval_framework.tasks.benchmarks.mmlu.MMLU_IDK", registry=registry)
122
- register_lazy_task("eval_framework.tasks.benchmarks.mmlu.MMLU_OLMES", registry=registry)
123
- register_lazy_task("eval_framework.tasks.benchmarks.mmlu.FullTextMMLU", registry=registry)
121
+ for benchmark in MMLU_BENCHMARKS: # composed: MMLU, MMLU_OLMES, FullTextMMLU, MMLU_IDK
122
+ registry.add(benchmark)
123
+ # MMLU_COT is a generative (completion) task, not yet supported by the composed design.
124
124
  register_lazy_task("eval_framework.tasks.benchmarks.mmlu.MMLU_COT", registry=registry)
125
125
 
126
126