[docs]deftrain(mlip_config:PathLike,req_file_keys:Sequence[PathLike]=("train_file","test_file","valid_file","statistics_file",),attach_logger:bool=False,log_kwargs:dict[str,Any]|None=None,track_carbon:bool=True,tracker_kwargs:dict[str,Any]|None=None,)->None:""" Run training for MLIP by passing a configuration file to the MLIP's CLI. Currently only supports MACE models, but this can be extended by replacing the argument parsing. Parameters ---------- mlip_config : PathLike Configuration file to pass to MLIP. req_file_keys : Sequence[PathLike] List of files that must exist if defined in the configuration file. Default is ("train_file", "test_file", "valid_file", "statistics_file"). attach_logger : bool Whether to attach a logger. Default is False. log_kwargs : dict[str, Any] | None Keyword arguments to pass to `config_logger`. Default is {}. track_carbon : bool Whether to track carbon emissions of calculation. Default is True. tracker_kwargs : dict[str, Any] | None Keyword arguments to pass to `config_tracker`. Default is {}. """log_kwargs,tracker_kwargs=none_to_dict(log_kwargs,tracker_kwargs)# Validate inputswithopen(mlip_config,encoding="utf8")asfile:options=yaml.safe_load(file)check_files_exist(options,req_file_keys)# Configure loggingifattach_logger:log_kwargs.setdefault("filename","train-log.yml")log_kwargs.setdefault("name",__name__)logger=config_logger(**log_kwargs)tracker=config_tracker(logger,track_carbon,**tracker_kwargs)ifloggerand"foundation_model"inoptions:logger.info("Fine tuning model: %s",options["foundation_model"])# Path must be passed as a stringmlip_args=mace_parser().parse_args(["--config",str(mlip_config)])iflogger:logger.info("Starting training")iftracker:tracker.start_task("Training")run(mlip_args)iflogger:logger.info("Training complete")iftracker:tracker.stop_task()tracker.stop()