重要提示

您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新的库,NeMo Run。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

将 Trainer 配置从 NeMo 1.0 迁移到 NeMo 2.0#

在 NeMo 2.0 中,trainer 配置已更新为使用 nemo.lightning.Trainer 类。本指南将帮助您迁移 trainer 设置。

NeMo 1.0(先前版本)#

在 NeMo 1.0 中,trainer 在 YAML 配置文件中配置。

trainer:
  num_nodes: 16
  devices: 8
  accelerator: gpu
  precision: bf16
  logger: False # logger provided by exp_manager
  max_epochs: null
  max_steps: 75000 # consumed_samples = global_step * global_batch_size
  max_time: "05:23:30:00"
  log_every_n_steps: 10
  val_check_interval: 2000
  limit_val_batches: 50
  limit_test_batches: 50
  accumulate_grad_batches: 1
  gradient_clip_val: 1.0

NeMo 2.0(新版本)#

在 NeMo 2.0 中,trainer 使用 nemo.lightning.Trainer 类配置。

from nemo import lightning as nl

trainer = nl.Trainer(
    num_nodes=16,
    devices=8,
    accelerator="gpu",
    strategy=strategy,
    plugins=nl.MegatronMixedPrecision(precision="bf16-mixed"),
    max_epochs=None,
    max_steps=75000,
    max_time="05:23:30:00",
    log_every_n_steps=10,
    val_check_interval=2000,
    limit_val_batches=50,
    limit_test_batches=50,
    accumulate_grad_batches=1,
    gradient_clip_val=1.0,
)

迁移步骤#

  1. 从您的 YAML 配置文件中删除 trainer 部分。

  2. 将以下导入添加到您的 Python 脚本

    from nemo import lightning as nl
    
  3. 使用适当的参数创建 Trainer 对象

    trainer = nl.Trainer(
        num_nodes=16,
        devices=8,
        accelerator="gpu",
        strategy=strategy,
        plugins=nl.MegatronMixedPrecision(precision="bf16-mixed"),
        max_epochs=None,
        max_steps=75000,
        max_time="05:23:30:00",
        log_every_n_steps=10,
        val_check_interval=2000,
        limit_val_batches=50,
        limit_test_batches=50,
        accumulate_grad_batches=1,
        gradient_clip_val=1.0,
    )
    
  4. 调整 Trainer 中的参数以匹配您之前的 YAML 配置。

  5. 在您的训练脚本中根据需要使用 trainer 对象。

注意

  • nemo.lightning.Trainer 类在大多数情况下与 PyTorch Lightning 的 Trainer 相同。

  • NeMo 添加了与其序列化系统的集成,允许精确地重新创建特定训练运行中使用的 trainer。

  • precision 参数现在使用 MegatronMixedPrecision 插件设置。对于 BF16 精度,请使用 "bf16-mixed"

  • logger 参数在 trainer 配置中不再需要,因为它由 NeMoLogger 单独处理(请参阅 exp-manager 迁移指南)。