def online_forecaster(forecaster): from pydoc import locate from gluonts.core.component import from_hyperparameters forecaster_class = locate(forecaster) return lambda request: from_hyperparameters(forecaster_class, **request[ 'configuration'])
def train(path, forecaster_path) -> None: env = SageMakerEnv(path) # forecaster_path = env.hyperparameters.get("forecaster_class") Forecaster = get_forecaster(forecaster_path) if hasattr(Forecaster, "from_hyperparameters"): forecaster = Forecaster.from_hyperparameters(**env.hyperparameters) else: forecaster = from_hyperparameters(Forecaster, **env.hyperparameters) run(env, forecaster)
def from_hyperparameters(cls, **hyperparameters) -> 'GluonEstimator': Model = getattr(cls.__init__, 'Model', None) if not Model: raise AttributeError( f'Cannot find attribute Model attached to the ' f'{fqname_for(cls)}. Most probably you have forgotten to mark ' f'the class constructor as @validated().') try: trainer = from_hyperparameters(Trainer, **hyperparameters) return cls(**Model(**{ **hyperparameters, 'trainer': trainer }).__values__) except ValidationError as e: raise GluonTSHyperparametersError from e
def from_hyperparameters(cls, **hyperparameters) -> "GluonEstimator": Model = getattr(cls.__init__, "Model", None) if not Model: raise AttributeError( f"Cannot find attribute Model attached to the " f"{fqname_for(cls)}. Most probably you have forgotten to mark " f"the class constructor as @validated().") try: trainer = from_hyperparameters(Trainer, **hyperparameters) return cls(**Model(**{ **hyperparameters, "trainer": trainer }).__dict__) except ValidationError as e: raise GluonTSHyperparametersError from e
def from_hyperparameters(cls, **hyperparameters): return from_hyperparameters(cls, **hyperparameters)