Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
lm-evaluation-harness
Commits
b58e5556
Commit
b58e5556
authored
Jul 27, 2025
by
Baber
Browse files
Merge branch 'main' into tasklist
# Conflicts: # pyproject.toml
parents
6e1866f5
4f8195f1
Changes
340
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
670 additions
and
4 deletions
+670
-4
lm_eval/tasks/libra/librusec_mhqa.yaml
lm_eval/tasks/libra/librusec_mhqa.yaml
+28
-0
lm_eval/tasks/libra/long_context_multiq.yaml
lm_eval/tasks/libra/long_context_multiq.yaml
+28
-0
lm_eval/tasks/libra/matreshka_names.yaml
lm_eval/tasks/libra/matreshka_names.yaml
+29
-0
lm_eval/tasks/libra/matreshka_yes_no.yaml
lm_eval/tasks/libra/matreshka_yes_no.yaml
+30
-0
lm_eval/tasks/libra/passkey.yaml
lm_eval/tasks/libra/passkey.yaml
+29
-0
lm_eval/tasks/libra/passkey_with_librusec.yaml
lm_eval/tasks/libra/passkey_with_librusec.yaml
+29
-0
lm_eval/tasks/libra/ru_2wikimultihopqa.yaml
lm_eval/tasks/libra/ru_2wikimultihopqa.yaml
+28
-0
lm_eval/tasks/libra/ru_babilong_qa1.yaml
lm_eval/tasks/libra/ru_babilong_qa1.yaml
+31
-0
lm_eval/tasks/libra/ru_babilong_qa2.yaml
lm_eval/tasks/libra/ru_babilong_qa2.yaml
+32
-0
lm_eval/tasks/libra/ru_babilong_qa3.yaml
lm_eval/tasks/libra/ru_babilong_qa3.yaml
+32
-0
lm_eval/tasks/libra/ru_babilong_qa4.yaml
lm_eval/tasks/libra/ru_babilong_qa4.yaml
+29
-0
lm_eval/tasks/libra/ru_babilong_qa5.yaml
lm_eval/tasks/libra/ru_babilong_qa5.yaml
+29
-0
lm_eval/tasks/libra/ru_gsm100.yaml
lm_eval/tasks/libra/ru_gsm100.yaml
+29
-0
lm_eval/tasks/libra/ru_qasper.yaml
lm_eval/tasks/libra/ru_qasper.yaml
+29
-0
lm_eval/tasks/libra/ru_quality.yaml
lm_eval/tasks/libra/ru_quality.yaml
+29
-0
lm_eval/tasks/libra/ru_sci_abstract_retrieval.yaml
lm_eval/tasks/libra/ru_sci_abstract_retrieval.yaml
+30
-0
lm_eval/tasks/libra/ru_sci_passage_count.yaml
lm_eval/tasks/libra/ru_sci_passage_count.yaml
+29
-0
lm_eval/tasks/libra/utils.py
lm_eval/tasks/libra/utils.py
+170
-0
lm_eval/tasks/llama3/instruct/mmlu/_continuation_template_yaml
...al/tasks/llama3/instruct/mmlu/_continuation_template_yaml
+0
-2
lm_eval/tasks/llama3/instruct/mmlu_cot/_mmlu_cot_llama_template_yaml
...ks/llama3/instruct/mmlu_cot/_mmlu_cot_llama_template_yaml
+0
-2
No files found.
lm_eval/tasks/libra/librusec_mhqa.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
librusec_mhqa
task_alias
:
LibrusecMHQA
dataset_name
:
librusec_mhqa
dataset_kwargs
:
dataset_name
:
librusec_mhqa
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
длинный
текст,
в
котором
нужно
найти
ответ
на
вопрос.
{{context}}
Найди
ответ
в
тексте
на
следующий
вопрос.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
32
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/long_context_multiq.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
long_context_multiq
task_alias
:
LongContextMultiQ
dataset_name
:
long_context_multiq
dataset_kwargs
:
dataset_name
:
long_context_multiq
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
длинный
текст,
в
котором
нужно
найти
ответ
на
вопрос.
{{context}}
Найди
ответ
в
тексте
на
следующий
вопрос.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
32
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/matreshka_names.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
matreshka_names
task_alias
:
MatreshkaNames
dataset_name
:
matreshka_names
dataset_kwargs
:
dataset_name
:
matreshka_names
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляются
несколько
диалогов.
Запомни
имена
людей
и
темы,
на
которые
они
говорили.
{{context}}
В
ответе
укажи
только
имя
собеседника,
который
говорил
на
тему
из
следующего
вопроса.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/matreshka_yes_no.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
matreshka_yes_no
task_alias
:
MatreshkaYesNo
dataset_name
:
matreshka_yes_no
dataset_kwargs
:
dataset_name
:
matreshka_yes_no
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляются
несколько
диалогов.
Запомни
названия
тем,
на
которые
говорили
собеседники.
{{context}}
В
ответе
тебе
нужно
указать
только
'
'
Да'
'
,
если
такая
тема
была,
и
'
'
Нет'
'
,
если
такой
темы
не
было
в
диалогах.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
4
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/passkey.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
passkey
task_alias
:
Passkey
dataset_name
:
passkey
dataset_kwargs
:
dataset_name
:
passkey
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
длинный
текст,
в
котором
содержится
ключ
доступа.
Запомни
только
ключ
доступа.
{{context}}
В
ответе
нужно
указать
только
ключ
доступа.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/passkey_with_librusec.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
passkey_with_librusec
task_alias
:
PasskeyWithLibrusec
dataset_name
:
passkey_with_librusec
dataset_kwargs
:
dataset_name
:
passkey_with_librusec
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
длинный
текст,
в
котором
содержится
ключ
доступа.
Запомни
только
ключ
доступа.
{{context}}
В
ответе
нужно
указать
только
ключ
доступа.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_2wikimultihopqa.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_2wikimultihopqa
task_alias
:
ru2WikiMultihopQA
dataset_name
:
ru_2wikimultihopqa
dataset_kwargs
:
dataset_name
:
ru_2wikimultihopqa
include
:
_template_yaml
doc_to_text
:
'
Ответь
на
вопрос,
основываясь
на
приведенных
отрывках.
{{context}}
Ответь
коротко
на
вопрос,
основываясь
на
приведенных
отрывках.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
32
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_babilong_qa1.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_babilong_qa1
task_alias
:
ruBABILongQA1
dataset_name
:
ru_babilong_qa1
dataset_kwargs
:
dataset_name
:
ru_babilong_qa1
include
:
_template_yaml
doc_to_text
:
'
Я
даю
тебе
контекст
с
фактами
о
местоположении
разных
людей.
Тебе
нужно
ответить
на
вопрос,
основываясь
только
на
информации,
полученной
из
фактов.
Если
человек
находился
в
разных
местах,
используй
последнее
местоположение
для
ответа
на
вопрос.
{{context}}
Ответь
на
вопрос
как
можно
более
кратко.
Вопрос:
{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_babilong_qa2.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_babilong_qa2
task_alias
:
ruBABILongQA2
dataset_name
:
ru_babilong_qa2
dataset_kwargs
:
dataset_name
:
ru_babilong_qa2
include
:
_template_yaml
doc_to_text
:
'
Я
даю
тебе
контекст
с
фактами
о
местоположении
и
действиях
разных
людей.
Тебе
нужно
ответить
на
вопрос,
основываясь
только
на
фактической
информации.
Если
человек
взял
предмет
в
одном
месте
и
отправился
в
другое
место,
этот
предмет
также
находится
во
втором
месте.
Если
человек
оставил
предмет
в
первом
месте
и
перешел
во
второе
место,
предмет
остается
в
первом
месте.
{{context}}
Ответь
на
вопрос
одним
словом.
Вопрос:
{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_babilong_qa3.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_babilong_qa3
task_alias
:
ruBABILongQA3
dataset_name
:
ru_babilong_qa3
dataset_kwargs
:
dataset_name
:
ru_babilong_qa3
include
:
_template_yaml
doc_to_text
:
'
Я
даю
тебе
контекст
с
фактами
о
местоположении
и
действиях
разных
людей.
Тебе
нужно
ответить
на
вопрос,
основываясь
только
на
фактической
информации.
Если
человек
взял
предмет
в
одном
месте
и
отправился
в
другое
место,
этот
предмет
также
находится
во
втором
месте.
Если
человек
оставил
предмет
в
первом
метсе
и
перешел
во
второе
место,
предмет
остается
в
первом
месте.
{{context}}
Ответь
на
вопрос
как
можно
более
кратко.
Вопрос:
{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_babilong_qa4.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_babilong_qa4
task_alias
:
ruBABILongQA4
dataset_name
:
ru_babilong_qa4
dataset_kwargs
:
dataset_name
:
ru_babilong_qa4
include
:
_template_yaml
doc_to_text
:
'
Я
даю
тебе
контекст
с
фактами
о
местоположении
и
действиях
разных
людей.
Тебе
нужно
ответить
на
вопрос,
основываясь
только
на
фактической
информации.
{{context}}
Ответь
на
вопрос
как
можно
более
кратко.
Вопрос:
{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_babilong_qa5.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_babilong_qa5
task_alias
:
ruBABILongQA5
dataset_name
:
ru_babilong_qa5
dataset_kwargs
:
dataset_name
:
ru_babilong_qa5
include
:
_template_yaml
doc_to_text
:
'
Я
даю
тебе
контекст
с
фактами
о
местоположении
и
действиях
разных
людей.
Тебе
нужно
ответить
на
вопрос,
основываясь
только
на
фактической
информации.
{{context}}
Ответь
на
вопрос
как
можно
более
кратко.
Вопрос:
{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
16
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_gsm100.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_gsm100
task_alias
:
ruGSM100
dataset_name
:
ru_gsm100
dataset_kwargs
:
dataset_name
:
ru_gsm100
include
:
_template_yaml
doc_to_text
:
'
Ниже
приведены
п��имеры
математических
задач.
Размышляй
шаг
за
шагом
и
дай
ответ
на
вопрос.
{{context}}
Размышляй
шаг
за
шагом
и
дай
ответ
вопрос.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
32
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_qasper.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_qasper
task_alias
:
ruQasper
dataset_name
:
ru_qasper
dataset_kwargs
:
dataset_name
:
ru_qasper
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
научная
статья
и
вопрос.
{{context}}
Ответь
на
вопрос
как
можно
более
кратко,
по
возможности
используя
одну
фразу
или
предложение.
Не
приводи
никаких
объяснений.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
256
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_f1
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_quality.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_quality
task_alias
:
ruQuALITY
dataset_name
:
ru_quality
dataset_kwargs
:
dataset_name
:
ru_quality
include
:
_template_yaml
doc_to_text
:
'
Тебе
предоставляется
длинный
текст,
в
котором
нужно
найти
ответ
на
вопрос.
{{context}}
Тебе
будут
даны
несколько
вариантов
ответов
на
вопрос
по
тексту,
выбери
только
один
правильный.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
128
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_sci_abstract_retrieval.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_sci_abstract_retrieval
task_alias
:
ruSciAbstractRetrieval
dataset_name
:
ru_sci_abstract_retrieval
dataset_kwargs
:
dataset_name
:
ru_sci_abstract_retrieval
include
:
_template_yaml
doc_to_text
:
'
Ниже
приведены
несколько
параграфов.
Определи
какому
параграфу
соответствует
краткое
описание.
{{context}}
Определи
какому
параграфу
соответствует
краткое
описание.
Ответ
должен
содержать
номер
параграфа.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
32
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_em
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/ru_sci_passage_count.yaml
0 → 100644
View file @
b58e5556
tag
:
-
libra
task
:
ru_sci_passage_count
task_alias
:
ruSciPassageCount
dataset_name
:
ru_sci_passage_count
dataset_kwargs
:
dataset_name
:
ru_sci_passage_count
include
:
_template_yaml
doc_to_text
:
'
Ниже
приведены
несколько
параграфов.
Прочти
их
и
определи
количество
уникальных
параграфов.
{{context}}
Определи
количество
уникальных
параграфов.
Ответ
должен
содержать
только
одно
число.
Вопрос:{{input}}
Ответ:'
generation_kwargs
:
do_sample
:
false
temperature
:
0.0
max_gen_toks
:
8
metric_list
:
-
metric
:
libra_score
aggregation
:
!function
utils.aggregate_results_count_score
higher_is_better
:
true
weight_by_size
:
true
metadata
:
version
:
0.0
lm_eval/tasks/libra/utils.py
0 → 100644
View file @
b58e5556
import
re
from
collections
import
Counter
,
defaultdict
from
dataclasses
import
dataclass
from
typing
import
Callable
,
Dict
,
List
import
datasets
try
:
import
pymorphy2
normalizer
=
pymorphy2
.
MorphAnalyzer
()
except
ImportError
:
print
(
"Can not import pymorphy2. If you try to score libra, do `pip install pymorphy2`"
)
@
dataclass
class
PredictionResult
:
pred_answer
:
str
answers
:
List
[
str
]
length
:
str
def
filter_dataset_by_page_lengths
(
*
args
,
**
kwargs
)
->
Dict
[
str
,
datasets
.
Dataset
]:
"""Filter dataset by page lengths for Libra task.
in CLI metadata --metadata '{"valid_pages": ["8p", "32p"], "dataset_repo_name": "ai-forever/LIBRA"}'
"""
valid_pages
=
kwargs
.
get
(
"valid_pages"
,
[])
dataset_repo_name
=
kwargs
.
get
(
"dataset_repo_name"
,
"ai-forever/LIBRA"
)
dataset_name
=
kwargs
.
get
(
"dataset_name"
,
None
)
filter_colname
=
kwargs
.
get
(
"filter_colname"
,
"length"
)
token
=
kwargs
.
get
(
"token"
,
None
)
dataset_columns
=
list
(
datasets
.
load_dataset
(
dataset_repo_name
,
dataset_name
,
token
=
token
)[
"test"
].
features
.
keys
()
)
if
filter_colname
not
in
dataset_columns
:
raise
ValueError
(
f
"Column
{
filter_colname
}
not found in dataset
{
dataset_name
}
"
)
if
valid_pages
:
dataset_filtered
=
datasets
.
load_dataset
(
dataset_repo_name
,
dataset_name
,
token
=
token
)[
"test"
].
filter
(
lambda
doc
:
doc
.
get
(
filter_colname
)
in
valid_pages
)
else
:
dataset_filtered
=
datasets
.
load_dataset
(
dataset_repo_name
,
dataset_name
,
token
=
token
)[
"test"
]
return
{
"test"
:
dataset_filtered
}
def
normalize_answer
(
sentence
:
str
)
->
str
:
"""Normalize an input sentence by removing punctuation and converting words to their base (lemmatized) form.
:param sentence: str
Input sentence.
:return: str
A normalized sentence where:
- All characters except letters, digits, and underscores are removed.
- All words are converted to lowercase.
- Words are lemmatized using `normalizer`.
:raises ValueError:
If `sentence` is not a string.
:example:
>>> normalize_answer("Hello, world! This is a test sentence.")
'hello world this is a test sentence'
"""
sentence
=
str
(
sentence
)
new_sentence
=
[]
for
word
in
sentence
.
split
():
token
=
re
.
sub
(
r
"[^a-zа-яй0-9_]+"
,
""
,
word
.
lower
())
token
=
normalizer
.
parse
(
token
)[
0
].
normal_form
.
lower
()
new_sentence
.
append
(
token
)
return
" "
.
join
(
new_sentence
)
def
process_results
(
doc
:
List
,
results
:
List
[
str
])
->
Dict
:
"""Processes evaluation results by extracting prediction and relevant metadata.
:param doc: A single instance from the evaluation dataset, containing reference answers and metadata.
:param results: A list containing the predicted answer(s). The first element is used as the main prediction.
:return: A dictionary where the key is the metric name ("libra_score") and the value is a dictionary
with the predicted answer, reference answers, and context length.
"""
prediction
=
results
[
0
]
data_dict
=
{
"pred_answer"
:
prediction
,
"answers"
:
doc
[
"positive_outputs"
],
"length"
:
doc
[
"length"
],
}
return
{
"libra_score"
:
data_dict
}
def
exact_match_score
(
prediction
:
str
,
ground_truth
:
str
)
->
float
:
result
=
0.0
if
normalize_answer
(
ground_truth
)
in
normalize_answer
(
prediction
):
result
=
1.0
return
result
def
f1_score
(
prediction
:
str
,
ground_truth
:
str
)
->
float
:
common
=
Counter
(
prediction
)
&
Counter
(
ground_truth
)
num_same
=
sum
(
common
.
values
())
if
num_same
==
0
:
return
0
precision
=
1.0
*
num_same
/
len
(
prediction
)
recall
=
1.0
*
num_same
/
len
(
ground_truth
)
f1
=
(
2
*
precision
*
recall
)
/
(
precision
+
recall
)
return
f1
def
count_score
(
prediction
:
str
,
ground_truth
:
str
)
->
float
:
numbers
=
re
.
findall
(
r
"\d+"
,
prediction
)
right_num
=
0
for
number
in
numbers
:
if
str
(
number
)
==
str
(
ground_truth
):
right_num
+=
1
final_score
=
0.0
if
len
(
numbers
)
==
0
else
right_num
/
len
(
numbers
)
return
float
(
final_score
)
def
aggregate_results
(
results
:
List
[
PredictionResult
],
scoring_function
:
Callable
)
->
Dict
[
str
,
float
]:
"""Aggregates score by 'length' by scoring_function.
:param results: List of dictionaries containing 'pred_answer', 'answers', and 'length'.
:return: Dictionary with 'length' as keys and average score as values.
:example:
>>> results = [
... {"pred_answer": "1", "answers": ["1", "one"], "length": "8p"},
... {"pred_answer": "0", "answers": ["zero", "none"], "length": "8p"},
... {"pred_answer": "one", "answers": ["1", "one"], "length": "16p"}
... ]
>>> aggregate_results(results=results)
{'8p': 0.5, '16p': 1.0}
"""
scores
=
defaultdict
(
lambda
:
[
0
,
0
])
for
result
in
results
:
length
=
result
[
"length"
]
pred_answer
=
normalize_answer
(
result
[
"pred_answer"
])
answers
=
set
([
normalize_answer
(
text
)
for
text
in
result
[
"answers"
]])
scores
[
length
][
1
]
+=
1
for
answer
in
answers
:
metric
=
scoring_function
(
prediction
=
pred_answer
,
ground_truth
=
answer
)
if
metric
>
0
:
scores
[
length
][
0
]
+=
metric
break
return
{
key
:
correct
/
total
for
key
,
(
correct
,
total
)
in
scores
.
items
()}
def
aggregate_results_em
(
results
:
List
[
PredictionResult
])
->
Dict
[
str
,
float
]:
return
aggregate_results
(
results
,
exact_match_score
)
def
aggregate_results_f1
(
results
:
List
[
PredictionResult
])
->
Dict
[
str
,
float
]:
return
aggregate_results
(
results
,
f1_score
)
def
aggregate_results_count_score
(
results
:
List
[
PredictionResult
])
->
Dict
[
str
,
float
]:
return
aggregate_results
(
results
,
count_score
)
lm_eval/tasks/llama3/instruct/mmlu/_continuation_template_yaml
View file @
b58e5556
...
@@ -29,5 +29,3 @@ filter_list:
...
@@ -29,5 +29,3 @@ filter_list:
- function: take_first
- function: take_first
metadata:
metadata:
version: 1.0
version: 1.0
dataset_kwargs:
trust_remote_code: true
lm_eval/tasks/llama3/instruct/mmlu_cot/_mmlu_cot_llama_template_yaml
View file @
b58e5556
...
@@ -23,6 +23,4 @@ metric_list:
...
@@ -23,6 +23,4 @@ metric_list:
ignore_punctuation: true
ignore_punctuation: true
metadata:
metadata:
version: 1.0
version: 1.0
dataset_kwargs:
trust_remote_code: true
num_fewshot: 0
num_fewshot: 0
Prev
1
…
5
6
7
8
9
10
11
12
13
…
17
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment