Experiment results reader#
- class ablator.analysis.results.Results(config: type[ablator.config.mp.ParallelConfig] | ParallelConfig, experiment_dir: str | Path, cache: bool = False, use_ray: bool = False)[source]
Bases:
objectClass for processing experiment results. You can use this class to read the results in an experiment output directory. This can be used in combination with
PlotAnalysisto show the correlation between hyperparameters and metrics. Refer to Interpreting Results tutorial for more details on plotting and interpreting experiment results.- Parameters:
- configtype[ParallelConfig] | ParallelConfig
The configuration class used
- experiment_dirstr | Path
The path to the experiment directory.
- cachebool
Whether to cache the results, by default
False.- use_raybool
Whether to use ray for parallel processing, by default
False.
- Raises:
- FileNotFoundError
If the experiment directory doesn’t exists.
- ValueError
If
RunConfigis provided instead ofParallelConfig.
Examples
Suppose you have an experiment output directory stored at
<path to experiment output defined in config experiment_dir>. You can read the results from the directory as follows:>>> directory_path = Path('<path to experiment output defined in config experiment_dir>') >>> results = Results(config=ParallelConfig, experiment_dir=directory_path, use_ray=True) >>> df = results.read_results(config_type=ParallelConfig, experiment_dir=directory_path)
Pass
dftoPlotAnalysisto create an analysis object for plotting the correlation between the hyperparameters and the metrics and save the plots to an output directory. For example, the following template generates plots for each of the numerical and categorical hyperparameters and saves them to./plotsdirectory. Here “Validation Accuracy” is the name of the main metric.>>> analysis = PlotAnalysis( ... df, ... save_dir="./plots", ... cache=True, ... optim_metrics={"val_accuracy": Optim.max}, ... numerical_attributes=<numerical name remap keys names>, ... categorical_attributes=<categorical name remap keys names>, ... ) >>> analysis.make_figures( ... metric_name_remap={ ... "val_accuracy": "Validation Accuracy", ... }, ... attribute_name_remap= attribute_name_remap ... )
- Attributes:
- experiment_dirPath
The path to the experiment directory.
- configtype[ParallelConfig]
The configuration class used.
- metric_mapdict[str, Optim]
A dictionary mapping metric names to their optimization direction.
- data: pd.DataFrame
The processed results of the experiment. Refer to
read_resultsfor more details.- config_attrs: list[str]
The list of all the optimizable hyperparameter names
- search_space: dict[str, ty.Any]
All the search space of the experiment.
- numerical_attributes: list[str]
The list of all the numerical hyperparameter names
- categorical_attributes: list[str]
The list of all the categorical hyperparameter names.
- classmethod read_results(config_type: type[ablator.config.main.ConfigBase], experiment_dir: Path | str, num_cpus: float | None = None) DataFrame[source]
Read all experiment results from the experiment directory (with ray if specified when initializing
Result).- Parameters:
- config_typetype[ConfigBase]
The configuration class.
- experiment_dirPath | str
The experiment directory.
- num_cpusfloat | None
Number of CPUs to use for ray processing, by default
None.
- Returns:
- pd.DataFrame
A data frame of all the results from all experiments in
experiment_dir.
- Raises:
- RuntimeError
If no results are present in the experiment directory.
Examples
>>> results.read_results(config_type = ParallelConfig, experiment_dir = "/tmp/results/experiment_8925_9991/") train_loss val_loss best_iteration best_loss current_epoch current_iteration epochs 13.3658738 0 inf 1 100 5 2.277102967 0.277085876 100 0.277085876 2 200 5 2.277154112 0.27619998 200 0.27619998 3 300 5 2.276529543 0.286987235 200 0.27619998 4 400 5 2.279828385 0.274052692 400 0.274052692 5 500 5 11.91869608 0 inf 1 100 5