Skip to content

Question about reproducing COSA-F results and TTA.SIMPLE vs TTA.COSA config namespace #1

@chan-ee

Description

@chan-ee

Hi, thank you for releasing the COSA code.

I am trying to reproduce the DLinear results reported in the paper, and I noticed a possible configuration mismatch between the scripts/README and the implementation.

In scripts/cosa.sh and the README, COSA options are passed as:

TTA.SIMPLE.BATCH_SIZE
TTA.SIMPLE.STEPS
TTA.SIMPLE.BUFFER_CONTEXT_SIZE
TTA.SIMPLE.FAST_ADAPTATION
TTA.SIMPLE.ADAPTIVE_LR

However, in config.py and tta/cosa.py, the actual namespace seems to be TTA.COSA.*, e.g.:

_C.TTA.COSA = CN()
_C.TTA.COSA.BATCH_SIZE = 25
_C.TTA.COSA.STEPS = 20
_C.TTA.COSA.BUFFER_CONTEXT_SIZE = 5

and tta/cosa.py reads:

self.buffer_context_size = getattr(cfg.TTA.COSA, "BUFFER_CONTEXT_SIZE", 5)
self.adapt_steps = getattr(cfg.TTA.COSA, "STEPS", 20)
batch_size = getattr(self.cfg.TTA.COSA, "BATCH_SIZE", 64)

When I run the public script/README command as-is with TTA.SIMPLE.*, I get:

AssertionError: Non-existent key: TTA.SIMPLE.BATCH_SIZE

After changing the options to TTA.COSA.*, the No-TTA DLinear baselines are close to the paper table, but some COSA-F results are still noticeably different.

I used seed 0 fresh training and then evaluated No TTA and COSA-F separately. For COSA-F, I used:

TTA.ENABLE True
TEST.ENABLE False
TTA.SOLVER.BASE_LR 0.001
TTA.SOLVER.WEIGHT_DECAY 0.0001
TTA.COSA.BATCH_SIZE 48
TTA.COSA.STEPS 3
TTA.COSA.BUFFER_CONTEXT_SIZE 10
TTA.COSA.FAST_ADAPTATION True
TTA.COSA.ADAPTIVE_LR True
TTA.COSA.PER_BATCH_LR_RESET True
TTA.COSA.PAAS False
TTA.COSA.PERIOD_N 1

Here are the reproduced numbers I obtained:

Setting | No TTA reproduced | COSA-F reproduced | Paper No TTA | Paper COSA-F
DLinear ETTh2-96 | 0.2303 | 0.2296 | 0.2323 | 0.2300
DLinear ETTh2-336 | 0.3244 | 0.3267 | 0.3252 | 0.3050
DLinear ETTm1-96 | 0.3712 | 0.3482 | 0.3715 | 0.3456
DLinear exchange_rate-96 | 0.0862 | 0.0851 | 0.0913 | 0.0812

I also tried enabling PAAS following scripts/cosa.sh:

TTA.COSA.PAAS True
TTA.COSA.PERIOD_N 1

but the gap remained for DLinear ETTh2-336 and DLinear exchange_rate-96.

Could you clarify the exact setting used to produce the COSA-F numbers in the paper table?

In particular:

Should scripts/cosa.sh and the README use TTA.COSA.* instead of TTA.SIMPLE.*?
Were the reported table numbers averaged over 10 independently trained checkpoints?
Was PAAS enabled for the reported COSA-F results?
Are the exact checkpoints, seed list, or reproduction scripts available?
Thanks again for the code release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions