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.
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.shand the README, COSA options are passed as: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 = 5and tta/cosa.py reads:
When I run the public script/README command as-is with TTA.SIMPLE.*, I get:
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:
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:
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.