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
41e64b2e
Commit
41e64b2e
authored
May 11, 2024
by
lintangsutawika
Browse files
new group config parameter `tag_to_task`
parent
1960eb9a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
25 additions
and
20 deletions
+25
-20
lm_eval/api/task.py
lm_eval/api/task.py
+1
-0
lm_eval/tasks/__init__.py
lm_eval/tasks/__init__.py
+24
-20
No files found.
lm_eval/api/task.py
View file @
41e64b2e
...
@@ -57,6 +57,7 @@ class GroupConfig(dict):
...
@@ -57,6 +57,7 @@ class GroupConfig(dict):
group
:
Optional
[
str
]
=
None
group
:
Optional
[
str
]
=
None
group_alias
:
Optional
[
str
]
=
None
group_alias
:
Optional
[
str
]
=
None
task
:
Optional
[
Union
[
str
,
list
]]
=
None
task
:
Optional
[
Union
[
str
,
list
]]
=
None
tag_to_task
:
Optional
[
str
]
=
False
aggregate_metric
:
Optional
[
str
]
=
False
aggregate_metric
:
Optional
[
str
]
=
False
aggregate_fn
:
Optional
[
str
]
=
"mean"
aggregate_fn
:
Optional
[
str
]
=
"mean"
weight_by_size
:
Optional
[
str
]
=
False
weight_by_size
:
Optional
[
str
]
=
False
...
...
lm_eval/tasks/__init__.py
View file @
41e64b2e
...
@@ -139,7 +139,7 @@ class TaskManager:
...
@@ -139,7 +139,7 @@ class TaskManager:
parent_name
:
Optional
[
str
]
=
None
,
parent_name
:
Optional
[
str
]
=
None
,
update_config
:
Optional
[
dict
]
=
None
,
update_config
:
Optional
[
dict
]
=
None
,
)
->
Mapping
:
)
->
Mapping
:
def
load_task
(
config
,
task
):
def
_
load_task
(
config
,
task
):
if
"include"
in
config
:
if
"include"
in
config
:
config
=
{
config
=
{
**
utils
.
load_yaml_config
(
**
utils
.
load_yaml_config
(
...
@@ -155,19 +155,29 @@ class TaskManager:
...
@@ -155,19 +155,29 @@ class TaskManager:
task_object
=
ConfigurableTask
(
config
=
config
)
task_object
=
ConfigurableTask
(
config
=
config
)
return
{
task
:
task_object
}
return
{
task
:
task_object
}
def
_get_group_and_subtask_from_config
(
config
):
group_name
=
ConfigurableGroup
(
config
=
config
)
subtask_list
=
[]
tag_to_task
=
group_name
.
config
[
"tag_to_task"
]
for
task
in
group_name
.
config
[
"task"
]:
if
isinstance
(
task
,
str
)
and
self
.
_name_is_tag
(
task
)
and
tag_to_task
:
subtask_list
.
extend
(
self
.
_get_tasklist
(
task
))
else
:
subtask_list
.
append
(
task
)
return
group_name
,
subtask_list
if
isinstance
(
name_or_config
,
str
):
if
isinstance
(
name_or_config
,
str
):
if
update_config
is
not
None
:
if
update_config
is
not
None
:
# Process name_or_config as a dict instead
# Process name_or_config as a dict instead
name_or_config
=
{
"task"
:
name_or_config
,
**
update_config
}
name_or_config
=
{
"task"
:
name_or_config
,
**
update_config
}
elif
self
.
_name_is_task
(
name_or_config
):
elif
self
.
_name_is_task
(
name_or_config
):
task_config
=
self
.
_get_config
(
name_or_config
)
task_config
=
self
.
_get_config
(
name_or_config
)
return
load_task
(
task_config
,
task
=
name_or_config
)
return
_
load_task
(
task_config
,
task
=
name_or_config
)
else
:
else
:
subtask_list
=
self
.
_get_tasklist
(
name_or_config
)
subtask_list
=
self
.
_get_tasklist
(
name_or_config
)
if
subtask_list
==
-
1
:
if
subtask_list
==
-
1
:
group_config
=
self
.
_get_config
(
name_or_config
)
group_config
=
self
.
_get_config
(
name_or_config
)
subtask_list
=
group_config
[
"task"
]
group_name
,
subtask_list
=
_get_group_and_subtask_from_config
(
group_config
)
group_name
=
ConfigurableGroup
(
config
=
group_config
)
else
:
else
:
# group_name = name_or_config
# group_name = name_or_config
group_name
=
ConfigurableGroup
(
group_name
=
ConfigurableGroup
(
...
@@ -186,19 +196,16 @@ class TaskManager:
...
@@ -186,19 +196,16 @@ class TaskManager:
# If the name is registered as a group
# If the name is registered as a group
# if self._name_is_task(name) is False:
# if self._name_is_task(name) is False:
if
self
.
_name_is_group
(
name
)
or
self
.
_name_is_tag
(
name
):
if
self
.
_name_is_group
(
name
)
or
self
.
_name_is_tag
(
name
):
group_name
=
name
update_config
=
{
update_config
=
{
k
:
v
k
:
v
for
k
,
v
in
name_or_config
.
items
()
for
k
,
v
in
name_or_config
.
items
()
if
k
not
in
[
"task"
,
"group"
]
if
k
not
in
GROUP_ONLY_KEYS
+
[
"task"
,
"group"
]
}
}
subtask_list
=
self
.
_get_tasklist
(
name
)
subtask_list
=
self
.
_get_tasklist
(
name
)
if
subtask_list
==
-
1
:
if
subtask_list
==
-
1
:
group_config
=
self
.
_get_config
(
name
)
group_config
=
self
.
_get_config
(
name
)
subtask_list
=
group_config
[
"task"
]
group_name
,
subtask_list
=
_get_group_and_subtask_from_config
(
group_config
)
group_name
=
ConfigurableGroup
(
config
=
group_config
)
else
:
else
:
# group_name = name
group_name
=
ConfigurableGroup
(
group_name
=
ConfigurableGroup
(
config
=
{
"group"
:
group_name
,
"task"
:
subtask_list
}
config
=
{
"group"
:
group_name
,
"task"
:
subtask_list
}
)
)
...
@@ -227,26 +234,23 @@ class TaskManager:
...
@@ -227,26 +234,23 @@ class TaskManager:
}
}
else
:
else
:
task_config
=
name_or_config
task_config
=
name_or_config
return
load_task
(
task_config
,
task
=
name
)
return
_
load_task
(
task_config
,
task
=
name
)
else
:
else
:
group_name
=
name_or_config
[
"group"
]
group_config
=
{
subtask_list
=
name_or_config
[
"task"
]
k
:
v
for
k
,
v
in
name_or_config
.
items
()
if
k
in
GROUP_ONLY_KEYS
+
[
"task"
,
"group"
]
}
group_name
,
subtask_list
=
_get_group_and_subtask_from_config
(
group_config
)
if
set
(
name_or_config
.
keys
())
>
{
"task"
,
"group"
}:
if
set
(
name_or_config
.
keys
())
>
{
"task"
,
"group"
}:
update_config
=
{
update_config
=
{
k
:
v
k
:
v
for
k
,
v
in
name_or_config
.
items
()
for
k
,
v
in
name_or_config
.
items
()
if
k
not
in
GROUP_ONLY_KEYS
+
[
"task"
,
"group"
]
if
k
not
in
GROUP_ONLY_KEYS
+
[
"task"
,
"group"
]
}
}
if
~
bool
(
update_config
):
if
not
bool
(
update_config
):
update_config
=
None
update_config
=
None
group_config
=
{
k
:
v
for
k
,
v
in
name_or_config
.
items
()
if
k
in
GROUP_ONLY_KEYS
+
[
"task"
,
"group"
]
}
group_name
=
ConfigurableGroup
(
config
=
group_config
)
fn
=
partial
(
fn
=
partial
(
self
.
_load_individual_task_or_group
,
self
.
_load_individual_task_or_group
,
parent_name
=
group_name
,
parent_name
=
group_name
,
...
...
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