重要提示

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

增大批次大小#

增大批次大小是一项功能,允许训练以较小的全局批次大小开始,并在给定的训练样本数内以指定的增量步骤线性增加到目标全局批次大小。

用法#

要在训练期间启用全局批次大小增大,请在训练配置的模型部分下设置 rampup_batch_size 参数。此参数应为包含三个值的列表

  • start_batch_size:初始批次大小。

  • batch_size_increment:批次大小在每个步骤增加的量。

  • rampup_samples:批次大小将要增大的训练样本数。

model.global_batch_size=1024 model.rampup_batch_size=[256, 128, 50000000]

在此示例中,训练将以 256 的批次大小开始,每次增加 128,并在 50,000,000 个训练样本后达到 1024 的目标全局批次大小。

增大阶段和训练中断#

一旦达到下一个增大阶段(训练中全局批次大小增加的点),NeMo 将停止训练。这允许您使用更多 GPU 或节点重新运行训练作业,以进行下一个增大批次大小阶段。

自动节点调度#

NeMo-Framework-Launcher 中,当使用增大批次大小时,会自动创建一个节点调度器。此调度器允许在较小的批次大小阶段使用较少数量的节点,并根据 training.trainer.num_nodes 参数进行扩展。此参数对应于您希望为最大全局批次大小使用的最大节点数。

示例#

使用 GPT3 5B 模型和 NeMo-Framework-Launcher 的增大批次大小功能用法的详细示例。在此示例中,训练以 256 的全局批次大小开始,在每个增大阶段增加 256,并在 10,000,000 个训练样本后达到 2048 的目标全局批次大小。

节点调度如下所示

global_batch_size

num_nodes

256

8

512

8

768

8

1024

8

1280

10

1536

12

1792

14

2048

16

训练期间 global_batch_size 增加的图表