Etth1TrainLoop.Config(
        study_name='etth1',
        experiment_name='exp000',
        base_dir='/opt/scratch',
        working_dir=PosixPath('/opt/scratch/runs/etth1/exp000'),
        doc='',
        step=Etth1TrainStep.Config(
            model=DLinear.Config(
                seq_len=336,
                pred_len=96,
                channels=7,
                decomposition=SeriesDecomposition.Config(
                    moving_average=MovingAverage.Config(kernel_size=25)
                ),
                seasonal=MeanLinear.Config(channels_in=336, channels_out=96, bias=True),
                trend=MeanLinear.Config(channels_in=336, channels_out=96, bias=True),
                decoder=ReferenceLinear.Config(
                    channels_in=336,
                    channels_out=96,
                    bias=True
                )
            ),
            optimizer=PartialConfig(<class 'torch.optim.adam.Adam'>, lr=0.0001),
            loss=SimpleLoss.Config(
                loss_fn=priml.loss.simple_loss.mse,
                target_key='label',
                kwargs={'reduction': 'mean'},
                channels_out=-1
            ),
            accumulate_grad_batches=1,
            drop_partial_accumulation_on_epoch_end=True,
            train_budget_steps=inf,
            train_budget_sec=inf,
            train_budget_epochs=10,
            lr_schedule=PartialConfig(
                priml.baselines.etth1.experiments.dlinear_type1,
                epochs=10
            ),
            parallelism=NoParallel.Config(device=None),
            model_quantization=NoModelQuantization.Config(),
            activation_memoization=DefaultActivationStorage.Config(),
            compile=None,
            ema=NoEMA.Config(),
            gradient_clip_norm=inf,
            skip_step_on_nonfinite_grad=False,
            device_init='eager',
            dtype_autocast=None,
            autocast_cache_enabled=False,
            seed=2_021
        ),
        dataset=Etth1Data.Config(
            base_dir='/opt/scratch',
            working_dir=PosixPath('/opt/scratch/datasets/etth1'),
            channels=7,
            train_rows=8_640,
            val_rows=2_880,
            test_rows=2_880,
            seq_len=336,
            pred_len=96,
            batch_size=8,
            eval_batch_size=8,
            device='cpu'
        ),
        metrics_train={},
        metrics_eval={'': ForecastMSE.Config()},
        checkpointer=Etth1Checkpointer.Config(
            base_dir=PosixPath('/opt/scratch/runs/etth1/exp000'),
            working_dir=PosixPath('/opt/scratch/runs/etth1/exp000/checkpoints'),
            filename='step_{step:08d}.pt',
            save_every=10_260,
            keep_last_n=3,
            keep_every=0,
            storer=SyncLocalStateDictStorer.Config(),
            resume=True,
            resume_step=-1,
            allow_checkpoint_overwrite=False,
            best_metric='total_loss',
            best_mode='min'
        ),
        profiler=None,
        phase_timer=PhaseTimer.Config(
            enabled=False,
            torch_profile=False,
            base_dir=PosixPath('/opt/scratch/runs/etth1/exp000'),
            working_dir=PosixPath('/opt/scratch/runs/etth1/exp000/profiling'),
            heartbeat_interval_sec=20.0,
            fault_dump_interval_sec=40.0,
            cuda_events=False
        ),
        tracker=None,
        max_steps=10_260,
        max_epochs=10,
        max_time=inf,
        max_time_kind='wall',
        max_eval_time=inf,
        eval_stop_on_time_limit=False,
        num_steps_eval=inf,
        num_steps_log=100,
        early_train_log_steps=0,
        eval_every_epoch=True,
        eval_extras_every_eval=False,
        eval_warmup_batches=0,
        eval_only=False,
        restore_rng_state=True,
        seed=2_021,
        model_torch_seed=None,
        num_steps_garbage_collect=inf,
        mesh_dim_model_seed='pp',
        mesh_dim_data_seed='dp',
        runtime=SingleProcess.Config(
            device='cpu',
            deterministic=False,
            float32_matmul_precision=None
        ),
        patience=3
    )
