重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
回调#
指数移动平均 (EMA)#
在训练期间,EMA 维护训练参数的移动平均值。对于各种不同的领域和模型,EMA 参数可以产生明显更好的结果和更快的收敛速度。
EMA 是一种简单的计算。EMA 权重在训练开始时使用模型权重进行预初始化。
每次训练更新,EMA 权重都会根据新的模型权重进行更新。
\[ema_w = ema_w * decay + model_w * (1-decay)\]
启用 EMA 非常简单。我们可以在运行时将附加参数传递给实验管理器。
python examples/asr/asr_ctc/speech_to_text_ctc.py \
model.train_ds.manifest_filepath=/path/to/my/train/manifest.json \
model.validation_ds.manifest_filepath=/path/to/my/validation/manifest.json \
trainer.devices=2 \
trainer.accelerator='gpu' \
trainer.max_epochs=50 \
exp_manager.ema.enable=True # pass this additional argument to enable EMA
要更改衰减率,请传递附加参数。
python examples/asr/asr_ctc/speech_to_text_ctc.py \
...
exp_manager.ema.enable=True \
exp_manager.ema.decay=0.999
我们还提供其他有用的参数。
参数 |
描述 |
---|---|
exp_manager.ema.validate_original_weights=True |
验证原始权重而不是 EMA 权重。 |
exp_manager.ema.every_n_steps=2 |
每 N 步应用 EMA,而不是每步应用。 |
exp_manager.ema.cpu_offload=True |
将 EMA 权重卸载到 CPU。可能会导致明显的减速。 |