def train_command(data_path: str, forecaster: Optional[str]) -> None: from gluonts.shell import train logger.info("Run 'train' command") try: env = TrainEnv(Path(data_path)) if env.env is not None: gluonts_env._push(**env.env) if forecaster is None: try: forecaster = env.hyperparameters["forecaster_name"] except KeyError: msg = ("Forecaster shell parameter is `None`, but " "the `forecaster_name` key is not defined in the " "hyperparameters.json dictionary.") raise GluonTSForecasterNotFoundError(msg) train.run_train_and_test(env, forecaster_type_by_name(forecaster)) except Exception as error: with open(TrainPaths(Path(data_path)).output / "failure", "w") as out_file: out_file.write(str(error)) out_file.write("\n\n") out_file.write(traceback.format_exc()) raise
"the `forecaster_name` key is not defined in the " "hyperparameters.json dictionary." ) raise GluonTSForecasterNotFoundError(msg) train.run_train_and_test(env, forecaster_type_by_name(forecaster)) except Exception as error: with open( TrainPaths(Path(data_path)).output / "failure", "w" ) as out_file: out_file.write(str(error)) out_file.write("\n\n") out_file.write(traceback.format_exc()) raise if __name__ == "__main__": import logging import os from gluonts.env import env if "TRAINING_JOB_NAME" in os.environ: env._push(use_tqdm=False) logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s %(message)s", datefmt="[%Y-%m-%d %H:%M:%S]", ) cli(prog_name=__package__)