eval-framework 0.2.7__py3-none-any.whl

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 (170) hide show
  1. eval_framework/__init__.py +7 -0
  2. eval_framework/base_config.py +36 -0
  3. eval_framework/context/__init__.py +0 -0
  4. eval_framework/context/determined.py +177 -0
  5. eval_framework/context/eval.py +121 -0
  6. eval_framework/context/local.py +78 -0
  7. eval_framework/evaluation_generator.py +234 -0
  8. eval_framework/exceptions.py +2 -0
  9. eval_framework/external/ifeval_impl/README.md +5 -0
  10. eval_framework/external/ifeval_impl/instructions.py +1523 -0
  11. eval_framework/external/ifeval_impl/instructions_registry.py +161 -0
  12. eval_framework/external/ifeval_impl/instructions_util.py +1689 -0
  13. eval_framework/external/ifeval_impl/utils.py +135 -0
  14. eval_framework/llm/__init__.py +0 -0
  15. eval_framework/llm/aleph_alpha.py +432 -0
  16. eval_framework/llm/base.py +180 -0
  17. eval_framework/llm/huggingface.py +418 -0
  18. eval_framework/llm/mistral.py +88 -0
  19. eval_framework/llm/models.py +28 -0
  20. eval_framework/llm/openai.py +400 -0
  21. eval_framework/llm/vllm.py +554 -0
  22. eval_framework/logger.py +3 -0
  23. eval_framework/main.py +166 -0
  24. eval_framework/metrics/__init__.py +0 -0
  25. eval_framework/metrics/base.py +40 -0
  26. eval_framework/metrics/completion/__init__.py +1 -0
  27. eval_framework/metrics/completion/accuracy_completion.py +16 -0
  28. eval_framework/metrics/completion/aidanbench.py +28 -0
  29. eval_framework/metrics/completion/bleu.py +76 -0
  30. eval_framework/metrics/completion/chrf.py +62 -0
  31. eval_framework/metrics/completion/code_assertion.py +44 -0
  32. eval_framework/metrics/completion/code_execution_pass_at_one.py +126 -0
  33. eval_framework/metrics/completion/comet.py +56 -0
  34. eval_framework/metrics/completion/concordance_index.py +38 -0
  35. eval_framework/metrics/completion/csv_format.py +102 -0
  36. eval_framework/metrics/completion/cwe_accuracy.py +49 -0
  37. eval_framework/metrics/completion/exponential_similarity.py +65 -0
  38. eval_framework/metrics/completion/f1.py +42 -0
  39. eval_framework/metrics/completion/format_checker.py +56 -0
  40. eval_framework/metrics/completion/grid_difference.py +77 -0
  41. eval_framework/metrics/completion/ifeval.py +73 -0
  42. eval_framework/metrics/completion/json_format.py +179 -0
  43. eval_framework/metrics/completion/language_checker.py +74 -0
  44. eval_framework/metrics/completion/length_control.py +83 -0
  45. eval_framework/metrics/completion/math_reasoning_completion.py +307 -0
  46. eval_framework/metrics/completion/niah_accuracy.py +163 -0
  47. eval_framework/metrics/completion/placeholder_checker.py +27 -0
  48. eval_framework/metrics/completion/repetition.py +88 -0
  49. eval_framework/metrics/completion/rouge_1.py +35 -0
  50. eval_framework/metrics/completion/rouge_2.py +45 -0
  51. eval_framework/metrics/completion/rouge_geometric_mean.py +36 -0
  52. eval_framework/metrics/completion/rouge_l.py +52 -0
  53. eval_framework/metrics/completion/struct_eval_metrics.py +248 -0
  54. eval_framework/metrics/completion/ter.py +67 -0
  55. eval_framework/metrics/completion/text_counter.py +182 -0
  56. eval_framework/metrics/efficiency/__init__.py +0 -0
  57. eval_framework/metrics/efficiency/bytes_per_sequence_position.py +48 -0
  58. eval_framework/metrics/llm/__init__.py +0 -0
  59. eval_framework/metrics/llm/base.py +34 -0
  60. eval_framework/metrics/llm/graders/chatbot_style_grader.py +92 -0
  61. eval_framework/metrics/llm/graders/coherence_grader.py +115 -0
  62. eval_framework/metrics/llm/graders/comparison_grader.py +198 -0
  63. eval_framework/metrics/llm/graders/conciseness_grader.py +93 -0
  64. eval_framework/metrics/llm/graders/contains_names_grader.py +71 -0
  65. eval_framework/metrics/llm/graders/format_correctness_grader.py +109 -0
  66. eval_framework/metrics/llm/graders/instruction_grader.py +177 -0
  67. eval_framework/metrics/llm/graders/language.py +56 -0
  68. eval_framework/metrics/llm/graders/long_context_grader.py +72 -0
  69. eval_framework/metrics/llm/graders/models.py +74 -0
  70. eval_framework/metrics/llm/graders/refusal_grader.py +57 -0
  71. eval_framework/metrics/llm/graders/sql_quality_grader.py +145 -0
  72. eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +103 -0
  73. eval_framework/metrics/llm/llm_judge_chatbot_style.py +36 -0
  74. eval_framework/metrics/llm/llm_judge_coherence.py +44 -0
  75. eval_framework/metrics/llm/llm_judge_completion_accuracy.py +39 -0
  76. eval_framework/metrics/llm/llm_judge_conciseness.py +37 -0
  77. eval_framework/metrics/llm/llm_judge_contains_names.py +36 -0
  78. eval_framework/metrics/llm/llm_judge_format_correctness.py +43 -0
  79. eval_framework/metrics/llm/llm_judge_instruction.py +58 -0
  80. eval_framework/metrics/llm/llm_judge_mtbench_pair.py +306 -0
  81. eval_framework/metrics/llm/llm_judge_mtbench_single.py +210 -0
  82. eval_framework/metrics/llm/llm_judge_refusal.py +35 -0
  83. eval_framework/metrics/llm/llm_judge_sql.py +394 -0
  84. eval_framework/metrics/llm/llm_judge_world_knowledge.py +37 -0
  85. eval_framework/metrics/llm/utils.py +20 -0
  86. eval_framework/metrics/loglikelihood/__init__.py +0 -0
  87. eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +51 -0
  88. eval_framework/metrics/loglikelihood/base.py +50 -0
  89. eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +25 -0
  90. eval_framework/metrics/loglikelihood/dcs.py +43 -0
  91. eval_framework/metrics/loglikelihood/probability_mass.py +53 -0
  92. eval_framework/metrics/loglikelihood/ternary.py +42 -0
  93. eval_framework/py.typed +0 -0
  94. eval_framework/response_generator.py +351 -0
  95. eval_framework/result_processors/__init__.py +0 -0
  96. eval_framework/result_processors/base.py +88 -0
  97. eval_framework/result_processors/hf_uploader.py +75 -0
  98. eval_framework/result_processors/result_processor.py +129 -0
  99. eval_framework/result_processors/wandb_uploader.py +137 -0
  100. eval_framework/run.py +369 -0
  101. eval_framework/run_direct.py +42 -0
  102. eval_framework/shared/types.py +227 -0
  103. eval_framework/tasks/__init__.py +6 -0
  104. eval_framework/tasks/base.py +392 -0
  105. eval_framework/tasks/benchmarks/__init__.py +0 -0
  106. eval_framework/tasks/benchmarks/aidanbench.py +211 -0
  107. eval_framework/tasks/benchmarks/arc.py +70 -0
  108. eval_framework/tasks/benchmarks/arc_de.py +46 -0
  109. eval_framework/tasks/benchmarks/arc_fi.py +46 -0
  110. eval_framework/tasks/benchmarks/belebele.py +60 -0
  111. eval_framework/tasks/benchmarks/bigcodebench.py +155 -0
  112. eval_framework/tasks/benchmarks/casehold.py +47 -0
  113. eval_framework/tasks/benchmarks/chembench.py +85 -0
  114. eval_framework/tasks/benchmarks/copa.py +64 -0
  115. eval_framework/tasks/benchmarks/duc.py +91 -0
  116. eval_framework/tasks/benchmarks/flores200.py +133 -0
  117. eval_framework/tasks/benchmarks/flores_plus.py +84 -0
  118. eval_framework/tasks/benchmarks/gpqa.py +201 -0
  119. eval_framework/tasks/benchmarks/gsm8k.py +150 -0
  120. eval_framework/tasks/benchmarks/hellaswag.py +69 -0
  121. eval_framework/tasks/benchmarks/hellaswag_de.py +52 -0
  122. eval_framework/tasks/benchmarks/humaneval.py +97 -0
  123. eval_framework/tasks/benchmarks/ifeval.py +78 -0
  124. eval_framework/tasks/benchmarks/include.py +119 -0
  125. eval_framework/tasks/benchmarks/infinitebench.py +302 -0
  126. eval_framework/tasks/benchmarks/math_reasoning.py +580 -0
  127. eval_framework/tasks/benchmarks/mbpp.py +192 -0
  128. eval_framework/tasks/benchmarks/mmlu.py +215 -0
  129. eval_framework/tasks/benchmarks/mmlu_de.py +109 -0
  130. eval_framework/tasks/benchmarks/mmlu_pro.py +164 -0
  131. eval_framework/tasks/benchmarks/mmmlu.py +529 -0
  132. eval_framework/tasks/benchmarks/openbookqa.py +85 -0
  133. eval_framework/tasks/benchmarks/opengptx_eu20.py +363 -0
  134. eval_framework/tasks/benchmarks/pawsx.py +65 -0
  135. eval_framework/tasks/benchmarks/piqa.py +64 -0
  136. eval_framework/tasks/benchmarks/quality.py +56 -0
  137. eval_framework/tasks/benchmarks/sciq.py +110 -0
  138. eval_framework/tasks/benchmarks/sphyr.py +79 -0
  139. eval_framework/tasks/benchmarks/squad.py +211 -0
  140. eval_framework/tasks/benchmarks/struct_eval.py +116 -0
  141. eval_framework/tasks/benchmarks/tablebench.py +117 -0
  142. eval_framework/tasks/benchmarks/triviaqa.py +42 -0
  143. eval_framework/tasks/benchmarks/truthfulqa.py +119 -0
  144. eval_framework/tasks/benchmarks/winogender.py +64 -0
  145. eval_framework/tasks/benchmarks/winogrande.py +69 -0
  146. eval_framework/tasks/benchmarks/winox.py +57 -0
  147. eval_framework/tasks/benchmarks/wmt.py +160 -0
  148. eval_framework/tasks/benchmarks/zero_scrolls.py +197 -0
  149. eval_framework/tasks/eval_config.py +136 -0
  150. eval_framework/tasks/perturbation.py +83 -0
  151. eval_framework/tasks/registry.py +186 -0
  152. eval_framework/tasks/task_loader.py +81 -0
  153. eval_framework/tasks/task_names.py +324 -0
  154. eval_framework/tasks/utils.py +584 -0
  155. eval_framework/utils/constants.py +9 -0
  156. eval_framework/utils/file_ops.py +245 -0
  157. eval_framework/utils/generate_task_docs.py +244 -0
  158. eval_framework/utils/helpers.py +32 -0
  159. eval_framework/utils/logging.py +62 -0
  160. eval_framework/utils/packaging.py +52 -0
  161. eval_framework/utils/tqdm_handler.py +14 -0
  162. eval_framework-0.2.7.dist-info/METADATA +548 -0
  163. eval_framework-0.2.7.dist-info/RECORD +170 -0
  164. eval_framework-0.2.7.dist-info/WHEEL +4 -0
  165. eval_framework-0.2.7.dist-info/entry_points.txt +3 -0
  166. template_formatting/README.md +83 -0
  167. template_formatting/__init__.py +0 -0
  168. template_formatting/formatter.py +537 -0
  169. template_formatting/mistral_formatter.py +159 -0
  170. template_formatting/py.typed +0 -0
