重要提示

您正在查看 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。可能会导致明显的减速。