# for batch in each gpu is 128, 8 gpu
# lr = 5e-4 * 128 * 8 / 512 = 0.001
# optim_wrapper = dict(
#     optimizer=dict(
#         type='AdamW',
#         lr=5e-4 * 1024 / 512,
#         weight_decay=0.05,
#         eps=1e-8,
#         betas=(0.9, 0.999)),
#     paramwise_cfg=dict(
#         norm_decay_mult=0.0,
#         bias_decay_mult=0.0,
#         flat_decay_mult=0.0,
#         custom_keys={
#             '.absolute_pos_embed': dict(decay_mult=0.0),
#             '.relative_position_bias_table': dict(decay_mult=0.0)
#         }),
# )

# learning policy
# param_scheduler = [
#     # warm up learning rate scheduler
#     dict(
#         type='LinearLR',
#         start_factor=1e-3,
#         by_epoch=True,
#         end=20,
#         # update by iter
#         convert_to_iter_based=True),
#     # main learning rate scheduler
#     dict(type='CosineAnnealingLR', eta_min=1e-5, by_epoch=True, begin=20),
#     # dict(
#     #     type='CosineAnnealingLR',
#     #     eta_min=1e-5,
#     #     begin=300 // 2,
#     #     end=300,
#     #     T_max=300 // 2,
#     #     by_epoch=True,
#     #     convert_to_iter_based=True),
# ]

# train, val, test setting
train_cfg = dict(by_epoch=True, max_epochs=300, val_interval=1)
val_cfg = dict()
test_cfg = dict()

# NOTE: `auto_scale_lr` is for automatically scaling LR,
# based on the actual training batch size.
# auto_scale_lr = dict(base_batch_size=1024)
