Skip to content

Commit c82143a

Browse files
Support custom results/details push to hub (#457)
* Support custom results/details push to hub * Fix push_details_to_hub
1 parent 7028af3 commit c82143a

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/lighteval/logging/evaluation_tracker.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,28 @@ def __init__(
149149

150150
self.public = public
151151

152+
@property
153+
def results(self):
154+
config_general = asdict(self.general_config_logger)
155+
# We remove the config from logging, which contains context/accelerator objects
156+
config_general.pop("config")
157+
results = {
158+
"config_general": config_general,
159+
"results": self.metrics_logger.metric_aggregated,
160+
"versions": self.versions_logger.versions,
161+
"config_tasks": self.task_config_logger.tasks_configs,
162+
"summary_tasks": self.details_logger.compiled_details,
163+
"summary_general": asdict(self.details_logger.compiled_details_over_all_tasks),
164+
}
165+
return results
166+
167+
@property
168+
def details(self):
169+
return {
170+
task_name: [asdict(detail) for detail in task_details]
171+
for task_name, task_details in self.details_logger.details.items()
172+
}
173+
152174
def save(self) -> None:
153175
"""Saves the experiment information and results to files, and to the hub if requested."""
154176
logger.info("Saving experiment tracker")
@@ -281,6 +303,31 @@ def push_to_hub(
281303

282304
self.recreate_metadata_card(repo_id)
283305

306+
def push_results_to_hub(self, repo_id: str, path_in_repo: str, private: bool | None = None):
307+
repo_id = repo_id if "/" in repo_id else f"{self.hub_results_org}/{repo_id}"
308+
private = private if private is not None else not self.public
309+
self.api.create_repo(repo_id, private=private, repo_type="dataset", exist_ok=True)
310+
results_json = json.dumps(self.results, cls=EnhancedJSONEncoder, indent=2, ensure_ascii=False)
311+
self.api.upload_file(
312+
repo_id=repo_id,
313+
path_or_fileobj=results_json.encode(),
314+
path_in_repo=path_in_repo,
315+
repo_type="dataset",
316+
)
317+
318+
def push_details_to_hub(self, repo_id: str, path_in_repo: str, private: bool | None = None):
319+
repo_id = repo_id if "/" in repo_id else f"{self.hub_results_org}/{repo_id}"
320+
private = private if private is not None else not self.public
321+
self.api.create_repo(repo_id, private=private, repo_type="dataset", exist_ok=True)
322+
for task_name, details in self.details:
323+
details_json = "\n".join([json.dumps(detail) for detail in details])
324+
self.api.upload_file(
325+
repo_id=repo_id,
326+
path_or_fileobj=details_json.encode(),
327+
path_in_repo=path_in_repo.format(task_name=task_name),
328+
repo_type="dataset",
329+
)
330+
284331
def recreate_metadata_card(self, repo_id: str) -> None: # noqa: C901
285332
"""Fully updates the details repository metadata card for the currently evaluated model
286333

0 commit comments

Comments
 (0)