@@ -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