重要提示
您正在查看 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,
)
迁移步骤#
从您的 YAML 配置文件中删除
trainer
部分。将以下导入添加到您的 Python 脚本
from nemo import lightning as nl
使用适当的参数创建
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, )
调整
Trainer
中的参数以匹配您之前的 YAML 配置。在您的训练脚本中根据需要使用
trainer
对象。
注意
nemo.lightning.Trainer
类在大多数情况下与 PyTorch Lightning 的 Trainer 相同。NeMo 添加了与其序列化系统的集成,允许精确地重新创建特定训练运行中使用的 trainer。
precision
参数现在使用MegatronMixedPrecision
插件设置。对于 BF16 精度,请使用"bf16-mixed"
。logger
参数在 trainer 配置中不再需要,因为它由NeMoLogger
单独处理(请参阅 exp-manager 迁移指南)。