def save()

in src/lighteval/logging/evaluation_tracker.py [0:0]


    def save(self) -> None:
        """Saves the experiment information and results to files, and to the hub if requested."""
        logger.info("Saving experiment tracker")
        date_id = datetime.now().isoformat().replace(":", "-")

        # We first prepare data to save
        config_general = asdict(self.general_config_logger)
        # We remove the config from logging, which contains context/accelerator objects
        config_general.pop("config")

        results_dict = {
            "config_general": config_general,
            "results": self.metrics_logger.metric_aggregated,
            "versions": self.versions_logger.versions,
            "config_tasks": self.task_config_logger.tasks_configs,
            "summary_tasks": self.details_logger.compiled_details,
            "summary_general": asdict(self.details_logger.compiled_details_over_all_tasks),
        }

        # Create the details datasets for later upload
        details_datasets: dict[str, Dataset] = {}
        for task_name, task_details in self.details_logger.details.items():
            # Create a dataset from the dictionary - we force cast to str to avoid formatting problems for nested objects
            dataset = Dataset.from_list([asdict(detail) for detail in task_details])

            # We don't keep 'id' around if it's there
            column_names = dataset.column_names
            if "id" in dataset.column_names:
                column_names = [t for t in dataset.column_names if t != "id"]

            # Sort column names to make it easier later
            dataset = dataset.select_columns(sorted(column_names))
            details_datasets[task_name] = dataset

        # We save results at every case
        self.save_results(date_id, results_dict)

        if self.should_save_details:
            self.save_details(date_id, details_datasets)

        if self.should_push_to_hub:
            self.push_to_hub(
                date_id=date_id,
                details=details_datasets,
                results_dict=results_dict,
            )

        if self.wandb is True:
            self.push_to_wandb(
                results_dict=results_dict,
                details_datasets=details_datasets,
            )

        if self.should_push_results_to_tensorboard:
            self.push_to_tensorboard(
                results=self.metrics_logger.metric_aggregated, details=self.details_logger.compiled_details
            )