训练器配置

该部分用于控制训练过程,包括warmup策略,优化算法,学习率调整等

Note

  • warmup 为逐步放大学习率以平稳训练过程的算法, UP提供了多种warmup方式:”exp”, “linear”, “no_scale_lr”

  • 如果使用 warmup, warmup 初始学习率等于 base_lr * warmup_ratio, warmup 过程结束后的学习率为 base_lr * total_batch_size, total_batch_size 等于 batch size * gpu 的数量

  • 配置文件 config 中的 lr 为 batch 中单张图像的学习率,如lr=0.00125,使用 8 张卡(每张 batch size 为 2)的情况下,最终学习率等于0.00125*16=0.02

  • 在配置文件 config 中设置 warmup_epochs 或者 warmup_iter 以开启 warmup 过程,warmup_epochs 等同于 warmup_iter,warmup_epochs 会自动转换为 warmup_iter

  • only_save_latest参数支持仅保存上一阶段的模型且使用时会使save_freq失效

trainer: # Required.
    max_epoch: 14 # total epochs for the training
    test_freq: 14 # test every 14 epochs (当大于max_epoch,则只在训练结束时进行测试)
    save_freq: 1 # 模型保存的epoch间隔
    # only_save_latest: False # 如果是True,仅保存上一阶段的模型且save_freq失效
    optimizer:
        type: SGD
        kwargs:
            lr: 0.00125
            momentum: 0.9
            weight_decay: 0.0001
    lr_scheduler: # lr_scheduler = MultStepLR(optimizer, milestones=[9,14],gamma=0.1)
        warmup_epochs: 1 # set to be 0 to disable warmup.
        # warmup_type: exp
        type: MultiStepLR
        kwargs:
            milestones: [9,12] # epochs to decay lr
            gamma: 0.1 # decay rate