2021-04-16 19:22:41 +08:00
|
|
|
# optimizer
|
|
|
|
# In ClassyVision, the lr is set to 0.003 for bs4096.
|
|
|
|
# In this implementation(bs2048), lr = 0.003 / 4096 * (32bs * 64gpus) = 0.0015
|
2022-06-02 17:11:09 +08:00
|
|
|
optim_wrapper = dict(
|
|
|
|
optimizer=dict(type='AdamW', lr=0.0015, weight_decay=0.3),
|
|
|
|
# specific to vit pretrain
|
|
|
|
paramwise_cfg=dict(custom_keys={
|
|
|
|
'.cls_token': dict(decay_mult=0.0),
|
|
|
|
'.pos_embed': dict(decay_mult=0.0)
|
|
|
|
}),
|
|
|
|
)
|
2021-04-28 17:16:43 +08:00
|
|
|
|
2021-04-16 19:22:41 +08:00
|
|
|
# learning policy
|
2022-09-22 09:23:49 +08:00
|
|
|
warmup_epochs = 15 # about 10000 iterations for ImageNet-1k
|
2022-05-23 17:31:57 +08:00
|
|
|
param_scheduler = [
|
2022-06-02 17:11:09 +08:00
|
|
|
# warm up learning rate scheduler
|
2022-05-23 17:31:57 +08:00
|
|
|
dict(
|
|
|
|
type='LinearLR',
|
|
|
|
start_factor=1e-3,
|
2022-06-02 17:11:09 +08:00
|
|
|
by_epoch=True,
|
2022-09-22 09:23:49 +08:00
|
|
|
end=warmup_epochs,
|
2022-06-02 17:11:09 +08:00
|
|
|
# update by iter
|
|
|
|
convert_to_iter_based=True),
|
|
|
|
# main learning rate scheduler
|
2022-05-23 17:31:57 +08:00
|
|
|
dict(
|
|
|
|
type='CosineAnnealingLR',
|
2022-06-30 16:21:10 +08:00
|
|
|
eta_min=1e-5,
|
2022-05-23 17:31:57 +08:00
|
|
|
by_epoch=True,
|
2022-09-22 09:23:49 +08:00
|
|
|
begin=warmup_epochs)
|
2022-05-23 17:31:57 +08:00
|
|
|
]
|
|
|
|
|
|
|
|
# train, val, test setting
|
2022-07-12 16:10:59 +08:00
|
|
|
train_cfg = dict(by_epoch=True, max_epochs=300, val_interval=1)
|
|
|
|
val_cfg = dict()
|
2022-05-23 17:31:57 +08:00
|
|
|
test_cfg = dict()
|
2022-07-15 15:20:17 +08:00
|
|
|
|
|
|
|
# NOTE: `auto_scale_lr` is for automatically scaling LR,
|
|
|
|
# based on the actual training batch size.
|
|
|
|
auto_scale_lr = dict(base_batch_size=2048)
|