1 Star 0 Fork 10

chen / mindocr

forked from MindSpore Lab / mindocr 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
advanced_train.md 1.99 KB
一键复制 编辑 原始数据 按行查看 历史
HaoyangLI 提交于 2023-06-21 11:17 . Build mindocr online doc webpage (#393)

进阶训练策略

策略:梯度累积,梯度裁剪,EMA

训练策略可在模型YAML配置文件中进行配置。请在设置后运行tools/train.py脚本进行训练

Yaml配置文件参考样例

train:
  gradient_accumulation_steps: 2
  clip_grad: True
  clip_norm: 5.0
  ema: True
  ema_decay: 0.9999

梯度累积

梯度累积可以有效解决显存不足的问题,使得在同等显存,允许使用更大的全局batch size进行训练。可以通过在yaml配置中将train.gradient_accumulation_steps 设置为大于1的值来启用梯度累积功能。 等价的全局batch size为:

global_batch_size = batch_size * num_devices * gradient_accumulation_steps

梯度裁剪

梯度裁剪通常用来缓解梯度爆炸/溢出问题,以使模型收敛更稳定。可以通过在yaml配置中设置train.clip_gradTrue来启用该功能,调整train.clip_norm的值可以控制梯度裁剪范数的大小。

EMA

Exponential Moving Average(EMA)是一种平滑模型权重的模型集成方法。它能帮助模型在训练中稳定收敛,并且通常会带来更好的模型性能。 可以通过在yaml配置中设置train.emaTrue来使用该功能,并且可以调整train.ema_decay来控制权重衰减率,通常设置为接近1的值.

断点续训

断点续训通常用于训练意外中断时,此时使用该功能可以继续从中断处epoch继续训练。可以通过在yaml配置中设置model.resumeTrue来使用该功能,用例如下:

model:
  resume: True

默认情况下,它将从train.ckpt_save_dir目录中保存的train_resume.ckpt恢复。

如果要使用其他epoch用于恢复训练,请在resume中指定epoch路径,用例如下:

model:
  resume: /some/path/to/train_resume.ckpt

OpenI云平台训练

请参考MindOCR云上训练快速入门

1
https://gitee.com/zhenling2023/mindocr.git
git@gitee.com:zhenling2023/mindocr.git
zhenling2023
mindocr
mindocr
main

搜索帮助

53164aa7 5694891 3bd8fe86 5694891