@@ -0,0 +1,529 @@
1
+ import random
2
+ import re
3
+ from itertools import product
4
+ from typing import Any
5
+
6
+ from eval_framework.metrics.completion.accuracy_completion import AccuracyCompletion
7
+ from eval_framework.metrics.completion.language_checker import GermanCompletionChecker
8
+ from eval_framework.metrics.loglikelihood.accuracy_loglikelihood import (
9
+ AccuracyLoglikelihood,
10
+ AccuracyNormLoglikelihood,
11
+ )
12
+ from eval_framework.tasks.base import RANDOM_SEED, BaseTask, Language, ResponseType, Sample
13
+ from eval_framework.tasks.benchmarks.mmlu import MMLU_SUBJECTS
14
+ from eval_framework.tasks.utils import get_n_letters
15
+
16
+ MMMLU_LANGS = ["FR_FR", "DE_DE", "ES_LA", "IT_IT", "PT_BR", "AR_XY"]
17
+ MMLU_SUBJECTS_DE = {
18
+ "abstract_algebra": "Abstrakte Algebra",
19
+ "anatomy": "Anatomie",
20
+ "astronomy": "Astronomie",
21
+ "business_ethics": "Wirtschaftsethik",
22
+ "clinical_knowledge": "Klinisches Wissen",
23
+ "college_biology": "Biologie (Universität)",
24
+ "college_chemistry": "Chemie (Universität)",
25
+ "college_computer_science": "Informatik (Universität)",
26
+ "college_mathematics": "Mathematik (Universität)",
27
+ "college_medicine": "Medizin (Universität)",
28
+ "college_physics": "Physik (Universität)",
29
+ "computer_security": "IT-Sicherheit",
30
+ "conceptual_physics": "Konzeptuelle Physik",
31
+ "econometrics": "Ökonometrie",
32
+ "electrical_engineering": "Elektrotechnik",
33
+ "elementary_mathematics": "Elementarmathematik",
34
+ "formal_logic": "Formale Logik",
35
+ "global_facts": "Weltwissen",
36
+ "high_school_biology": "Biologie (Gymnasium)",
37
+ "high_school_chemistry": "Chemie (Gymnasium)",
38
+ "high_school_computer_science": "Informatik (Gymnasium)",
39
+ "high_school_european_history": "Europäische Geschichte (Gymnasium)",
40
+ "high_school_geography": "Geografie (Gymnasium)",
41
+ "high_school_government_and_politics": "Politik und Regierung (Gymnasium)",
42
+ "high_school_macroeconomics": "Makroökonomie (Gymnasium)",
43
+ "high_school_mathematics": "Mathematik (Gymnasium)",
44
+ "high_school_microeconomics": "Mikroökonomie (Gymnasium)",
45
+ "high_school_physics": "Physik (Gymnasium)",
46
+ "high_school_psychology": "Psychologie (Gymnasium)",
47
+ "high_school_statistics": "Statistik (Gymnasium)",
48
+ "high_school_us_history": "US-Geschichte (Gymnasium)",
49
+ "high_school_world_history": "Weltgeschichte (Gymnasium)",
50
+ "human_aging": "Altern des Menschen",
51
+ "human_sexuality": "Menschliche Sexualität",
52
+ "international_law": "Völkerrecht",
53
+ "jurisprudence": "Rechtswissenschaft",
54
+ "logical_fallacies": "Logische Fehlschlüsse",
55
+ "machine_learning": "Maschinelles Lernen",
56
+ "management": "Management",
57
+ "marketing": "Marketing",
58
+ "medical_genetics": "Medizinische Genetik",
59
+ "miscellaneous": "Verschiedenes",
60
+ "moral_disputes": "Moralische Streitfragen",
61
+ "moral_scenarios": "Moralische Szenarien",
62
+ "nutrition": "Ernährung",
63
+ "philosophy": "Philosophie",
64
+ "prehistory": "Urgeschichte",
65
+ "professional_accounting": "Berufsbezogene Buchhaltung",
66
+ "professional_law": "Berufsbezogenes Recht",
67
+ "professional_medicine": "Berufsbezogene Medizin",
68
+ "professional_psychology": "Berufsbezogene Psychologie",
69
+ "public_relations": "Öffentlichkeitsarbeit",
70
+ "security_studies": "Sicherheitsstudien",
71
+ "sociology": "Soziologie",
72
+ "us_foreign_policy": "US-Außenpolitik",
73
+ "virology": "Virologie",
74
+ "world_religions": "Weltreligionen",
75
+ }
76
+ MMLU_SUBJECTS_FR = {
77
+ "abstract_algebra": "Algèbre Abstraite",
78
+ "anatomy": "Anatomie",
79
+ "astronomy": "Astronomie",
80
+ "business_ethics": "Éthique des Affaires",
81
+ "clinical_knowledge": "Connaissances Cliniques",
82
+ "college_biology": "Biologie Universitaire",
83
+ "college_chemistry": "Chimie Universitaire",
84
+ "college_computer_science": "Informatique Universitaire",
85
+ "college_mathematics": "Mathématiques Universitaires",
86
+ "college_medicine": "Médecine Universitaire",
87
+ "college_physics": "Physique Universitaire",
88
+ "computer_security": "Sécurité Informatique",
89
+ "conceptual_physics": "Physique Conceptuelle",
90
+ "econometrics": "Économétrie",
91
+ "electrical_engineering": "Génie Électrique",
92
+ "elementary_mathematics": "Mathématiques Élémentaires",
93
+ "formal_logic": "Logique Formelle",
94
+ "global_facts": "Faits Mondiaux",
95
+ "high_school_biology": "Biologie au Lycée",
96
+ "high_school_chemistry": "Chimie au Lycée",
97
+ "high_school_computer_science": "Informatique au Lycée",
98
+ "high_school_european_history": "Histoire Européenne au Lycée",
99
+ "high_school_geography": "Géographie au Lycée",
100
+ "high_school_government_and_politics": "Gouvernement et Politique au Lycée",
101
+ "high_school_macroeconomics": "Macroéconomie au Lycée",
102
+ "high_school_mathematics": "Mathématiques au Lycée",
103
+ "high_school_microeconomics": "Microéconomie au Lycée",
104
+ "high_school_physics": "Physique au Lycée",
105
+ "high_school_psychology": "Psychologie au Lycée",
106
+ "high_school_statistics": "Statistiques au Lycée",
107
+ "high_school_us_history": "Histoire des États-Unis au Lycée",
108
+ "high_school_world_history": "Histoire Mondiale au Lycée",
109
+ "human_aging": "Vieillissement Humain",
110
+ "human_sexuality": "Sexualité Humaine",
111
+ "international_law": "Droit International",
112
+ "jurisprudence": "Jurisprudence",
113
+ "logical_fallacies": "Fautes de Logique",
114
+ "machine_learning": "Apprentissage Automatique",
115
+ "management": "Gestion",
116
+ "marketing": "Marketing",
117
+ "medical_genetics": "Génétique Médicale",
118
+ "miscellaneous": "Divers",
119
+ "moral_disputes": "Conflits Moraux",
120
+ "moral_scenarios": "Scénarios Moraux",
121
+ "nutrition": "Nutrition",
122
+ "philosophy": "Philosophie",
123
+ "prehistory": "Préhistoire",
124
+ "professional_accounting": "Comptabilité Professionnelle",
125
+ "professional_law": "Droit Professionnel",
126
+ "professional_medicine": "Médecine Professionnelle",
127
+ "professional_psychology": "Psychologie Professionnelle",
128
+ "public_relations": "Relations Publiques",
129
+ "security_studies": "Études de Sécurité",
130
+ "sociology": "Sociologie",
131
+ "us_foreign_policy": "Politique Étrangère des États-Unis",
132
+ "virology": "Virologie",
133
+ "world_religions": "Religions du Monde",
134
+ }
135
+ MMLU_SUBJECTS_ES = {
136
+ "abstract_algebra": "Álgebra Abstracta",
137
+ "anatomy": "Anatomía",
138
+ "astronomy": "Astronomía",
139
+ "business_ethics": "Ética Empresarial",
140
+ "clinical_knowledge": "Conocimientos Clínicos",
141
+ "college_biology": "Biología Universitaria",
142
+ "college_chemistry": "Química Universitaria",
143
+ "college_computer_science": "Informática Universitaria",
144
+ "college_mathematics": "Matemáticas Universitarias",
145
+ "college_medicine": "Medicina Universitaria",
146
+ "college_physics": "Física Universitaria",
147
+ "computer_security": "Seguridad Informática",
148
+ "conceptual_physics": "Física Conceptual",
149
+ "econometrics": "Econometría",
150
+ "electrical_engineering": "Ingeniería Eléctrica",
151
+ "elementary_mathematics": "Matemáticas Elementales",
152
+ "formal_logic": "Lógica Formal",
153
+ "global_facts": "Datos Globales",
154
+ "high_school_biology": "Biología de Secundaria",
155
+ "high_school_chemistry": "Química de Secundaria",
156
+ "high_school_computer_science": "Informática de Secundaria",
157
+ "high_school_european_history": "Historia Europea de Secundaria",
158
+ "high_school_geography": "Geografía de Secundaria",
159
+ "high_school_government_and_politics": "Gobierno y Política de Secundaria",
160
+ "high_school_macroeconomics": "Macroeconomía de Secundaria",
161
+ "high_school_mathematics": "Matemáticas de Secundaria",
162
+ "high_school_microeconomics": "Microeconomía de Secundaria",
163
+ "high_school_physics": "Física de Secundaria",
164
+ "high_school_psychology": "Psicología de Secundaria",
165
+ "high_school_statistics": "Estadística de Secundaria",
166
+ "high_school_us_history": "Historia de EE. UU. de Secundaria",
167
+ "high_school_world_history": "Historia Mundial de Secundaria",
168
+ "human_aging": "Envejecimiento Humano",
169
+ "human_sexuality": "Sexualidad Humana",
170
+ "international_law": "Derecho Internacional",
171
+ "jurisprudence": "Jurisprudencia",
172
+ "logical_fallacies": "Falacias Lógicas",
173
+ "machine_learning": "Aprendizaje Automático",
174
+ "management": "Administración",
175
+ "marketing": "Mercadotecnia",
176
+ "medical_genetics": "Genética Médica",
177
+ "miscellaneous": "Misceláneos",
178
+ "moral_disputes": "Disputas Morales",
179
+ "moral_scenarios": "Escenarios Morales",
180
+ "nutrition": "Nutrición",
181
+ "philosophy": "Filosofía",
182
+ "prehistory": "Prehistoria",
183
+ "professional_accounting": "Contabilidad Profesional",
184
+ "professional_law": "Derecho Profesional",
185
+ "professional_medicine": "Medicina Profesional",
186
+ "professional_psychology": "Psicología Profesional",
187
+ "public_relations": "Relaciones Públicas",
188
+ "security_studies": "Estudios de Seguridad",
189
+ "sociology": "Sociología",
190
+ "us_foreign_policy": "Política Exterior de EE. UU.",
191
+ "virology": "Virología",
192
+ "world_religions": "Religiones del Mundo",
193
+ }
194
+ MMLU_SUBJECTS_IT = {
195
+ "abstract_algebra": "Algebra Astratta",
196
+ "anatomy": "Anatomia",
197
+ "astronomy": "Astronomia",
198
+ "business_ethics": "Etica Aziendale",
199
+ "clinical_knowledge": "Conoscenza Clinica",
200
+ "college_biology": "Biologia Universitaria",
201
+ "college_chemistry": "Chimica Universitaria",
202
+ "college_computer_science": "Informatica Universitaria",
203
+ "college_mathematics": "Matematica Universitaria",
204
+ "college_medicine": "Medicina Universitaria",
205
+ "college_physics": "Fisica Universitaria",
206
+ "computer_security": "Sicurezza Informatica",
207
+ "conceptual_physics": "Fisica Concettuale",
208
+ "econometrics": "Econometria",
209
+ "electrical_engineering": "Ingegneria Elettrica",
210
+ "elementary_mathematics": "Matematica Elementare",
211
+ "formal_logic": "Logica Formale",
212
+ "global_facts": "Fatti Globali",
213
+ "high_school_biology": "Biologia Liceale",
214
+ "high_school_chemistry": "Chimica Liceale",
215
+ "high_school_computer_science": "Informatica Liceale",
216
+ "high_school_european_history": "Storia Europea Liceale",
217
+ "high_school_geography": "Geografia Liceale",
218
+ "high_school_government_and_politics": "Governo e Politica Liceale",
219
+ "high_school_macroeconomics": "Macroeconomia Liceale",
220
+ "high_school_mathematics": "Matematica Liceale",
221
+ "high_school_microeconomics": "Microeconomia Liceale",
222
+ "high_school_physics": "Fisica Liceale",
223
+ "high_school_psychology": "Psicologia Liceale",
224
+ "high_school_statistics": "Statistica Liceale",
225
+ "high_school_us_history": "Storia Americana Liceale",
226
+ "high_school_world_history": "Storia Mondiale Liceale",
227
+ "human_aging": "Invecchiamento Umano",
228
+ "human_sexuality": "Sessualità Umana",
229
+ "international_law": "Diritto Internazionale",
230
+ "jurisprudence": "Giurisprudenza",
231
+ "logical_fallacies": "Fallacie Logiche",
232
+ "machine_learning": "Apprendimento Automatico",
233
+ "management": "Gestione",
234
+ "marketing": "Marketing",
235
+ "medical_genetics": "Genetica Medica",
236
+ "miscellaneous": "Varie",
237
+ "moral_disputes": "Controversie Morali",
238
+ "moral_scenarios": "Scenari Morali",
239
+ "nutrition": "Nutrizione",
240
+ "philosophy": "Filosofia",
241
+ "prehistory": "Preistoria",
242
+ "professional_accounting": "Contabilità Professionale",
243
+ "professional_law": "Diritto Professionale",
244
+ "professional_medicine": "Medicina Professionale",
245
+ "professional_psychology": "Psicologia Professionale",
246
+ "public_relations": "Relazioni Pubbliche",
247
+ "security_studies": "Studi sulla Sicurezza",
248
+ "sociology": "Sociologia",
249
+ "us_foreign_policy": "Politica Estera degli Stati Uniti",
250
+ "virology": "Virologia",
251
+ "world_religions": "Religioni del Mondo",
252
+ }
253
+ MMLU_SUBJECTS_PT = {
254
+ "abstract_algebra": "Álgebra Abstrata",
255
+ "anatomy": "Anatomia",
256
+ "astronomy": "Astronomia",
257
+ "business_ethics": "Ética Empresarial",
258
+ "clinical_knowledge": "Conhecimento Clínico",
259
+ "college_biology": "Biologia Universitária",
260
+ "college_chemistry": "Química Universitária",
261
+ "college_computer_science": "Ciência da Computação Universitária",
262
+ "college_mathematics": "Matemática Universitária",
263
+ "college_medicine": "Medicina Universitária",
264
+ "college_physics": "Física Universitária",
265
+ "computer_security": "Segurança da Computação",
266
+ "conceptual_physics": "Física Conceitual",
267
+ "econometrics": "Econometria",
268
+ "electrical_engineering": "Engenharia Elétrica",
269
+ "elementary_mathematics": "Matemática Elementar",
270
+ "formal_logic": "Lógica Formal",
271
+ "global_facts": "Fatos Globais",
272
+ "high_school_biology": "Biologia do Ensino Médio",
273
+ "high_school_chemistry": "Química do Ensino Médio",
274
+ "high_school_computer_science": "Ciência da Computação do Ensino Médio",
275
+ "high_school_european_history": "História Europeia do Ensino Médio",
276
+ "high_school_geography": "Geografia do Ensino Médio",
277
+ "high_school_government_and_politics": "Governo e Política do Ensino Médio",
278
+ "high_school_macroeconomics": "Macroeconomia do Ensino Médio",
279
+ "high_school_mathematics": "Matemática do Ensino Médio",
280
+ "high_school_microeconomics": "Microeconomia do Ensino Médio",
281
+ "high_school_physics": "Física do Ensino Médio",
282
+ "high_school_psychology": "Psicologia do Ensino Médio",
283
+ "high_school_statistics": "Estatística do Ensino Médio",
284
+ "high_school_us_history": "História dos EUA do Ensino Médio",
285
+ "high_school_world_history": "História Mundial do Ensino Médio",
286
+ "human_aging": "Envelhecimento Humano",
287
+ "human_sexuality": "Sexualidade Humana",
288
+ "international_law": "Direito Internacional",
289
+ "jurisprudence": "Jurisprudência",
290
+ "logical_fallacies": "Falácias Lógicas",
291
+ "machine_learning": "Aprendizado de Máquina",
292
+ "management": "Administração",
293
+ "marketing": "Marketing",
294
+ "medical_genetics": "Genética Médica",
295
+ "miscellaneous": "Diversos",
296
+ "moral_disputes": "Disputas Morais",
297
+ "moral_scenarios": "Cenários Morais",
298
+ "nutrition": "Nutrição",
299
+ "philosophy": "Filosofia",
300
+ "prehistory": "Pré-História",
301
+ "professional_accounting": "Contabilidade Profissional",
302
+ "professional_law": "Direito Profissional",
303
+ "professional_medicine": "Medicina Profissional",
304
+ "professional_psychology": "Psicologia Profissional",
305
+ "public_relations": "Relações Públicas",
306
+ "security_studies": "Estudos de Segurança",
307
+ "sociology": "Sociologia",
308
+ "us_foreign_policy": "Política Externa dos EUA",
309
+ "virology": "Virologia",
310
+ "world_religions": "Religiões Mundiais",
311
+ }
312
+ MMLU_SUBJECTS_AR = {
313
+ "abstract_algebra": "الجبر المجرد",
314
+ "anatomy": "علم التشريح",
315
+ "astronomy": "علم الفلك",
316
+ "business_ethics": "أخلاقيات الأعمال",
317
+ "clinical_knowledge": "المعرفة السريرية",
318
+ "college_biology": "أحياء جامعية",
319
+ "college_chemistry": "كيمياء جامعية",
320
+ "college_computer_science": "علوم الحاسوب الجامعية",
321
+ "college_mathematics": "رياضيات جامعية",
322
+ "college_medicine": "طب جامعي",
323
+ "college_physics": "فيزياء جامعية",
324
+ "computer_security": "أمن الحاسوب",
325
+ "conceptual_physics": "الفيزياء المفاهيمية",
326
+ "econometrics": "الاقتصاد القياسي",
327
+ "electrical_engineering": "الهندسة الكهربائية",
328
+ "elementary_mathematics": "الرياضيات الابتدائية",
329
+ "formal_logic": "المنطق الصوري",
330
+ "global_facts": "حقائق عالمية",
331
+ "high_school_biology": "أحياء ثانوية",
332
+ "high_school_chemistry": "كيمياء ثانوية",
333
+ "high_school_computer_science": "علوم الحاسوب الثانوية",
334
+ "high_school_european_history": "تاريخ أوروبا الثانوي",
335
+ "high_school_geography": "جغرافيا ثانوية",
336
+ "high_school_government_and_politics": "الحكومة والسياسة الثانوية",
337
+ "high_school_macroeconomics": "الاقتصاد الكلي الثانوي",
338
+ "high_school_mathematics": "رياضيات ثانوية",
339
+ "high_school_microeconomics": "الاقتصاد الجزئي الثانوي",
340
+ "high_school_physics": "فيزياء ثانوية",
341
+ "high_school_psychology": "علم النفس الثانوي",
342
+ "high_school_statistics": "الإحصاء الثانوي",
343
+ "high_school_us_history": "تاريخ الولايات المتحدة الثانوي",
344
+ "high_school_world_history": "تاريخ العالم الثانوي",
345
+ "human_aging": "شيخوخة الإنسان",
346
+ "human_sexuality": "الجنس البشري",
347
+ "international_law": "القانون الدولي",
348
+ "jurisprudence": "الفقه القانوني",
349
+ "logical_fallacies": "المغالطات المنطقية",
350
+ "machine_learning": "تعلم الآلة",
351
+ "management": "الإدارة",
352
+ "marketing": "التسويق",
353
+ "medical_genetics": "الوراثة الطبية",
354
+ "miscellaneous": "متفرقات",
355
+ "moral_disputes": "الخلافات الأخلاقية",
356
+ "moral_scenarios": "السيناريوهات الأخلاقية",
357
+ "nutrition": "التغذية",
358
+ "philosophy": "الفلسفة",
359
+ "prehistory": "ما قبل التاريخ",
360
+ "professional_accounting": "المحاسبة المهنية",
361
+ "professional_law": "القانون المهني",
362
+ "professional_medicine": "الطب المهني",
363
+ "professional_psychology": "علم النفس المهني",
364
+ "public_relations": "العلاقات العامة",
365
+ "security_studies": "دراسات الأمن",
366
+ "sociology": "علم الاجتماع",
367
+ "us_foreign_policy": "السياسة الخارجية الأمريكية",
368
+ "virology": "علم الفيروسات",
369
+ "world_religions": "الديانات العالمية",
370
+ }
371
+
372
+ LANGUAGE_SUBJECTS_MAP = {
373
+ "FR_FR": MMLU_SUBJECTS_FR,
374
+ "DE_DE": MMLU_SUBJECTS_DE,
375
+ "ES_LA": MMLU_SUBJECTS_ES,
376
+ "IT_IT": MMLU_SUBJECTS_IT,
377
+ "PT_BR": MMLU_SUBJECTS_PT,
378
+ "AR_XY": MMLU_SUBJECTS_AR,
379
+ }
380
+
381
+ LANGUAGE_INITIAL_PROMPT_TEXT_MAP = {
382
+ "FR_FR": "Les questions suivantes sont des questions à choix multiples (avec réponses) sur",
383
+ "DE_DE": "Die folgenden sind Multiple-Choice-Fragen (mit Antworten) über",
384
+ "ES_LA": "Las siguientes son preguntas de opción múltiple (con respuestas) sobre",
385
+ "IT_IT": "Le seguenti sono domande a scelta multipla (con risposte) su",
386
+ "PT_BR": "As seguintes são perguntas de múltipla escolha (com respostas) sobre",
387
+ "AR_XY": "فيما يلي أسئلة اختيار من متعدد (مع الإجابات) حول",
388
+ }
389
+
390
+ LANGUAGE_QUESTION_TEXT_MAP = {
391
+ "FR_FR": "Question",
392
+ "DE_DE": "Frage",
393
+ "ES_LA": "Pregunta",
394
+ "IT_IT": "Domanda",
395
+ "PT_BR": "Pergunta",
396
+ "AR_XY": "السؤال",
397
+ }
398
+
399
+ LANGUAGE_ANSWER_TEXT_MAP = {
400
+ "FR_FR": "Réponse",
401
+ "DE_DE": "Antwort",
402
+ "ES_LA": "Respuesta",
403
+ "IT_IT": "Risposta",
404
+ "PT_BR": "Resposta",
405
+ "AR_XY": "الإجابة",
406
+ }
407
+
408
+ LANGUAGE_NAME_MAP = {
409
+ "FR_FR": Language.FRA,
410
+ "DE_DE": Language.DEU,
411
+ "ES_LA": Language.SPA,
412
+ "IT_IT": Language.ITA,
413
+ "PT_BR": Language.POR,
414
+ "AR_XY": Language.ARB,
415
+ }
416
+
417
+
418
+ class MMMLU(BaseTask[tuple[str, str]]):
419
+ """MMMLU dataset: https://huggingface.co/datasets/openai/MMMLU"""
420
+
421
+ NAME = "MMMLU"
422
+ DATASET_PATH = "openai/MMMLU"
423
+ SAMPLE_SPLIT = "test"
424
+ FEWSHOT_SPLIT = "test"
425
+ RESPONSE_TYPE = ResponseType.LOGLIKELIHOODS
426
+ METRICS = [AccuracyLoglikelihood, AccuracyNormLoglikelihood]
427
+ SUBJECTS = list(product(MMMLU_LANGS, MMLU_SUBJECTS))
428
+ PERTURBATION_UNMODIFIABLE_WORDS = ["Question"] + get_n_letters(4)
429
+ LANGUAGE = {
430
+ str((lang_code.split("_")[0], subject)): LANGUAGE_NAME_MAP[lang_code]
431
+ for lang_code, subjects in LANGUAGE_SUBJECTS_MAP.items()
432
+ for subject in subjects
433
+ }
434
+
435
+ def __init__(self, num_fewshot: int = 0) -> None:
436
+ super().__init__(num_fewshot)
437
+ self.keys = get_n_letters(4)
438
+
439
+ def _load_dataset(self, subject: tuple[str, str]) -> None:
440
+ lang, current_subject = subject
441
+ hf_dataset = self._load_hf_dataset(path=self.DATASET_PATH, name=lang)
442
+ self.dataset = {}
443
+
444
+ self.rnd = random.Random(RANDOM_SEED)
445
+
446
+ for split, data in hf_dataset.items():
447
+ data = data.filter(lambda x: x["Subject"] == current_subject)
448
+ data_list = list(data)
449
+
450
+ if split == self.SAMPLE_SPLIT:
451
+ self.rnd.shuffle(data_list)
452
+
453
+ if split in [self.SAMPLE_SPLIT, self.FEWSHOT_SPLIT]:
454
+ self.dataset[split] = data_list
455
+
456
+ def _get_initial_prompt_text(self, item: dict[str, Any]) -> str:
457
+ language_key = item["subject"][0]
458
+ subject = LANGUAGE_SUBJECTS_MAP[language_key][item["Subject"]]
459
+ return f"{LANGUAGE_INITIAL_PROMPT_TEXT_MAP[language_key]} {subject}."
460
+
461
+ def _get_instruction_text(self, item: dict[str, Any]) -> str:
462
+ question = item["Question"].strip()
463
+ choices = "".join([f"{key}. {item[key]}\n" for key in self.keys])
464
+ language_key = item["subject"][0]
465
+ return f"{LANGUAGE_QUESTION_TEXT_MAP[language_key]}: {question}\n{choices}"
466
+
467
+ def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
468
+ ground_truth = self._get_ground_truth(item)
469
+ assert ground_truth is not None
470
+ return f"{self._get_cue_text(item)}{ground_truth}"
471
+
472
+ def _get_cue_text(self, item: dict[str, Any]) -> str:
473
+ language_key = item["subject"][0]
474
+ return f"{LANGUAGE_ANSWER_TEXT_MAP[language_key]}:"
475
+
476
+ def _get_ground_truth(self, item: dict[str, Any]) -> str | None:
477
+ return f" {item['Answer']}"
478
+
479
+ def _get_possible_completions(self, item: dict[str, Any]) -> list[str] | None:
480
+ return [f" {key}" for key in self.keys]
481
+
482
+
483
+ class MMMLU_GERMAN_COT(MMMLU):
484
+ NAME = "MMMLU_GERMAN_COT"
485
+ RESPONSE_TYPE = ResponseType.COMPLETION
486
+ METRICS = [AccuracyCompletion, GermanCompletionChecker]
487
+ SUBJECTS = [("DE_DE", subject) for subject in MMLU_SUBJECTS]
488
+ PERTURBATION_UNMODIFIABLE_WORDS = ["Frage", "Question", "Answer"] + get_n_letters(4)
489
+ LANGUAGE = {str(s): Language.DEU for s in list(product(["de"], MMLU_SUBJECTS))}
490
+
491
+ ANS_RE = re.compile(r"Daher lautet die Antwort: ([ABCD])")
492
+
493
+ def __init__(self, num_fewshot: int = 0) -> None:
494
+ assert num_fewshot == 0, "Fewshot is not supported for MMMLU_GERMAN_COT"
495
+ super().__init__(num_fewshot)
496
+
497
+ self.stop_sequences: list[str] = ["Frage:", "Question:"]
498
+
499
+ def _extract_answer(self, completion: str) -> str:
500
+ match = self.ANS_RE.search(completion)
501
+ if match:
502
+ match_str = match.group(1)
503
+ return match_str
504
+ else:
505
+ return "[invalid]"
506
+
507
+ def _get_cue_text(self, item: dict[str, Any]) -> str:
508
+ return ""
509
+
510
+ def _get_ground_truth(self, item: dict[str, Any]) -> str | None:
511
+ return item["Answer"]
512
+
513
+ def post_process_generated_completion(self, completion_text: str, sample: Sample | None = None) -> str:
514
+ for stop_sequence in self.stop_sequences:
515
+ if stop_sequence in completion_text:
516
+ completion_text = completion_text.split(stop_sequence)[0]
517
+ return self._extract_answer(completion_text)
518
+
519
+ def _get_instruction_text(self, item: dict[str, Any]) -> str:
520
+ question = item["Question"].strip()
521
+ choices = "\n".join([f"{key}. {item[key]}" for key in self.keys])
522
+ return f"Frage: {question}\n{choices}"
523
+
524
+ def _get_initial_prompt_text(self, item: dict[str, Any]) -> str:
525
+ return (
526
+ f"Die folgende Frage ist eine Multiple-Choice-Frage zum Thema {MMLU_SUBJECTS_DE[item['Subject']]}. "
527
+ 'Fasse deine Argumentation zusammen und schließe mit dem Satz: "Daher lautet die Antwort: X" '
528
+ "ab, wobei X eine der Antworten A, B, C oder D ist. Benutze ausschließlich Deutsch."
529
+ )
@@ -0,0 +1,85 @@
1
+ from typing import Any
2
+
3
+ from eval_framework.metrics.loglikelihood.accuracy_loglikelihood import (
4
+ AccuracyLoglikelihood,
5
+ AccuracyNormLoglikelihood,
6
+ )
7
+ from eval_framework.metrics.loglikelihood.confidence_weighted_accuracy import ConfidenceWeightedAccuracy
8
+ from eval_framework.metrics.loglikelihood.dcs import DistributionalCorrectnessScore
9
+ from eval_framework.metrics.loglikelihood.ternary import TernaryScore
10
+ from eval_framework.tasks.base import BaseTask, Language, ResponseType
11
+ from eval_framework.tasks.utils import get_n_letters
12
+
13
+
14
+ class OPENBOOKQA(BaseTask[str]):
15
+ """OpenBookQA dataset: https://huggingface.co/datasets/allenai/openbookqa"""
16
+
17
+ NAME = "OpenBookQA"
18
+ DATASET_PATH = "allenai/openbookqa"
19
+ SAMPLE_SPLIT = "validation" # 500 examples (same split as lm-eval)
20
+ FEWSHOT_SPLIT = "test" # 500 examples
21
+ RESPONSE_TYPE = ResponseType.LOGLIKELIHOODS
22
+ METRICS = [AccuracyLoglikelihood, AccuracyNormLoglikelihood]
23
+ SUBJECTS = ["additional"]
24
+ PERTURBATION_UNMODIFIABLE_WORDS = get_n_letters(4)
25
+ LANGUAGE = Language.ENG
26
+
27
+ def __init__(self, num_fewshot: int = 0) -> None:
28
+ super().__init__(num_fewshot)
29
+ self.keys = get_n_letters(4)
30
+ self.num_to_letter = {str(i): letter for i, letter in enumerate(self.keys, start=1)}
31
+
32
+ def _get_instruction_text(self, item: dict[str, Any]) -> str:
33
+ question = item["question_stem"].strip()
34
+ fact = item["fact1"].strip()
35
+ choices = "".join([f"{choice.strip()}\n" for key, choice in zip(self.keys, item["choices"]["text"])])
36
+ return f"Fact: {fact}\nComplete: {question}:\n{choices}\nAnswer:"
37
+
38
+ def _get_ground_truth(self, item: dict[str, Any]) -> str | None:
39
+ answer_key = self.num_to_letter.get(item["answerKey"], item["answerKey"])
40
+ return f" {item['choices']['text'][self.keys.index(answer_key)].strip()}"
41
+
42
+ def _get_possible_completions(self, item: dict[str, Any]) -> list[str] | None:
43
+ return [f" {choice.strip()}" for choice in item["choices"]["text"]]
44
+
45
+
46
+ class OPENBOOKQA_IDK(OPENBOOKQA):
47
+ NAME = "OpenBookQA_IDK"
48
+ METRICS = [
49
+ AccuracyLoglikelihood,
50
+ AccuracyNormLoglikelihood,
51
+ ConfidenceWeightedAccuracy,
52
+ DistributionalCorrectnessScore,
53
+ TernaryScore,
54
+ ]
55
+
56
+ def _get_initial_prompt_text(self, item: dict[str, Any]) -> str:
57
+ return (
58
+ "Complete the sentence only if you are confident, since mistakes may be penalised, while correct "
59
+ "completions receive points. It is acceptable to answer with 'I do not know' if you are unsure, "
60
+ "and you will receive 0 points."
61
+ )
62
+
63
+ def _get_possible_completions(self, item: dict[str, Any]) -> list[str] | None:
64
+ completions = super()._get_possible_completions(item)
65
+ return (completions or []) + [" I do not know"]
66
+ return [f" {choice.strip()}" for choice in item["choices"]["text"]]
67
+
68
+ def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
69
+ ground_truth = self._get_ground_truth(item)
70
+ assert ground_truth is not None
71
+ return f"{self._get_cue_text(item)}{ground_truth}"
72
+
73
+ def _get_cue_text(self, item: dict[str, Any]) -> str:
74
+ return "Answer:"
75
+
76
+
77
+ class OPENBOOKQA_EVAL_HARNESS(OPENBOOKQA):
78
+ """Closed-book version of OpenBookQA — question only, no supporting fact."""
79
+
80
+ NAME = "OpenBookQAEvalHarness"
81
+
82
+ def _get_instruction_text(self, item: dict[str, Any]) -> str:
83
+ question = item["question_stem"].strip()
84
+ choices = "".join([f"{choice.strip()}\n" for key, choice in zip(self.keys, item["choices"]["text"])])
85
+ return f"Complete: {question}:\n{choices}\nAnswer:"