CompressionTrainLoop.Config(
        study_name='optimization_gradient_compression',
        experiment_name='exp000',
        base_dir='/opt/scratch',
        working_dir=PosixPath('/opt/scratch/runs/optimization_gradient_compression/exp000'),
        doc='',
        step=CompressedTrainStep.Config(
        │   model=ResNet.Config(
        │       channels_in=3,
        │       channels_out=10,
        │       image_size=32,
        │       channels_hidden=(16, 32, 64),
        │       blocks_per_stage=(3, 3, 3),
        │       block=BasicBlock.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           stride=1,
        │           activation=priml.model.swiglu.relu,
        │           norm=<class 'priml.baselines.mlsbench.dl.vision.model.BatchNorm'>
        │       ),
        │       activation=priml.model.swiglu.relu,
        │       norm=<class 'priml.baselines.mlsbench.dl.vision.model.BatchNorm'>,
        │       pool=GlobalAvgPool.Config(),
        │       init_conv=priml.baselines.mlsbench.dl.multitask.model.keep_default,
        │       init_head=priml.baselines.mlsbench.dl.multitask.model.keep_default,
        │       init_bias=priml.baselines.mlsbench.dl.multitask.model.keep_default,
        │       init=priml.baselines.mlsbench.dl.vision.model.keep_initialization
        │   ),
        │   optimizer=PartialConfig(
        │       <class 'torch.optim.sgd.SGD'>,
        │       lr=0.1,
        │       momentum=0.9,
        │       weight_decay=0.0005
        │   ),
        │   loss=PartialConfig(
        │       priml.baselines.mlsbench.dl.vision.train_step.cross_entropy
        │   ),
        │   accumulate_grad_batches=1,
        │   drop_partial_accumulation_on_epoch_end=True,
        │   train_budget_steps=inf,
        │   train_budget_sec=inf,
        │   train_budget_epochs=200,
        │   lr_schedule=PartialConfig(priml.math.schedules.constant),
        │   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,
        │   schedule=PartialConfig(
        │       priml.baselines.mlsbench.opt.gradient_compression.train_step.warmup_cosine,
        │       warmup_epochs=5,
        │       min_lr_ratio=0.01
        │   ),
        │   compressor=PartialConfig(
        │       priml.baselines.mlsbench.opt.gradient_compression.compressors.identity
        │   )
        ),
        dataset=Cifar100Data.Config(
            base_dir='/opt/scratch',
            working_dir=PosixPath('/opt/scratch/datasets/cifar10'),
            batch_size=128,
            eval_batch_size=256,
            num_streams=2,
            translate_pad=4,
            mean=(0.4914, 0.4822, 0.4465),
            std=(0.2023, 0.1994, 0.201),
            augment=PartialConfig(
                priml.baselines.mlsbench.dl.vision.data.pad_crop_flip_normalize
            )
        ),
        metrics_train={},
        metrics_eval={   'test_acc': BestAccuracy.Config(),
            'test_loss': MeanCrossEntropy.Config()},
        checkpointer=Checkpointer.Config(
            base_dir=PosixPath('/opt/scratch/runs/optimization_gradient_compression/exp000'),
            working_dir=PosixPath('/opt/scratch/runs/optimization_gradient_compression/exp000/checkpoints'),
            filename='step_{step:08d}.pt',
            save_every=1_000,
            keep_last_n=-1,
            keep_every=0,
            storer=SyncLocalStateDictStorer.Config(),
            resume=True,
            resume_step=-1,
            allow_checkpoint_overwrite=False,
            best_metric='',
            best_mode='max'
        ),
        profiler=None,
        phase_timer=PhaseTimer.Config(
            enabled=False,
            torch_profile=False,
            base_dir=PosixPath('/opt/scratch/runs/optimization_gradient_compression/exp000'),
            working_dir=PosixPath('/opt/scratch/runs/optimization_gradient_compression/exp000/profiling'),
            heartbeat_interval_sec=20.0,
            fault_dump_interval_sec=40.0,
            cuda_events=False
        ),
        tracker=None,
        max_steps=inf,
        max_epochs=200,
        max_time=inf,
        max_time_kind='wall',
        max_eval_time=inf,
        eval_stop_on_time_limit=False,
        num_steps_eval=-1,
        num_steps_log=10,
        early_train_log_steps=100,
        eval_every_epoch=True,
        eval_extras_every_eval=False,
        eval_warmup_batches=0,
        eval_only=False,
        restore_rng_state=True,
        seed=42,
        model_torch_seed=None,
        num_steps_garbage_collect=inf,
        mesh_dim_model_seed='pp',
        mesh_dim_data_seed='dp',
        runtime=SingleProcess.Config(
            device=None,
            deterministic=False,
            float32_matmul_precision=None
        ),
        eval_epochs=PartialConfig(priml.train.epoch_loop.first_periodic_and_last, every=10),
        early_stopping=None
    )
