@@ -149,6 +149,28 @@ def __init__(
149
149
150
150
self .public = public
151
151
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
+
152
174
def save (self ) -> None :
153
175
"""Saves the experiment information and results to files, and to the hub if requested."""
154
176
logger .info ("Saving experiment tracker" )
@@ -281,6 +303,31 @@ def push_to_hub(
281
303
282
304
self .recreate_metadata_card (repo_id )
283
305
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
+
284
331
def recreate_metadata_card (self , repo_id : str ) -> None : # noqa: C901
285
332
"""Fully updates the details repository metadata card for the currently evaluated model
286
333
0 commit comments